• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdesdk API Reference
  • KDE Home
  • Contact Us
 

lokalize

  • sources
  • kde-4.12
  • kdesdk
  • lokalize
  • src
  • glossary
glossarywindow.cpp
Go to the documentation of this file.
1 /* ****************************************************************************
2  This file is part of Lokalize
3 
4  Copyright (C) 2007-2011 by Nick Shaforostoff <shafff@ukr.net>
5 
6  This program is free software; you can redistribute it and/or
7  modify it under the terms of the GNU General Public License as
8  published by the Free Software Foundation; either version 2 of
9  the License or (at your option) version 3 or any later version
10  accepted by the membership of KDE e.V. (or its successor approved
11  by the membership of KDE e.V.), which shall act as a proxy
12  defined in Section 14 of version 3 of the license.
13 
14  This program is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with this program. If not, see <http://www.gnu.org/licenses/>.
21 
22 **************************************************************************** */
23 
24 #include "glossarywindow.h"
25 #include "glossary.h"
26 #include "project.h"
27 #include "languagelistmodel.h"
28 
29 #include "ui_termedit.h"
30 
31 #include <kdebug.h>
32 #include <klineedit.h>
33 #include <kpushbutton.h>
34 #include <kguiitem.h>
35 #include <kmessagebox.h>
36 
37 
38 #include <QApplication>
39 #include <QSplitter>
40 #include <QVBoxLayout>
41 #include <QHBoxLayout>
42 #include <QSortFilterProxyModel>
43 #include <QAbstractItemModel>
44 #include <QStringListModel>
45 #include <QShortcut>
46 
47 using namespace GlossaryNS;
48 
49 //BEGIN GlossaryTreeView
50 
51 GlossaryTreeView::GlossaryTreeView(QWidget *parent)
52  : QTreeView(parent)
53 {
54  setSortingEnabled(true);
55  sortByColumn(GlossaryModel::English, Qt::AscendingOrder);
56  setItemsExpandable(false);
57  setAllColumnsShowFocus(true);
58 
59 /*
60  setSelectionMode(QAbstractItemView::ExtendedSelection);
61  setSelectionBehavior(QAbstractItemView::SelectRows);*/
62 
63 }
64 
65 static QByteArray modelIndexToId(const QModelIndex& item)
66 {
67  return item.sibling(item.row(),0).data(Qt::DisplayRole).toByteArray();
68 }
69 
70 void GlossaryTreeView::currentChanged(const QModelIndex& current, const QModelIndex&/* previous*/)
71 {
72  if (current.isValid())
73  {
74  //QModelIndex item=static_cast<QSortFilterProxyModel*>(model())->mapToSource(current);
75  //emit currentChanged(item.row());
76  emit currentChanged(modelIndexToId(current));
77  scrollTo(current);
78  }
79 }
80 
81 void GlossaryTreeView::selectRow(int i)
82 {
83  QSortFilterProxyModel* proxyModel=static_cast<QSortFilterProxyModel*>(model());
84  GlossaryModel* sourceModel=static_cast<GlossaryModel*>(proxyModel->sourceModel());
85 
86  //sourceModel->forceReset();
87  setCurrentIndex(proxyModel->mapFromSource(sourceModel->index(i,0)));
88 }
89 
90 
91 //END GlossaryTreeView
92 
93 
94 //BEGIN SubjectFieldModel
95 //typedef QStringListModel SubjectFieldModel;
96 
97 #if 0
98 class SubjectFieldModel: public QAbstractItemModel
99 {
100 public:
101 
102  //Q_OBJECT
103 
104  SubjectFieldModel(QObject* parent);
105  ~SubjectFieldModel(){}
106 
107  QModelIndex index (int row, int column, const QModelIndex& parent=QModelIndex()) const;
108  QModelIndex parent(const QModelIndex&) const;
109  int rowCount(const QModelIndex& parent=QModelIndex()) const;
110  int columnCount(const QModelIndex& parent=QModelIndex()) const;
111  QVariant data(const QModelIndex&,int role=Qt::DisplayRole) const;
112  bool setData (const QModelIndex&,const QVariant&,int role=Qt::EditRole);
113  bool setItemData(const QModelIndex& index, const QMap<int,QVariant>& roles);
114  bool insertRows(int row, int count, const QModelIndex& parent=QModelIndex());
115  Qt::ItemFlags flags(const QModelIndex&) const;
116 
117 /*private:
118  Catalog* m_catalog;*/
119 };
120 
121 inline
122 SubjectFieldModel::SubjectFieldModel(QObject* parent)
123  : QAbstractItemModel(parent)
124 // , m_catalog(catalog)
125 {
126 }
127 
128 QModelIndex SubjectFieldModel::index (int row,int column,const QModelIndex& /*parent*/) const
129 {
130  return createIndex (row, column);
131 }
132 
133 Qt::ItemFlags SubjectFieldModel::flags(const QModelIndex&) const
134 {
135  return Qt::ItemIsSelectable|Qt::ItemIsEditable|Qt::ItemIsEnabled;
136 }
137 
138 QModelIndex SubjectFieldModel::parent(const QModelIndex& /*index*/) const
139 {
140  return QModelIndex();
141 }
142 
143 int SubjectFieldModel::columnCount(const QModelIndex& parent) const
144 {
145  if (parent.isValid())
146  return 0;
147  return 1;
148 }
149 /*
150 inline
151 Qt::ItemFlags SubjectFieldModel::flags ( const QModelIndex & index ) const
152 {
153  if (index.column()==FuzzyFlag)
154  return Qt::ItemIsSelectable|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled;
155  return QAbstractItemModel::flags(index);
156 }*/
157 
158 int SubjectFieldModel::rowCount(const QModelIndex& parent) const
159 {
160  if (parent.isValid())
161  return 0;
162  return Project::instance()->glossary()->subjectFields.size();
163 }
164 
165 QVariant SubjectFieldModel::data(const QModelIndex& index,int role) const
166 {
167  if (role==Qt::DisplayRole||role==Qt::EditRole)
168  return Project::instance()->glossary()->subjectFields.at(index.row());
169  return QVariant();
170 }
171 
172 bool SubjectFieldModel::insertRows(int row, int count, const QModelIndex& parent)
173 {
174  beginInsertRows(parent,row,row+count-1);
175 
176  QStringList& subjectFields=Project::instance()->glossary()->subjectFields;
177 
178  while (--count>=0)
179  subjectFields.insert(row+count,QString());
180 
181  endInsertRows();
182  return true;
183 }
184 
185 bool SubjectFieldModel::setData(const QModelIndex& index, const QVariant& value, int role)
186 {
187  kDebug()<<role;
188  QStringList& subjectFields=Project::instance()->glossary()->subjectFields;
189  subjectFields[index.row()]=value.toString();
190  return true;
191 }
192 
193 bool SubjectFieldModel::setItemData(const QModelIndex& index, const QMap<int,QVariant>& roles)
194 {
195  if (roles.contains(Qt::EditRole))
196  {
197  QStringList& subjectFields=Project::instance()->glossary()->subjectFields;
198  subjectFields[index.row()]=roles.value(Qt::EditRole).toString();
199  }
200  return true;
201 }
202 #endif
203 //END SubjectFieldModel
204 
205 //BEGIN GlossaryWindow
206 
207 GlossaryWindow::GlossaryWindow(QWidget *parent)
208  : KMainWindow(parent)
209  , m_browser(new GlossaryTreeView(this))
210  , m_proxyModel(new GlossarySortFilterProxyModel(this))
211  , m_reactOnSignals(true)
212 {
213  //setAttribute(Qt::WA_DeleteOnClose, true);
214  setAttribute(Qt::WA_DeleteOnClose, false);
215 
216  QSplitter* splitter=new QSplitter(Qt::Horizontal,this);
217  setCentralWidget(splitter);
218 
219  m_proxyModel->setFilterKeyColumn(-1);
220  m_proxyModel->setDynamicSortFilter(true);;
221  GlossaryModel* model=new GlossaryModel(this);
222  m_proxyModel->setSourceModel(model);
223  m_browser->setModel(m_proxyModel);
224 
225  m_browser->setUniformRowHeights(true);
226  m_browser->setAutoScroll(true);
227  m_browser->setColumnHidden(GlossaryModel::ID,true);
228  m_browser->setColumnWidth(GlossaryModel::English, m_browser->columnWidth(GlossaryModel::English)*2); //man this is HACK y
229  m_browser->setColumnWidth(GlossaryModel::Target, m_browser->columnWidth(GlossaryModel::Target)*2);
230  m_browser->setAlternatingRowColors(true);
231 
232  //left
233  QWidget* w=new QWidget(splitter);
234  QVBoxLayout* layout=new QVBoxLayout(w);
235  m_filterEdit=new KLineEdit(w);
236  m_filterEdit->setClearButtonShown(true);
237  m_filterEdit->setClickMessage(i18n("Quick search..."));
238  m_filterEdit->setFocus();
239  m_filterEdit->setToolTip(i18nc("@info:tooltip","Activated by Ctrl+L.")+" "+i18nc("@info:tooltip","Accepts regular expressions"));
240  new QShortcut(Qt::CTRL+Qt::Key_L,this,SLOT(setFocus()),0,Qt::WidgetWithChildrenShortcut);
241  connect (m_filterEdit,SIGNAL(textChanged(QString)),
242  m_proxyModel,SLOT(setFilterRegExp(QString)));
243 
244  layout->addWidget(m_filterEdit);
245  layout->addWidget(m_browser);
246  {
247  KPushButton* addBtn=new KPushButton(KStandardGuiItem::add(),w);
248  connect(addBtn,SIGNAL(clicked()), this,SLOT(newTermEntry()));
249 
250  KPushButton* rmBtn=new KPushButton(KStandardGuiItem::remove(),w);
251  connect(rmBtn,SIGNAL(clicked()), this,SLOT(rmTermEntry()));
252 
253  KPushButton* restoreBtn=new KPushButton(i18nc("@action:button reloads glossary from disk","Restore from disk"),w);
254  restoreBtn->setToolTip(i18nc("@info:tooltip","Reload glossary from disk, discarding any changes"));
255  connect(restoreBtn,SIGNAL(clicked()), this,SLOT(restore()));
256 
257  QWidget* btns=new QWidget(w);
258  QHBoxLayout* btnsLayout=new QHBoxLayout(btns);
259  btnsLayout->addWidget(addBtn);
260  btnsLayout->addWidget(rmBtn);
261  btnsLayout->addWidget(restoreBtn);
262 
263  layout->addWidget(btns);
264  //QWidget::setTabOrder(m_browser,addBtn);
265  QWidget::setTabOrder(addBtn,rmBtn);
266  QWidget::setTabOrder(rmBtn,restoreBtn);
267  QWidget::setTabOrder(restoreBtn,m_filterEdit);
268  }
269  QWidget::setTabOrder(m_filterEdit,m_browser);
270 
271  splitter->addWidget(w);
272 
273  //right
274  m_editor=new QWidget(splitter);
275  m_editor->hide();
276  Ui_TermEdit ui_termEdit;
277  ui_termEdit.setupUi(m_editor);
278  splitter->addWidget(m_editor);
279 
280 
281  Project* project=Project::instance();
282  m_sourceTermsModel=new TermsListModel(project->glossary(), project->sourceLangCode(), this);
283  m_targetTermsModel=new TermsListModel(project->glossary(), project->targetLangCode(), this);
284 
285  ui_termEdit.sourceTermsView->setModel(m_sourceTermsModel);
286  ui_termEdit.targetTermsView->setModel(m_targetTermsModel);
287 
288  connect(ui_termEdit.addEngTerm, SIGNAL(clicked(bool)), ui_termEdit.sourceTermsView, SLOT(addTerm()));
289  connect(ui_termEdit.remEngTerm, SIGNAL(clicked(bool)), ui_termEdit.sourceTermsView, SLOT(rmTerms()));
290  connect(ui_termEdit.addTargetTerm, SIGNAL(clicked(bool)), ui_termEdit.targetTermsView, SLOT(addTerm()));
291  connect(ui_termEdit.remTargetTerm, SIGNAL(clicked(bool)), ui_termEdit.targetTermsView, SLOT(rmTerms()));
292 
293  m_sourceTermsView=ui_termEdit.sourceTermsView;
294  m_targetTermsView=ui_termEdit.targetTermsView;
295  m_subjectField=ui_termEdit.subjectField;
296  m_definition=ui_termEdit.definition;
297  m_definitionLang=ui_termEdit.definitionLang;
298 
299  //connect (m_english,SIGNAL(textChanged()), this,SLOT(applyEntryChange()));
300  //connect (m_target,SIGNAL(textChanged()), this,SLOT(applyEntryChange()));
301  //connect (m_definition,SIGNAL(editingFinished()),this,SLOT(applyEntryChange()));
302  //connect (m_definition,SIGNAL(textChanged()),this,SLOT(applyEntryChange()));
303  //connect (m_subjectField,SIGNAL(editTextChanged(QString)),this,SLOT(applyEntryChange()));
304  connect (m_subjectField->lineEdit(),SIGNAL(editingFinished()),this,SLOT(applyEntryChange()));
305 
306 
307  //m_subjectField->addItems(Project::instance()->glossary()->subjectFields());
308  //m_subjectField->setModel(new SubjectFieldModel(this));
309  QStringList subjectFields=Project::instance()->glossary()->subjectFields();
310  qSort(subjectFields);
311  QStringListModel* subjectFieldsModel=new QStringListModel(this);
312  subjectFieldsModel->setStringList(subjectFields);
313  m_subjectField->setModel(subjectFieldsModel);
314  connect(m_browser,SIGNAL(currentChanged(int)), this,SLOT(currentChanged(int)));
315  connect(m_browser,SIGNAL(currentChanged(QByteArray)), this,SLOT(showEntryInEditor(QByteArray)));
316 
317  connect(m_definitionLang, SIGNAL(activated(int)), this, SLOT(showDefinitionForLang(int)));
318  m_definitionLang->setModel(LanguageListModel::emptyLangInstance()->sortModel());
319  m_definitionLang->setCurrentIndex(LanguageListModel::emptyLangInstance()->sortModelRowForLangCode(m_defLang));//empty lang
320 
321  //TODO
322  //connect(m_targetTermsModel,SIGNAL(dataChanged(QModelIndex,QModelIndex)),m_browser,SLOT(setFocus()));
323 
324  setAutoSaveSettings(QLatin1String("GlossaryWindow"),true);
325  //Glossary* glossary=Project::instance()->glossary();
326  /*setCaption(i18nc("@title:window","Glossary"),
327  !glossary->changedIds.isEmpty()||!glossary->addedIds.isEmpty()||!glossary->removedIds.isEmpty());
328  */
329 }
330 
331 GlossaryWindow::~GlossaryWindow()
332 {
333 }
334 
335 void GlossaryWindow::setFocus()
336 {
337  m_filterEdit->setFocus();
338  m_filterEdit->selectAll();
339 }
340 
341 
342 void GlossaryWindow::showEntryInEditor(const QByteArray& id)
343 {
344  if (m_editor->isVisible())
345  applyEntryChange();
346  else
347  m_editor->show();
348 
349  m_id=id;
350 
351  m_reactOnSignals=false;
352 
353  Project* project=Project::instance();
354  Glossary* glossary=project->glossary();
355  m_subjectField->setCurrentItem(glossary->subjectField(id),/*insert*/true);
356 
357  QStringList langsToTry=QStringList(m_defLang)<<"en"<<"en_US"<<project->targetLangCode();
358  foreach (const QString& lang, langsToTry)
359  {
360  QString d=glossary->definition(m_id, lang);
361  if (!d.isEmpty())
362  {
363  if (m_defLang!=lang)
364  m_definitionLang->setCurrentIndex(LanguageListModel::emptyLangInstance()->sortModelRowForLangCode(lang));
365  m_defLang=lang;
366  break;
367  }
368  }
369  m_definition->setPlainText(glossary->definition(m_id, m_defLang));
370 
371 
372  m_sourceTermsModel->setEntry(id);
373  m_targetTermsModel->setEntry(id);
374 
375  //m_sourceTermsModel->setStringList(glossary->terms(id,project->sourceLangCode()));
376  //m_targetTermsModel->setStringList(glossary->terms(id,project->targetLangCode()));
377 
378  m_reactOnSignals=true;
379 }
380 
381 void GlossaryWindow::currentChanged(int i)
382 {
383  Q_UNUSED(i);
384  m_reactOnSignals=false;
385  m_editor->show();
386  m_reactOnSignals=true;
387 }
388 
389 void GlossaryWindow::showDefinitionForLang(int langModelIndex)
390 {
391  applyEntryChange();
392  m_defLang=LanguageListModel::emptyLangInstance()->langCodeForSortModelRow(langModelIndex);
393  m_definition->setPlainText(Project::instance()->glossary()->definition(m_id, m_defLang));
394 }
395 
396 void GlossaryWindow::applyEntryChange()
397 {
398  if (!m_reactOnSignals || !m_browser->currentIndex().isValid())
399  return;
400 
401  QByteArray id=m_id;//modelIndexToId(m_browser->currentIndex());
402 
403  Project* project=Project::instance();
404  Glossary* glossary=project->glossary();
405 
406  if (m_subjectField->currentText()!=glossary->subjectField(id))
407  glossary->setSubjectField(id, QString(), m_subjectField->currentText());
408 
409  if (m_definition->toPlainText()!=glossary->definition(id, m_defLang))
410  glossary->setDefinition(id, m_defLang, m_definition->toPlainText());
411 
412  //HACK to force finishing of the listview editing
413  QWidget* prevFocusWidget=QApplication::focusWidget();
414  m_browser->setFocus();
415  if (prevFocusWidget)
416  prevFocusWidget->setFocus();
417 
418 // QSortFilterProxyModel* proxyModel=static_cast<QSortFilterProxyModel*>(model());
419  //GlossaryModel* sourceModel=static_cast<GlossaryModel*>(m_proxyModel->sourceModel());
420  const QModelIndex& idx=m_proxyModel->mapToSource( m_browser->currentIndex() );
421  if (!idx.isValid())
422  return;
423 
424 
425  //TODO display filename, optionally stripped like for filetab names
426  setCaption(i18nc("@title:window","Glossary"),!glossary->isClean());
427 }
428 
429 
430 void GlossaryWindow::selectEntry(const QByteArray& id)
431 {
432  qApp->processEvents(); //let it fetch the rows
433 
434  QModelIndexList items=m_proxyModel->match(m_proxyModel->index(0,0),Qt::DisplayRole,QVariant(id),1,0);
435  if (items.count())
436  {
437  m_browser->setCurrentIndex(items.first());
438  m_browser->scrollTo(items.first(),QAbstractItemView::PositionAtCenter);
439  //kDebug()<<id<<items<<items.first().row();
440  }
441  else
442  {
443  //the row is probably not fetched yet
444  m_browser->setCurrentIndex(QModelIndex());
445  showEntryInEditor(id);
446  //kDebug()<<id<<0;
447  }
448 }
449 
450 void GlossaryWindow::newTermEntry(QString _english, QString _target)
451 {
452  setCaption(i18nc("@title:window","Glossary"),true);
453 
454  GlossaryModel* sourceModel=static_cast<GlossaryModel*>(m_proxyModel->sourceModel());
455  QByteArray id=sourceModel->appendRow(_english,_target);
456 
457  selectEntry(id);
458 }
459 
460 void GlossaryWindow::rmTermEntry(int i)
461 {
462  setCaption(i18nc("@title:window","Glossary"),true);
463 
464  //QSortFilterProxyModel* proxyModel=static_cast<QSortFilterProxyModel*>(model());
465  GlossaryModel* sourceModel=static_cast<GlossaryModel*>(m_proxyModel->sourceModel());
466 
467  if (i==-1)
468  {
469  //NOTE actually we should remove selected items, not current one
470  const QModelIndex& current=m_browser->currentIndex();
471  if (!current.isValid())
472  return;
473  i=m_proxyModel->mapToSource(current).row();
474  }
475 
476  sourceModel->removeRow(i);
477 }
478 
479 void GlossaryWindow::restore()
480 {
481  setCaption(i18nc("@title:window","Glossary"),false);
482 
483  Glossary* glossary=Project::instance()->glossary();
484  glossary->load(glossary->path());
485  m_reactOnSignals=false;
486  showEntryInEditor(m_id);
487  m_reactOnSignals=true;
488 }
489 
490 bool GlossaryWindow::save()
491 {
492  //TODO add error message
493  return Project::instance()->glossary()->save();
494 }
495 
496 bool GlossaryWindow::queryClose()
497 {
498  Glossary* glossary=Project::instance()->glossary();
499 
500  applyEntryChange();
501  if (glossary->isClean())
502  return true;
503 
504  switch(KMessageBox::warningYesNoCancel(this,
505  i18nc("@info","The glossary contains unsaved changes.\n\
506 Do you want to save your changes or discard them?"),i18nc("@title:window","Warning"),
507  KStandardGuiItem::save(),KStandardGuiItem::discard()))
508  {
509  case KMessageBox::Yes:
510  return save();
511  case KMessageBox::No:
512  restore();
513  return true;
514  default:
515  return false;
516  }
517 }
518 
519 
520 //END GlossaryWindow
521 
522 void TermsListModel::setEntry(const QByteArray& id)
523 {
524  m_id=id;
525  QStringList terms=m_glossary->terms(m_id,m_lang);
526  terms.append(QString()); //allow adding new terms
527  setStringList(terms);
528 }
529 
530 bool TermsListModel::setData(const QModelIndex& index, const QVariant& value, int role)
531 {
532  Q_UNUSED(role);
533  m_glossary->setTerm(m_id,m_lang,index.row(),value.toString());
534  setEntry(m_id); //allow adding new terms
535  return true;
536 }
537 
538 
539 bool TermsListModel::removeRows(int row, int count, const QModelIndex& parent)
540 {
541  if (row==rowCount()-1)
542  return false;// cannot delete non-existing item
543 
544  m_glossary->rmTerm(m_id,m_lang,row);
545  return QStringListModel::removeRows(row, 1, parent);
546 }
547 
548 
549 void TermListView::addTerm()
550 {
551  setCurrentIndex(model()->index(model()->rowCount()-1, 0));
552  edit(currentIndex());
553 }
554 
555 void TermListView::rmTerms()
556 {
557  foreach(const QModelIndex& row, selectionModel()->selectedRows())
558  model()->removeRow(row.row());
559 }
560 
561 
562 #include "glossarywindow.moc"
GlossaryNS::GlossaryWindow::queryClose
bool queryClose()
Definition: glossarywindow.cpp:496
project.h
GlossaryNS::Glossary::setSubjectField
void setSubjectField(const QByteArray &id, const QString &lang, const QString &value)
Definition: glossary.cpp:575
GlossaryNS::GlossaryModel::English
Definition: glossary.h:188
GlossaryNS::TermsListModel::setEntry
void setEntry(const QByteArray &id)
Definition: glossarywindow.cpp:522
GlossaryNS::GlossaryModel::appendRow
QByteArray appendRow(const QString &_english, const QString &_target)
Definition: glossary.cpp:746
GlossaryNS::Glossary::subjectField
QString subjectField(const QByteArray &id, const QString &lang=QString()) const
Definition: glossary.cpp:565
GlossaryNS::GlossaryWindow::currentChanged
void currentChanged(int)
Definition: glossarywindow.cpp:381
GlossaryNS::TermsListModel::removeRows
bool removeRows(int row, int count, const QModelIndex &parent=QModelIndex())
Definition: glossarywindow.cpp:539
id
static const QString id
Definition: glossary.cpp:49
GlossaryNS::TermsListModel
Definition: glossarywindow.h:125
GlossaryNS::GlossaryWindow::setFocus
void setFocus()
Definition: glossarywindow.cpp:335
GlossaryNS::TermsListModel::setData
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
Definition: glossarywindow.cpp:530
GlossaryNS::GlossaryWindow::applyEntryChange
void applyEntryChange()
Definition: glossarywindow.cpp:396
Project::instance
static Project * instance()
Definition: project.cpp:67
QWidget
languagelistmodel.h
LanguageListModel::langCodeForSortModelRow
QString langCodeForSortModelRow(int)
Definition: languagelistmodel.cpp:124
QStringListModel
QObject
GlossaryNS::GlossaryWindow::newTermEntry
void newTermEntry(QString _english=QString(), QString _target=QString())
Definition: glossarywindow.cpp:450
GlossaryNS::GlossaryTreeView::GlossaryTreeView
GlossaryTreeView(QWidget *parent=0)
Definition: glossarywindow.cpp:51
GlossaryNS::Glossary::rmTerm
void rmTerm(const QByteArray &id, QString lang, int i)
Definition: glossary.cpp:455
modelIndexToId
static QByteArray modelIndexToId(const QModelIndex &item)
Definition: glossarywindow.cpp:65
GlossaryNS::GlossaryTreeView
Definition: glossarywindow.h:108
GlossaryNS::GlossaryWindow::showEntryInEditor
void showEntryInEditor(const QByteArray &id)
Definition: glossarywindow.cpp:342
Project
Singleton object that represents project.
Definition: project.h:51
GlossaryNS::Glossary
Internal representation of glossary.
Definition: glossary.h:95
GlossaryNS::GlossaryModel::ID
Definition: glossary.h:187
GlossaryNS::Glossary::load
bool load(const QString &)
Definition: glossary.cpp:66
GlossaryNS::Glossary::path
QString path() const
Definition: glossary.h:104
TermListView::rmTerms
void rmTerms()
Definition: glossarywindow.cpp:555
KMainWindow
QTreeView
Project::glossary
GlossaryNS::Glossary * glossary() const
Definition: project.h:73
glossarywindow.h
GlossaryNS::GlossaryWindow::save
bool save()
Definition: glossarywindow.cpp:490
Project::targetLangCode
Q_SCRIPTABLE QString targetLangCode() const
Definition: project.h:87
glossary.h
GlossaryNS::Glossary::save
bool save()
Definition: glossary.cpp:135
TermListView::addTerm
void addTerm()
Definition: glossarywindow.cpp:549
QAbstractItemModel
GlossaryNS::Glossary::setTerm
void setTerm(const QByteArray &id, QString lang, int i, const QString &term)
Definition: glossary.cpp:421
QSortFilterProxyModel
GlossaryNS::GlossaryWindow::~GlossaryWindow
~GlossaryWindow()
Definition: glossarywindow.cpp:331
GlossaryNS::Glossary::terms
QStringList terms(const QByteArray &id, const QString &lang) const
Definition: glossary.cpp:337
GlossaryNS::GlossaryWindow::restore
void restore()
Definition: glossarywindow.cpp:479
LanguageListModel::emptyLangInstance
static LanguageListModel * emptyLangInstance()
Definition: languagelistmodel.cpp:56
GlossaryNS::GlossaryModel::Target
Definition: glossary.h:189
GlossaryNS::Glossary::subjectFields
QStringList subjectFields() const
Definition: glossary.cpp:322
GlossaryNS::GlossaryTreeView::selectRow
void selectRow(int i)
Definition: glossarywindow.cpp:81
GlossaryNS::GlossarySortFilterProxyModel
Definition: glossary.h:220
GlossaryNS::GlossaryWindow::rmTermEntry
void rmTermEntry(int i=-1)
Definition: glossarywindow.cpp:460
GlossaryNS::GlossaryTreeView::currentChanged
void currentChanged(const QModelIndex &current, const QModelIndex &previous)
Definition: glossarywindow.cpp:70
GlossaryNS::Glossary::definition
QString definition(const QByteArray &id, const QString &lang=QString()) const
Definition: glossary.cpp:570
GlossaryNS::GlossaryWindow::selectEntry
void selectEntry(const QByteArray &id)
Definition: glossarywindow.cpp:430
QSplitter
GlossaryNS::Glossary::setDefinition
void setDefinition(const QByteArray &id, const QString &lang, const QString &value)
Definition: glossary.cpp:580
GlossaryNS::GlossaryWindow::GlossaryWindow
GlossaryWindow(QWidget *parent=0)
Definition: glossarywindow.cpp:207
GlossaryNS::Glossary::isClean
bool isClean()
Definition: glossary.h:105
GlossaryNS::GlossaryWindow::showDefinitionForLang
void showDefinitionForLang(int)
Definition: glossarywindow.cpp:389
GlossaryNS::GlossaryModel
MVC wrapper around Glossary.
Definition: glossary.h:180
Project::sourceLangCode
Q_SCRIPTABLE QString sourceLangCode() const
Definition: project.h:88
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:03:45 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

lokalize

Skip menu "lokalize"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdesdk API Reference

Skip menu "kdesdk API Reference"
  • kapptemplate
  • kcachegrind
  • kompare
  • lokalize
  • okteta
  • umbrello
  •   umbrello

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal