CMiniLexicon::FindMajorSignatures(): use log file routines
[linguistica.git] / GUI_Lexicon.cpp
blob16e0e7754ca5d9680cbb67a1051a0c961517d65d
1 // Implementation of CLexicon methods passing lists to Qt
2 // Copyright © 2009 The University of Chicago
3 #include "Lexicon.h"
5 #include "linguisticamainwindow.h"
6 #include "LPreferences.h"
7 #include "MiniLexicon.h"
8 #include "Lexicon.h"
9 #include "CorpusWord.h"
10 #include "Signature.h"
11 #include "Compound.h"
12 #include "Linker.h"
13 #include "Suffix.h"
14 #include "Prefix.h"
15 #include "Stem.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"
24 #include "Typedefs.h"
26 void CLexicon::CorpusWordListDisplay( Q3ListView* pView, StringToString* filter, bool bAnalyzedWordsOnly )
28 Q3ListViewItem* item;
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)
56 CPrefix* pPrefix;
58 CPrefixListViewItem* item;
60 pView->setRootIsDecorated( FALSE );
62 // Remove all previous columns
63 while( pView->columns() ) pView->removeColumn( 0 );
65 // Add Column headers
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() ),
81 pPrefix,
82 GetOutFilter(),
83 GetNumberOfCharacterTypes() );
88 void CLexicon::SuffixListDisplay(Q3ListView* pView)
90 CSuffix* pSuffix;
92 CSuffixListViewItem* item;
94 pView->setRootIsDecorated( FALSE );
96 // Remove all previous columns
97 while( pView->columns() ) pView->removeColumn( 0 );
99 // Add Column headers
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() ),
114 pSuffix,
115 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 = ".";
148 switch( docType )
150 case SUFFIX_SIGNATURES:
151 // Do nothing, default is suffix sig
152 break;
153 case PREFIX_SIGNATURES:
154 it = Q3DictIterator<SignatureSet>( m_AllPrefixSigs );
155 break;
156 case SIGNATURES:
157 default:
158 return;
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(),
170 pSignature,
171 GetOutFilter() );
176 void CLexicon::StemListDisplay(Q3ListView* pView)
178 CStem* pStem;
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(),
207 pStem,
208 GetOutFilter(),
209 GetNumberOfCharacterTypes() );
213 // this is only used when there is no MiniLexicon -- when is that?
214 void CLexicon::WordListDisplay(Q3ListView* pView, bool analyzedOnly)
216 CStem* pWord;
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());