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

parley

  • sources
  • kde-4.14
  • kdeedu
  • parley
  • src
  • editor
editor.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  Copyright 1999-2001 Ewald Arnold <kvoctrain@ewald-arnold.de>
3  Copyright 2004-2007 Peter Hedlund <peter.hedlund@kdemail.net>
4  Copyright 2007-2009 Frederik Gladhorn <gladhorn@kde.org>
5  Copyright 2008 Daniel Laidig <d.laidig@gmx.de>
6 ***************************************************************************/
7 
8 /***************************************************************************
9  * *
10  * This program is free software; you can redistribute it and/or modify *
11  * it under the terms of the GNU General Public License as published by *
12  * the Free Software Foundation; either version 2 of the License, or *
13  * (at your option) any later version. *
14  * *
15  ***************************************************************************/
16 
17 #include "editor.h"
18 
19 #include "../config-parley.h"
20 
21 // Qt models on top of the KEduVocDocument
22 #include "containermodel.h"
23 #include "lessonmodel.h"
24 #include "vocabularymodel.h"
25 #include "vocabularyfilter.h"
26 #include "wordclassmodel.h"
27 
28 // Views
29 #include "vocabularyview.h"
30 #include "containerview.h"
31 #include "lessonview.h"
32 #include "wordtypeview.h"
33 
34 #include "multiplechoicewidget.h"
35 #include "comparisonwidget.h"
36 #include "inflectionwidget.h"
37 #include "imagechooserwidget.h"
38 #include "audiowidget.h"
39 #include "browserwidget.h"
40 #include "synonymwidget.h"
41 #include "summarywordwidget.h"
42 #include "latexwidget.h"
43 
44 #include "settings/parleyprefs.h"
45 #include "prefs.h"
46 
47 #include "scripts/scriptdialog.h"
48 #include "scripts/translator.h"
49 
50 #include "parleyactions.h"
51 #include <KActionCollection>
52 #include <KToggleAction>
53 #include <KActionMenu>
54 #include <KCharSelect>
55 
56 #include <QtCore/QTimer>
57 #include <QtCore/QSignalMapper>
58 #include <QtGui/QDockWidget>
59 #include <QtGui/QHeaderView>
60 #include <QtGui/QMenu>
61 #include <QtGui/QStackedWidget>
62 #include <QScrollArea>
63 
64 using namespace Editor;
65 
66 EditorWindow::EditorWindow(ParleyMainWindow* parent)
67  : KXmlGuiWindow(parent), m_mainWindow(parent)
68 {
69  // KXmlGui
70  setXMLFile("editorui.rc");
71  setObjectName("Editor");
72 
73  setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
74  setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
75  setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);
76  setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
77 
78  initView();
79  initModel();
80 
81  initDockWidgets();
82  initActions();
83 
84  KConfigGroup cfg(KSharedConfig::openConfig("parleyrc"), objectName());
85  applyMainWindowSettings(cfg);
86 
87  connect(parent->parleyDocument(), SIGNAL(documentChanged(KEduVocDocument*)),
88  this, SLOT(updateDocument(KEduVocDocument*)));
89  connect(parent->parleyDocument(), SIGNAL(languagesChanged()),
90  this, SLOT(slotLanguagesChanged()));
91  connect(parent->parleyDocument(), SIGNAL(statesNeedSaving()), this, SLOT(saveState()));
92  connect(parent, SIGNAL(preferencesChanged()), this, SLOT(applyPrefs()));
93 
94  QTimer::singleShot(0, this, SLOT(initScripts()));
95 }
96 
97 EditorWindow::~EditorWindow()
98 {
99  saveState();
100  KConfigGroup cfg(KSharedConfig::openConfig("parleyrc"), objectName());
101  saveMainWindowSettings(cfg);
102 }
103 
104 void EditorWindow::updateDocument(KEduVocDocument *doc)
105 {
106 
107  m_vocabularyView->setDocument(doc);
108  m_vocabularyModel->setDocument(doc);
109 
110  m_lessonModel->setDocument(doc);
111  m_wordTypeModel->setDocument(doc);
112 
113  m_summaryWordWidget->slotDocumentChanged(doc);
114  m_inflectionWidget->setDocument(doc);
115  m_comparisonWidget->setDocument(doc);
116  m_synonymWidget->setDocument(doc);
117  m_antonymWidget->setDocument(doc);
118  m_falseFriendWidget->setDocument(doc);
119 
120  if (!m_mainWindow->parleyDocument()->document()) {
121  return;
122  }
123 
124  if (!doc) {
125  return;
126  }
127 
128  // expand the root items
129  m_lessonView->expandToDepth(0);
130  m_wordTypeView->expandToDepth(0);
131 
132  connect(m_vocabularyView->selectionModel(),
133  SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
134  m_summaryWordWidget, SLOT(slotSelectionChanged(const QItemSelection &, const QItemSelection &)));
135  connect(m_vocabularyView->selectionModel(),
136  SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
137  m_latexWidget, SLOT(slotSelectionChanged(const QItemSelection &, const QItemSelection &)));
138 
139  m_spellCheckMenu->menu()->clear();
140  for (int i = 0; i < doc->identifierCount(); ++i) {
141  KAction* languageSpellCheck = new KAction(doc->identifier(i).name(), m_spellCheckMenu->menu());
142  m_spellCheckMenu->menu()->addAction(languageSpellCheck);
143  m_spellCheckMapper->setMapping(languageSpellCheck, i);
144  connect(languageSpellCheck, SIGNAL(triggered()), m_spellCheckMapper, SLOT(map()));
145  }
146 }
147 
148 
149 void EditorWindow::initDockWidgets()
150 {
151  // Lesson dockwidget
152  QDockWidget *lessonDockWidget = new QDockWidget(i18n("Lessons"), this);
153  lessonDockWidget->setObjectName("LessonDock");
154  m_lessonView = new LessonView(this);
155  lessonDockWidget->setWidget(m_lessonView);
156  addDockWidget(Qt::LeftDockWidgetArea, lessonDockWidget);
157  m_dockWidgets.append(lessonDockWidget);
158  actionCollection()->addAction("show_lesson_dock", lessonDockWidget->toggleViewAction());
159 
160  m_lessonModel = new LessonModel(this);
161  m_lessonView->setModel(m_lessonModel);
162  m_lessonView->setToolTip(i18n("Right click to add, delete, or rename units. \n"
163  "With the checkboxes you can select which units you want to practice. \n"
164  "Only checked units [x] will be asked in the practice!"));
165 
166  connect(m_lessonView, SIGNAL(selectedLessonChanged(KEduVocLesson*)),
167  m_vocabularyModel, SLOT(setLesson(KEduVocLesson*)));
168 
169  connect(m_lessonView, SIGNAL(signalShowContainer(KEduVocContainer*)),
170  m_vocabularyModel, SLOT(showContainer(KEduVocContainer*)));
171 
172  connect(m_vocabularyView, SIGNAL(translationChanged(KEduVocExpression*, int)),
173  m_lessonView, SLOT(setTranslation(KEduVocExpression*, int)));
174 
175 
176  // Word classes dock widget
177  QDockWidget* wordTypeDockWidget = new QDockWidget(i18n("Word Types"), this);
178  wordTypeDockWidget->setObjectName("WordTypeDock");
179  m_wordTypeView = new WordTypeView(this);
180  wordTypeDockWidget->setWidget(m_wordTypeView);
181  addDockWidget(Qt::LeftDockWidgetArea, wordTypeDockWidget);
182  m_dockWidgets.append(wordTypeDockWidget);
183 
184  m_wordTypeModel = new WordClassModel(this);
185  wordTypeDockWidget->setVisible(false);
186  actionCollection()->addAction("show_wordtype_dock", wordTypeDockWidget->toggleViewAction());
187 
190 // new ModelTest(m_wordTypeModel, this);
191 
192  m_wordTypeView->setModel(m_wordTypeModel);
193 
194  connect(m_vocabularyView, SIGNAL(translationChanged(KEduVocExpression*, int)),
195  m_wordTypeView, SLOT(setTranslation(KEduVocExpression*, int)));
196 
197 // Inflections
198  QDockWidget *inflectionDock = new QDockWidget(i18n("Inflection (verbs, adjectives, nouns)"), this);
199  inflectionDock->setObjectName("InflectionDock");
200  m_inflectionWidget = new InflectionWidget(this);
201  QScrollArea *inflectionScrollArea = new QScrollArea(this);
202  inflectionScrollArea->setWidgetResizable(true);
203  inflectionScrollArea->setWidget(m_inflectionWidget);
204  inflectionDock->setWidget(inflectionScrollArea);
205  addDockWidget(Qt::RightDockWidgetArea, inflectionDock);
206  m_dockWidgets.append(inflectionDock);
207  actionCollection()->addAction("show_inflection_dock", inflectionDock->toggleViewAction());
208  connect(m_mainWindow->parleyDocument(), SIGNAL(documentChanged(KEduVocDocument*)),
209  m_inflectionWidget, SLOT(setDocument(KEduVocDocument*)));
210  connect(m_vocabularyView, SIGNAL(translationChanged(KEduVocExpression*, int)),
211  m_inflectionWidget, SLOT(setTranslation(KEduVocExpression*, int)));
212 
213 // Comparison forms
214  QDockWidget *comparisonDock = new QDockWidget(i18n("Comparison forms"), this);
215  comparisonDock->setObjectName("ComparisonDock");
216  m_comparisonWidget = new ComparisonWidget(this);
217  QScrollArea *comparisonScrollArea = new QScrollArea(this);
218  comparisonScrollArea->setWidgetResizable(true);
219  comparisonScrollArea->setWidget(m_comparisonWidget);
220  comparisonDock->setWidget(comparisonScrollArea);
221  addDockWidget(Qt::RightDockWidgetArea, comparisonDock);
222  m_dockWidgets.append(comparisonDock);
223  actionCollection()->addAction("show_comparison_dock", comparisonDock->toggleViewAction());
224  comparisonDock->setVisible(false);
225  connect(m_vocabularyView, SIGNAL(translationChanged(KEduVocExpression*, int)),
226  m_comparisonWidget, SLOT(setTranslation(KEduVocExpression*, int)));
227  tabifyDockWidget(comparisonDock,inflectionDock);
228 
229 // Multiple choice
230  QDockWidget *multipleChoiceDock = new QDockWidget(i18n("Multiple Choice"), this);
231  multipleChoiceDock->setObjectName("MultipleChoiceDock");
232  MultipleChoiceWidget *multipleChoiceWidget = new MultipleChoiceWidget(this);
233  QScrollArea *multipleChoiceScrollArea = new QScrollArea(this);
234  multipleChoiceScrollArea->setWidgetResizable(true);
235  multipleChoiceScrollArea->setWidget(multipleChoiceWidget);
236  multipleChoiceDock->setWidget(multipleChoiceScrollArea);
237  addDockWidget(Qt::RightDockWidgetArea, multipleChoiceDock);
238  m_dockWidgets.append(multipleChoiceDock);
239  actionCollection()->addAction("show_multiplechoice_dock", multipleChoiceDock->toggleViewAction());
240  multipleChoiceDock->setVisible(false);
241  connect(m_vocabularyView, SIGNAL(translationChanged(KEduVocExpression*, int)),
242  multipleChoiceWidget, SLOT(setTranslation(KEduVocExpression*, int)));
243 
244 // Synonym (and the same for antonym and false friends)
245  QDockWidget *synonymDock = new QDockWidget(i18n("Synonyms"), this);
246  synonymDock->setObjectName("SynonymDock");
247  m_synonymWidget = new SynonymWidget(SynonymWidget::Synonym, this);
248  QScrollArea *synonymScrollArea = new QScrollArea(this);
249  synonymScrollArea->setWidgetResizable(true);
250  synonymScrollArea->setWidget(m_synonymWidget);
251  synonymDock->setWidget(synonymScrollArea);
252  addDockWidget(Qt::RightDockWidgetArea, synonymDock);
253  m_dockWidgets.append(synonymDock);
254  actionCollection()->addAction("show_synonym_dock", synonymDock->toggleViewAction());
255  synonymDock->setVisible(false);
256  connect(m_vocabularyView, SIGNAL(translationChanged(KEduVocExpression*, int)),
257  m_synonymWidget, SLOT(setTranslation(KEduVocExpression*, int)));
258 
259  QDockWidget *antonymDock = new QDockWidget(i18n("Antonyms"), this);
260  antonymDock->setObjectName("AntonymDock");
261  m_antonymWidget = new SynonymWidget(SynonymWidget::Antonym, this);
262  QScrollArea *antonymScrollArea = new QScrollArea(this);
263  antonymScrollArea->setWidgetResizable(true);
264  antonymScrollArea->setWidget(m_antonymWidget);
265  antonymDock->setWidget(antonymScrollArea);
266  addDockWidget(Qt::RightDockWidgetArea, antonymDock);
267  m_dockWidgets.append(antonymDock);
268  actionCollection()->addAction("show_antonym_dock", antonymDock->toggleViewAction());
269  antonymDock->setVisible(false);
270  connect(m_vocabularyView, SIGNAL(translationChanged(KEduVocExpression*, int)),
271  m_antonymWidget, SLOT(setTranslation(KEduVocExpression*, int)));
272  tabifyDockWidget(synonymDock,antonymDock);
273 
274  QDockWidget *falseFriendDock = new QDockWidget(i18n("False Friends"), this);
275  falseFriendDock->setObjectName("FalseFriendDock");
276  m_falseFriendWidget = new SynonymWidget(SynonymWidget::FalseFriend, this);
277  QScrollArea *falseFriendScrollArea = new QScrollArea(this);
278  falseFriendScrollArea->setWidgetResizable(true);
279  falseFriendScrollArea->setWidget(m_falseFriendWidget);
280  falseFriendDock->setWidget(falseFriendScrollArea);
281  addDockWidget(Qt::RightDockWidgetArea, falseFriendDock);
282  m_dockWidgets.append(falseFriendDock);
283  actionCollection()->addAction("show_falsefriend_dock", falseFriendDock->toggleViewAction());
284  falseFriendDock->setVisible(false);
285  connect(m_vocabularyView, SIGNAL(translationChanged(KEduVocExpression*, int)),
286  m_falseFriendWidget, SLOT(setTranslation(KEduVocExpression*, int)));
287  tabifyDockWidget(antonymDock,falseFriendDock);
288 
289 // Pronunciation symbols - Use KCharSelect
290  QDockWidget *charSelectDock = new QDockWidget(i18n("Phonetic Symbols"), this);
291  charSelectDock->setObjectName("IPADock");
292  KCharSelect *charSelectWidget = new KCharSelect(this, 0, KCharSelect::SearchLine | KCharSelect::BlockCombos | KCharSelect::CharacterTable);
293  charSelectWidget->setCurrentChar(0x0250);
294  QScrollArea *charSelectScrollArea = new QScrollArea(this);
295  charSelectScrollArea->setWidgetResizable(true);
296  charSelectScrollArea->setWidget(charSelectWidget);
297  charSelectDock->setWidget(charSelectScrollArea);
298  addDockWidget(Qt::BottomDockWidgetArea, charSelectDock);
299  m_dockWidgets.append(charSelectDock);
300  actionCollection()->addAction("show_pronunciation_dock", charSelectDock->toggleViewAction());
301  charSelectDock->setVisible(false);
302  connect(charSelectWidget, SIGNAL(charSelected(const QChar &)), m_vocabularyView, SLOT(appendChar(const QChar &)));
303 
304 // Image
305  QDockWidget *imageDock = new QDockWidget(i18n("Image"), this);
306  imageDock->setObjectName("ImageDock");
307  ImageChooserWidget *imageChooserWidget = new ImageChooserWidget(this);
308  QScrollArea *imageScrollArea = new QScrollArea(this);
309  imageScrollArea->setWidgetResizable(true);
310  imageScrollArea->setWidget(imageChooserWidget);
311  imageDock->setWidget(imageScrollArea);
312  addDockWidget(Qt::RightDockWidgetArea, imageDock);
313  m_dockWidgets.append(imageDock);
314  actionCollection()->addAction("show_image_dock", imageDock->toggleViewAction());
315  imageDock->setVisible(false);
316  connect(m_vocabularyView, SIGNAL(translationChanged(KEduVocExpression*, int)),
317  imageChooserWidget, SLOT(setTranslation(KEduVocExpression*, int)));
318  tabifyDockWidget(multipleChoiceDock,imageDock);
319 
320 // Summary word
321  QDockWidget *summaryDock = new QDockWidget(i18n("Summary"), this);
322  summaryDock->setObjectName("SummaryDock");
323  m_summaryWordWidget = new SummaryWordWidget(m_vocabularyFilter, m_mainWindow->parleyDocument()->document(), this);
324  QScrollArea *summaryScrollArea = new QScrollArea(this);
325  summaryScrollArea->setWidgetResizable(true);
326  summaryScrollArea->setWidget(m_summaryWordWidget);
327  summaryDock->setWidget(summaryScrollArea);
328  addDockWidget(Qt::BottomDockWidgetArea, summaryDock);
329  actionCollection()->addAction("show_summary_dock", summaryDock->toggleViewAction());
330  summaryDock->setVisible(false);
331  m_dockWidgets.append(summaryDock);
332  connect(m_vocabularyView, SIGNAL(translationChanged(KEduVocExpression*, int)),
333  m_summaryWordWidget, SLOT(setTranslation(KEduVocExpression*, int)));
334 
335 // Sound
336  QDockWidget *audioDock = new QDockWidget(i18n("Sound"), this);
337  audioDock->setObjectName("AudioDock");
338  AudioWidget *audioWidget = new AudioWidget(this);
339  QScrollArea *audioScrollArea = new QScrollArea(this);
340  audioScrollArea->setWidgetResizable(true);
341  audioScrollArea->setWidget(audioWidget);
342  audioDock->setWidget(audioScrollArea);
343  addDockWidget(Qt::RightDockWidgetArea, audioDock);
344  m_dockWidgets.append(audioDock);
345  actionCollection()->addAction("show_audio_dock", audioDock->toggleViewAction());
346  audioDock->setVisible(false);
347  connect(m_vocabularyView, SIGNAL(translationChanged(KEduVocExpression*, int)),
348  audioWidget, SLOT(setTranslation(KEduVocExpression*, int)));
349  tabifyDockWidget(imageDock,audioDock);
350 
351 // browser
352  QDockWidget *browserDock = new QDockWidget(i18n("Internet"), this);
353  browserDock->setObjectName("BrowserDock");
354  //TinyWebBrowser *browserWidget = new TinyWebBrowser(this);
355  BrowserWidget *htmlPart = new BrowserWidget(browserDock);
356  QScrollArea *browserScrollArea = new QScrollArea(this);
357  browserScrollArea->setWidgetResizable(true);
358  browserScrollArea->setWidget(htmlPart);
359  browserDock->setWidget(browserScrollArea);
360  addDockWidget(Qt::BottomDockWidgetArea, browserDock);
361  m_dockWidgets.append(browserDock);
362  actionCollection()->addAction("show_browser_dock", browserDock->toggleViewAction());
363  browserDock->setVisible(false);
364  connect(m_vocabularyView, SIGNAL(translationChanged(KEduVocExpression*, int)),
365  htmlPart, SLOT(setTranslation(KEduVocExpression*, int)));
366  tabifyDockWidget(summaryDock,browserDock);
367 
368 // LaTeX
369  QDockWidget *latexDock = new QDockWidget(i18n("LaTeX"), this);
370  latexDock->setObjectName("LatexDock");
371  m_latexWidget = new LatexWidget(m_vocabularyFilter, m_mainWindow->parleyDocument()->document(), this);
372  QScrollArea *latexScrollArea = new QScrollArea(this);
373  latexScrollArea->setWidgetResizable(true);
374  latexScrollArea->setWidget(m_latexWidget);
375  latexDock->setWidget(latexScrollArea);
376  addDockWidget(Qt::RightDockWidgetArea, latexDock);
377  actionCollection()->addAction("show_latex_dock", latexDock->toggleViewAction());
378  latexDock->setVisible(false);
379  m_dockWidgets.append(latexDock);
380  connect(m_vocabularyView, SIGNAL(translationChanged(KEduVocExpression*, int)),
381  m_latexWidget, SLOT(setTranslation(KEduVocExpression*, int)));
382  tabifyDockWidget(audioDock,latexDock);
383 
384 // Grades
385 // QDockWidget *gradeDock = new QDockWidget(i18n("Grade"), this);
386 // gradeDock->setObjectName("gradeDock");
387 // QLabel *gradeWidget = new QLabel("grade placeholder", this);
388 // gradeDock->setWidget(gradeWidget);
389 // addDockWidget(Qt::RightDockWidgetArea, gradeDock);
390 // connect(this, SIGNAL(signalSetData(KEduVocTranslation*)), m_declensionWidget, SLOT(setTranslation(KEduVocTranslation*)));
391 
392 }
393 
394 void EditorWindow::initActions()
395 {
396  ParleyActions::create(ParleyActions::RemoveGrades, this, SLOT(removeGrades()), actionCollection());
397  m_spellCheckMenu = ParleyActions::create(ParleyActions::CheckSpelling, 0, "", actionCollection());
398  m_spellCheckMenu->setMenu(new QMenu(this));
399  m_spellCheckMapper = new QSignalMapper(this);
400  connect(m_spellCheckMapper, SIGNAL(mapped(int)), m_vocabularyView, SLOT(checkSpelling(int)));
401 
402  ParleyActions::create(ParleyActions::ToggleShowSublessons, m_vocabularyModel, SLOT(showEntriesOfSubcontainers(bool)), actionCollection());
403  ParleyActions::create(ParleyActions::AutomaticTranslation, m_vocabularyModel, SLOT(automaticTranslation(bool)), actionCollection());
404  ParleyActions::create(ParleyActions::StartPractice, m_mainWindow, SLOT(showPracticeConfiguration()), actionCollection());
405  actionCollection()->action("practice_start")->setText(i18n("Practice"));
406  actionCollection()->action("practice_start")->setToolTip(i18n("Practice"));
407  ParleyActions::create(ParleyActions::ConfigurePractice, m_mainWindow, SLOT(configurePractice()), actionCollection());
408  ParleyActions::create(ParleyActions::ToggleSearchBar, this, SLOT(slotConfigShowSearch()), actionCollection());
409  ParleyActions::create(ParleyActions::SearchVocabulary, this, SLOT(startSearch()), actionCollection());
410  ParleyActions::create(ParleyActions::ShowScriptManager, this, SLOT(slotShowScriptManager()), actionCollection());
411  ParleyActions::create(ParleyActions::LanguagesProperties, m_mainWindow->parleyDocument(), SLOT(languageProperties()), actionCollection());
412  ParleyActions::createUploadAction(m_mainWindow->parleyDocument(), SLOT(uploadFile()), actionCollection());
413 }
414 
415 void EditorWindow::initModel()
416 {
417  m_vocabularyModel = new VocabularyModel(this);
418  m_vocabularyFilter = new VocabularyFilter(this);
419  m_vocabularyFilter->setSourceModel(m_vocabularyModel);
420  m_vocabularyView->setFilter(m_vocabularyFilter);
421 
422 // connect(m_mainWindow->parleyDocument(), SIGNAL(documentChanged(KEduVocDocument*)), m_vocabularyModel, SLOT(setDocument(KEduVocDocument*)));
423 // connect(m_mainWindow->parleyDocument(), SIGNAL(documentChanged(KEduVocDocument*)), m_vocabularyView, SLOT(setDocument(KEduVocDocument*)));
424  connect(m_searchLine, SIGNAL(textChanged(const QString&)), m_vocabularyFilter, SLOT(setSearchString(const QString&)));
425 }
426 
430 void EditorWindow::initView()
431 {
432  QWidget *mainWidget = new QWidget(this);
433  setCentralWidget(mainWidget);
434  QVBoxLayout *topLayout = new QVBoxLayout(mainWidget);
435  topLayout->setMargin(KDialog::marginHint());
436  topLayout->setSpacing(KDialog::spacingHint());
437 
438  m_searchLine = new KLineEdit(this);
439  m_searchLine->show();
440  m_searchLine->setFocusPolicy(Qt::ClickFocus);
441  m_searchLine->setClearButtonShown(true);
442  m_searchLine->setClickMessage(i18n("Enter search terms here"));
443 
444 // m_searchLine->setToolTip(i18n("Search your vocabuary"));
445 
446  QLabel *label = new QLabel(i18n("S&earch:"), this);
447  label->setBuddy(m_searchLine);
448  label->show();
449 
450  m_searchWidget = new QWidget(this);
451  QHBoxLayout* layout = new QHBoxLayout(m_searchWidget);
452  layout->setSpacing(KDialog::spacingHint());
453  layout->setMargin(0);
454  layout->addWidget(label);
455  layout->addWidget(m_searchLine);
456 
458  QVBoxLayout * rightLayout = new QVBoxLayout();
459  rightLayout->setSpacing(KDialog::spacingHint());
460  rightLayout->setMargin(0);
461  rightLayout->addWidget(m_searchWidget);
462  m_searchWidget->setVisible(Prefs::showSearch());
463 
464  m_vocabularyView = new VocabularyView(this);
465  rightLayout->addWidget(m_vocabularyView, 1, 0);
466 
467  topLayout->addLayout(rightLayout);
468 }
469 
470 void EditorWindow::slotConfigShowSearch()
471 {
472  m_searchWidget->setVisible(m_searchWidget->isHidden());
473  Prefs::setShowSearch(m_searchWidget->isVisible());
474 }
475 
476 void EditorWindow::startSearch()
477 {
478  m_searchWidget->setVisible(true);
479  m_searchLine->setFocus();
480 }
481 
482 void EditorWindow::slotShowScriptManager()
483 {
484  ScriptDialog * dialog = new ScriptDialog(m_scriptManager);
485  dialog->show();
486 }
487 
488 void EditorWindow::applyPrefs()
489 {
490  m_vocabularyView->reset();
491 }
492 
493 void EditorWindow::removeGrades()
494 {
495  m_mainWindow->parleyDocument()->document()->lesson()->resetGrades(-1, KEduVocContainer::Recursive);
496 }
497 
498 void EditorWindow::initScripts()
499 {
500  m_scriptManager = new ScriptManager(this);
501 
502  m_vocabularyView->setTranslator(m_scriptManager->translator());
503 
504  //Load scripts
505  m_scriptManager->loadScripts();
506 }
507 
508 void EditorWindow::saveState()
509 {
510  m_vocabularyView->saveColumnVisibility();
511 }
512 
513 void EditorWindow::slotLanguagesChanged()
514 {
515  m_vocabularyModel->resetLanguages();
516 }
517 
518 #include "editor.moc"
Editor::EditorWindow::saveState
void saveState()
when closing the application, save the editor's state
Definition: editor.cpp:508
inflectionwidget.h
Editor::SynonymWidget::FalseFriend
Definition: synonymwidget.h:36
QWidget
Editor::EditorWindow::slotLanguagesChanged
void slotLanguagesChanged()
Edit languages contained in the document.
Definition: editor.cpp:513
QScrollArea::setWidget
void setWidget(QWidget *widget)
ParleyActions::create
KAction * create(ParleyAction id, const QObject *recvr, const char *slot, QObject *parent)
Definition: parleyactions.cpp:64
lessonview.h
QWidget::isHidden
bool isHidden() const
Editor::LessonView
View for the lesson list.
Definition: lessonview.h:30
multiplechoicewidget.h
QAbstractItemView::selectionModel
QItemSelectionModel * selectionModel() const
QDockWidget
WordClassModel
Model for the tree of word types.
Definition: wordclassmodel.h:24
VocabularyFilter
Definition: vocabularyfilter.h:26
QChar
imagechooserwidget.h
ScriptManager::translator
Translator * translator()
returns the Translator object the Scripting::Parley
Definition: scriptmanager.h:111
ParleyMainWindow
Definition: parleymainwindow.h:41
ParleyActions::AutomaticTranslation
Definition: parleyactions.h:36
VocabularyFilter::setSourceModel
void setSourceModel(VocabularyModel *model)
Definition: vocabularyfilter.cpp:44
QWidget::setVisible
virtual void setVisible(bool visible)
ParleyDocument::document
KEduVocDocument * document()
Definition: parleydocument.cpp:97
QHBoxLayout
scriptdialog.h
Editor::EditorWindow::applyPrefs
void applyPrefs()
Definition: editor.cpp:488
Editor::EditorWindow::slotConfigShowSearch
void slotConfigShowSearch()
Definition: editor.cpp:470
prefs.h
Editor::WordTypeView
Definition: wordtypeview.h:30
Editor::InflectionWidget::setDocument
void setDocument(KEduVocDocument *doc)
Definition: inflectionwidget.cpp:64
Editor::EditorWindow::initModel
void initModel()
setup the main model
Definition: editor.cpp:415
ContainerView::setModel
virtual void setModel(ContainerModel *model)
Set the model for the view.
Definition: containerview.cpp:42
LessonModel
Model for the tree of lessons.
Definition: lessonmodel.h:24
ParleyActions::SearchVocabulary
Definition: parleyactions.h:39
Editor::EditorWindow::initDockWidgets
void initDockWidgets()
Definition: editor.cpp:149
editor.h
Prefs::showSearch
static bool showSearch()
Get Toggle display of the search bar.
Definition: prefs.h:830
parleyactions.h
QLabel::setBuddy
void setBuddy(QWidget *buddy)
synonymwidget.h
containermodel.h
Editor::LessonView::setModel
virtual void setModel(LessonModel *model)
Set the model for the view.
Definition: lessonview.cpp:242
ParleyActions::ToggleSearchBar
Definition: parleyactions.h:39
QSignalMapper::setMapping
void setMapping(QObject *sender, int id)
parleyprefs.h
QBoxLayout::addWidget
void addWidget(QWidget *widget, int stretch, QFlags< Qt::AlignmentFlag > alignment)
QList::append
void append(const T &value)
Editor::VocabularyView::saveColumnVisibility
void saveColumnVisibility() const
Save column visibility settings.
Definition: vocabularyview.cpp:204
KXmlGuiWindow
Editor::InflectionWidget
Definition: inflectionwidget.h:30
ParleyActions::ConfigurePractice
Definition: parleyactions.h:37
QObject::setObjectName
void setObjectName(const QString &name)
ParleyActions::ShowScriptManager
Definition: parleyactions.h:40
ParleyActions::CheckSpelling
Definition: parleyactions.h:34
QVBoxLayout
ParleyActions::ToggleShowSublessons
Definition: parleyactions.h:35
Prefs::setShowSearch
static void setShowSearch(bool v)
Set Toggle display of the search bar.
Definition: prefs.h:820
Editor::LatexWidget
Definition: latexwidget.h:36
QString
summarywordwidget.h
QLayout::setMargin
void setMargin(int margin)
Editor::EditorWindow::~EditorWindow
~EditorWindow()
Definition: editor.cpp:97
wordclassmodel.h
Editor::EditorWindow::updateDocument
void updateDocument(KEduVocDocument *doc)
Set the current doc (after creating a new one or opening a file)
Definition: editor.cpp:104
ParleyActions::RemoveGrades
Definition: parleyactions.h:33
Editor::EditorWindow::slotShowScriptManager
void slotShowScriptManager()
Display script manager (open a new window / or Settings window)
Definition: editor.cpp:482
VocabularyModel
Definition: vocabularymodel.h:29
ParleyActions::StartPractice
Definition: parleyactions.h:37
containerview.h
QMenu
QTreeView::expandToDepth
void expandToDepth(int depth)
QScrollArea::setWidgetResizable
void setWidgetResizable(bool resizable)
Editor::EditorWindow::removeGrades
void removeGrades()
Removes all grading information from the current document.
Definition: editor.cpp:493
Editor::EditorWindow::initScripts
void initScripts()
Load enabled scripts (from configuration parleyrc)
Definition: editor.cpp:498
Editor::VocabularyView
Definition: vocabularyview.h:46
lessonmodel.h
ScriptManager::loadScripts
void loadScripts()
Loads (activates) all the available scripts and notifies the user if any script was not activated (du...
Definition: scriptmanager.cpp:112
QDockWidget::setWidget
void setWidget(QWidget *widget)
Editor::BrowserWidget
Definition: browserwidget.h:35
QItemSelection
Editor::VocabularyView::setTranslator
void setTranslator(Translator *translator)
Set the translator to be used by the delegate.
Definition: vocabularyview.cpp:343
Editor::ComparisonWidget::setDocument
void setDocument(KEduVocDocument *doc)
To know about word types that are currently defined.
Definition: comparisonwidget.cpp:110
Editor::EditorWindow::initView
void initView()
setup the main view
Definition: editor.cpp:430
Editor::VocabularyView::setDocument
void setDocument(KEduVocDocument *doc)
Definition: vocabularyview.cpp:332
Editor::VocabularyView::reset
void reset()
Definition: vocabularyview.cpp:173
ParleyActions::LanguagesProperties
Definition: parleyactions.h:32
VocabularyModel::resetLanguages
void resetLanguages()
Definition: vocabularymodel.cpp:397
QDockWidget::toggleViewAction
QAction * toggleViewAction() const
Editor::SynonymWidget::Antonym
Definition: synonymwidget.h:35
comparisonwidget.h
translator.h
ReadonlyContainerModel::setDocument
void setDocument(KEduVocDocument *doc)
Set the new source kvtml file.
Definition: readonlycontainermodel.cpp:43
Editor::AudioWidget
Definition: audiowidget.h:32
ScriptDialog
Definition: scriptdialog.h:26
Editor::EditorWindow::EditorWindow
EditorWindow(ParleyMainWindow *parent)
Definition: editor.cpp:66
latexwidget.h
Editor::ImageChooserWidget
Definition: imagechooserwidget.h:27
Editor::MultipleChoiceWidget
Definition: multiplechoicewidget.h:40
ScriptManager
This class finds the scripts installed in the application directory and manages loading and unloading...
Definition: scriptmanager.h:30
Editor::EditorWindow::initActions
void initActions()
setup the action (menus etc)
Definition: editor.cpp:394
QWidget::show
void show()
QWidget::setToolTip
void setToolTip(const QString &)
Editor::SummaryWordWidget::slotDocumentChanged
void slotDocumentChanged(KEduVocDocument *doc)
Called when a KEduVocDocument change happened.
Definition: summarywordwidget.cpp:99
QScrollArea
Editor::ComparisonWidget
Definition: comparisonwidget.h:39
Editor::VocabularyView::setFilter
void setFilter(VocabularyFilter *model)
Definition: vocabularyview.cpp:151
audiowidget.h
vocabularyfilter.h
ParleyMainWindow::parleyDocument
ParleyDocument * parleyDocument()
Return the ParleyDocument member object.
Definition: parleymainwindow.cpp:413
QLabel
Editor::SynonymWidget::Synonym
Definition: synonymwidget.h:34
wordtypeview.h
QSignalMapper
browserwidget.h
VocabularyModel::setDocument
void setDocument(KEduVocDocument *doc)
Definition: vocabularymodel.cpp:48
QBoxLayout::setSpacing
void setSpacing(int spacing)
Editor::SummaryWordWidget
Represents the overview of a KEduVocExpression Shows the language word the lesson the word type pronu...
Definition: summarywordwidget.h:47
vocabularymodel.h
ParleyActions::createUploadAction
KAction * createUploadAction(const QObject *recvr, const char *slot, KActionCollection *collection)
Definition: parleyactions.cpp:196
Editor::SynonymWidget
Definition: synonymwidget.h:29
vocabularyview.h
QBoxLayout::addLayout
void addLayout(QLayout *layout, int stretch)
QTimer::singleShot
singleShot
Editor::SynonymWidget::setDocument
void setDocument(KEduVocDocument *doc)
Register the document inside the widget so that it can be marked as modified.
Definition: synonymwidget.cpp:38
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:15:56 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

parley

Skip menu "parley"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

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