You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
338 lines
10 KiB
338 lines
10 KiB
/***************************************************************************
|
|
|
|
main part of kvoctrain
|
|
|
|
-----------------------------------------------------------------------
|
|
|
|
begin : Thu Mar 11 20:50:53 MET 1999
|
|
|
|
copyright : (C) 1999-2001 Ewald Arnold <kvoctrain@ewald-arnold.de>
|
|
(C) 2001 The KDE-EDU team
|
|
(C) 2004-2005 Peter Hedlund <peter.hedlund@kdemail.net>
|
|
|
|
-----------------------------------------------------------------------
|
|
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* 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 KVOCTRAIN_H
|
|
#define KVOCTRAIN_H
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include <config.h>
|
|
#endif
|
|
|
|
// include files for QT
|
|
#include <tqpainter.h>
|
|
|
|
// include files for KDE
|
|
#include <tdeapplication.h>
|
|
#include <tdemainwindow.h>
|
|
#include <tdeaction.h>
|
|
#include <tdemenubar.h>
|
|
#include <tdemessagebox.h>
|
|
#include <krandomsequence.h>
|
|
|
|
// application specific includes
|
|
#include "kvoctrainview.h"
|
|
#include "kvoctraintable.h"
|
|
#include "query-dialogs/QueryDlgBase.h"
|
|
#include "kvtnewstuff.h"
|
|
#include "langset.h"
|
|
|
|
class TQTimer;
|
|
class KLined;
|
|
class ProgressDlg;
|
|
class kvoctrainDoc;
|
|
class SimpleQueryDlg;
|
|
class MCQueryDlg;
|
|
class VerbQueryDlg;
|
|
class RandomQueryDlg;
|
|
class AdjQueryDlg;
|
|
class ArtQueryDlg;
|
|
class EntryDlg;
|
|
|
|
class KLineEdit;
|
|
class KComboBox;
|
|
class KProgress;
|
|
|
|
class KVTNewStuff;
|
|
|
|
/**
|
|
* This Class is the base class for your application. It sets up the main
|
|
* window and reads the config file as well as providing a menubar, toolbar
|
|
* and statusbar. For the main view, an instance of class kvoctrainView is
|
|
* created which creates your view.
|
|
*/
|
|
class kvoctrainApp : public TDEMainWindow
|
|
{
|
|
TQ_OBJECT
|
|
|
|
|
|
public:
|
|
/** construtor */
|
|
kvoctrainApp(TQWidget *parent = NULL, const char *name = NULL);
|
|
/** destructor */
|
|
~kvoctrainApp();
|
|
void initActions();
|
|
|
|
/** setup the statusbar */
|
|
void initStatusBar();
|
|
/** setup the main document*/
|
|
void initDoc();
|
|
/** setup the main view*/
|
|
void initView();
|
|
/** save the app-specific options on slotAppExit or by an Options dialog */
|
|
void saveOptions();
|
|
/** read the app-specific options on init() or by an Options dialog */
|
|
void readOptions();
|
|
|
|
void saveLanguages();
|
|
void readLanguages();
|
|
|
|
/** saves the window properties for each open window during session end to the session config file, including saving the currently
|
|
* opened file by a temporary filename provided by TDEApplication.
|
|
* @see TDEMainWindow#saveProperties
|
|
*/
|
|
virtual void saveProperties(TDEConfig* );
|
|
/** reads the session config file and restores the application's state including the last opened files and documents by reading the
|
|
* temporary files saved by saveProperties()
|
|
* @see TDEMainWindow#readProperties
|
|
*/
|
|
virtual void readProperties(TDEConfig* );
|
|
|
|
/** Whether the user has selected a range of items. **/
|
|
bool hasSelection();
|
|
|
|
signals:
|
|
void progressChanged (kvoctrainDoc *, int curr_percent);
|
|
|
|
public slots:
|
|
void keyPressEvent( TQKeyEvent *e );
|
|
void keyReleaseEvent( TQKeyEvent *e );
|
|
void slotModifiedDoc(bool mod);
|
|
void slotCurrentCellChanged(int row, int col);
|
|
// void slotSelectEntry (int row, int col, int key_state);
|
|
|
|
/** edit an entry */
|
|
void slotEditEntry(int row, int col);
|
|
void slotEditCallBack(int res);
|
|
|
|
void commitEntryDlg(bool force);
|
|
void createEntryDlg(int row, int col);
|
|
void setDataEntryDlg (int row, int col);
|
|
void removeEntryDlg();
|
|
|
|
/** select an entry */
|
|
void slotSaveSelection ();
|
|
void slotCancelSelection ();
|
|
void slotSelectAll();
|
|
void slotProgress(kvoctrainDoc*,int);
|
|
void slotResumeSearch(const TQString&);
|
|
void slotSearchNext();
|
|
void slotInitSearch();
|
|
void slotCreateLesson(int header);
|
|
void slotCleanVocabulary ();
|
|
void slotChooseLesson(int id);
|
|
// void slotSearchClip();
|
|
void slotSetHeaderProp (int header_and_id);
|
|
void slotHeaderCallBack (int cmd_and_id);
|
|
void slotHeaderStatus (int cmd_and_id);
|
|
void slotHeaderMenu(int header, int x, int y);
|
|
/** append language to table */
|
|
void slotAppendLang(int header);
|
|
/** exit query mode */
|
|
void slotStopQuery(bool show_view);
|
|
bool queryClose();
|
|
/** overloaded for Message box on last window exit */
|
|
bool queryExit();
|
|
/** set up options */
|
|
void slotGeneralOptionsPage(int index);
|
|
void slotGeneralOptions();
|
|
//void slotQueryOptions();
|
|
//void slotQueryOptions(int pageindex);
|
|
void slotApplyPreferences();
|
|
void slotDocProps();
|
|
void slotDocPropsLang();
|
|
void slotShowStatist();
|
|
void slotCreateRandom();
|
|
/** set up vocabulary and learning submenus */
|
|
void aboutToShowVocabAppendLanguage();
|
|
void aboutToShowVocabSetLanguage();
|
|
void aboutToShowVocabRemoveLanguage();
|
|
void aboutToShowLearn();
|
|
|
|
/** starts random query mode */
|
|
void slotRestartQuery();
|
|
void slotStartTypeQuery(int col, const TQString & type);
|
|
void slotStartPropertyQuery(int col, QueryType property);
|
|
void slotStartQuery(const TQString & trans, const TQString & org, bool create_new);
|
|
|
|
void slotTimeOutRandomQuery(QueryDlgBase::Result res);
|
|
void slotTimeOutMultipleChoice(QueryDlgBase::Result res);
|
|
void slotTimeOutQuery(QueryDlgBase::Result res);
|
|
void slotTimeOutType(QueryDlgBase::Result res);
|
|
void slotTimeOutProperty(QueryDlgBase::Result res);
|
|
|
|
|
|
void slotTimeOutBackup();
|
|
|
|
/** open a new application window */
|
|
void slotFileNew();
|
|
/** open a document */
|
|
void slotFileOpen();
|
|
/** opens a file from the recent files menu */
|
|
void slotFileOpenRecent(const KURL& url);
|
|
/** open a sample document */
|
|
void slotFileOpenExample();
|
|
/** download new vocabularies */
|
|
void slotGHNS();
|
|
void loadfileFromPath(const KURL &, bool addRecent=true);
|
|
/** merge a document */
|
|
void slotFileMerge();
|
|
/** save a document */
|
|
void slotFileSave();
|
|
/** save a document under a different filename*/
|
|
void slotFileSaveAs();
|
|
void slotFilePrint();
|
|
void slotFileQuit();
|
|
|
|
/** put the marked text/object into the clipboard*/
|
|
void slotEditCopy();
|
|
void slotSmartSearchClip();
|
|
void slotAppendRow();
|
|
void slotRemoveRow();
|
|
void slotEditRow();
|
|
/** paste the clipboard into the document*/
|
|
void slotEditPaste();
|
|
|
|
/** change the status message to text */
|
|
void slotStatusMsg(const TQString &text);
|
|
/** change the status message of the whole statusbar temporary */
|
|
void slotStatusHelpMsg(const TQString &text);
|
|
|
|
public:
|
|
void removeProgressBar();
|
|
void prepareProgressBar();
|
|
void fillLessonBox(kvoctrainDoc *);
|
|
void loadDocProps(kvoctrainDoc *);
|
|
void saveDocProps(kvoctrainDoc *);
|
|
static vector<int> getCsvOrder(kvoctrainDoc *);
|
|
|
|
private:
|
|
// TDEAction pointers to enable/disable actions
|
|
TDEAction* fileNew;
|
|
TDEAction* fileOpen;
|
|
TDEAction* fileOpenExample;
|
|
TDEAction* fileGHNS;
|
|
TDERecentFilesAction* fileOpenRecent;
|
|
TDEAction* fileMerge;
|
|
TDEAction* fileSave;
|
|
TDEAction* fileSaveAs;
|
|
TDEAction* filePrint;
|
|
TDEAction* fileQuit;
|
|
|
|
TDEAction* editCopy;
|
|
TDEAction* editPaste;
|
|
TDEAction* editSelectAll;
|
|
TDEAction* editClearSelection;
|
|
TDEAction* editSearchFromClipboard;
|
|
TDEAction* editAppend;
|
|
TDEAction* editEditSelectedArea;
|
|
TDEAction* editRemoveSelectedArea;
|
|
TDEAction* editSaveSelectedArea;
|
|
|
|
TDEAction* vocabShowStatistics;
|
|
TDEAction* vocabAssignLessons;
|
|
TDEAction* vocabCleanUp;
|
|
TDESelectAction* vocabAppendLanguage;
|
|
TDESelectAction* vocabSetLanguage;
|
|
TDESelectAction* vocabRemoveLanguage;
|
|
TDEAction* vocabDocumentProperties;
|
|
TDEAction* vocabLanguageProperties;
|
|
KWidgetAction* vocabLessons;
|
|
KWidgetAction* vocabSearch;
|
|
|
|
//TDEAction* learningResumeQuery;
|
|
//TDEAction* learningResumeMultipleChoice;
|
|
|
|
TDEAction* configToolbar;
|
|
TDEAction* configNotifications;
|
|
TDEAction* configApp;
|
|
//TDEAction* configQueryOptions;
|
|
|
|
TQString lastPixName;
|
|
|
|
TQPopupMenu *learn_menu;
|
|
|
|
/** view is the main widget which represents your working area. The View
|
|
* class should handle all events of the view widget. It is kept empty so
|
|
* you can create your view according to your application's needs by
|
|
* changing the view class. */
|
|
kvoctrainView *view;
|
|
/** doc represents your actual document and is created only once. It keeps
|
|
* information such as filename and does the serialization of your files.
|
|
*/
|
|
kvoctrainDoc *doc;
|
|
|
|
friend class kvoctrainView;
|
|
|
|
vector<QueryEntryRef> random_expr1, random_expr2;
|
|
// Vectors for use in Leitner style learning. There is no
|
|
// correct_0_times, we simply reuse random_expr1.
|
|
vector<QueryEntryRef> correct_1_times, correct_2_times, correct_3_times;
|
|
QuerySelection queryList;
|
|
//TDENewStuff *m_GHNS;
|
|
TQTimer *btimer;
|
|
int random_query_nr;
|
|
bool querymode;
|
|
bool querying;
|
|
TQString def_lang;
|
|
TQPopupMenu *header_m;
|
|
int act_query_col;
|
|
TQString act_query_trans;
|
|
TQString act_query_org;
|
|
LangSet langset;
|
|
int searchpos;
|
|
TQString searchstr;
|
|
KLineEdit *searchLine;
|
|
KComboBox *lessons;
|
|
int act_lesson;
|
|
QueryManager querymanager;
|
|
bool controlActive;
|
|
bool shiftActive;
|
|
bool altActive;
|
|
ProgressDlg *pdlg;
|
|
KProgress *pbar;
|
|
TQLabel *vslide_label;
|
|
TQLabel *pron_label;
|
|
TQLabel *rem_label;
|
|
TQLabel *type_label;
|
|
SimpleQueryDlg *simpleQueryDlg;
|
|
EntryDlg *entryDlg;
|
|
MCQueryDlg *mcQueryDlg;
|
|
VerbQueryDlg *verbQueryDlg;
|
|
RandomQueryDlg *randomQueryDlg;
|
|
AdjQueryDlg *adjQueryDlg;
|
|
ArtQueryDlg *artQueryDlg;
|
|
int num_queryTimeout;
|
|
int query_cycle;
|
|
int query_num;
|
|
int query_startnum;
|
|
QueryType queryType;
|
|
KRandomSequence random;
|
|
KVTNewStuff *m_newStuff;
|
|
};
|
|
|
|
#endif // KVOCTRAIN_H
|
|
|