diff options
Diffstat (limited to 'src/linguist/linguist/mainwindow.h')
-rw-r--r-- | src/linguist/linguist/mainwindow.h | 267 |
1 files changed, 267 insertions, 0 deletions
diff --git a/src/linguist/linguist/mainwindow.h b/src/linguist/linguist/mainwindow.h new file mode 100644 index 000000000..fe9daf264 --- /dev/null +++ b/src/linguist/linguist/mainwindow.h @@ -0,0 +1,267 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Linguist of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include "phrase.h" +#include "ui_mainwindow.h" +#include "recentfiles.h" +#include "messagemodel.h" + +#include <QtCore/QHash> +#include <QtCore/QLocale> + +#include <QtGui/QMainWindow> + +QT_BEGIN_NAMESPACE + +class QPixmap; +class QAction; +class QDialog; +class QLabel; +class QMenu; +class QPrinter; +class QProcess; +class QIcon; +class QSortFilterProxyModel; +class QStackedWidget; +class QTableView; +class QTreeView; + +class BatchTranslationDialog; +class ErrorsView; +class FindDialog; +class FocusWatcher; +class FormPreviewView; +class MessageEditor; +class PhraseView; +class SourceCodeView; +class Statistics; +class TranslateDialog; +class TranslationSettingsDialog; + +class MainWindow : public QMainWindow +{ + Q_OBJECT +public: + enum {PhraseCloseMenu, PhraseEditMenu, PhrasePrintMenu}; + + MainWindow(); + ~MainWindow(); + + bool openFiles(const QStringList &names, bool readWrite = true); + static RecentFiles &recentFiles(); + static const QString &resourcePrefix(); + static QString friendlyString(const QString &str); + +protected: + void readConfig(); + void writeConfig(); + void closeEvent(QCloseEvent *); + bool eventFilter(QObject *object, QEvent *event); + +private slots: + void doneAndNext(); + void prev(); + void next(); + void recentFileActivated(QAction *action); + void setupRecentFilesMenu(); + void open(); + void openAux(); + void saveAll(); + void save(); + void saveAs(); + void releaseAll(); + void release(); + void releaseAs(); + void print(); + void closeFile(); + bool closeAll(); + void findAgain(); + void showTranslateDialog(); + void showBatchTranslateDialog(); + void showTranslationSettings(); + void updateTranslateHit(bool &hit); + void translate(int mode); + void newPhraseBook(); + void openPhraseBook(); + void closePhraseBook(QAction *action); + void editPhraseBook(QAction *action); + void printPhraseBook(QAction *action); + void addToPhraseBook(); + void manual(); + void resetSorting(); + void about(); + void aboutQt(); + + void updateViewMenu(); + void fileAboutToShow(); + void editAboutToShow(); + + void showContextDock(); + void showMessagesDock(); + void showPhrasesDock(); + void showSourceCodeDock(); + void showErrorDock(); + + void setupPhrase(); + bool maybeSaveAll(); + bool maybeSave(int model); + void updateProgress(); + void maybeUpdateStatistics(const MultiDataIndex &); + void translationChanged(const MultiDataIndex &); + void updateCaption(); + void updateLatestModel(const QModelIndex &index); + void selectedContextChanged(const QModelIndex &sortedIndex, const QModelIndex &oldIndex); + void selectedMessageChanged(const QModelIndex &sortedIndex, const QModelIndex &oldIndex); + + // To synchronize from the message editor to the model ... + void updateTranslation(const QStringList &translations); + void updateTranslatorComment(const QString &comment); + + void updateActiveModel(int); + void refreshItemViews(); + void toggleFinished(const QModelIndex &index); + void prevUnfinished(); + void nextUnfinished(); + void findNext(const QString &text, DataModel::FindLocation where, bool matchCase, bool ignoreAccelerators); + void revalidate(); + void toggleStatistics(); + void onWhatsThis(); + void updatePhraseDicts(); + void updatePhraseDict(int model); + +private: + QModelIndex nextContext(const QModelIndex &index) const; + QModelIndex prevContext(const QModelIndex &index) const; + QModelIndex nextMessage(const QModelIndex ¤tIndex, bool checkUnfinished = false) const; + QModelIndex prevMessage(const QModelIndex ¤tIndex, bool checkUnfinished = false) const; + bool next(bool checkUnfinished); + bool prev(bool checkUnfinished); + + void updateStatistics(); + void initViewHeaders(); + void modelCountChanged(); + void setupMenuBar(); + void setupToolBars(); + void setCurrentMessage(const QModelIndex &index); + void setCurrentMessage(const QModelIndex &index, int model); + QModelIndex setMessageViewRoot(const QModelIndex &index); + QModelIndex currentContextIndex() const; + QModelIndex currentMessageIndex() const; + PhraseBook *openPhraseBook(const QString &name); + bool isPhraseBookOpen(const QString &name); + bool savePhraseBook(QString *name, PhraseBook &pb); + bool maybeSavePhraseBook(PhraseBook *phraseBook); + bool closePhraseBooks(); + QStringList pickTranslationFiles(); + void showTranslationSettings(int model); + void updateLatestModel(int model); + void updatePhraseBookActions(); + void updatePhraseDictInternal(int model); + void releaseInternal(int model); + void saveInternal(int model); + + QPrinter *printer(); + + // FIXME: move to DataModel + void updateDanger(const MultiDataIndex &index, bool verbose); + + bool searchItem(const QString &searchWhat); + + QProcess *m_assistantProcess; + QTreeView *m_contextView; + QTreeView *m_messageView; + MultiDataModel *m_dataModel; + MessageModel *m_messageModel; + QSortFilterProxyModel *m_sortedContextsModel; + QSortFilterProxyModel *m_sortedMessagesModel; + MessageEditor *m_messageEditor; + PhraseView *m_phraseView; + QStackedWidget *m_sourceAndFormView; + SourceCodeView *m_sourceCodeView; + FormPreviewView *m_formPreviewView; + ErrorsView *m_errorsView; + QLabel *m_progressLabel; + QLabel *m_modifiedLabel; + FocusWatcher *m_focusWatcher; + QString m_phraseBookDir; + // model : keyword -> list of appropriate phrases in the phrasebooks + QList<QHash<QString, QList<Phrase *> > > m_phraseDict; + QList<PhraseBook *> m_phraseBooks; + QMap<QAction *, PhraseBook *> m_phraseBookMenu[3]; + QPrinter *m_printer; + + FindDialog *m_findDialog; + QString m_findText; + Qt::CaseSensitivity m_findMatchCase; + bool m_findIgnoreAccelerators; + DataModel::FindLocation m_findWhere; + DataModel::FindLocation m_foundWhere; + + TranslateDialog *m_translateDialog; + QString m_latestFindText; + int m_latestCaseSensitivity; + int m_remainingCount; + int m_hitCount; + + BatchTranslationDialog *m_batchTranslateDialog; + TranslationSettingsDialog *m_translationSettingsDialog; + + bool m_settingCurrentMessage; + int m_fileActiveModel; + int m_editActiveModel; + MultiDataIndex m_currentIndex; + + QDockWidget *m_contextDock; + QDockWidget *m_messagesDock; + QDockWidget *m_phrasesDock; + QDockWidget *m_sourceAndFormDock; + QDockWidget *m_errorsDock; + + Ui::MainWindow m_ui; // menus and actions + Statistics *m_statistics; +}; + +QT_END_NAMESPACE + +#endif |