diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | bd9e6617827818fd043452c08c606f07b78014a0 (patch) | |
tree | 425bb4c3168f9c02f10150f235d2cb998dcc6108 /kbabel/kbabeldict/kbabeldictbox.h | |
download | tdesdk-bd9e6617827818fd043452c08c606f07b78014a0.tar.gz tdesdk-bd9e6617827818fd043452c08c606f07b78014a0.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdesdk@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kbabel/kbabeldict/kbabeldictbox.h')
-rw-r--r-- | kbabel/kbabeldict/kbabeldictbox.h | 282 |
1 files changed, 282 insertions, 0 deletions
diff --git a/kbabel/kbabeldict/kbabeldictbox.h b/kbabel/kbabeldict/kbabeldictbox.h new file mode 100644 index 00000000..8168786e --- /dev/null +++ b/kbabel/kbabeldict/kbabeldictbox.h @@ -0,0 +1,282 @@ +/* **************************************************************************** + This file is part of KBabel + + Copyright (C) 2000 by Matthias Kiefer + <matthias.kiefer@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. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + In addition, as a special exception, the copyright holders give + permission to link the code of this program with any edition of + the Qt library by Trolltech AS, Norway (or with modified versions + of Qt that use the same license as Qt), and distribute linked + combinations including the two. You must obey the GNU General + Public License in all respects for all of the code used other than + Qt. If you modify this file, you may extend this exception to + your version of the file, but you are not obligated to do so. If + you do not wish to do so, delete this exception statement from + your version. + +**************************************************************************** */ +#ifndef KBABELDICTBOX_H +#define KBABELDICTBOX_H + +#include "kbabeldictiface.h" +#include "searchengine.h" +#include "catalog.h" + +#include <qdict.h> +#include <qguardedptr.h> +#include <qptrlist.h> +#include <qstringlist.h> + +class KListView; +class QLabel; +class QListViewItem; +class QPopupMenu; +class QPushButton; +class QSplitter; +class QTextView; +class QToolButton; + +struct ModuleInfo +{ + QString id; + QString name; + + bool editable; +}; + + +class KDE_EXPORT KBabelDictBox : public QWidget, virtual public KBabelDictIFace +{ + Q_OBJECT + +public: + KBabelDictBox( QWidget* parent = 0, const char* name = 0 + , WFlags fl = 0 ); + ~KBabelDictBox(); + + /** @returns ids of available modules */ + virtual QStringList modules(); + + /** @returns (translated) names of available modules */ + QStringList moduleNames(); + + /** + * @returns a list with information about the available modules + * Take care about, that you have to delete the items by yourself. + */ + QPtrList<ModuleInfo> moduleInfos(); + + /** @returns preferencesWidgets of modules */ + QPtrList<PrefWidget> modPrefWidgets(QWidget* parent); + + int activeModule(); + bool activeModuleEditable(); + + /** + * lets the modules always update their options before + * starting a new search + */ + void setAutoUpdateOptions(bool on); + + void nextResult(); + void prevResult(); + void startSearch(const QString); + void startTranslationSearch(const QString); + void startDelayedSearch(const QString); + void startDelayedTranslationSearch(const QString); + QString translate(const QString); + QString searchTranslation(const QString, int& score); + QString fuzzyTranslation(const QString, int& score); + void stopSearch(); + void setActiveModule(QString name); + + /** + * @returns true, if a search is active at the moment + */ + bool isSearching(); + + /** + * Saves the settings including the settings of the different modules + * in the given config object. + */ + void saveSettings(KConfigBase *config); + + /** + * Saves the settings of the given module + * in the given config object. + */ + void saveSettings(const QString& moduleId, KConfigBase *config); + + /** + * Reads the settings including the settings of the different modules + * from the given config object. + */ + void readSettings(KConfigBase *config); + + /** + * Reads the settings of the given module + * from the given config object. + */ + void readSettings(const QString& moduleId, KConfigBase *config); + + + + /** @returns the translation of the current search result */ + QString translation(); + + bool hasSelectedText() const; + QString selectedText() const; + + void setRMBMenu(QPopupMenu *popup); + + + virtual bool eventFilter(QObject *, QEvent*); + + + /** + * A hack for kbabel to get a list of messages for a specific package + * from dbsearchengine. When dbsearchengine allows multiple access to + * the database this will get removed. + */ + bool messagesForPackage(const QString& package + , QValueList<KBabel::DiffEntry>& resultList, QString& error); + +public slots: + virtual void setActiveModule(int); + void slotStartSearch(const QString&); + void slotStopSearch(); + void slotNextResult(); + void slotPrevResult(); + + void about(); + void aboutModule(const QString& moduleID); + void aboutActiveModule(); + + /** + * sets the name of the package currently edited + */ + void setEditedPackage(const QString& packageName); + + /** + * sets the filepath of the package currently edited + */ + void setEditedFile(const QString& path); + + /** sets the language code to use */ + void setLanguage(const QString& languageCode + , const QString& languageName); + + + void setTextChanged(const QStringList& orig, const QString& translation, + uint pluralForm, const QString& description); + + /** + * if text is marked, copy this into the clipboard, otherwise + * copy the current translation into the clipboard + */ + void copy(); + + void configure(const QString& moduleID, bool modal=false); + void edit(const QString& moduleID); + void edit(); + + void clear(); + + +signals: + void searchStarted(); + void searchStopped(); + void progressed(int); + void progressStarts(const QString&); + void progressEnds(); + void activeModuleChanged(int); + void activeModuleChanged(bool editable); + void errorInModule(const QString& error); + + /** + * emitted when either the order + * or the number of modules was changed + */ + void modulesChanged(); + +protected slots: + void showResult(QListViewItem*); + void addResult(const SearchResult*); + void nextInfo(); + void showDetailsOnly(); + void showListOnly(); + void clearModuleResults(); + void editFile(); + void showContextMenu(KListView *, QListViewItem *, const QPoint&); + + /** + * This slots gets connected to a SearchEngine's searchStopped() signal, + * when a new search is requested although a search is currently active. + */ + void startDelayedSearch(); + void startDelayedTranslationSearch(); + + + /** + * This slot is connected to the finished signal of @ref KDialogBase + * to destroy this dialog after the user has closed it. + */ + void destroyConfigDialog(); + +protected: + virtual void wheelEvent(QWheelEvent*); + +private: + /** + * Register the module and connect the slots + */ + void registerModule( SearchEngine* module); + + QPtrList<SearchEngine> moduleList; + int active; + int currentResult; + int currentInfo; + int total; + + /** stores a string to be used with delayed search */ + QString searchText; + + QDict<QWidget> prefDialogs; + + QLabel *translatorLabel; + QLabel *locationLabel; + QLabel *totalResultsLabel; + QLabel *currentLabel; + QLabel *dateLabel; + QPushButton *moreButton; + QPushButton *nextButton; + QPushButton *prevButton; + QTextView *origView; + QTextView *translationView; + QSplitter *viewContainer; + KListView *resultListView; + QSplitter *resultSplitter; + + QToolButton *listButton; + QToolButton *detailButton; + + int editFileIndex; + QGuardedPtr<QPopupMenu> rmbPopup; +}; + +#endif // KBABELDICTBOX_H |