1 // Implementation of word list and stem list displays
2 // Copyright © 2009 The University of Chicago
3 #include "GUIclasses.h"
8 #include "MiniLexicon.h"
10 #include "WordCollection.h"
11 #include "StemCollection.h"
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;
25 pView
->setRootIsDecorated(false);
27 for (int i
= 0; i
< m_Words
->GetCount(); ++i
) {
28 n
= m_Words
->GetAt(i
)->GetNumberOfStems();
29 if (n
> MaxNumberOfStems
)
33 // Remove all previous columns
34 while (pView
->columns() != 0)
35 pView
->removeColumn( 0 );
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");
59 case CWordListViewItem::MiniLexicon_PhonologyStuffFirst
:
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");
83 if (m_Words
->GetSortValidFlag() == false)
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 //------------------------------------------------------------------//
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
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
,
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)
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());
180 status
.progress
.clear();
181 status
.major_operation
.clear();
184 // Display this stem in a list on Triscreen
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
));