From f1e55dae358f4b3732397cc5c30655b36290f4f4 Mon Sep 17 00:00:00 2001 From: cemycc Date: Thu, 11 Aug 2011 19:16:46 +0300 Subject: [PATCH] Changed: #1307 Added tab view on QMdiArea, new syntax highliter and added base functions for Undo/Redo framework --- .../translation_manager/editor_phrase.cpp | 33 ++++++++---- .../translation_manager/editor_phrase.h | 52 +++++++++---------- .../translation_manager/editor_worksheet.cpp | 2 +- .../translation_manager/editor_worksheet.h | 2 +- .../translation_manager/extract_bot_names.cpp | 2 +- .../translation_manager/extract_bot_names.h | 2 +- .../extract_new_sheet_names.cpp | 3 +- .../extract_new_sheet_names.h | 3 +- .../translation_manager/ftp_selection.cpp | 2 +- .../translation_manager/ftp_selection.h | 2 +- .../translation_manager/source_selection.cpp | 2 +- .../translation_manager/source_selection.h | 2 +- .../translation_manager_constants.h | 2 +- .../translation_manager_editor.h | 2 +- .../translation_manager_main_window.cpp | 26 +--------- .../translation_manager_main_window.h | 2 +- .../translation_manager_main_window.ui | 9 +++- .../translation_manager_plugin.cpp | 5 +- .../translation_manager_plugin.h | 2 +- .../translation_manager_settings_page.cpp | 2 +- .../translation_manager_settings_page.h | 2 +- 21 files changed, 79 insertions(+), 80 deletions(-) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/editor_phrase.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/editor_phrase.cpp index 2e5a576ab..081dc455b 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/editor_phrase.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/editor_phrase.cpp @@ -35,14 +35,15 @@ using namespace std; -namespace Plugin { +namespace TranslationManager { void CEditorPhrase::open(QString filename) { vector phrases; if(readPhraseFile(filename.toStdString(), phrases, false)) { - text_edit = new QTextEdit(this); + text_edit = new CTextEdit(this); + text_edit->setUndoStack(current_stack); SyntaxHighlighter *highlighter = new SyntaxHighlighter(text_edit); text_edit->setUndoRedoEnabled(true); text_edit->document()->setUndoRedoEnabled(true); @@ -58,7 +59,6 @@ void CEditorPhrase::open(QString filename) setAttribute(Qt::WA_DeleteOnClose); editor_type = Constants::ED_PHRASE; current_file = filename; - connect(text_edit->document(), SIGNAL(contentsChange(int, int, int)), this, SLOT(contentsChangeNow(int position, int charsRemoved, int charsAdded))); connect(text_edit->document(), SIGNAL(contentsChanged()), this, SLOT(docContentsChanged())); } else { QErrorMessage error; @@ -67,13 +67,28 @@ void CEditorPhrase::open(QString filename) } } -void CEditorPhrase::contentsChangeNow(int position, int charsRemoved, int charsAdded) +/* void CTextEdit::keyPressEvent(QKeyEvent *event) { - if(charsRemoved > 0) - current_stack->push(new CUndoPhraseRemoveCommand(position-charsRemoved, charsRemoved, text_edit)); - else if(charsAdded > 0) - current_stack->push(new CUndoPhraseInsertCommand(position, text_edit->toPlainText().right(charsAdded), text_edit)); -} + QString chars = event->text(); + int index = textCursor().position(); + + switch(event->key()) + { + case Qt::Key_Backspace: + if (index > 0) + m_undoStack->push(new CUndoPhraseRemoveCommand(index--, 1, this)); + break; + case Qt::Key_Delete: + if (index < toPlainText().length()) + m_undoStack->push(new CUndoPhraseRemoveCommand(index, 1, this)); + break; + default: + if (!chars.isEmpty()) + m_undoStack->push(new CUndoPhraseInsertCommand(index, chars, this)); + break; + } + +} */ void CEditorPhrase::docContentsChanged() { diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/editor_phrase.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/editor_phrase.h index c792d0b21..d542b6e34 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/editor_phrase.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/editor_phrase.h @@ -29,17 +29,33 @@ #include #include #include +#include +#include // Project includes #include "translation_manager_editor.h" -namespace Plugin { +namespace TranslationManager { + +class CTextEdit : public QTextEdit +{ + Q_OBJECT +private: + QUndoStack* m_undoStack; +public: + CTextEdit(QWidget* parent = 0) : QTextEdit(parent) { } + //void keyPressEvent(QKeyEvent *event); + void setUndoStack(QUndoStack* undoStack) + { + m_undoStack = undoStack; + } +}; class CEditorPhrase : public CEditor { Q_OBJECT public: - QTextEdit *text_edit; + CTextEdit *text_edit; public: CEditorPhrase(QMdiArea* parent) : CEditor(parent) {} CEditorPhrase() : CEditor() {} @@ -49,7 +65,6 @@ public: void activateWindow(); void closeEvent(QCloseEvent *event); public Q_SLOTS: - void contentsChangeNow(int, int, int); void docContentsChanged(); }; @@ -127,30 +142,12 @@ public: { HighlightingRule rule; - keywordFormat.setForeground(Qt::darkBlue); - keywordFormat.setFontWeight(QFont::Bold); - QStringList keywordPatterns; - keywordPatterns << "\\bchar\\b" << "\\bclass\\b" << "\\bconst\\b" - << "\\bdouble\\b" << "\\benum\\b" << "\\bexplicit\\b" - << "\\bfriend\\b" << "\\binline\\b" << "\\bint\\b" - << "\\blong\\b" << "\\bnamespace\\b" << "\\boperator\\b" - << "\\bprivate\\b" << "\\bprotected\\b" << "\\bpublic\\b" - << "\\bshort\\b" << "\\bsignals\\b" << "\\bsigned\\b" - << "\\bslots\\b" << "\\bstatic\\b" << "\\bstruct\\b" - << "\\btemplate\\b" << "\\btypedef\\b" << "\\btypename\\b" - << "\\bunion\\b" << "\\bunsigned\\b" << "\\bvirtual\\b" - << "\\bvoid\\b" << "\\bvolatile\\b"; - Q_FOREACH(const QString &pattern, keywordPatterns) { - rule.pattern = QRegExp(pattern); - rule.format = keywordFormat; - highlightingRules.append(rule); - } + translateStringFormat.setFontWeight(QFont::Bold); + translateStringFormat.setForeground(Qt::darkMagenta); + rule.pattern = QRegExp("\\[.+\\]"); + rule.format = translateStringFormat; + highlightingRules.append(rule); - classFormat.setFontWeight(QFont::Bold); - classFormat.setForeground(Qt::darkMagenta); - rule.pattern = QRegExp("\\bQ[A-Za-z]+\\b"); - rule.format = classFormat; - highlightingRules.append(rule); singleLineCommentFormat.setForeground(Qt::red); rule.pattern = QRegExp("//[^\n]*"); @@ -166,7 +163,7 @@ public: functionFormat.setFontItalic(true); functionFormat.setForeground(Qt::blue); - rule.pattern = QRegExp("\\b[A-Za-z0-9_]+(?=\\()"); + rule.pattern = QRegExp("\\(.+\\)"); rule.format = functionFormat; highlightingRules.append(rule); @@ -223,6 +220,7 @@ public: QTextCharFormat multiLineCommentFormat; QTextCharFormat quotationFormat; QTextCharFormat functionFormat; + QTextCharFormat translateStringFormat; }; } diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/editor_worksheet.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/editor_worksheet.cpp index a6ef28d36..ce02837c8 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/editor_worksheet.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/editor_worksheet.cpp @@ -32,7 +32,7 @@ using namespace std; -namespace Plugin { +namespace TranslationManager { diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/editor_worksheet.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/editor_worksheet.h index 0cb0602e2..839601047 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/editor_worksheet.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/editor_worksheet.h @@ -38,7 +38,7 @@ #include "translation_manager_editor.h" #include "extract_new_sheet_names.h" -namespace Plugin { +namespace TranslationManager { class CEditorWorksheet : public CEditor { diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_bot_names.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_bot_names.cpp index 4de3d889d..e8ed68bbf 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_bot_names.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_bot_names.cpp @@ -23,7 +23,7 @@ static bool RemoveOlds = false; -namespace Plugin +namespace TranslationManager { TCreatureInfo *ExtractBotNames::getCreature(const std::string &sheetName) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_bot_names.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_bot_names.h index 9c4ea51d2..df1cb39ca 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_bot_names.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_bot_names.h @@ -35,7 +35,7 @@ using namespace NLMISC; using namespace NLLIGO; using namespace STRING_MANAGER; -namespace Plugin +namespace TranslationManager { struct TCreatureInfo diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_new_sheet_names.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_new_sheet_names.cpp index b9411c74e..5d0b9b455 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_new_sheet_names.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_new_sheet_names.cpp @@ -21,7 +21,8 @@ using namespace NLMISC; using namespace NLLIGO; using namespace STRING_MANAGER; -namespace Plugin { +namespace TranslationManager +{ diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_new_sheet_names.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_new_sheet_names.h index 8c9151e2e..ca7295f91 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_new_sheet_names.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_new_sheet_names.h @@ -35,7 +35,8 @@ using namespace NLMISC; using namespace NLLIGO; using namespace STRING_MANAGER; -namespace Plugin { +namespace TranslationManager +{ // *************************************************************************** diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/ftp_selection.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/ftp_selection.cpp index 68abd456f..b3f637b80 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/ftp_selection.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/ftp_selection.cpp @@ -3,7 +3,7 @@ #include #include -namespace Plugin +namespace TranslationManager { CFtpSelection::CFtpSelection(QWidget *parent): QDialog(parent) { diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/ftp_selection.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/ftp_selection.h index 64ea136c4..7a90271a9 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/ftp_selection.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/ftp_selection.h @@ -20,7 +20,7 @@ using namespace std; -namespace Plugin { +namespace TranslationManager { class CFtpSelection : public QDialog { diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/source_selection.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/source_selection.cpp index cf38ed589..18c49f3e3 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/source_selection.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/source_selection.cpp @@ -3,7 +3,7 @@ #include "source_selection.h" -namespace Plugin +namespace TranslationManager { diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/source_selection.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/source_selection.h index ab0100fc3..99636d410 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/source_selection.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/source_selection.h @@ -12,7 +12,7 @@ using namespace std; -namespace Plugin +namespace TranslationManager { class CSourceDialog : public QDialog diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_constants.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_constants.h index 3cb66181b..dcb91676b 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_constants.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_constants.h @@ -8,7 +8,7 @@ #ifndef TRANSLATION_MANAGER_CONSTANTS_H #define TRANSLATION_MANAGER_CONSTANTS_H -namespace Plugin +namespace TranslationManager { namespace Constants { diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_editor.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_editor.h index 39ef74f2a..bc46769c1 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_editor.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_editor.h @@ -25,7 +25,7 @@ #include #include -namespace Plugin { +namespace TranslationManager { class CEditor : public QMdiSubWindow { Q_OBJECT diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.cpp index efa7743cd..5856f9c7d 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.cpp @@ -44,7 +44,7 @@ #include "ftp_selection.h" -namespace Plugin +namespace TranslationManager { CMainWindow::CMainWindow(QWidget *parent) @@ -592,30 +592,6 @@ bool CMainWindow::isPhraseEditor(QString filename) } } -/* void CMainWindow::keyPressEvent(QKeyEvent *event) -{ - CEditorPhrase* editor = qobject_cast(_ui.mdiArea->currentSubWindow()); - - QString chars = event->text(); - int index = editor->text_edit->textCursor().position(); - - switch (event->key()) - { - case Qt::Key_Backspace: - if (index > 0) - m_undoStack->push(new CUndoPhraseRemoveCommand(index--, 1, editor->text_edit)); - break; - case Qt::Key_Delete: - if (index < editor->text_edit->toPlainText().length()) - m_undoStack->push(new CUndoPhraseRemoveCommand(index, 1, editor->text_edit)); - break; - default: - if (!chars.isEmpty()) - m_undoStack->push(new CUndoPhraseInsertCommand(index, chars, editor->text_edit)); - break; - } -} */ - bool CCoreListener::closeMainWindow() const { bool okToClose = true; diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.h index 02146a9dd..6b9822031 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.h @@ -52,7 +52,7 @@ class QWidget; using namespace std; -namespace Plugin +namespace TranslationManager { class CMainWindow : public QMainWindow diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.ui b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.ui index 71c139e0a..6f2cd2815 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.ui +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.ui @@ -18,7 +18,14 @@ - + + + QMdiArea::TabbedView + + + true + + diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_plugin.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_plugin.cpp index c98eed5be..3efbdd0e8 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_plugin.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_plugin.cpp @@ -37,7 +37,7 @@ #include #include -namespace Plugin +namespace TranslationManager { TranslationManagerPlugin::~TranslationManagerPlugin() { @@ -137,8 +137,9 @@ ExtensionSystem::IPluginSpec *TranslationManagerPlugin::pluginByName(const QStri if (spec->name() == name) return spec; return 0; + } } -Q_EXPORT_PLUGIN(Plugin::TranslationManagerPlugin) +Q_EXPORT_PLUGIN(TranslationManager::TranslationManagerPlugin) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_plugin.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_plugin.h index 8c91d64cd..94c75d628 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_plugin.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_plugin.h @@ -42,7 +42,7 @@ namespace ExtensionSystem class IPluginSpec; } -namespace Plugin +namespace TranslationManager { class CTranslationManagerContext; diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_settings_page.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_settings_page.cpp index fbd713ac6..09588da7d 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_settings_page.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_settings_page.cpp @@ -28,7 +28,7 @@ // Project includes #include "../core/icore.h" -namespace Plugin +namespace TranslationManager { QString lastDir = "."; diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_settings_page.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_settings_page.h index 1cf19787a..34caea5e1 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_settings_page.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_settings_page.h @@ -26,7 +26,7 @@ class QWidget; -namespace Plugin +namespace TranslationManager { /** @class CTranslationManagerSettingsPage