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

parley

  • sources
  • kde-4.12
  • kdeedu
  • parley
  • src
  • editor
inflectionwidget.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  Copyright 2008 Frederik Gladhorn <frederik.gladhorn@kdemail.net>
3  Copyright 2011 Jan Gerrit Marker <jangerrit@weiler-marker.com>
4  ***************************************************************************/
5 
6 /***************************************************************************
7  * *
8  * This program is free software; you can redistribute it and/or modify *
9  * it under the terms of the GNU General Public License as published by *
10  * the Free Software Foundation; either version 2 of the License, or *
11  * (at your option) any later version. *
12  * *
13  ***************************************************************************/
14 
15 
16 #include <keduvocdocument.h>
17 #include <keduvocexpression.h>
18 #include <keduvocwordtype.h>
19 #include <keduvocdeclension.h>
20 
21 #include "declensionwidget.h"
22 #include "conjugationwidget.h"
23 
24 #include "inflectionwidget.h"
25 
26 using namespace Editor;
27 
28 InflectionWidget::InflectionWidget(QWidget* parent): QStackedWidget(parent)
29 {
30  m_wordTypeWidget = new QWidget(this);
31  QVBoxLayout *wordTypeLayout = new QVBoxLayout();
32 
33  QLabel *label = new QLabel();
34  wordTypeLayout->addWidget(label);
35 
36  QPushButton *toVerb = new QPushButton(i18n("Verb"));
37  toVerb->setObjectName("toVerb");
38  connect(toVerb, SIGNAL(pressed()), this, SLOT(setWordType()));
39  wordTypeLayout->addWidget(toVerb, 1);
40 
41  QPushButton *toNoun = new QPushButton(i18n("Noun"));
42  toNoun->setObjectName("toNoun");
43  connect(toNoun, SIGNAL(pressed()), this, SLOT(setWordType()));
44  wordTypeLayout->addWidget(toNoun, 1);
45 
46  QPushButton *toAdjective = new QPushButton(i18n("Adjective"));
47  toAdjective->setObjectName("toAdjective");
48  connect(toAdjective, SIGNAL(pressed()), this, SLOT(setWordType()));
49  wordTypeLayout->addWidget(toAdjective, 1);
50 
51  wordTypeLayout->addStretch();
52 
53  m_wordTypeWidget->setDisabled(true);
54  m_wordTypeWidget->setLayout(wordTypeLayout);
55 
56  m_conjugationWidget = new ConjugationWidget(this);
57  m_declensionWidget = new DeclensionWidget(this);
58 
59  addWidget(m_wordTypeWidget);
60  addWidget(m_conjugationWidget);
61  addWidget(m_declensionWidget);
62 }
63 
64 void InflectionWidget::setDocument(KEduVocDocument* doc)
65 {
66  m_doc = doc;
67  m_conjugationWidget->setDocument(doc);
68  m_declensionWidget->setDocument(doc);
69 }
70 
71 void InflectionWidget::setTranslation(KEduVocExpression* entry, int translation)
72 {
73  m_entry = entry;
74  m_translation = translation;
75 
76  if (!entry || !entry->translation(translation)) {
77  m_wordTypeWidget->setDisabled(true);
78  setCurrentWidget(m_wordTypeWidget);
79  return;
80  }
81  if (!entry->translation(translation)->wordType() ||
82  !(entry->translation(translation)->wordType()->wordType() & KEduVocWordFlag::Verb
83  || entry->translation(translation)->wordType()->wordType() & KEduVocWordFlag::Noun
84  || entry->translation(translation)->wordType()->wordType() & KEduVocWordFlag::Adjective
85  )
86  ) {
87  qobject_cast<QLabel*>(m_wordTypeWidget->layout()->itemAt(0)->widget())->setText(i18n("\"%1\" is a:", entry->translation(translation)->text()));
88  m_wordTypeWidget->setEnabled(true);
89  setCurrentWidget(m_wordTypeWidget);
90  return;
91  }
92 
93  m_conjugationWidget->setTranslation(entry, translation);
94  m_declensionWidget->setTranslation(entry, translation);
95 
96  if (entry->translation(translation)->wordType()->wordType() & KEduVocWordFlag::Verb) {
97  setCurrentWidget(m_conjugationWidget);
98  }
99  else {
100  setCurrentWidget(m_declensionWidget);
101  }
102 }
103 
104 void InflectionWidget::setWordType()
105 {
106  if (!sender()) {
107  return;
108  }
109 
110  KEduVocWordType* container = 0;
111 
112  if (sender()->objectName() == "toVerb") {
113  container = m_doc->wordTypeContainer()->childOfType(KEduVocWordFlag::Verb);
114  }
115  else if (sender()->objectName() == "toNoun") {
116  KEduVocWordFlags type = KEduVocWordFlag::Noun;
117 
118  QPointer<KDialog> getGenderDialog = new KDialog(this);
119  getGenderDialog->setCaption(i18n("Please select the noun's gender"));
120  getGenderDialog->setButtons(KDialog::Ok | KDialog::Cancel);
121 
122  KComboBox *genderComboBox = new KComboBox;
123  genderComboBox->addItem(i18n("Masculine"), KEduVocWordFlag::Masculine);
124  genderComboBox->addItem(i18n("Neuter"), KEduVocWordFlag::Neuter);
125  genderComboBox->addItem(i18n("Feminine"), KEduVocWordFlag::Feminine);
126 
127  getGenderDialog->setMainWidget(genderComboBox);
128 
129  if (getGenderDialog->exec() == KDialog::Accepted)
130  {
131  type = (KEduVocWordFlags)(type|genderComboBox->itemData(genderComboBox->currentIndex()).toInt());
132  }
133 
134  delete getGenderDialog;
135 
136  container = m_doc->wordTypeContainer()->childOfType(type);
137  }
138  else if (sender()->objectName() == "toAdjective") {
139  container = m_doc->wordTypeContainer()->childOfType(KEduVocWordFlag::Adjective);
140  }
141 
142  if (container) {
143  m_entry->translation(m_translation)->setWordType(container);
144  setTranslation(m_entry, m_translation);
145  }
146 }
Editor::DeclensionWidget::setDocument
void setDocument(KEduVocDocument *doc)
Definition: declensionwidget.cpp:99
inflectionwidget.h
declensionwidget.h
QWidget
Editor::ConjugationWidget::setDocument
void setDocument(KEduVocDocument *doc)
Definition: conjugationwidget.cpp:136
conjugationwidget.h
KDialog
Editor::InflectionWidget::InflectionWidget
InflectionWidget(QWidget *parent=0)
Definition: inflectionwidget.cpp:28
Editor::InflectionWidget::setDocument
void setDocument(KEduVocDocument *doc)
Definition: inflectionwidget.cpp:64
Editor::ConjugationWidget::setTranslation
void setTranslation(KEduVocExpression *entry, int translation)
Definition: conjugationwidget.cpp:106
Editor::InflectionWidget::setTranslation
void setTranslation(KEduVocExpression *entry, int translation)
Definition: inflectionwidget.cpp:71
Editor::DeclensionWidget::setTranslation
void setTranslation(KEduVocExpression *entry, int translation)
Definition: declensionwidget.cpp:65
Editor::DeclensionWidget
Definition: declensionwidget.h:26
QStackedWidget
Editor::ConjugationWidget
Definition: conjugationwidget.h:26
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:42:05 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
  • kstars
  • libkdeedu
  •   keduvocdocument
  • 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