• 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
vocabularyview.cpp
Go to the documentation of this file.
1 /***************************************************************************
2 
3  Copyright 2006, 2007 Peter Hedlund <peter.hedlund@kdemail.net>
4  Copyright 2007-2008 Frederik Gladhorn <frederik.gladhorn@kdemail.net>
5 
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 "vocabularyview.h"
18 #include "vocabularyheaderview.h"
19 
20 #include "vocabularymodel.h"
21 #include "vocabularyfilter.h"
22 #include "vocabularydelegate.h"
23 #include "vocabularymimedata.h"
24 
25 #include "editor/editor.h"
26 #include "prefs.h"
27 #include "vocabularycolumnsdialog.h"
28 #include "documentsettings.h"
29 
30 #include <keduvoctranslation.h>
31 #include <keduvocexpression.h>
32 
33 #include <QHeaderView>
34 #include <QPainter>
35 #include <QResizeEvent>
36 #include <QClipboard>
37 #include <QTimer>
38 
39 #include <KApplication>
40 #include <KNotification>
41 #include <KComponentData>
42 #include <KGlobalSettings>
43 #include <KAction>
44 #include <KActionCollection>
45 #include <KToggleAction>
46 #include <KLocale>
47 #include <KMessageBox>
48 #include <KUrl>
49 #include <sonnet/backgroundchecker.h>
50 #include <languagesettings.h>
51 
52 using namespace Editor;
53 
54 VocabularyView::VocabularyView(EditorWindow * parent)
55  : QTableView(parent), m_model(0), m_doc(0),
56  m_spellChecker(0), m_spellDialog(0)
57 {
58  installEventFilter(this);
59 
60  setHorizontalHeader(new VocabularyHeaderView(Qt::Horizontal, this));
61 
62  horizontalHeader()->setResizeMode(QHeaderView::Interactive);
63  setEditTriggers(QAbstractItemView::AnyKeyPressed | QAbstractItemView::EditKeyPressed | QAbstractItemView::DoubleClicked);
64 
65  setSortingEnabled(true);
66  setTabKeyNavigation(true);
67 
68  m_vocabularyDelegate = new VocabularyDelegate(this);
69  setItemDelegate(m_vocabularyDelegate);
70 
71  setFrameStyle(QFrame::NoFrame);
72  setAlternatingRowColors(true);
73 
74  // Enable context menus
75  setContextMenuPolicy(Qt::ActionsContextMenu);
76  horizontalHeader()->setContextMenuPolicy(Qt::ActionsContextMenu);
77 
78  setWordWrap(true);
79  setDragEnabled(true);
80 
81  // smooth scrolling horizontally, otherwise it tries to jump from item to item.
82  setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);
83 
84  m_appendEntryAction = new KAction(this);
85  parent->actionCollection()->addAction("edit_append", m_appendEntryAction);
86  m_appendEntryAction->setIcon(KIcon("list-add-card"));
87  m_appendEntryAction->setText(i18n("&Add New Entry"));
88  connect(m_appendEntryAction, SIGNAL(triggered(bool)), SLOT(appendEntry()));
89  m_appendEntryAction->setShortcut(QKeySequence(Qt::Key_Insert));
90  m_appendEntryAction->setWhatsThis(i18n("Append a new row to the vocabulary"));
91  m_appendEntryAction->setToolTip(m_appendEntryAction->whatsThis());
92  m_appendEntryAction->setStatusTip(m_appendEntryAction->whatsThis());
93  addAction(m_appendEntryAction);
94 
95  m_deleteEntriesAction = new KAction(this);
96  parent->actionCollection()->addAction("edit_remove_selected_area", m_deleteEntriesAction);
97  m_deleteEntriesAction->setIcon(KIcon("list-remove-card"));
98  m_deleteEntriesAction->setText(i18n("&Delete Entry"));
99  connect(m_deleteEntriesAction, SIGNAL(triggered(bool)), this, SLOT(deleteSelectedEntries()));
100  m_deleteEntriesAction->setShortcut(QKeySequence(Qt::Key_Delete));
101  m_deleteEntriesAction->setWhatsThis(i18n("Delete the selected rows"));
102  m_deleteEntriesAction->setToolTip(m_deleteEntriesAction->whatsThis());
103  m_deleteEntriesAction->setStatusTip(m_deleteEntriesAction->whatsThis());
104  addAction(m_deleteEntriesAction);
105 
106  QAction* separator = new QAction(this);
107  separator->setSeparator(true);
108  addAction(separator);
109 
110  m_copyAction = KStandardAction::copy(this, SLOT(slotEditCopy()), parent->actionCollection());
111  m_copyAction->setWhatsThis(i18n("Copy"));
112  m_copyAction->setToolTip(m_copyAction->whatsThis());
113  m_copyAction->setStatusTip(m_copyAction->whatsThis());
114  addAction(m_copyAction);
115 
116  m_cutAction = KStandardAction::cut(this, SLOT(slotCutEntry()), parent->actionCollection());
117  m_cutAction->setWhatsThis(i18n("Cut"));
118  m_cutAction->setToolTip(m_cutAction->whatsThis());
119  m_cutAction->setStatusTip(m_cutAction->whatsThis());
120  addAction(m_cutAction);
121 
122  m_pasteAction = KStandardAction::paste(this, SLOT(slotEditPaste()), parent->actionCollection());
123  m_pasteAction->setWhatsThis(i18n("Paste"));
124  m_pasteAction->setToolTip(m_pasteAction->whatsThis());
125  m_pasteAction->setStatusTip(m_pasteAction->whatsThis());
126  addAction(m_pasteAction);
127 
128  m_selectAllAction = KStandardAction::selectAll(this, SLOT(selectAll()), parent->actionCollection());
129  m_selectAllAction->setWhatsThis(i18n("Select all rows"));
130  m_selectAllAction->setToolTip(m_selectAllAction->whatsThis());
131  m_selectAllAction->setStatusTip(m_selectAllAction->whatsThis());
132 
133  m_clearSelectionAction = KStandardAction::deselect(this, SLOT(clearSelection()), parent->actionCollection());
134  m_clearSelectionAction->setWhatsThis(i18n("Deselect all rows"));
135  m_clearSelectionAction->setToolTip(m_clearSelectionAction->whatsThis());
136  m_clearSelectionAction->setStatusTip(m_clearSelectionAction->whatsThis());
137 
138  // vocabulary columns dialog
139  KAction *vocabularyColumnsDialogAction = new KAction(this);
140  parent->actionCollection()->addAction("show_vocabulary_columns_dialog", vocabularyColumnsDialogAction);
141  vocabularyColumnsDialogAction->setIcon(KIcon("view-file-columns"));
142  vocabularyColumnsDialogAction->setText(i18n("Vocabulary Columns..."));
143  vocabularyColumnsDialogAction->setWhatsThis(i18n("Toggle display of individual vocabulary columns"));
144  vocabularyColumnsDialogAction->setToolTip(vocabularyColumnsDialogAction->whatsThis());
145  vocabularyColumnsDialogAction->setStatusTip(vocabularyColumnsDialogAction->whatsThis());
146  horizontalHeader()->addAction(vocabularyColumnsDialogAction);
147  addAction(vocabularyColumnsDialogAction);
148  connect(vocabularyColumnsDialogAction, SIGNAL(triggered(bool)), this, SLOT(slotShowVocabularyColumnsDialog()));
149 }
150 
151 void VocabularyView::setFilter(VocabularyFilter * model)
152 {
153  QTableView::setModel(model);
154 
155  m_model = model;
156  connect(selectionModel(), SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)),
157  SLOT(slotCurrentChanged(const QModelIndex &, const QModelIndex &)));
158  connect(selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)),
159  SLOT(slotSelectionChanged(const QItemSelection&, const QItemSelection&)));
160  slotSelectionChanged(QItemSelection(), QItemSelection());
161 }
162 
163 void VocabularyView::slotCurrentChanged(const QModelIndex & current, const QModelIndex & previous)
164 {
165  Q_UNUSED(previous);
166  KEduVocExpression* entry = 0;
167  if (current.isValid()) {
168  entry = model()->data(current, VocabularyModel::EntryRole).value<KEduVocExpression*>();
169  }
170  emit translationChanged(entry, VocabularyModel::translation(current.column()));
171 }
172 
173 void VocabularyView::reset()
174 {
175  QTableView::reset();
176  emit translationChanged(0, 0);
177 
178  QList<int> visibleColumns;
179  if (m_doc) {
180  DocumentSettings ds(m_doc->url().url());
181  ds.readConfig();
182  visibleColumns = ds.visibleColumns();
183 
184  KConfig parleyConfig("parleyrc");
185  KConfigGroup documentGroup(&parleyConfig, "Document " + m_doc->url().url());
186  QByteArray state = documentGroup.readEntry("VocabularyColumns", QByteArray());
187 
188  if (!horizontalHeader()->restoreState(state)) {
189  resizeColumnsToContents();
190  }
191  }
192 
193  for (int i = 0; i < model()->columnCount(QModelIndex()); i++) {
194  if (i < visibleColumns.size()) {
195  setColumnHidden(i, !visibleColumns.value(i));
196  } else {
197  if (VocabularyModel::columnType(i) != VocabularyModel::Translation) {
198  setColumnHidden(i, true);
199  }
200  }
201  }
202 }
203 
204 void VocabularyView::saveColumnVisibility() const
205 {
206  if (!m_doc) {
207  return;
208  }
209 
210  // Generate a QList<int> for saving
211  QList<int> visibleList;
212  for (int i = 0; i < m_model->columnCount(); ++i) {
213  visibleList.append(static_cast<int>(!isColumnHidden(i)));
214  }
215 
216  DocumentSettings ds(m_doc->url().url());
217  ds.setVisibleColumns(visibleList);
218  ds.writeConfig();
219 
220  QByteArray saveState = horizontalHeader()->saveState();
221  KConfig parleyConfig("parleyrc");
222  KConfigGroup documentGroup(&parleyConfig, "Document " + m_doc->url().url());
223  documentGroup.writeEntry("VocabularyColumns", horizontalHeader()->saveState());
224 }
225 
226 void VocabularyView::appendEntry()
227 {
228  QModelIndex newIndex = m_model->appendEntry();
229  scrollTo(newIndex);
230  selectionModel()->clear(); // otherwise proxy mapping gets screwed for some reason
231  selectionModel()->select(newIndex, QItemSelectionModel::ClearAndSelect);
232  selectionModel()->setCurrentIndex(newIndex, QItemSelectionModel::ClearAndSelect);
233  edit(newIndex);
234 }
235 
236 void VocabularyView::appendChar(const QChar &c)
237 {
238  const QModelIndex &index = selectionModel()->currentIndex();
239  m_model->setData(index, QString(m_model->data(index).toString() + c));
240 }
241 
242 void VocabularyView::deleteSelectedEntries(bool askConfirmation)
243 {
244  QSet<int> rows;
245  foreach(const QModelIndex & index, selectionModel()->selectedIndexes()) {
246  rows.insert(index.row());
247  }
248 
249  bool del = true;
250  if (askConfirmation) {
251  del = KMessageBox::Continue == KMessageBox::warningContinueCancel(this, i18np("Do you really want to delete the selected entry?", "Do you really want to delete the selected %1 entries?", rows.count()), i18n("Delete"), KStandardGuiItem::del());
252  }
253 
254  if (del) {
255  emit translationChanged(0, 0);
256  while (!selectionModel()->selectedIndexes().isEmpty()) {
257  m_model->removeRows(selectionModel()->selectedIndexes()[0].row(), 1, QModelIndex());
258  }
259  }
260 }
261 
262 void VocabularyView::slotEditCopy()
263 {
264  QModelIndexList sortedIndexes = selectionModel()->selectedIndexes();
265  qSort(sortedIndexes);
266  QMimeData *mimeData = m_model->mimeData(sortedIndexes);
267 
268  QClipboard *clipboard = KApplication::clipboard();
269  clipboard->setMimeData(mimeData);
270 }
271 
272 void VocabularyView::slotEditPaste()
273 {
274  QClipboard *clipboard = KApplication::clipboard();
275  const QMimeData *mimeData = clipboard->mimeData();
276  const VocabularyMimeData *vocMimeData = qobject_cast<const VocabularyMimeData *>(mimeData);
277  if (vocMimeData) {
278  kDebug() << "Clipboard contains vocabulary mime data.";
279  foreach(const VocabularyMimeData::MimeExpression & mimeEntry, vocMimeData->expressionList()) {
280  KEduVocExpression *pasteExpression = new KEduVocExpression(mimeEntry.expression);
281  m_model->appendEntry(pasteExpression);
282 
283  // find word type (create if not found)
284  KEduVocWordType *type = m_doc->wordTypeContainer();
285  foreach(int translation, mimeEntry.wordTypes.keys()) {
286  // append if needed
287  foreach(const QString & typeName, mimeEntry.wordTypes.value(translation).wordType) {
288  kDebug() << mimeEntry.wordTypes.value(translation).wordType;
289  KEduVocContainer *childType = type->childContainer(typeName);
290  if (!childType) {
291  // the doc does not contain the right word type - create it
292  childType = new KEduVocWordType(typeName);
293  type->appendChildContainer(childType);
294  }
295  type = static_cast<KEduVocWordType*>(childType);
296  }
297  pasteExpression->translation(translation)->setWordType(type);
298  // check for special type stuff
299  if (type->wordType() != mimeEntry.wordTypes.value(translation).grammarType) {
300  if (type->wordType() == KEduVocWordFlag::NoInformation) {
301  type->setWordType(mimeEntry.wordTypes.value(translation).grammarType);
302  }
303  }
304  }
305  }
306  } else if (mimeData->hasText()) {
307  kDebug() << "Clipboard contains text data.";
308  // split at newline
309  QStringList lines = clipboard->text().split('\n');
310  foreach(QString line, lines) {
311  // split at tabs or semicolon:
312  m_model->appendEntry(new KEduVocExpression(line.split(QRegExp("[\t;]"), QString::KeepEmptyParts)));
313  }
314  }
315 }
316 
317 void VocabularyView::slotCutEntry()
318 {
319  slotEditCopy();
320  deleteSelectedEntries(false);
321 }
322 
323 void VocabularyView::slotSelectionChanged(const QItemSelection &, const QItemSelection &)
324 {
325  bool hasSelection = selectionModel()->hasSelection();
326  m_deleteEntriesAction->setEnabled(hasSelection);
327  m_clearSelectionAction->setEnabled(hasSelection);
328  m_copyAction->setEnabled(hasSelection);
329  m_cutAction->setEnabled(hasSelection);
330 }
331 
332 void VocabularyView::setDocument(KEduVocDocument * doc)
333 {
334  m_doc = doc;
335  m_vocabularyDelegate->setDocument(doc);
336  QTimer::singleShot(0, this, SLOT(reset()));
337 }
338 
343 void VocabularyView::setTranslator(Translator* translator)
344 {
345  m_vocabularyDelegate->setTranslator(translator);
346 }
347 
348 void VocabularyView::slotShowVocabularyColumnsDialog()
349 {
350  VocabularyColumnsDialog *dialog = new VocabularyColumnsDialog(m_doc, this);
351 
352  if (dialog->exec() == KDialog::Accepted) {
353  reset();
354  }
355 }
356 
357 void VocabularyView::checkSpelling(int language)
358 {
359  if (!m_model->rowCount()) {
360  KMessageBox::information(this, i18n("Nothing to spell check."));
361  return;
362  }
363 
364  if (!m_spellChecker) {
365  m_spellChecker = new Sonnet::BackgroundChecker(this);
366  m_spellDialog = new Sonnet::Dialog(m_spellChecker, this);
367  connect(m_spellDialog, SIGNAL(done(const QString&)), this, SLOT(continueSpelling()));
368  connect(m_spellDialog, SIGNAL(misspelling(const QString&, int)), this, SLOT(misspelling(const QString&, int)));
369  connect(m_spellDialog, SIGNAL(replace(const QString&, int, const QString&)), this, SLOT(spellingReplace(const QString&, int, const QString&)));
370  }
371 
372  m_spellColumn = language * VocabularyModel::EntryColumnsMAX;
373  m_spellRow = -1;
374  if (m_spellColumn < 0) {
375  return;
376  }
377 
378  QModelIndex index = m_model->index(0, m_spellColumn);
379  QString locale = m_doc->identifier(language).locale();
380  LanguageSettings settings(locale);
381  QString spellCode = settings.spellChecker().isEmpty() ? locale : settings.spellChecker();
382  m_spellChecker->changeLanguage(spellCode);
383  if (!m_spellChecker->speller().isValid()) {
384  kDebug() << "Invalid Language, popup here!";
385  KNotification::event(KNotification::Warning, i18nc("@title of a popup", "No Spell Checker Available"), i18nc("@popupmessage", "Either the language set up is incorrect or no spellchecker was installed for this locale: %1.", locale));
386  }
387  m_spellDialog->show();
388  continueSpelling();
389 }
390 
391 void VocabularyView::continueSpelling()
392 {
393  kDebug() << "Check spelling: " << m_spellRow << m_spellColumn;
394  ++m_spellRow;
395  while (m_spellRow < m_model->rowCount()) {
396  QModelIndex index = m_model->index(m_spellRow, m_spellColumn);
397  kDebug() << " " << m_model->data(index).toString();
398  if (!m_model->data(index).toString().isEmpty()) {
399  m_spellDialog->setBuffer(m_model->data(index).toString());
400  break;
401  } else {
402  ++m_spellRow;
403  }
404  }
405 }
406 
407 void VocabularyView::selectIndex(const QModelIndex &newIndex)
408 {
409  selectionModel()->select(newIndex, QItemSelectionModel::ClearAndSelect);
410  selectionModel()->setCurrentIndex(newIndex, QItemSelectionModel::ClearAndSelect);
411  scrollTo(newIndex);
412 }
413 
414 bool VocabularyView::eventFilter(QObject* obj, QEvent* event)
415 {
416  if (event->type() == QEvent::KeyPress && Prefs::smartAppend()) {
417  QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
418  if (keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Enter) {
419  if (selectionModel()->currentIndex().row() == m_model->rowCount() - 1) {
420  appendEntry();
421  }
422  }
423  }
424  // standard event processing
425  return QObject::eventFilter(obj, event);
426 }
427 
428 void VocabularyView::misspelling(const QString & word, int start)
429 {
430  Q_UNUSED(word)
431  Q_UNUSED(start)
432  QModelIndex index = m_model->index(m_spellRow, m_spellColumn);
433  selectIndex(index);
434 }
435 
436 void VocabularyView::spellingReplace(const QString & oldWord, int start, const QString & newWord)
437 {
438  kDebug() << oldWord << start << newWord;
439  QModelIndex index = m_model->index(m_spellRow, m_spellColumn);
440  QString data = index.data().toString();
441  QString newData = data.replace(start, oldWord.length(), newWord);
442  kDebug() << "Changing " << data << " to " << newData;
443  m_model->setData(index, newData);
444 }
445 
446 QModelIndexList VocabularyView::getSelectedIndexes() const
447 {
448  return selectionModel()->selectedIndexes();
449 }
450 
451 #include "vocabularyview.moc"
vocabularyheaderview.h
QSortFilterProxyModel::index
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const
Editor::VocabularyView::slotShowVocabularyColumnsDialog
void slotShowVocabularyColumnsDialog()
Show the vocabulary columns dialog to enable or disable the columns in the view.
Definition: vocabularyview.cpp:348
Editor::VocabularyColumnsDialog
Show options to enable/disable the columns for each language of the current document.
Definition: vocabularycolumnsdialog.h:40
QModelIndex
QEvent
QAbstractItemView::reset
virtual void reset()
VocabularyMimeData::MimeExpression::expression
KEduVocExpression expression
Definition: vocabularymimedata.h:37
QEvent::type
Type type() const
QAbstractItemView::setAlternatingRowColors
void setAlternatingRowColors(bool enable)
QAbstractItemView::setTabKeyNavigation
void setTabKeyNavigation(bool enable)
QAction::setSeparator
void setSeparator(bool b)
languagesettings.h
QItemSelectionModel::currentIndex
QModelIndex currentIndex() const
QClipboard::mimeData
const QMimeData * mimeData(Mode mode) const
QTableView::currentChanged
virtual void currentChanged(const QModelIndex &current, const QModelIndex &previous)
QSortFilterProxyModel::mimeData
virtual QMimeData * mimeData(const QModelIndexList &indexes) const
QByteArray
Editor::VocabularyView::getSelectedIndexes
QModelIndexList getSelectedIndexes() const
Definition: vocabularyview.cpp:446
QAbstractItemView::selectionModel
QItemSelectionModel * selectionModel() const
QTableView::resizeColumnsToContents
void resizeColumnsToContents()
QWidget::addAction
void addAction(QAction *action)
VocabularyMimeData::MimeExpression
Definition: vocabularymimedata.h:30
QTableView::setWordWrap
void setWordWrap(bool on)
VocabularyFilter
Definition: vocabularyfilter.h:26
QChar
QString::split
QStringList split(const QString &sep, SplitBehavior behavior, Qt::CaseSensitivity cs) const
Editor::VocabularyView::slotCutEntry
void slotCutEntry()
Cut an entry.
Definition: vocabularyview.cpp:317
Editor::VocabularyDelegate::setDocument
void setDocument(KEduVocDocument *doc)
Definition: vocabularydelegate.cpp:327
Editor::VocabularyDelegate
Definition: vocabularydelegate.h:31
VocabularyModel::Translation
Definition: vocabularymodel.h:34
documentsettings.h
DocumentSettings
Definition: documentsettings.h:9
QTableView::setSortingEnabled
void setSortingEnabled(bool enable)
Editor::VocabularyView::VocabularyView
VocabularyView(EditorWindow *parent)
Definition: vocabularyview.cpp:54
QVariant::value
T value() const
Editor::VocabularyView::slotEditPaste
void slotEditPaste()
paste the clipboard into the document
Definition: vocabularyview.cpp:272
prefs.h
QMimeData::hasText
bool hasText() const
QSet::insert
const_iterator insert(const T &value)
QFrame::setFrameStyle
void setFrameStyle(int style)
QMimeData
QSortFilterProxyModel::rowCount
virtual int rowCount(const QModelIndex &parent) const
QList::size
int size() const
editor.h
QList::value
T value(int i) const
QClipboard
QAbstractItemView::scrollTo
virtual void scrollTo(const QModelIndex &index, ScrollHint hint)=0
vocabularymimedata.h
QRegExp
QModelIndex::isValid
bool isValid() const
QList::append
void append(const T &value)
Editor::VocabularyView::saveColumnVisibility
void saveColumnVisibility() const
Save column visibility settings.
Definition: vocabularyview.cpp:204
QTableView::setModel
virtual void setModel(QAbstractItemModel *model)
VocabularyFilter::appendEntry
QModelIndex appendEntry(KEduVocExpression *expression=0)
Definition: vocabularyfilter.cpp:36
QObject::installEventFilter
void installEventFilter(QObject *filterObj)
VocabularyModel::columnType
static int columnType(int column)
Returns the type of the column specified.
Definition: vocabularymodel.cpp:315
QObject
Editor::VocabularyHeaderView
Definition: vocabularyheaderview.h:22
QItemSelectionModel::select
virtual void select(const QModelIndex &index, QFlags< QItemSelectionModel::SelectionFlag > command)
QString::isEmpty
bool isEmpty() const
QItemSelectionModel::selectedIndexes
QModelIndexList selectedIndexes() const
QAbstractItemView::setItemDelegate
void setItemDelegate(QAbstractItemDelegate *delegate)
QModelIndex::row
int row() const
QItemSelectionModel::hasSelection
bool hasSelection() const
QSortFilterProxyModel::columnCount
virtual int columnCount(const QModelIndex &parent) const
QAbstractItemView::setEditTriggers
void setEditTriggers(QFlags< QAbstractItemView::EditTrigger > triggers)
vocabularydelegate.h
QTableView::selectionChanged
virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
QTableView::setColumnHidden
void setColumnHidden(int column, bool hide)
QObject::eventFilter
virtual bool eventFilter(QObject *watched, QEvent *event)
Editor::VocabularyView::deleteSelectedEntries
void deleteSelectedEntries(bool askConfirmation=true)
Delete the currently selected entries.
Definition: vocabularyview.cpp:242
QSet
QAbstractItemModel::data
virtual QVariant data(const QModelIndex &index, int role) const =0
VocabularyModel::EntryRole
Definition: vocabularymodel.h:50
QString
QList< int >
QSet::count
int count() const
QClipboard::setMimeData
void setMimeData(QMimeData *src, Mode mode)
Prefs::smartAppend
static bool smartAppend()
Get If true, when using the entry dialog, new rows will be appended as needed.
Definition: prefs.h:89
QSortFilterProxyModel::setData
virtual bool setData(const QModelIndex &index, const QVariant &value, int role)
QStringList
Editor::VocabularyView::slotEditCopy
void slotEditCopy()
put the marked text/object into the clipboard
Definition: vocabularyview.cpp:262
QWidget::locale
QLocale locale() const
LanguageSettings
Definition: languagesettings.h:10
LanguageSettings::spellChecker
QString spellChecker() const
Get Spell checker for this language.
Definition: languagesettings.h:54
Editor::VocabularyView::checkSpelling
void checkSpelling(int language)
Definition: vocabularyview.cpp:357
QKeyEvent::key
int key() const
QTableView
Editor::VocabularyView::appendEntry
void appendEntry()
Definition: vocabularyview.cpp:226
QWidget::setContextMenuPolicy
void setContextMenuPolicy(Qt::ContextMenuPolicy policy)
Editor::VocabularyView
Definition: vocabularyview.h:46
Translator
Keeps the translated words.
Definition: translator.h:74
QSortFilterProxyModel::removeRows
virtual bool removeRows(int row, int count, const QModelIndex &parent)
QAbstractItemView::state
State state() const
Editor::VocabularyView::translationChanged
void translationChanged(KEduVocExpression *, int)
QClipboard::text
QString text(Mode mode) const
QItemSelection
Editor::VocabularyView::setTranslator
void setTranslator(Translator *translator)
Set the translator to be used by the delegate.
Definition: vocabularyview.cpp:343
QTableView::selectedIndexes
virtual QModelIndexList selectedIndexes() const
QString::replace
QString & replace(int position, int n, QChar after)
QKeyEvent
Editor::VocabularyView::setDocument
void setDocument(KEduVocDocument *doc)
Definition: vocabularyview.cpp:332
QAbstractItemView::event
virtual bool event(QEvent *event)
Editor::VocabularyView::reset
void reset()
Definition: vocabularyview.cpp:173
VocabularyMimeData::MimeExpression::wordTypes
QMap< int, WordTypeStrings > wordTypes
Definition: vocabularymimedata.h:39
vocabularycolumnsdialog.h
QTableView::isColumnHidden
bool isColumnHidden(int column) const
QItemSelectionModel::clear
virtual void clear()
QTableView::setHorizontalHeader
void setHorizontalHeader(QHeaderView *header)
QModelIndex::data
QVariant data(int role) const
VocabularyMimeData::expressionList
QList< VocabularyMimeData::MimeExpression > expressionList() const
Definition: vocabularymimedata.cpp:90
QAbstractItemView::selectAll
virtual void selectAll()
QKeySequence
QHeaderView::saveState
QByteArray saveState() const
QHeaderView::setResizeMode
void setResizeMode(ResizeMode mode)
QAction
QAbstractItemModel::columnCount
virtual int columnCount(const QModelIndex &parent) const =0
VocabularyModel::translation
static int translation(int column)
Returns which translation this column matches.
Definition: vocabularymodel.cpp:310
Editor::EditorWindow
Definition: editor.h:50
QModelIndex::column
int column() const
QAbstractItemView::edit
void edit(const QModelIndex &index)
QItemSelectionModel::setCurrentIndex
void setCurrentIndex(const QModelIndex &index, QFlags< QItemSelectionModel::SelectionFlag > command)
VocabularyMimeData
Definition: vocabularymimedata.h:26
Editor::VocabularyDelegate::setTranslator
void setTranslator(Translator *translator)
Sets the member variable m_translator to a Translator object.
Definition: vocabularydelegate.cpp:367
VocabularyModel::EntryColumnsMAX
Definition: vocabularymodel.h:44
QAbstractItemView::model
QAbstractItemModel * model() const
Editor::VocabularyView::setFilter
void setFilter(VocabularyFilter *model)
Definition: vocabularyview.cpp:151
QAbstractItemView::clearSelection
void clearSelection()
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
vocabularyfilter.h
QTableView::horizontalHeader
QHeaderView * horizontalHeader() const
QVariant::toString
QString toString() const
QSortFilterProxyModel::data
virtual QVariant data(const QModelIndex &index, int role) const
vocabularymodel.h
Editor::VocabularyView::appendChar
void appendChar(const QChar &c)
Append a char to the last edited entry (used to add the phonetic stuff).
Definition: vocabularyview.cpp:236
DocumentSettings::setVisibleColumns
void setVisibleColumns(const QList< int > &v)
Set Visible columns in the main editor window.
Definition: documentsettings.h:44
vocabularyview.h
QAbstractItemView::setDragEnabled
void setDragEnabled(bool enable)
QTimer::singleShot
singleShot
QAbstractItemView::setHorizontalScrollMode
void setHorizontalScrollMode(ScrollMode mode)
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