Changed: #1307 Added Phrase editor files and base functions

--HG--
branch : gsoc2011-translationovqt
This commit is contained in:
cemycc 2011-08-03 23:08:56 +03:00
parent 6fb8d197cf
commit 23f1309995
8 changed files with 158 additions and 66 deletions

View file

@ -0,0 +1,116 @@
// Translation Manager Plugin - OVQT Plugin <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
// Copyright (C) 2011 Emanuel Costea <cemycc@gmail.com>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// Nel includes
#include "nel/misc/path.h"
#include "nel/misc/diff_tool.h"
// Qt includes
#include <QtGui/QErrorMessage>
#include <QtCore/qfileinfo.h>
#include <QtGui/QMessageBox>
#include <QtGui/QCloseEvent>
// Project includes
#include "editor_phrase.h"
#include "translation_manager_constants.h"
using namespace std;
namespace Plugin {
void CEditorPhrase::open(QString filename)
{
vector<STRING_MANAGER::TPhrase> phrases;
if(readPhraseFile(filename.toStdString(), phrases, false))
{
text_edit = new QTextEdit();
// read the file content
QFile file(filename);
QTextStream in(&file);
// set the file content to the text edit
QString content = in.readAll();
text_edit->setText(content);
// window settings
setCurrentFile(filename);
setAttribute(Qt::WA_DeleteOnClose);
setWidget(text_edit);
editor_type = Constants::ED_PHRASE;
current_file = filename;
} else {
QErrorMessage error;
error.showMessage("This file is not a phrase file.");
error.exec();
}
}
void CEditorPhrase::activateWindow()
{
showMaximized();
}
void CEditorPhrase::save()
{
QFile file(current_file);
QTextStream out(&file);
out<<text_edit->toPlainText();
setCurrentFile(current_file);
}
void CEditorPhrase::saveAs(QString filename)
{
QFile file(filename);
QTextStream out(&file);
out<<text_edit->toPlainText();
current_file = filename;
setCurrentFile(current_file);
}
void CEditorPhrase::closeEvent(QCloseEvent *event)
{
if(isWindowModified())
{
QMessageBox msgBox;
msgBox.setText("The document has been modified.");
msgBox.setInformativeText("Do you want to save your changes?");
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);
int ret = msgBox.exec();
switch (ret)
{
case QMessageBox::Save:
save();
event->accept();
close();
break;
case QMessageBox::Discard:
event->accept();
close();
break;
case QMessageBox::Cancel:
event->ignore();
break;
default:
break;
}
} else {
event->accept();
close();
}
}
}

View file

@ -1,53 +0,0 @@
// Translation Manager Plugin - OVQT Plugin <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
// Copyright (C) 2011 Emanuel Costea <cemycc@gmail.com>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// Qt includes
#include <QtGui/QErrorMessage>
#include <QtCore/qfileinfo.h>
#include <QtGui/QMessageBox>
#include <QtGui/QCloseEvent>
// Project includes
#include "editor_phrase.h"
#include "translation_manager_constants.h"
using namespace std;
namespace Plugin {
void CEditorPhrase::open(QString filename)
{
}
void CEditorPhrase::activateWindow()
{
}
void CEditorPhrase::save()
{
}
void CEditorPhrase::saveAs(QString filename)
{
}
}

View file

@ -20,11 +20,14 @@
// Qt includes // Qt includes
#include <QtCore/QObject> #include <QtCore/QObject>
#include <QtCore/QFile>
#include <QtCore/QTextStream>
#include <QtGui/QWidget> #include <QtGui/QWidget>
#include <QtGui/QMdiArea> #include <QtGui/QMdiArea>
#include <QtGui/QMdiSubWindow> #include <QtGui/QMdiSubWindow>
#include <QtGui/QUndoCommand> #include <QtGui/QUndoCommand>
#include <QtGui/QUndoStack> #include <QtGui/QUndoStack>
#include <QtGui/QTextEdit>
// Project includes // Project includes
#include "translation_manager_editor.h" #include "translation_manager_editor.h"
@ -34,6 +37,8 @@ namespace Plugin {
class CEditorPhrase : public CEditor class CEditorPhrase : public CEditor
{ {
Q_OBJECT Q_OBJECT
private:
QTextEdit *text_edit;
public: public:
CEditorPhrase(QMdiArea* parent) : CEditor(parent) {} CEditorPhrase(QMdiArea* parent) : CEditor(parent) {}
CEditorPhrase() : CEditor() {} CEditorPhrase() : CEditor() {}
@ -41,6 +46,7 @@ public:
void save(); void save();
void saveAs(QString filename); void saveAs(QString filename);
void activateWindow(); void activateWindow();
void closeEvent(QCloseEvent *event);
}; };
} }

