• 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
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  } else {
99  setCurrentWidget(m_declensionWidget);
100  }
101 }
102 
103 void InflectionWidget::setWordType()
104 {
105  if (!sender()) {
106  return;
107  }
108 
109  KEduVocWordType* container = 0;
110 
111  if (sender()->objectName() == "toVerb") {
112  container = m_doc->wordTypeContainer()->childOfType(KEduVocWordFlag::Verb);
113  } else if (sender()->objectName() == "toNoun") {
114  KEduVocWordFlags type = KEduVocWordFlag::Noun;
115 
116  QPointer<KDialog> getGenderDialog = new KDialog(this);
117  getGenderDialog->setCaption(i18n("Please select the noun's gender"));
118  getGenderDialog->setButtons(KDialog::Ok | KDialog::Cancel);
119 
120  KComboBox *genderComboBox = new KComboBox;
121  genderComboBox->addItem(i18n("Masculine"), KEduVocWordFlag::Masculine);
122  genderComboBox->addItem(i18n("Neuter"), KEduVocWordFlag::Neuter);
123  genderComboBox->addItem(i18n("Feminine"), KEduVocWordFlag::Feminine);
124 
125  getGenderDialog->setMainWidget(genderComboBox);
126 
127  if (getGenderDialog->exec() == KDialog::Accepted) {
128  type = (KEduVocWordFlags)(type | genderComboBox->itemData(genderComboBox->currentIndex()).toInt());
129  }
130 
131  delete getGenderDialog;
132 
133  container = m_doc->wordTypeContainer()->childOfType(type);
134  } else if (sender()->objectName() == "toAdjective") {
135  container = m_doc->wordTypeContainer()->childOfType(KEduVocWordFlag::Adjective);
136  }
137 
138  if (container) {
139  m_entry->translation(m_translation)->setWordType(container);
140  setTranslation(m_entry, m_translation);
141  }
142 }
QWidget::layout
QLayout * layout() const
Editor::DeclensionWidget::setDocument
void setDocument(KEduVocDocument *doc)
Definition: declensionwidget.cpp:99
inflectionwidget.h
QWidget
QLayout::itemAt
virtual QLayoutItem * itemAt(int index) const =0
declensionwidget.h
QObject::sender
QObject * sender() const
QLayoutItem::widget
virtual QWidget * widget()
QPointer
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
QWidget::setEnabled
void setEnabled(bool)
QBoxLayout::addWidget
void addWidget(QWidget *widget, int stretch, QFlags< Qt::AlignmentFlag > alignment)
QStackedWidget::setCurrentWidget
void setCurrentWidget(QWidget *widget)
QWidget::setLayout
void setLayout(QLayout *layout)
QObject::setObjectName
void setObjectName(const QString &name)
QVBoxLayout
QStackedWidget
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
QBoxLayout::addStretch
void addStretch(int stretch)
Editor::DeclensionWidget::setTranslation
void setTranslation(KEduVocExpression *entry, int translation)
Definition: declensionwidget.cpp:65
QWidget::QWidget
QWidget(QWidget *parent, QFlags< Qt::WindowType > f)
QPushButton
Editor::DeclensionWidget
Definition: declensionwidget.h:27
QWidget::setDisabled
void setDisabled(bool disable)
QStackedWidget::addWidget
int addWidget(QWidget *widget)
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QLabel
Editor::ConjugationWidget
Definition: conjugationwidget.h:27
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