1 // Implementation of CLexicon methods passing lists to Qt
2 // Copyright © 2009 The University of Chicago
5 #include "linguisticamainwindow.h"
6 #include "LPreferences.h"
7 #include "MiniLexicon.h"
9 #include "CorpusWord.h"
10 #include "Signature.h"
16 #include "CorpusWordCollection.h"
17 #include "SignatureCollection.h"
18 #include "CompoundCollection.h"
19 #include "LinkerCollection.h"
20 #include "SuffixCollection.h"
21 #include "PrefixCollection.h"
22 #include "StemCollection.h"
23 #include "WordCollection.h"
26 void CLexicon::CorpusWordListDisplay( Q3ListView
* pView
, StringToString
* filter
, bool bAnalyzedWordsOnly
)
30 CCorpusWord
* pCorpusWord
;
32 pView
->setRootIsDecorated( FALSE
);
34 // Remove all previous columns
35 while( pView
->columns() ) pView
->removeColumn( 0 );
37 // Add column headings
38 pView
->addColumn( "Words" );
39 pView
->addColumn( "Parsed" );
41 m_pCorpusWords
->Sort(KEY
);
43 for( int i
= 0; i
< m_pCorpusWords
->GetCount(); i
++ )
45 pCorpusWord
= m_pCorpusWords
->GetAt(i
);
47 if( !bAnalyzedWordsOnly
|| pCorpusWord
->Size() > 1 )
49 item
= new Q3ListViewItem( pView
, pCorpusWord
->Display( '.', filter
), pCorpusWord
->Display( '.', filter
) );
54 void CLexicon::PrefixListDisplay(Q3ListView
* pView
)
58 CPrefixListViewItem
* item
;
60 pView
->setRootIsDecorated( FALSE
);
62 // Remove all previous columns
63 while( pView
->columns() ) pView
->removeColumn( 0 );
66 pView
->addColumn( "Prefix" );
67 pView
->addColumn( "Desc. Length" );
68 pView
->addColumn( "Corpus Count" );
69 pView
->addColumn( "Use Count" );
70 pView
->addColumn( "Stems" );
72 Q3DictIterator
<PrefixSet
> it( m_AllPrefixes
);
73 for( ; it
.current(); ++it
)
76 //for( pPrefix = it.current()->first(); pPrefix; pPrefix = it.current()->next() )
77 for (int z
= 0; z
< it
.current()->size(); z
++)
78 { pPrefix
= it
.current()->at(z
);
79 item
= new CPrefixListViewItem( pView
,
80 pPrefix
->Display( GetOutFilter() ),
83 GetNumberOfCharacterTypes() );
88 void CLexicon::SuffixListDisplay(Q3ListView
* pView
)
92 CSuffixListViewItem
* item
;
94 pView
->setRootIsDecorated( FALSE
);
96 // Remove all previous columns
97 while( pView
->columns() ) pView
->removeColumn( 0 );
100 pView
->addColumn( "Suffix" );
101 pView
->addColumn( "Desc. Length" );
102 pView
->addColumn( "Corpus Count" );
103 pView
->addColumn( "Use Count" );
104 pView
->addColumn( "Stems" );
106 Q3DictIterator
<SuffixSet
> it( m_AllSuffixes
);
107 for( ; it
.current(); ++it
)
110 //for( pSuffix = it.current()->first(); pSuffix; pSuffix = it.current()->next() )
111 for (int z
= 0; z
< it
.current()->size(); z
++)
112 { pSuffix
= it
.current()->at(z
);
113 item
= new CSuffixListViewItem( pView
, pSuffix
->Display( GetOutFilter() ),
116 GetNumberOfCharacterTypes() );
121 void CLexicon::SignatureListDisplay(Q3ListView
* pView
,
122 enum eDocumentType docType
)
124 CSignature
* pSignature
;
125 CSignatureListViewItem
* item
;
127 pView
->setRootIsDecorated( FALSE
);
129 // Remove all previous columns
130 while( pView
->columns() ) pView
->removeColumn( 0 );
132 // Add Column headers
133 pView
->addColumn( "Signatures" );
134 pView
->addColumn( "Mini" );
135 pView
->addColumn( "Exemplar" );
136 pView
->addColumn( "Desc. Length" );
137 pView
->addColumn( "Corpus Count" );
138 pView
->addColumn( "Sigs" );
139 pView
->addColumn( "Remarks" );
140 pView
->addColumn( "Robustness" );
141 pView
->addColumn( "Sort Alphabetically" );
143 Q3DictIterator
<SignatureSet
> it( m_AllSuffixSigs
);
145 QString sigDelimiter
= m_pDoc
->GetPreferences()->GetPreference( "Sig_Delimiter" );
146 if( sigDelimiter
.length() < 1 ) sigDelimiter
= ".";
150 case SUFFIX_SIGNATURES
:
151 // Do nothing, default is suffix sig
153 case PREFIX_SIGNATURES
:
154 it
= Q3DictIterator
<SignatureSet
>( m_AllPrefixSigs
);
161 for( ; it
.current(); ++it
)
164 //for( pSignature = it.current()->first(); pSignature; pSignature = it.current()->next() )
165 for (int z
= 0; z
< it
.current()->size(); z
++)
166 { pSignature
= it
.current()->at(z
);
167 item
= new CSignatureListViewItem( pView
,
168 pSignature
->Display( sigDelimiter
.at(0), GetOutFilter() ),
169 pSignature
->GetMyMini()->GetIndex(),
176 void CLexicon::StemListDisplay(Q3ListView
* pView
)
180 CStemListViewItem
* item
;
182 pView
->setRootIsDecorated( FALSE
);
184 // Remove all previous columns
185 while( pView
->columns() ) pView
->removeColumn( 0 );
187 // Add Column headers
188 pView
->addColumn( "Stem" );
189 pView
->addColumn( "Mini" );
190 pView
->addColumn( "Descr. Length" );
191 pView
->addColumn( "Corpus count" );
192 pView
->addColumn( "Suffix sig" );
193 pView
->addColumn( "Prefix sig" );
194 pView
->addColumn( "Origin" );
195 pView
->addColumn( "Type" );
197 Q3DictIterator
<StemSet
> it( m_AllStems
);
198 for( ; it
.current(); ++it
)
200 //for( pStem = it.current()->first(); pStem; pStem = it.current()->next() )
201 for (int z
= 0; z
< it
.current()->size(); z
++)
203 pStem
= it
.current()->at(z
);
204 item
= new CStemListViewItem( pView
,
205 pStem
->Display( GetOutFilter() ),
206 pStem
->GetMyMini()->GetIndex(),
209 GetNumberOfCharacterTypes() );
213 // this is only used when there is no MiniLexicon -- when is that?
214 void CLexicon::WordListDisplay(Q3ListView
* pView
, bool analyzedOnly
)
218 CWordListViewItem
* item
;
220 pView
->setRootIsDecorated( FALSE
);
222 // Remove all previous columns
223 while( pView
->columns() ) pView
->removeColumn( 0 );
225 // Add Column headers
226 pView
->addColumn( "Word" );
227 pView
->addColumn( "Mini" );
228 pView
->addColumn( "Desc. Length" );
229 pView
->addColumn( "Corpus Count" );
230 pView
->addColumn( "Type" );
231 pView
->addColumn( "Signature" );
232 pView
->addColumn( "Source" );
233 pView
->addColumn( "Prefix" );
234 pView
->addColumn( "Stem" );
235 pView
->addColumn( "Suffix" );
237 Q3DictIterator
<StemSet
> it( m_AllWords
);
238 for( ; it
.current(); ++it
)
240 //for( pWord = it.current()->first(); pWord; pWord = it.current()->next() )
241 for (int wordno
= 0; wordno
< it
.current()->size(); wordno
++)
242 { pWord
= it
.current()->at(wordno
);
243 if( !analyzedOnly
|| pWord
->Size() > 1 )
244 item
= new CWordListViewItem(pView
,
245 pWord
->Display(GetOutFilter()),
246 pWord
->GetMyMini()->GetIndex(),
247 pWord
, GetOutFilter(),
248 CWordListViewItem::Lexicon_Word
,
249 GetNumberOfCharacterTypes());