View file

@ -202,6 +202,7 @@ void CEditorWorksheet::saveAs(QString filename)
} }
ucstring s = prepareExcelSheet(new_file); ucstring s = prepareExcelSheet(new_file);
NLMISC::CI18N::writeTextFile(filename.toStdString(), s, false); NLMISC::CI18N::writeTextFile(filename.toStdString(), s, false);
current_file = filename;
setCurrentFile(filename); setCurrentFile(filename);
} }
@ -484,15 +485,6 @@ void CEditorWorksheet::mergeWorksheetFile(QString filename)
} }
} }
void CEditorWorksheet::setCurrentFile(QString filename)
{
QFileInfo *file = new QFileInfo(filename);
current_file = file->canonicalFilePath();
setWindowModified(false);
setWindowTitle(file->fileName() + "[*]");
setWindowFilePath(current_file);
}
void CEditorWorksheet::closeEvent(QCloseEvent *event) void CEditorWorksheet::closeEvent(QCloseEvent *event)
{ {
if(isWindowModified()) if(isWindowModified())

View file

@ -65,8 +65,6 @@ private Q_SLOTS:
void worksheetEditorChanged(QTableWidgetItem * item); void worksheetEditorChanged(QTableWidgetItem * item);
void insertRow(); void insertRow();
void deleteRow(); void deleteRow();
private:
void setCurrentFile(QString filename);
}; };

View file

@ -23,6 +23,7 @@
#include <QtGui/QMdiArea> #include <QtGui/QMdiArea>
#include <QtGui/QMdiSubWindow> #include <QtGui/QMdiSubWindow>
#include <QtGui/QUndoStack> #include <QtGui/QUndoStack>
#include <QtCore/QFileInfo>
namespace Plugin { namespace Plugin {
@ -52,6 +53,15 @@ public:
{ {
current_stack = stack; current_stack = stack;
} }
void setCurrentFile(QString filename)
{
QFileInfo *file = new QFileInfo(filename);
current_file = file->canonicalFilePath();
setWindowModified(false);
setWindowTitle(file->fileName() + "[*]");
setWindowFilePath(current_file);
}
}; };
} }

View file

@ -217,6 +217,14 @@ void CMainWindow::open()
new_window->open(file_name); new_window->open(file_name);
new_window->activateWindow(); new_window->activateWindow();
} }
// phrase editor
if(isPhraseEditor(file_name))
{
CEditorPhrase *new_window = new CEditorPhrase(_ui.mdiArea);
new_window->setUndoStack(m_undoStack);
new_window->open(file_name);
new_window->activateWindow();
}
#ifndef QT_NO_CURSOR #ifndef QT_NO_CURSOR
QApplication::restoreOverrideCursor(); QApplication::restoreOverrideCursor();
#endif #endif
@ -559,12 +567,26 @@ bool CMainWindow::isWorksheetEditor(QString filename)
STRING_MANAGER::TWorksheet wk_file; STRING_MANAGER::TWorksheet wk_file;
if(loadExcelSheet(filename.toStdString(), wk_file, true) == true) if(loadExcelSheet(filename.toStdString(), wk_file, true) == true)
{ {
return true; if(wk_file.ColCount > 1)
return true;
else
return false;
} else { } else {
return false; return false;
} }
} }
bool CMainWindow::isPhraseEditor(QString filename)
{
vector<STRING_MANAGER::TPhrase> phrases;
if(readPhraseFile(filename.toStdString(), phrases, false))
{
return true;
} else {
return false;
}
}
bool CCoreListener::closeMainWindow() const bool CCoreListener::closeMainWindow() const
{ {
return true; return true;

View file

@ -45,6 +45,7 @@
#include "ui_translation_manager_main_window.h" #include "ui_translation_manager_main_window.h"
#include <set> #include <set>
#include "editor_worksheet.h" #include "editor_worksheet.h"
#include "editor_phrase.h"
class QWidget; class QWidget;
@ -101,7 +102,7 @@ private:
// Worksheet specific functions // Worksheet specific functions
CEditorWorksheet* getEditorByWorksheetType(const QString &type); CEditorWorksheet* getEditorByWorksheetType(const QString &type);
bool isWorksheetEditor(QString filename); bool isWorksheetEditor(QString filename);
bool isPhraseEditor(QString filename);
}; };