summaryrefslogtreecommitdiffstats
path: root/kverbos/kverbos/kerfassen.h
blob: 7a8f2fc6c5e01e0dd6d8fe6c2b1bf3a41b0a5aa0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
/***************************************************************************
                          kerfassen.h  -  description
                             -------------------
    begin                : Sat Dec 15 2001
    copyright            : (C) 2001 by Arnold Kraschinski
    email                : arnold.k67@gmx.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef KERFASSEN_H
#define KERFASSEN_H

#include <klocale.h>

#include "qerfassen.h"
#include "verbspanish.h"

class QLineEdit;


/** This class overloads the class QErfassen which was created with the Qt-designer.
  * The dialog is used to edit existing verbs and to add new verbs.
  *
  *@author Arnold Kraschinski
  */

class KErfassen : public QErfassen  {
public:
  /** An die Dialogklasse wird ein Zeiger auf eine Verbliste übergeben, damit
   *  Verben in die Liste eingefügt werden können. Es wird auch ein Iterator übergeben, der
   *  anzeigt, wo mit dem editieren begonnen werden soll.
   */
  KErfassen(spanishVerbList& l, int pos = -1, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0);
  /** der Destruktor */
  virtual ~KErfassen();
  /** Gibt zurück, ob durch den Ablauf des Dialoges eine Änderung an der
   *  bearbeiteten Verbliste entstanden ist (list = true).
   *  Wird als Parameter false übergeben, erfährt man, ob das Fenster des Dialoges
   *  geändert wurde.
   */
  bool wasChanged();
  /** The dialog works on his own copy of the verblist. So after the end of the dialog
    * the caling function has to fetch the list from the dialog with this function.
    */
  spanishVerbList getList();

private:
  /** Ein Verb befindet sich in den Eingabefeldern des Dialoges und
    * dieses soll nun in die Liste aufgenommen werden.
    */
  spanishVerbList::Iterator verbErfassen();
  /** The verb in the edit boxes is transfered to a verbSpanish object
    */
  verbSpanish verbFromWidget();
  /** Ein Verb aus der aktuellen Listenposition soll in dem Dialog dargestellt
   *  werden.
   */
  void verbToWidget();
  /** Deaktiviert die Eingabefelder für die Gerund-Form und für das Partizip
    * und die Karteikarten für die ganzen Formen. Außerdem wird der Radiobutton
    * wieder auf den Ausgangszustand zurückgesetzt.
    */
  void deaktivieren();
  /** Aktiviert die Eingabefelder für die Gerund-Form und für das Partizip
    * und die Karteikarten für die ganzen Formen. Außerdem wird der Radiobutton
    * in den gesetzten Zustand gebracht.
    */
  void aktivieren();
  /** In dem Dialog sollen ein Teil der Eingabefelder oder aber alle
    * Eingabefelder gelöscht werden.
    */
  void clearPage(int s);
  void clearAllPages();
  void clearAll();
  /** Es wird geprüft, ob der Inhalt des Eingabefensters verändert wurde.
   */
  bool widgetChanged();

public slots:
  /** Dieser Slot bearbeitet den Wechsel am RadioButtonIrregular
    * Wird der Knopf ausgewählt, dann müssen alle Felder für die
    * unregelmäßigen Formen aktiviert werden.
    * Wird der Button gelöscht, dann müssen die Felder deaktiviert
    * werden.
    */
  // virtual void slotToggleIrregular(bool b);
  virtual void slotTypChanged(int);
  /** Die folgenden Slots werden von den einzelnen Löschen-Buttons des
    * Dialoges aufgerufen.
    */
  virtual void slotClearPage1();
  virtual void slotClearPage2();
  virtual void slotClearPage3();
  virtual void slotClearPage4();
  virtual void slotClearPage5();
  virtual void slotClearPage6();
  virtual void slotClearPage7();
  virtual void slotClearPage8();
  virtual void slotClearAll();
  /** Wird aufgerufen, wenn der 'beenden'-Button gedrückt wurde.
   */
  virtual void slotDlgEnde();
  /** Die Eingabe eines Verbes wurde abgeschlossen und es wurde der
    * weiter Button gedrückt, um weitere Verben einzugeben.
    */
  virtual void slotWeiter();
  /** Es wurde an einer Position in der Liste der zurück-Button betätigt.
   *  Das gerade eingegebene Verb muss in die Liste übernommen werden und der
   *  Positionszeiger in der Liste muss eine Position nach hinten rücken, falls
   *  es ein Verb weiter vorne in der Liste gibt. Dieses Verb muss eventuell in
   *  den Dialog geladen werden.
   */
  virtual void slotZurueck();
  /** The dilog shows a verb but this verb shouldn't be changed. The user wants to
    * enter a new verb. So he can use this button to get an empty dialog window for his
    * new verb
    */
  virtual void slotNewVerb();
  /** Die folgenden Slots werden aufgerufen, wenn ein Button mit einem
   *  spanischen Sonderzeichen gedrückt wird.
   *  Das Zeichen wird dann dem Eingabefeld, das den Focus hat zugefügt.
   */
  virtual void slotN();
  virtual void slotA();
  virtual void slotE();
  virtual void slotI();
  virtual void slotO();
  virtual void slotU();

private:
  /** Der Zeiger auf das Dokumenten-Objekt des Programmes. */
  spanishVerbList liste;
  spanishVerbList::Iterator position;
  /** changed zeigt an, ob etwas geändert wurde. */
  bool         changed;
  /** Are pointers to the GUI elements for an easier use */
  QLineEdit* formEdit[6][MAX_TIEMPOS];
};

#endif