CMiniLexicon::FindMajorSignatures(): use log file routines
[linguistica.git] / GUIclasses.cpp
blobcf92739e8eae4104387a7415ba55c28970ae1f1f
1 // Implementation of word list and stem list displays
2 // Copyright © 2009 The University of Chicago
3 #include "GUIclasses.h"
4 #include "Stem.h"
6 #include <Q3ListView>
7 #include "ui/Status.h"
8 #include "MiniLexicon.h"
9 #include "Lexicon.h"
10 #include "WordCollection.h"
11 #include "StemCollection.h"
13 // Word collections.
15 GUIWordCollection::GUIWordCollection(CMiniLexicon* lex, CWordCollection* words)
16 : m_Words(words), m_MiniLexicon(lex),
17 m_DisplayMode(CWordListViewItem::MiniLexicon_MorphologyStuffFirst) { }
19 void GUIWordCollection::ListDisplay(Q3ListView* pView,
20 QMap<QString, QString>* filter, bool bAnalyzedWordsOnly)
22 int MaxNumberOfStems = 0;
23 int n;
25 pView->setRootIsDecorated(false);
26 pView->setSorting(1);
27 for (int i = 0; i < m_Words->GetCount(); ++i) {
28 n = m_Words->GetAt(i)->GetNumberOfStems();
29 if (n > MaxNumberOfStems)
30 MaxNumberOfStems = n;
33 // Remove all previous columns
34 while (pView->columns() != 0)
35 pView->removeColumn( 0 );
37 // Add Column headers
38 switch (m_DisplayMode) {
39 case CWordListViewItem::MiniLexicon_MorphologyStuffFirst:
40 pView->addColumn("Word");
41 pView->addColumn("Mini");
42 pView->hideColumn(1); // Not needed in this view
43 pView->addColumn("Descr. Length");
44 pView->addColumn("Corpus Count");
45 pView->addColumn("Type");
46 pView->addColumn("Signature");
47 pView->addColumn("Source");
48 pView->addColumn("Prefix");
49 pView->addColumn("Stem");
50 pView->addColumn("Suffix");
51 pView->addColumn("Log prob");
52 pView->addColumn("Av log prob");
53 pView->addColumn("Log prob (cond.)");
54 pView->addColumn("Av log prob (cond.)");
55 pView->addColumn("Tier 1");
56 pView->addColumn("Tier 1 template");
57 pView->addColumn("Tier 2");
58 break;
59 case CWordListViewItem::MiniLexicon_PhonologyStuffFirst:
60 default:
61 pView->addColumn("Word");
62 pView->addColumn("Log prob (unigram)");
63 pView->addColumn("Av log prob (uni)");
64 pView->addColumn("Log prob (bigram)");
65 pView->addColumn("Av log prob (bi)");
66 pView->addColumn("HMM log prob");
67 pView->addColumn("Tier 1");
68 pView->addColumn("Tier 1 template");
69 pView->addColumn("Tier 2");
70 pView->addColumn("Mini" );
71 pView->hideColumn(8); // Not needed in this view
72 pView->addColumn("Descr. Length");
73 pView->addColumn("Corpus Count");
74 pView->addColumn("Type");
75 pView->addColumn("Signature");
76 pView->addColumn("Source");
77 pView->addColumn("Prefix");
78 pView->addColumn("Stem");
79 pView->addColumn("Suffix");
80 break;
83 if (m_Words->GetSortValidFlag() == false)
84 m_Words->Sort(KEY);
86 CLexicon& lex = *m_MiniLexicon->GetLexicon();
87 linguistica::ui::status_user_agent& status = lex.status_display();
89 status.major_operation = "Creating word list for display";
90 status.progress.clear();
91 status.progress.set_denominator(m_Words->GetCount());
92 for (int wordno = 0; wordno < m_Words->GetCount(); ++wordno) {
93 CStem* pWord = m_Words->GetAtSort(wordno);
94 if (pWord != 0 && !bAnalyzedWordsOnly)
95 pWord->WordListDisplay(pView, filter, m_DisplayMode,
96 m_MiniLexicon->GetLexicon()->GetNumberOfCharacterTypes());
97 else if (pWord != 0 && bAnalyzedWordsOnly && pWord->Size() > 1)
98 pWord->WordListDisplay(pView, filter, m_DisplayMode,
99 m_MiniLexicon->GetLexicon()->GetNumberOfCharacterTypes());
100 status.progress = wordno;
102 status.progress.clear();
103 status.major_operation.clear();
106 //------------------------------------------------------------------//
108 // Word items
110 //------------------------------------------------------------------//
113 //--------------------------------------------------
114 // Public accessor methods
115 //--------------------------------------------------
117 // TODO: integrate this with the Qt interface list items
118 // Display this word in a list of words in the triscreen
119 // interface
121 // Parameters:
122 // List - the listitem to be displayed
123 // position - the position in the list
124 // SuffixColumn - TODO
126 void CStem::WordListDisplay(Q3ListView* List,
127 QMap<QString, QString>* filter,
128 enum CWordListViewItem::display_mode DisplayMode,
129 int char_count)
131 static_cast<void>(new CWordListViewItem(
132 List, Display(QChar(), filter),
133 this->GetMyMini()->GetIndex(), this,
134 filter, DisplayMode, char_count));
137 void CStemCollection::ListDisplay(Q3ListView* pView,
138 QMap<QString, QString>* filter)
140 pView->setRootIsDecorated(false);
142 // Remove all previous columns
143 while (pView->columns() != 0)
144 pView->removeColumn(0);
145 pView->setSorting(1);
146 // Add Column headers
147 pView->addColumn("Stem", 100);
148 pView->addColumn("Phonological content", 140);
149 pView->addColumn("Length ptr to me", 120);
150 pView->addColumn("Corpus count" , 100);
151 pView->addColumn("Suffix sig");
152 pView->addColumn("Prefix sig");
153 pView->addColumn("Origin");
154 pView->addColumn("Type");
155 pView->setColumnAlignment(0,Qt::AlignCenter);
156 pView->setColumnAlignment(1,Qt::AlignRight);
157 pView->setColumnAlignment(2,Qt::AlignRight);
158 pView->setColumnAlignment(3,Qt::AlignCenter);
159 pView->setColumnAlignment(4,Qt::AlignCenter);
160 pView->setColumnAlignment(5,Qt::AlignCenter);
161 pView->setColumnAlignment(6,Qt::AlignCenter);
163 if (m_SortValidFlag == false)
164 Sort(KEY);
166 CLexicon& lex = *m_pLexicon;
167 linguistica::ui::status_user_agent& status = lex.status_display();
169 // Display all items.
171 status.major_operation = "Creating stem list for display";
172 status.progress.clear();
173 status.progress.set_denominator(GetCount());
174 for (int i = 0; i < GetCount(); ++i) {
175 CStem* pStem = GetAtSort(i);
176 pStem->StemListDisplay(pView, filter,
177 lex.GetNumberOfCharacterTypes());
178 status.progress = i;
180 status.progress.clear();
181 status.major_operation.clear();
184 // Display this stem in a list on Triscreen
186 // Parameters:
187 // List - the list it will be added to
188 // position - the position in the list
190 void CStem::StemListDisplay(Q3ListView* List,
191 QMap<QString, QString>* filter, int char_count)
193 static_cast<void>(new CStemListViewItem(
194 List, Display(QChar(), filter),
195 this->GetMyMini()->GetIndex(),
196 this, filter, char_count));