mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-12-28 20:00:54 +00:00
Fixed: #1307 Clean up code.
This commit is contained in:
parent
22be50ee4b
commit
f0ec6b3fcc
22 changed files with 1858 additions and 1869 deletions
|
@ -17,8 +17,7 @@ SET(OVQT_PLUG_TRANSLATION_MANAGER_HDR translation_manager_plugin.h
|
||||||
ftp_selection.h
|
ftp_selection.h
|
||||||
editor_worksheet.h
|
editor_worksheet.h
|
||||||
editor_phrase.h
|
editor_phrase.h
|
||||||
extract_new_sheet_names.h
|
)
|
||||||
extract_bot_names.h)
|
|
||||||
|
|
||||||
SET(OVQT_PLUG_TRANSLATION_MANAGER_UIS translation_manager_settings_page.ui
|
SET(OVQT_PLUG_TRANSLATION_MANAGER_UIS translation_manager_settings_page.ui
|
||||||
translation_manager_main_window.ui
|
translation_manager_main_window.ui
|
||||||
|
@ -28,7 +27,6 @@ SET(OVQT_PLUG_TRANSLATION_MANAGER_UIS translation_manager_settings_page.ui
|
||||||
SET(OVQT_PLUG_TRANSLATION_MANAGER_RCS ftp_selection.qrc)
|
SET(OVQT_PLUG_TRANSLATION_MANAGER_RCS ftp_selection.qrc)
|
||||||
|
|
||||||
SET(QT_USE_QTGUI TRUE)
|
SET(QT_USE_QTGUI TRUE)
|
||||||
SET(QT_USE_QTOPENGL TRUE)
|
|
||||||
SET(QT_USE_QTNETWORK TRUE)
|
SET(QT_USE_QTNETWORK TRUE)
|
||||||
|
|
||||||
QT4_WRAP_CPP(OVQT_PLUG_TRANSLATION_MANAGER_MOC_SRC ${OVQT_PLUG_TRANSLATION_MANAGER_HDR})
|
QT4_WRAP_CPP(OVQT_PLUG_TRANSLATION_MANAGER_MOC_SRC ${OVQT_PLUG_TRANSLATION_MANAGER_HDR})
|
||||||
|
@ -42,7 +40,7 @@ SOURCE_GROUP("OVQT Extension System" FILES ${OVQT_EXT_SYS_SRC})
|
||||||
|
|
||||||
ADD_LIBRARY(ovqt_plugin_translation_manager MODULE ${SRC} ${OVQT_PLUG_TRANSLATION_MANAGER_MOC_SRC} ${OVQT_EXT_SYS_SRC} ${OVQT_PLUG_TRANSLATION_MANAGER_UI_HDRS})
|
ADD_LIBRARY(ovqt_plugin_translation_manager MODULE ${SRC} ${OVQT_PLUG_TRANSLATION_MANAGER_MOC_SRC} ${OVQT_EXT_SYS_SRC} ${OVQT_PLUG_TRANSLATION_MANAGER_UI_HDRS})
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(ovqt_plugin_translation_manager ovqt_plugin_core nelmisc nel3d nelligo nelgeorges ${QT_LIBRARIES} ${QT_QTOPENGL_LIBRARY} ${QT_QTNETWORK_LIBRARY} )
|
TARGET_LINK_LIBRARIES(ovqt_plugin_translation_manager ovqt_plugin_core nelmisc nelligo nelgeorges ${QT_LIBRARIES} ${QT_QTOPENGL_LIBRARY} ${QT_QTNETWORK_LIBRARY} )
|
||||||
|
|
||||||
NL_DEFAULT_PROPS(ovqt_plugin_translation_manager "NeL, Tools, 3D: Object Viewer Qt Plugin: Translation Manager")
|
NL_DEFAULT_PROPS(ovqt_plugin_translation_manager "NeL, Tools, 3D: Object Viewer Qt Plugin: Translation Manager")
|
||||||
NL_ADD_RUNTIME_FLAGS(ovqt_plugin_translation_manager)
|
NL_ADD_RUNTIME_FLAGS(ovqt_plugin_translation_manager)
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
// Translation Manager Plugin - OVQT Plugin <http://dev.ryzom.com/projects/nel/>
|
// 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>
|
// Copyright (C) 2011 Emanuel Costea <cemycc@gmail.com>
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -15,32 +14,32 @@
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
// 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/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
// Project includes
|
||||||
|
#include "editor_phrase.h"
|
||||||
|
#include "translation_manager_constants.h"
|
||||||
|
|
||||||
// Nel includes
|
// Nel includes
|
||||||
#include "nel/misc/path.h"
|
#include "nel/misc/path.h"
|
||||||
#include "nel/misc/diff_tool.h"
|
#include "nel/misc/diff_tool.h"
|
||||||
|
|
||||||
// Qt includes
|
// Qt includes
|
||||||
|
#include <QtCore/QFileInfo>
|
||||||
|
#include <QtCore/QByteArray>
|
||||||
|
#include <QtCore/QTextCodec>
|
||||||
|
#include <QtCore/QTextStream>
|
||||||
|
#include <QtGui/QTextCursor>
|
||||||
#include <QtGui/QErrorMessage>
|
#include <QtGui/QErrorMessage>
|
||||||
#include <QtCore/qfileinfo.h>
|
|
||||||
#include <QtGui/QMessageBox>
|
#include <QtGui/QMessageBox>
|
||||||
#include <QtGui/QCloseEvent>
|
#include <QtGui/QCloseEvent>
|
||||||
#include <QtCore/QByteArray>
|
|
||||||
#include <QtCore/qtextcodec.h>
|
|
||||||
#include <QtGui/QTextCursor>
|
|
||||||
#include <QtCore/qtextstream.h>
|
|
||||||
#include <QtCore/qtextcodec.h>
|
|
||||||
|
|
||||||
// Project includes
|
|
||||||
#include "editor_phrase.h"
|
|
||||||
#include "translation_manager_constants.h"
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
namespace TranslationManager {
|
namespace TranslationManager
|
||||||
|
{
|
||||||
|
|
||||||
void CEditorPhrase::open(QString filename)
|
void CEditorPhrase::open(QString filename)
|
||||||
{
|
{
|
||||||
vector<STRING_MANAGER::TPhrase> phrases;
|
std::vector<STRING_MANAGER::TPhrase> phrases;
|
||||||
if(readPhraseFile(filename.toStdString(), phrases, false))
|
if(readPhraseFile(filename.toStdString(), phrases, false))
|
||||||
{
|
{
|
||||||
text_edit = new CTextEdit(this);
|
text_edit = new CTextEdit(this);
|
||||||
|
@ -63,7 +62,9 @@ void CEditorPhrase::open(QString filename)
|
||||||
current_file = filename;
|
current_file = filename;
|
||||||
connect(text_edit->document(), SIGNAL(contentsChanged()), this, SLOT(docContentsChanged()));
|
connect(text_edit->document(), SIGNAL(contentsChanged()), this, SLOT(docContentsChanged()));
|
||||||
connect(text_edit->document(), SIGNAL(undoCommandAdded()), this, SLOT(newUndoCommandAdded()));
|
connect(text_edit->document(), SIGNAL(undoCommandAdded()), this, SLOT(newUndoCommandAdded()));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
QErrorMessage error;
|
QErrorMessage error;
|
||||||
error.showMessage("This file is not a phrase file.");
|
error.showMessage("This file is not a phrase file.");
|
||||||
error.exec();
|
error.exec();
|
||||||
|
@ -97,44 +98,37 @@ void CEditorPhrase::saveAs(QString filename)
|
||||||
QTextStream out(&file);
|
QTextStream out(&file);
|
||||||
out.setCodec("UTF-8");
|
out.setCodec("UTF-8");
|
||||||
out.setGenerateByteOrderMark(true);
|
out.setGenerateByteOrderMark(true);
|
||||||
out<<text_edit->toPlainText();
|
out << text_edit->toPlainText();
|
||||||
current_file = filename;
|
current_file = filename;
|
||||||
setCurrentFile(current_file);
|
setCurrentFile(current_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void CEditorPhrase::closeEvent(QCloseEvent *event)
|
void CEditorPhrase::closeEvent(QCloseEvent *event)
|
||||||
{
|
{
|
||||||
if(isWindowModified())
|
if(isWindowModified())
|
||||||
{
|
{
|
||||||
QMessageBox msgBox;
|
QMessageBox msgBox;
|
||||||
msgBox.setText("The document has been modified.");
|
msgBox.setIcon(QMessageBox::Question);
|
||||||
msgBox.setInformativeText("Do you want to save your changes?");
|
msgBox.setText(tr("The document has been modified."));
|
||||||
|
msgBox.setInformativeText(tr("Do you want to save your changes?"));
|
||||||
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
|
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
|
||||||
msgBox.setDefaultButton(QMessageBox::Save);
|
msgBox.setDefaultButton(QMessageBox::Save);
|
||||||
|
|
||||||
int ret = msgBox.exec();
|
int ret = msgBox.exec();
|
||||||
switch (ret)
|
switch (ret)
|
||||||
{
|
{
|
||||||
case QMessageBox::Save:
|
case QMessageBox::Save:
|
||||||
save();
|
save();
|
||||||
event->accept();
|
|
||||||
close();
|
|
||||||
break;
|
break;
|
||||||
case QMessageBox::Discard:
|
case QMessageBox::Discard:
|
||||||
event->accept();
|
|
||||||
close();
|
|
||||||
break;
|
break;
|
||||||
case QMessageBox::Cancel:
|
case QMessageBox::Cancel:
|
||||||
event->ignore();
|
event->ignore();
|
||||||
break;
|
return;
|
||||||
default:
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
event->accept();
|
event->accept();
|
||||||
close();
|
close();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -18,6 +18,9 @@
|
||||||
#ifndef EDITOR_PHRASE_H
|
#ifndef EDITOR_PHRASE_H
|
||||||
#define EDITOR_PHRASE_H
|
#define EDITOR_PHRASE_H
|
||||||
|
|
||||||
|
// Project includes
|
||||||
|
#include "translation_manager_editor.h"
|
||||||
|
|
||||||
// Qt includes
|
// Qt includes
|
||||||
#include <QtCore/QObject>
|
#include <QtCore/QObject>
|
||||||
#include <QtCore/QFile>
|
#include <QtCore/QFile>
|
||||||
|
@ -32,23 +35,23 @@
|
||||||
#include <QtGui/QErrorMessage>
|
#include <QtGui/QErrorMessage>
|
||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
|
|
||||||
// Project includes
|
namespace TranslationManager
|
||||||
#include "translation_manager_editor.h"
|
{
|
||||||
|
|
||||||
namespace TranslationManager {
|
|
||||||
|
|
||||||
class CTextEdit : public QTextEdit
|
class CTextEdit : public QTextEdit
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QUndoStack* m_undoStack;
|
QUndoStack *m_undoStack;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CTextEdit(QWidget* parent = 0) : QTextEdit(parent)
|
CTextEdit(QWidget *parent = 0) : QTextEdit(parent)
|
||||||
{
|
{
|
||||||
setUndoRedoEnabled(true);
|
setUndoRedoEnabled(true);
|
||||||
}
|
}
|
||||||
//void keyPressEvent(QKeyEvent *event);
|
//void keyPressEvent(QKeyEvent *event);
|
||||||
void setUndoStack(QUndoStack* undoStack)
|
void setUndoStack(QUndoStack *undoStack)
|
||||||
{
|
{
|
||||||
m_undoStack = undoStack;
|
m_undoStack = undoStack;
|
||||||
}
|
}
|
||||||
|
@ -57,20 +60,22 @@ public:
|
||||||
class CEditorPhrase : public CEditor
|
class CEditorPhrase : public CEditor
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CTextEdit *text_edit;
|
CEditorPhrase(QMdiArea *parent) : CEditor(parent) {}
|
||||||
public:
|
|
||||||
CEditorPhrase(QMdiArea* parent) : CEditor(parent) {}
|
|
||||||
CEditorPhrase() : CEditor() {}
|
CEditorPhrase() : CEditor() {}
|
||||||
void open(QString filename);
|
void open(QString filename);
|
||||||
void save();
|
void save();
|
||||||
void saveAs(QString filename);
|
void saveAs(QString filename);
|
||||||
void activateWindow();
|
void activateWindow();
|
||||||
void closeEvent(QCloseEvent *event);
|
void closeEvent(QCloseEvent *event);
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void docContentsChanged();
|
void docContentsChanged();
|
||||||
void newUndoCommandAdded();
|
void newUndoCommandAdded();
|
||||||
|
|
||||||
|
private:
|
||||||
|
CTextEdit *text_edit;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CUndoPhraseNewCommand : public QUndoCommand
|
class CUndoPhraseNewCommand : public QUndoCommand
|
||||||
|
@ -79,7 +84,7 @@ public:
|
||||||
CUndoPhraseNewCommand(CTextEdit *textEdit, QUndoCommand *parent = 0)
|
CUndoPhraseNewCommand(CTextEdit *textEdit, QUndoCommand *parent = 0)
|
||||||
: QUndoCommand("Inserting/Removing characters", parent),
|
: QUndoCommand("Inserting/Removing characters", parent),
|
||||||
m_textEdit(textEdit)
|
m_textEdit(textEdit)
|
||||||
{ }
|
{}
|
||||||
|
|
||||||
~CUndoPhraseNewCommand() {}
|
~CUndoPhraseNewCommand() {}
|
||||||
|
|
||||||
|
@ -92,8 +97,9 @@ public:
|
||||||
{
|
{
|
||||||
m_textEdit->redo();
|
m_textEdit->redo();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CTextEdit* m_textEdit;
|
CTextEdit *m_textEdit;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SyntaxHighlighter : public QSyntaxHighlighter
|
class SyntaxHighlighter : public QSyntaxHighlighter
|
||||||
|
@ -109,7 +115,6 @@ public:
|
||||||
rule.format = translateStringFormat;
|
rule.format = translateStringFormat;
|
||||||
highlightingRules.append(rule);
|
highlightingRules.append(rule);
|
||||||
|
|
||||||
|
|
||||||
singleLineCommentFormat.setForeground(Qt::red);
|
singleLineCommentFormat.setForeground(Qt::red);
|
||||||
rule.pattern = QRegExp("//[^\n]*");
|
rule.pattern = QRegExp("//[^\n]*");
|
||||||
rule.format = singleLineCommentFormat;
|
rule.format = singleLineCommentFormat;
|
||||||
|
@ -134,10 +139,12 @@ public:
|
||||||
|
|
||||||
void highlightBlock(const QString &text)
|
void highlightBlock(const QString &text)
|
||||||
{
|
{
|
||||||
Q_FOREACH(const HighlightingRule &rule, highlightingRules) {
|
Q_FOREACH(const HighlightingRule &rule, highlightingRules)
|
||||||
|
{
|
||||||
QRegExp expression(rule.pattern);
|
QRegExp expression(rule.pattern);
|
||||||
int index = expression.indexIn(text);
|
int index = expression.indexIn(text);
|
||||||
while (index >= 0) {
|
while (index >= 0)
|
||||||
|
{
|
||||||
int length = expression.matchedLength();
|
int length = expression.matchedLength();
|
||||||
setFormat(index, length, rule.format);
|
setFormat(index, length, rule.format);
|
||||||
index = expression.indexIn(text, index + length);
|
index = expression.indexIn(text, index + length);
|
||||||
|
@ -149,13 +156,17 @@ public:
|
||||||
if (previousBlockState() != 1)
|
if (previousBlockState() != 1)
|
||||||
startIndex = commentStartExpression.indexIn(text);
|
startIndex = commentStartExpression.indexIn(text);
|
||||||
|
|
||||||
while (startIndex >= 0) {
|
while (startIndex >= 0)
|
||||||
|
{
|
||||||
int endIndex = commentEndExpression.indexIn(text, startIndex);
|
int endIndex = commentEndExpression.indexIn(text, startIndex);
|
||||||
int commentLength;
|
int commentLength;
|
||||||
if (endIndex == -1) {
|
if (endIndex == -1)
|
||||||
|
{
|
||||||
setCurrentBlockState(1);
|
setCurrentBlockState(1);
|
||||||
commentLength = text.length() - startIndex;
|
commentLength = text.length() - startIndex;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
commentLength = endIndex - startIndex
|
commentLength = endIndex - startIndex
|
||||||
+ commentEndExpression.matchedLength();
|
+ commentEndExpression.matchedLength();
|
||||||
}
|
}
|
||||||
|
@ -164,7 +175,7 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct HighlightingRule
|
struct HighlightingRule
|
||||||
{
|
{
|
||||||
QRegExp pattern;
|
QRegExp pattern;
|
||||||
|
|
|
@ -15,6 +15,11 @@
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
// 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/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
// Project includes
|
||||||
|
#include "editor_worksheet.h"
|
||||||
|
#include "extract_bot_names.h"
|
||||||
|
#include "translation_manager_constants.h"
|
||||||
|
|
||||||
// Qt includes
|
// Qt includes
|
||||||
#include <QtGui/QErrorMessage>
|
#include <QtGui/QErrorMessage>
|
||||||
#include <QtGui/QTableWidgetItem>
|
#include <QtGui/QTableWidgetItem>
|
||||||
|
@ -24,15 +29,10 @@
|
||||||
#include <QtGui/QAction>
|
#include <QtGui/QAction>
|
||||||
#include <QtGui/QMenu>
|
#include <QtGui/QMenu>
|
||||||
|
|
||||||
// Project includes
|
|
||||||
#include "editor_worksheet.h"
|
|
||||||
#include "extract_bot_names.h"
|
|
||||||
#include "translation_manager_constants.h"
|
|
||||||
#include <set>
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
namespace TranslationManager {
|
namespace TranslationManager
|
||||||
|
{
|
||||||
|
|
||||||
void CEditorWorksheet::open(QString filename)
|
void CEditorWorksheet::open(QString filename)
|
||||||
{
|
{
|
||||||
|
@ -45,25 +45,31 @@ void CEditorWorksheet::open(QString filename)
|
||||||
{
|
{
|
||||||
table_editor->setColumnCount(wk_file.ColCount - 1);
|
table_editor->setColumnCount(wk_file.ColCount - 1);
|
||||||
hasHashValue = true;
|
hasHashValue = true;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
table_editor->setColumnCount(wk_file.ColCount);
|
table_editor->setColumnCount(wk_file.ColCount);
|
||||||
}
|
}
|
||||||
table_editor->setRowCount(wk_file.size() - 1);
|
table_editor->setRowCount(wk_file.size() - 1);
|
||||||
|
|
||||||
// read columns name
|
// read columns name
|
||||||
for(unsigned int i = 0; i < wk_file.ColCount; i++)
|
for(uint i = 0; i < wk_file.ColCount; i++)
|
||||||
{
|
{
|
||||||
if(hasHashValue && i == 0)
|
if(hasHashValue && i == 0)
|
||||||
{
|
{
|
||||||
// we don't show the column with hash value
|
// we don't show the column with hash value
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
QTableWidgetItem *col = new QTableWidgetItem();
|
QTableWidgetItem *col = new QTableWidgetItem();
|
||||||
ucstring col_name = wk_file.getData(0, i);
|
ucstring col_name = wk_file.getData(0, i);
|
||||||
col->setText(QString(col_name.toString().c_str()));
|
col->setText(QString(col_name.toString().c_str()));
|
||||||
if(hasHashValue)
|
if(hasHashValue)
|
||||||
{
|
{
|
||||||
table_editor->setHorizontalHeaderItem(i - 1, col);
|
table_editor->setHorizontalHeaderItem(i - 1, col);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
table_editor->setHorizontalHeaderItem(i, col);
|
table_editor->setHorizontalHeaderItem(i, col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,14 +83,18 @@ void CEditorWorksheet::open(QString filename)
|
||||||
if(hasHashValue && j == 0)
|
if(hasHashValue && j == 0)
|
||||||
{
|
{
|
||||||
// we don't show the column with hash value
|
// we don't show the column with hash value
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
QTableWidgetItem *row = new QTableWidgetItem();
|
QTableWidgetItem *row = new QTableWidgetItem();
|
||||||
ucstring row_value = wk_file.getData(i, j);
|
ucstring row_value = wk_file.getData(i, j);
|
||||||
row->setText(QString::fromUtf8(row_value.toUtf8().c_str()));
|
row->setText(QString::fromUtf8(row_value.toUtf8().c_str()));
|
||||||
if(hasHashValue)
|
if(hasHashValue)
|
||||||
{
|
{
|
||||||
table_editor->setItem(i - 1, j - 1, row);
|
table_editor->setItem(i - 1, j - 1, row);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
table_editor->setItem(i - 1, j, row);
|
table_editor->setItem(i - 1, j, row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -97,23 +107,24 @@ void CEditorWorksheet::open(QString filename)
|
||||||
table_editor->resizeColumnsToContents();
|
table_editor->resizeColumnsToContents();
|
||||||
table_editor->resizeRowsToContents();
|
table_editor->resizeRowsToContents();
|
||||||
// set editor signals
|
// set editor signals
|
||||||
connect(table_editor, SIGNAL(itemChanged(QTableWidgetItem*) ), this, SLOT(worksheetEditorChanged(QTableWidgetItem*)));
|
connect(table_editor, SIGNAL(itemChanged(QTableWidgetItem *) ), this, SLOT(worksheetEditorChanged(QTableWidgetItem *)));
|
||||||
connect(table_editor, SIGNAL(itemDoubleClicked(QTableWidgetItem*) ), this, SLOT(worksheetEditorCellEntered(QTableWidgetItem*)));
|
connect(table_editor, SIGNAL(itemDoubleClicked(QTableWidgetItem *) ), this, SLOT(worksheetEditorCellEntered(QTableWidgetItem *)));
|
||||||
connect (table_editor,SIGNAL(customContextMenuRequested(const QPoint &)), this,SLOT(contextMenuEvent(QContextMenuEvent*)));
|
connect(table_editor,SIGNAL(customContextMenuRequested(const QPoint &)), this,SLOT(contextMenuEvent(QContextMenuEvent *)));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
QErrorMessage error;
|
QErrorMessage error;
|
||||||
error.showMessage("This file is not a worksheet file.");
|
error.showMessage(tr("This file is not a worksheet file."));
|
||||||
error.exec();
|
error.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CEditorWorksheet::contextMenuEvent(QContextMenuEvent *e)
|
void CEditorWorksheet::contextMenuEvent(QContextMenuEvent *e)
|
||||||
{
|
{
|
||||||
QAction *insertRowAct = new QAction("Insert new row", this);
|
QAction *insertRowAct = new QAction(tr("Insert new row"), this);
|
||||||
connect(insertRowAct, SIGNAL(triggered()), this, SLOT(insertRow()));
|
connect(insertRowAct, SIGNAL(triggered()), this, SLOT(insertRow()));
|
||||||
QAction *deleteRowAct = new QAction("Delete row", this);
|
QAction *deleteRowAct = new QAction(tr("Delete row"), this);
|
||||||
connect(deleteRowAct, SIGNAL(triggered()), this, SLOT(deleteRow()));
|
connect(deleteRowAct, SIGNAL(triggered()), this, SLOT(deleteRow()));
|
||||||
|
|
||||||
QMenu *contextMenu = new QMenu(this);
|
QMenu *contextMenu = new QMenu(this);
|
||||||
|
@ -163,7 +174,7 @@ void CEditorWorksheet::saveAs(QString filename)
|
||||||
ucstring tvalue;
|
ucstring tvalue;
|
||||||
for(int j = 0; j < table_editor->columnCount(); j++)
|
for(int j = 0; j < table_editor->columnCount(); j++)
|
||||||
{
|
{
|
||||||
QTableWidgetItem* item = table_editor->item(i, j);
|
QTableWidgetItem *item = table_editor->item(i, j);
|
||||||
tvalue.fromUtf8(std::string(item->text().toUtf8()));
|
tvalue.fromUtf8(std::string(item->text().toUtf8()));
|
||||||
new_file.setData(rowIdx, j + colIdx, tvalue);
|
new_file.setData(rowIdx, j + colIdx, tvalue);
|
||||||
}
|
}
|
||||||
|
@ -189,28 +200,29 @@ void CEditorWorksheet::deleteRow()
|
||||||
{
|
{
|
||||||
int selected_row = table_editor->currentRow();
|
int selected_row = table_editor->currentRow();
|
||||||
QMessageBox msgBox;
|
QMessageBox msgBox;
|
||||||
|
msgBox.setIcon(QMessageBox::Question);
|
||||||
msgBox.setText(tr("The row will be deleted."));
|
msgBox.setText(tr("The row will be deleted."));
|
||||||
msgBox.setInformativeText(tr("Do you want to delete the selected row ?"));
|
msgBox.setInformativeText(tr("Do you want to delete the selected row ?"));
|
||||||
msgBox.setStandardButtons(QMessageBox::No | QMessageBox::Yes);
|
msgBox.setStandardButtons(QMessageBox::No | QMessageBox::Yes);
|
||||||
msgBox.setDefaultButton(QMessageBox::No);
|
msgBox.setDefaultButton(QMessageBox::No);
|
||||||
|
|
||||||
int ret = msgBox.exec();
|
int ret = msgBox.exec();
|
||||||
if(ret == QMessageBox::Yes)
|
if(ret == QMessageBox::Yes)
|
||||||
{
|
{
|
||||||
current_stack->push(new CUndoWorksheetDeleteCommand(table_editor, selected_row));
|
current_stack->push(new CUndoWorksheetDeleteCommand(table_editor, selected_row));
|
||||||
}
|
}
|
||||||
|
|
||||||
table_editor->clearFocus();
|
table_editor->clearFocus();
|
||||||
table_editor->clearSelection();
|
table_editor->clearSelection();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorWorksheet::worksheetEditorCellEntered(QTableWidgetItem * item)
|
void CEditorWorksheet::worksheetEditorCellEntered(QTableWidgetItem *item)
|
||||||
{
|
{
|
||||||
temp_content = item->text();
|
temp_content = item->text();
|
||||||
current_stack->push(new CUndoWorksheetCommand(table_editor, item, temp_content));
|
current_stack->push(new CUndoWorksheetCommand(table_editor, item, temp_content));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorWorksheet::worksheetEditorChanged(QTableWidgetItem * item)
|
void CEditorWorksheet::worksheetEditorChanged(QTableWidgetItem *item)
|
||||||
{
|
{
|
||||||
if(temp_content != item->text())
|
if(temp_content != item->text())
|
||||||
{
|
{
|
||||||
|
@ -237,7 +249,7 @@ void CEditorWorksheet::extractBotNames(list<string> filters, string level_design
|
||||||
|
|
||||||
for (; it != last; ++it)
|
for (; it != last; ++it)
|
||||||
{
|
{
|
||||||
QList<QTableWidgetItem*> search_results = table_editor->findItems(QString(it->first.c_str()), Qt::MatchExactly);
|
QList<QTableWidgetItem *> search_results = table_editor->findItems(QString(it->first.c_str()), Qt::MatchExactly);
|
||||||
if(search_results.size() == 0)
|
if(search_results.size() == 0)
|
||||||
{
|
{
|
||||||
QList<QString> records;
|
QList<QString> records;
|
||||||
|
@ -257,7 +269,7 @@ void CEditorWorksheet::extractBotNames(list<string> filters, string level_design
|
||||||
for (; it != last; ++it)
|
for (; it != last; ++it)
|
||||||
{
|
{
|
||||||
string gnName = "gn_" + ebn.cleanupName(*it);
|
string gnName = "gn_" + ebn.cleanupName(*it);
|
||||||
QList<QTableWidgetItem*> search_results = table_editor->findItems(QString((*it).c_str()), Qt::MatchExactly);
|
QList<QTableWidgetItem *> search_results = table_editor->findItems(QString((*it).c_str()), Qt::MatchExactly);
|
||||||
if(search_results.size() == 0)
|
if(search_results.size() == 0)
|
||||||
{
|
{
|
||||||
QList<QString> records;
|
QList<QString> records;
|
||||||
|
@ -280,13 +292,13 @@ void CEditorWorksheet::extractBotNames(list<string> filters, string level_design
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorWorksheet::extractWords(QString filename, QString columnId, IWordListBuilder& wordListBuilder)
|
void CEditorWorksheet::extractWords(QString filename, QString columnId, IWordListBuilder &wordListBuilder)
|
||||||
{
|
{
|
||||||
uint i;
|
uint i;
|
||||||
|
|
||||||
// **** Load the excel sheet
|
// **** Load the excel sheet
|
||||||
// load
|
// load
|
||||||
TWorksheet workSheet;
|
STRING_MANAGER::TWorksheet workSheet;
|
||||||
if(!loadExcelSheet(filename.toStdString(), workSheet, true))
|
if(!loadExcelSheet(filename.toStdString(), workSheet, true))
|
||||||
{
|
{
|
||||||
nlwarning("Error reading '%s'. Aborted", filename.toStdString().c_str());
|
nlwarning("Error reading '%s'. Aborted", filename.toStdString().c_str());
|
||||||
|
@ -308,7 +320,7 @@ void CEditorWorksheet::extractWords(QString filename, QString columnId, IWordLis
|
||||||
}
|
}
|
||||||
|
|
||||||
// **** List all words with the builder given
|
// **** List all words with the builder given
|
||||||
std::vector<string> allWords;
|
std::vector<std::string> allWords;
|
||||||
if(!wordListBuilder.buildWordList(allWords, filename.toStdString()))
|
if(!wordListBuilder.buildWordList(allWords, filename.toStdString()))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
@ -318,7 +330,7 @@ void CEditorWorksheet::extractWords(QString filename, QString columnId, IWordLis
|
||||||
for(i = 0; i < allWords.size(); i++)
|
for(i = 0; i < allWords.size(); i++)
|
||||||
{
|
{
|
||||||
string keyName = allWords[i];
|
string keyName = allWords[i];
|
||||||
QList<QTableWidgetItem*> search_results = table_editor->findItems(QString(keyName.c_str()), Qt::MatchExactly);
|
QList<QTableWidgetItem *> search_results = table_editor->findItems(QString(keyName.c_str()), Qt::MatchExactly);
|
||||||
if(search_results.size() == 0)
|
if(search_results.size() == 0)
|
||||||
{
|
{
|
||||||
int knPos = 0, nPos = 0;
|
int knPos = 0, nPos = 0;
|
||||||
|
@ -326,7 +338,9 @@ void CEditorWorksheet::extractWords(QString filename, QString columnId, IWordLis
|
||||||
{
|
{
|
||||||
knPos = keyColIndex - 1;
|
knPos = keyColIndex - 1;
|
||||||
nPos = nameColIndex - 1;
|
nPos = nameColIndex - 1;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
knPos = keyColIndex;
|
knPos = keyColIndex;
|
||||||
nPos = nameColIndex;
|
nPos = nameColIndex;
|
||||||
}
|
}
|
||||||
|
@ -360,7 +374,6 @@ void CEditorWorksheet::insertTableRecords(QList<QString> records, QList<CTableWi
|
||||||
new_items.push_back(rec_s);
|
new_items.push_back(rec_s);
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CEditorWorksheet::compareWorksheetFile(QString filename)
|
bool CEditorWorksheet::compareWorksheetFile(QString filename)
|
||||||
|
@ -388,10 +401,11 @@ bool CEditorWorksheet::compareWorksheetFile(QString filename)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -412,12 +426,12 @@ void CEditorWorksheet::mergeWorksheetFile(QString filename)
|
||||||
{
|
{
|
||||||
// search with the first column
|
// search with the first column
|
||||||
ucstring rowId = wk_file.getData(i,colIndex);
|
ucstring rowId = wk_file.getData(i,colIndex);
|
||||||
QList<QTableWidgetItem*> search_results = table_editor->findItems(QString(rowId.toString().c_str()), Qt::MatchExactly);
|
QList<QTableWidgetItem *> search_results = table_editor->findItems(QString(rowId.toString().c_str()), Qt::MatchExactly);
|
||||||
if(search_results.size() == 0)
|
if(search_results.size() == 0)
|
||||||
{
|
{
|
||||||
const int lastRow = table_editor->rowCount();
|
const int lastRow = table_editor->rowCount();
|
||||||
table_editor->setRowCount(lastRow + 1);
|
table_editor->setRowCount(lastRow + 1);
|
||||||
for(unsigned int j = 0; j < table_editor->columnCount(); j++)
|
for(int j = 0; j < table_editor->columnCount(); j++)
|
||||||
{
|
{
|
||||||
ucstring rowValue = wk_file.getData(i, j + colIndex); // get the value
|
ucstring rowValue = wk_file.getData(i, j + colIndex); // get the value
|
||||||
QTableWidgetItem *row = new QTableWidgetItem();
|
QTableWidgetItem *row = new QTableWidgetItem();
|
||||||
|
@ -426,7 +440,9 @@ void CEditorWorksheet::mergeWorksheetFile(QString filename)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
QErrorMessage error;
|
QErrorMessage error;
|
||||||
error.showMessage(tr("This file is not a worksheet file."));
|
error.showMessage(tr("This file is not a worksheet file."));
|
||||||
error.exec();
|
error.exec();
|
||||||
|
@ -438,6 +454,7 @@ void CEditorWorksheet::closeEvent(QCloseEvent *event)
|
||||||
if(isWindowModified())
|
if(isWindowModified())
|
||||||
{
|
{
|
||||||
QMessageBox msgBox;
|
QMessageBox msgBox;
|
||||||
|
msgBox.setIcon(QMessageBox::Question);
|
||||||
msgBox.setText(tr("The document has been modified."));
|
msgBox.setText(tr("The document has been modified."));
|
||||||
msgBox.setInformativeText(tr("Do you want to save your changes?"));
|
msgBox.setInformativeText(tr("Do you want to save your changes?"));
|
||||||
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
|
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
|
||||||
|
@ -447,23 +464,16 @@ void CEditorWorksheet::closeEvent(QCloseEvent *event)
|
||||||
{
|
{
|
||||||
case QMessageBox::Save:
|
case QMessageBox::Save:
|
||||||
save();
|
save();
|
||||||
event->accept();
|
|
||||||
close();
|
|
||||||
break;
|
break;
|
||||||
case QMessageBox::Discard:
|
case QMessageBox::Discard:
|
||||||
event->accept();
|
|
||||||
close();
|
|
||||||
break;
|
break;
|
||||||
case QMessageBox::Cancel:
|
case QMessageBox::Cancel:
|
||||||
event->ignore();
|
event->ignore();
|
||||||
break;
|
return;
|
||||||
default:
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
event->accept();
|
event->accept();
|
||||||
close();
|
close();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -476,7 +486,6 @@ bool CEditorWorksheet::isBotNamesTable()
|
||||||
{
|
{
|
||||||
status = false;
|
status = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -486,13 +495,21 @@ bool CEditorWorksheet::isSheetTable(QString type)
|
||||||
if(type.toAscii() == Constants::WK_ITEM)
|
if(type.toAscii() == Constants::WK_ITEM)
|
||||||
{
|
{
|
||||||
column_name = "item ID";
|
column_name = "item ID";
|
||||||
} else if(type.toAscii() == Constants::WK_CREATURE) {
|
}
|
||||||
|
else if(type.toAscii() == Constants::WK_CREATURE)
|
||||||
|
{
|
||||||
column_name = "creature ID";
|
column_name = "creature ID";
|
||||||
} else if(type.toAscii() == Constants::WK_SBRICK) {
|
}
|
||||||
|
else if(type.toAscii() == Constants::WK_SBRICK)
|
||||||
|
{
|
||||||
column_name = "sbrick ID";
|
column_name = "sbrick ID";
|
||||||
} else if(type.toAscii() == Constants::WK_SPHRASE) {
|
}
|
||||||
|
else if(type.toAscii() == Constants::WK_SPHRASE)
|
||||||
|
{
|
||||||
column_name = "sphrase ID";
|
column_name = "sphrase ID";
|
||||||
} else if(type.toAscii() == Constants::WK_PLACE) {
|
}
|
||||||
|
else if(type.toAscii() == Constants::WK_PLACE)
|
||||||
|
{
|
||||||
column_name = "placeId";
|
column_name = "placeId";
|
||||||
}
|
}
|
||||||
bool status = true;
|
bool status = true;
|
||||||
|
@ -501,7 +518,6 @@ bool CEditorWorksheet::isSheetTable(QString type)
|
||||||
{
|
{
|
||||||
status = false;
|
status = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,10 @@
|
||||||
#ifndef EDITOR_WORKSHEET_H
|
#ifndef EDITOR_WORKSHEET_H
|
||||||
#define EDITOR_WORKSHEET_H
|
#define EDITOR_WORKSHEET_H
|
||||||
|
|
||||||
|
// Project includes
|
||||||
|
#include "translation_manager_editor.h"
|
||||||
|
#include "extract_new_sheet_names.h"
|
||||||
|
|
||||||
// Nel includes
|
// Nel includes
|
||||||
#include "nel/misc/types_nl.h"
|
#include "nel/misc/types_nl.h"
|
||||||
#include "nel/misc/sheet_id.h"
|
#include "nel/misc/sheet_id.h"
|
||||||
|
@ -34,11 +38,9 @@
|
||||||
#include <QtGui/QUndoCommand>
|
#include <QtGui/QUndoCommand>
|
||||||
#include <QtGui/QUndoStack>
|
#include <QtGui/QUndoStack>
|
||||||
|
|
||||||
// Project includes
|
|
||||||
#include "translation_manager_editor.h"
|
|
||||||
#include "extract_new_sheet_names.h"
|
|
||||||
|
|
||||||
namespace TranslationManager {
|
namespace TranslationManager
|
||||||
|
{
|
||||||
|
|
||||||
struct CTableWidgetItemStore
|
struct CTableWidgetItemStore
|
||||||
{
|
{
|
||||||
|
@ -47,6 +49,7 @@ public:
|
||||||
m_item(item),
|
m_item(item),
|
||||||
m_row(row),
|
m_row(row),
|
||||||
m_column(column) { }
|
m_column(column) { }
|
||||||
|
|
||||||
QTableWidgetItem *m_item;
|
QTableWidgetItem *m_item;
|
||||||
int m_row;
|
int m_row;
|
||||||
int m_column;
|
int m_column;
|
||||||
|
@ -55,37 +58,39 @@ public:
|
||||||
class CEditorWorksheet : public CEditor
|
class CEditorWorksheet : public CEditor
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
private:
|
|
||||||
QString temp_content;
|
|
||||||
public:
|
public:
|
||||||
CEditorWorksheet(QMdiArea* parent) : CEditor(parent) {}
|
CEditorWorksheet(QMdiArea *parent) : CEditor(parent) {}
|
||||||
CEditorWorksheet() : CEditor() {}
|
CEditorWorksheet() : CEditor() {}
|
||||||
QTableWidget* table_editor;
|
QTableWidget *table_editor;
|
||||||
void open(QString filename);
|
void open(QString filename);
|
||||||
void save();
|
void save();
|
||||||
void saveAs(QString filename);
|
void saveAs(QString filename);
|
||||||
void activateWindow();
|
void activateWindow();
|
||||||
void mergeWorksheetFile(QString filename);
|
void mergeWorksheetFile(QString filename);
|
||||||
bool compareWorksheetFile(QString filename);
|
bool compareWorksheetFile(QString filename);
|
||||||
void extractBotNames(list<string> filters, string level_design_path, NLLIGO::CLigoConfig ligoConfig);
|
void extractBotNames(std::list<std::string> filters, std::string level_design_path, NLLIGO::CLigoConfig ligoConfig);
|
||||||
void extractWords(QString filename, QString columnId, IWordListBuilder &wordListBuilder);
|
void extractWords(QString filename, QString columnId, IWordListBuilder &wordListBuilder);
|
||||||
void insertTableRecords(QList<QString> records, QList<CTableWidgetItemStore> new_items);
|
void insertTableRecords(QList<QString> records, QList<CTableWidgetItemStore> new_items);
|
||||||
bool isBotNamesTable();
|
bool isBotNamesTable();
|
||||||
bool isSheetTable(QString type);
|
bool isSheetTable(QString type);
|
||||||
void closeEvent(QCloseEvent *event);
|
void closeEvent(QCloseEvent *event);
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void worksheetEditorCellEntered(QTableWidgetItem * item);
|
void worksheetEditorCellEntered(QTableWidgetItem *item);
|
||||||
void worksheetEditorChanged(QTableWidgetItem * item);
|
void worksheetEditorChanged(QTableWidgetItem *item);
|
||||||
void insertRow();
|
void insertRow();
|
||||||
void deleteRow();
|
void deleteRow();
|
||||||
void contextMenuEvent(QContextMenuEvent *e);
|
void contextMenuEvent(QContextMenuEvent *e);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QString temp_content;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CUndoWorksheetCommand : public QUndoCommand
|
class CUndoWorksheetCommand : public QUndoCommand
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CUndoWorksheetCommand(QTableWidget *table, QTableWidgetItem* item, const QString &ocontent, QUndoCommand *parent = 0) : QUndoCommand("Insert characters in cells", parent), m_table(table), m_item(item), m_ocontent(ocontent)
|
CUndoWorksheetCommand(QTableWidget *table, QTableWidgetItem *item, const QString &ocontent, QUndoCommand *parent = 0) : QUndoCommand("Insert characters in cells", parent), m_table(table), m_item(item), m_ocontent(ocontent)
|
||||||
{
|
{
|
||||||
m_ccontent = m_ocontent;
|
m_ccontent = m_ocontent;
|
||||||
}
|
}
|
||||||
|
@ -106,8 +111,8 @@ public:
|
||||||
m_item->setText(m_ocontent);
|
m_item->setText(m_ocontent);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
QTableWidget* m_table;
|
QTableWidget *m_table;
|
||||||
QTableWidgetItem* m_item;
|
QTableWidgetItem *m_item;
|
||||||
QString m_ocontent;
|
QString m_ocontent;
|
||||||
QString m_ccontent;
|
QString m_ccontent;
|
||||||
};
|
};
|
||||||
|
@ -123,7 +128,7 @@ public:
|
||||||
m_table->setRowCount(m_rowID + 1);
|
m_table->setRowCount(m_rowID + 1);
|
||||||
for(int j = 0; j < m_table->columnCount(); j++)
|
for(int j = 0; j < m_table->columnCount(); j++)
|
||||||
{
|
{
|
||||||
QTableWidgetItem* item = new QTableWidgetItem();
|
QTableWidgetItem *item = new QTableWidgetItem();
|
||||||
m_table->setItem(m_rowID, j, item);
|
m_table->setItem(m_rowID, j, item);
|
||||||
m_table->scrollToBottom();
|
m_table->scrollToBottom();
|
||||||
}
|
}
|
||||||
|
@ -133,10 +138,10 @@ public:
|
||||||
{
|
{
|
||||||
m_table->removeRow(m_rowID);
|
m_table->removeRow(m_rowID);
|
||||||
}
|
}
|
||||||
private:
|
|
||||||
QTableWidget* m_table;
|
|
||||||
int m_rowID;
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
QTableWidget *m_table;
|
||||||
|
int m_rowID;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CUndoWorksheetExtraction : public QUndoCommand
|
class CUndoWorksheetExtraction : public QUndoCommand
|
||||||
|
@ -153,7 +158,6 @@ public:
|
||||||
{
|
{
|
||||||
m_table->setItem(is.m_row, is.m_column, is.m_item);
|
m_table->setItem(is.m_row, is.m_column, is.m_item);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void undo()
|
void undo()
|
||||||
|
@ -163,12 +167,11 @@ public:
|
||||||
m_table->setItem(is.m_row, is.m_column, is.m_item);
|
m_table->setItem(is.m_row, is.m_column, is.m_item);
|
||||||
m_table->takeItem(is.m_row, is.m_column);
|
m_table->takeItem(is.m_row, is.m_column);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QList<CTableWidgetItemStore> m_items;
|
QList<CTableWidgetItemStore> m_items;
|
||||||
QTableWidget* m_table;
|
QTableWidget *m_table;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CUndoWorksheetDeleteCommand : public QUndoCommand
|
class CUndoWorksheetDeleteCommand : public QUndoCommand
|
||||||
|
@ -181,8 +184,8 @@ public:
|
||||||
{
|
{
|
||||||
for(int i = 0; i < m_table->columnCount(); i++)
|
for(int i = 0; i < m_table->columnCount(); i++)
|
||||||
{
|
{
|
||||||
QTableWidgetItem* item = new QTableWidgetItem();
|
QTableWidgetItem *item = new QTableWidgetItem();
|
||||||
QTableWidgetItem* table_item = m_table->item(m_rowID, i);
|
QTableWidgetItem *table_item = m_table->item(m_rowID, i);
|
||||||
item->setText(table_item->text());
|
item->setText(table_item->text());
|
||||||
m_deletedItems.push_back(item);
|
m_deletedItems.push_back(item);
|
||||||
}
|
}
|
||||||
|
@ -203,8 +206,8 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QList<QTableWidgetItem*> m_deletedItems;
|
QList<QTableWidgetItem *> m_deletedItems;
|
||||||
QTableWidget* m_table;
|
QTableWidget *m_table;
|
||||||
int m_rowID;
|
int m_rowID;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -17,18 +17,14 @@
|
||||||
|
|
||||||
#include "extract_bot_names.h"
|
#include "extract_bot_names.h"
|
||||||
|
|
||||||
|
|
||||||
static bool RemoveOlds = false;
|
static bool RemoveOlds = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace TranslationManager
|
namespace TranslationManager
|
||||||
{
|
{
|
||||||
|
|
||||||
TCreatureInfo *ExtractBotNames::getCreature(const std::string &sheetName)
|
TCreatureInfo *ExtractBotNames::getCreature(const std::string &sheetName)
|
||||||
{
|
{
|
||||||
CSheetId id(sheetName+".creature");
|
NLMISC::CSheetId id(sheetName+".creature");
|
||||||
|
|
||||||
if (Creatures.find(id) != Creatures.end())
|
if (Creatures.find(id) != Creatures.end())
|
||||||
return &(Creatures.find(id)->second);
|
return &(Creatures.find(id)->second);
|
||||||
|
@ -36,18 +32,17 @@ TCreatureInfo *ExtractBotNames::getCreature(const std::string &sheetName)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
string ExtractBotNames::cleanupName(const std::string &name)
|
std::string ExtractBotNames::cleanupName(const std::string &name)
|
||||||
{
|
{
|
||||||
string ret;
|
std::string ret;
|
||||||
|
|
||||||
for (uint i=0; i<name.size(); ++i)
|
for (size_t i = 0; i < name.size(); ++i)
|
||||||
{
|
{
|
||||||
if (name[i] != ' ')
|
if (name[i] != ' ')
|
||||||
ret += name[i];
|
ret += name[i];
|
||||||
else
|
else
|
||||||
ret += '_';
|
ret += '_';
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,14 +50,13 @@ ucstring ExtractBotNames::cleanupUcName(const ucstring &name)
|
||||||
{
|
{
|
||||||
ucstring ret;
|
ucstring ret;
|
||||||
|
|
||||||
for (uint i=0; i<name.size(); ++i)
|
for (size_t i = 0; i < name.size(); ++i)
|
||||||
{
|
{
|
||||||
if (name[i] != ' ')
|
if (name[i] != ' ')
|
||||||
ret += name[i];
|
ret += name[i];
|
||||||
else
|
else
|
||||||
ret += '_';
|
ret += '_';
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,34 +64,30 @@ ucstring ExtractBotNames::cleanupUcName(const ucstring &name)
|
||||||
/*
|
/*
|
||||||
Removes first and last '$'
|
Removes first and last '$'
|
||||||
*/
|
*/
|
||||||
ucstring ExtractBotNames::makeGroupName(const ucstring & translationName)
|
ucstring ExtractBotNames::makeGroupName(const ucstring &translationName)
|
||||||
{
|
{
|
||||||
ucstring ret = translationName;
|
ucstring ret = translationName;
|
||||||
if (ret.size() >= 2)
|
if (ret.size() >= 2)
|
||||||
{
|
{
|
||||||
if ( *ret.begin() == ucchar('$'))
|
if (*ret.begin() == ucchar('$'))
|
||||||
{
|
{
|
||||||
ret=ret.substr(1);
|
ret=ret.substr(1);
|
||||||
}
|
}
|
||||||
if ( *ret.rbegin() == ucchar('$'))
|
if (*ret.rbegin() == ucchar('$'))
|
||||||
{
|
{
|
||||||
ret = ret.substr(0, ret.size()-1);
|
ret = ret.substr(0, ret.size() - 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ret = cleanupUcName(ret);
|
ret = cleanupUcName(ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::set<std::string> ExtractBotNames::getGenericNames()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
set<string> ExtractBotNames::getGenericNames()
|
|
||||||
{
|
{
|
||||||
return GenericNames;
|
return GenericNames;
|
||||||
}
|
}
|
||||||
|
|
||||||
map<string, TEntryInfo> ExtractBotNames::getSimpleNames()
|
std::map<std::string, TEntryInfo> ExtractBotNames::getSimpleNames()
|
||||||
{
|
{
|
||||||
return SimpleNames;
|
return SimpleNames;
|
||||||
}
|
}
|
||||||
|
@ -112,34 +102,34 @@ void ExtractBotNames::cleanGenericNames()
|
||||||
GenericNames.clear();
|
GenericNames.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
string ExtractBotNames::removeAndStoreFunction(const std::string &fullName)
|
std::string ExtractBotNames::removeAndStoreFunction(const std::string &fullName)
|
||||||
{
|
{
|
||||||
string::size_type pos = fullName.find("$");
|
std::string::size_type pos = fullName.find("$");
|
||||||
if (pos == string::npos)
|
if (pos == std::string::npos)
|
||||||
|
{
|
||||||
return fullName;
|
return fullName;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// extract and store the function name
|
// extract and store the function name
|
||||||
string ret;
|
std::string ret;
|
||||||
|
|
||||||
ret = fullName.substr(0, pos);
|
ret = fullName.substr(0, pos);
|
||||||
string::size_type pos2 = fullName.find("$", pos+1);
|
std::string::size_type pos2 = fullName.find("$", pos+1);
|
||||||
|
|
||||||
string fct = fullName.substr(pos+1, pos2-(pos+1));
|
std::string fct = fullName.substr(pos + 1, pos2 - (pos + 1));
|
||||||
|
|
||||||
ret += fullName.substr(pos2+1);
|
ret += fullName.substr(pos2 + 1);
|
||||||
|
|
||||||
if (Functions.find(fct) == Functions.end())
|
if (Functions.find(fct) == Functions.end())
|
||||||
{
|
{
|
||||||
nldebug("Adding function '%s'", fct.c_str());
|
nldebug("Adding function '%s'", fct.c_str());
|
||||||
Functions.insert(fct);
|
Functions.insert(fct);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ExtractBotNames::addGenericName(const std::string &name, const std::string &sheetName)
|
void ExtractBotNames::addGenericName(const std::string &name, const std::string &sheetName)
|
||||||
{
|
{
|
||||||
TCreatureInfo *c = getCreature(sheetName);
|
TCreatureInfo *c = getCreature(sheetName);
|
||||||
|
@ -185,75 +175,72 @@ void ExtractBotNames::addSimpleName(const std::string &name, const std::string &
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExtractBotNames::setRequiredSettings(list<string> filters, string level_design_path)
|
void ExtractBotNames::setRequiredSettings(std::list<std::string> filters, std::string level_design_path)
|
||||||
{
|
{
|
||||||
for (std::list<string>::iterator it = filters.begin(); it != filters.end(); ++it)
|
for (std::list<std::string>::iterator it = filters.begin(); it != filters.end(); ++it)
|
||||||
{
|
{
|
||||||
Filters.push_back(*it);
|
Filters.push_back(*it);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// init the sheets
|
// init the sheets
|
||||||
CSheetId::init(false);
|
NLMISC::CSheetId::init(false);
|
||||||
const string PACKED_SHEETS_NAME = "bin/translation_tools_creature.packed_sheets";
|
const std::string PACKED_SHEETS_NAME = "bin/translation_tools_creature.packed_sheets";
|
||||||
loadForm("creature", PACKED_SHEETS_NAME, Creatures, false, false);
|
loadForm("creature", PACKED_SHEETS_NAME, Creatures, false, false);
|
||||||
|
|
||||||
if (Creatures.empty())
|
if (Creatures.empty())
|
||||||
{
|
{
|
||||||
loadForm("creature", PACKED_SHEETS_NAME, Creatures, true);
|
loadForm("creature", PACKED_SHEETS_NAME, Creatures, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExtractBotNames::extractBotNamesFromPrimitives(CLigoConfig ligoConfig)
|
void ExtractBotNames::extractBotNamesFromPrimitives(NLLIGO::CLigoConfig ligoConfig)
|
||||||
{
|
{
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// ok, ready for the real work,
|
// ok, ready for the real work,
|
||||||
// first, read the primitives files and parse the primitives
|
// first, read the primitives files and parse the primitives
|
||||||
vector<string> files;
|
std::vector<std::string> files;
|
||||||
CPath::getFileList("primitive", files);
|
NLMISC::CPath::getFileList("primitive", files);
|
||||||
|
|
||||||
|
|
||||||
for (uint i=0; i<files.size(); ++i)
|
for (uint i=0; i<files.size(); ++i)
|
||||||
{
|
{
|
||||||
string pathName = files[i];
|
std::string pathName = files[i];
|
||||||
pathName = CPath::lookup(pathName);
|
pathName = NLMISC::CPath::lookup(pathName);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
// dnk-88: what is it?
|
||||||
// check filters
|
// check filters
|
||||||
uint j=0;
|
uint j = 0;
|
||||||
for (j=0; j<Filters.size(); ++j)
|
for (size_t j = 0; j < Filters.size(); ++j)
|
||||||
{
|
{
|
||||||
if (pathName.find(Filters[j]) != string::npos)
|
if (pathName.find(Filters[j]) != std::string::npos)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (j != Filters.size())
|
if (j != Filters.size())
|
||||||
// skip this file
|
// skip this file
|
||||||
continue;
|
continue;
|
||||||
|
*/
|
||||||
|
nlinfo("Loading file '%s'...", NLMISC::CFile::getFilename(pathName).c_str());
|
||||||
|
|
||||||
nlinfo("Loading file '%s'...", CFile::getFilename(pathName).c_str());
|
NLLIGO::CPrimitives primDoc;
|
||||||
|
NLLIGO::CPrimitiveContext::instance().CurrentPrimitive = &primDoc;
|
||||||
CPrimitives primDoc;
|
|
||||||
CPrimitiveContext::instance().CurrentPrimitive = &primDoc;
|
|
||||||
loadXmlPrimitiveFile(primDoc, pathName, ligoConfig);
|
loadXmlPrimitiveFile(primDoc, pathName, ligoConfig);
|
||||||
|
|
||||||
// now parse the file
|
// now parse the file
|
||||||
|
|
||||||
// look for group template
|
// look for group template
|
||||||
{
|
{
|
||||||
TPrimitiveClassPredicate pred("group_template_npc");
|
NLLIGO::TPrimitiveClassPredicate pred("group_template_npc");
|
||||||
TPrimitiveSet result;
|
NLLIGO::TPrimitiveSet result;
|
||||||
|
|
||||||
CPrimitiveSet<TPrimitiveClassPredicate> ps;
|
NLLIGO::CPrimitiveSet<NLLIGO::TPrimitiveClassPredicate> ps;
|
||||||
ps.buildSet(primDoc.RootNode, pred, result);
|
ps.buildSet(primDoc.RootNode, pred, result);
|
||||||
|
|
||||||
for (uint i=0; i<result.size(); ++i)
|
for (uint i = 0; i < result.size(); ++i)
|
||||||
{
|
{
|
||||||
string name;
|
std::string name;
|
||||||
string countStr;
|
std::string countStr;
|
||||||
string sheetStr;
|
std::string sheetStr;
|
||||||
result[i]->getPropertyByName("name", name);
|
result[i]->getPropertyByName("name", name);
|
||||||
result[i]->getPropertyByName("count", countStr);
|
result[i]->getPropertyByName("count", countStr);
|
||||||
result[i]->getPropertyByName("bot_sheet_look", sheetStr);
|
result[i]->getPropertyByName("bot_sheet_look", sheetStr);
|
||||||
|
@ -276,16 +263,16 @@ void ExtractBotNames::extractBotNamesFromPrimitives(CLigoConfig ligoConfig)
|
||||||
}
|
}
|
||||||
// look for bot template
|
// look for bot template
|
||||||
{
|
{
|
||||||
TPrimitiveClassPredicate pred("bot_template_npc");
|
NLLIGO::TPrimitiveClassPredicate pred("bot_template_npc");
|
||||||
TPrimitiveSet result;
|
NLLIGO::TPrimitiveSet result;
|
||||||
|
|
||||||
CPrimitiveSet<TPrimitiveClassPredicate> ps;
|
NLLIGO::CPrimitiveSet<NLLIGO::TPrimitiveClassPredicate> ps;
|
||||||
ps.buildSet(primDoc.RootNode, pred, result);
|
ps.buildSet(primDoc.RootNode, pred, result);
|
||||||
|
|
||||||
for (uint i=0; i<result.size(); ++i)
|
for (size_t i = 0; i < result.size(); ++i)
|
||||||
{
|
{
|
||||||
string name;
|
std::string name;
|
||||||
string sheetStr;
|
std::string sheetStr;
|
||||||
result[i]->getPropertyByName("name", name);
|
result[i]->getPropertyByName("name", name);
|
||||||
result[i]->getPropertyByName("sheet_look", sheetStr);
|
result[i]->getPropertyByName("sheet_look", sheetStr);
|
||||||
|
|
||||||
|
@ -307,17 +294,17 @@ void ExtractBotNames::extractBotNamesFromPrimitives(CLigoConfig ligoConfig)
|
||||||
}
|
}
|
||||||
// look for npc_group
|
// look for npc_group
|
||||||
{
|
{
|
||||||
TPrimitiveClassPredicate pred("npc_group");
|
NLLIGO::TPrimitiveClassPredicate pred("npc_group");
|
||||||
TPrimitiveSet result;
|
NLLIGO::TPrimitiveSet result;
|
||||||
|
|
||||||
CPrimitiveSet<TPrimitiveClassPredicate> ps;
|
NLLIGO::CPrimitiveSet<NLLIGO::TPrimitiveClassPredicate> ps;
|
||||||
ps.buildSet(primDoc.RootNode, pred, result);
|
ps.buildSet(primDoc.RootNode, pred, result);
|
||||||
|
|
||||||
for (uint i=0; i<result.size(); ++i)
|
for (size_t i = 0; i < result.size(); ++i)
|
||||||
{
|
{
|
||||||
string name;
|
std::string name;
|
||||||
string countStr;
|
std::string countStr;
|
||||||
string sheetStr;
|
std::string sheetStr;
|
||||||
result[i]->getPropertyByName("name", name);
|
result[i]->getPropertyByName("name", name);
|
||||||
result[i]->getPropertyByName("count", countStr);
|
result[i]->getPropertyByName("count", countStr);
|
||||||
result[i]->getPropertyByName("bot_sheet_client", sheetStr);
|
result[i]->getPropertyByName("bot_sheet_client", sheetStr);
|
||||||
|
@ -344,16 +331,16 @@ void ExtractBotNames::extractBotNamesFromPrimitives(CLigoConfig ligoConfig)
|
||||||
}
|
}
|
||||||
// look for bot
|
// look for bot
|
||||||
{
|
{
|
||||||
TPrimitiveClassPredicate pred("npc_bot");
|
NLLIGO::TPrimitiveClassPredicate pred("npc_bot");
|
||||||
TPrimitiveSet result;
|
NLLIGO::TPrimitiveSet result;
|
||||||
|
|
||||||
CPrimitiveSet<TPrimitiveClassPredicate> ps;
|
NLLIGO::CPrimitiveSet<NLLIGO::TPrimitiveClassPredicate> ps;
|
||||||
ps.buildSet(primDoc.RootNode, pred, result);
|
ps.buildSet(primDoc.RootNode, pred, result);
|
||||||
|
|
||||||
for (uint i=0; i<result.size(); ++i)
|
for (size_t i = 0; i < result.size(); ++i)
|
||||||
{
|
{
|
||||||
string name;
|
std::string name;
|
||||||
string sheetStr;
|
std::string sheetStr;
|
||||||
result[i]->getPropertyByName("name", name);
|
result[i]->getPropertyByName("name", name);
|
||||||
result[i]->getPropertyByName("sheet_client", sheetStr);
|
result[i]->getPropertyByName("sheet_client", sheetStr);
|
||||||
|
|
||||||
|
|
|
@ -30,22 +30,16 @@
|
||||||
#include "nel/ligo/primitive.h"
|
#include "nel/ligo/primitive.h"
|
||||||
#include "nel/ligo/primitive_utils.h"
|
#include "nel/ligo/primitive_utils.h"
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
using namespace NLMISC;
|
|
||||||
using namespace NLLIGO;
|
|
||||||
using namespace STRING_MANAGER;
|
|
||||||
|
|
||||||
namespace TranslationManager
|
namespace TranslationManager
|
||||||
{
|
{
|
||||||
|
|
||||||
struct TCreatureInfo
|
struct TCreatureInfo
|
||||||
{
|
{
|
||||||
CSheetId SheetId;
|
NLMISC::CSheetId SheetId;
|
||||||
bool ForceSheetName;
|
bool ForceSheetName;
|
||||||
bool DisplayName;
|
bool DisplayName;
|
||||||
|
|
||||||
|
void readGeorges(const NLMISC::CSmartPtr<NLGEORGES::UForm> &form, const NLMISC::CSheetId &sheetId)
|
||||||
void readGeorges (const NLMISC::CSmartPtr<NLGEORGES::UForm> &form, const NLMISC::CSheetId &sheetId)
|
|
||||||
{
|
{
|
||||||
const NLGEORGES::UFormElm &item=form->getRootNode();
|
const NLGEORGES::UFormElm &item=form->getRootNode();
|
||||||
|
|
||||||
|
@ -61,7 +55,6 @@ struct TCreatureInfo
|
||||||
f.serial(DisplayName);
|
f.serial(DisplayName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static uint getVersion ()
|
static uint getVersion ()
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -70,42 +63,37 @@ struct TCreatureInfo
|
||||||
void removed()
|
void removed()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TEntryInfo
|
struct TEntryInfo
|
||||||
{
|
{
|
||||||
string SheetName;
|
std::string SheetName;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ExtractBotNames
|
struct ExtractBotNames
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
vector<string> Filters;
|
std::vector<std::string> Filters;
|
||||||
std::map<CSheetId, TCreatureInfo> Creatures;
|
std::map<NLMISC::CSheetId, TCreatureInfo> Creatures;
|
||||||
set<string> GenericNames;
|
std::set<std::string> GenericNames;
|
||||||
map<string, TEntryInfo> SimpleNames;
|
std::map<std::string, TEntryInfo> SimpleNames;
|
||||||
set<string> Functions;
|
std::set<std::string> Functions;
|
||||||
private:
|
private:
|
||||||
TCreatureInfo *getCreature(const std::string &sheetName);
|
TCreatureInfo *getCreature(const std::string &sheetName);
|
||||||
ucstring makeGroupName(const ucstring & translationName);
|
ucstring makeGroupName(const ucstring &translationName);
|
||||||
string removeAndStoreFunction(const std::string &fullName);
|
std::string removeAndStoreFunction(const std::string &fullName);
|
||||||
void addGenericName(const std::string &name, const std::string &sheetName);
|
void addGenericName(const std::string &name, const std::string &sheetName);
|
||||||
void addSimpleName(const std::string &name, const std::string &sheetName);
|
void addSimpleName(const std::string &name, const std::string &sheetName);
|
||||||
public:
|
public:
|
||||||
void extractBotNamesFromPrimitives(CLigoConfig ligoConfig);
|
void extractBotNamesFromPrimitives(NLLIGO::CLigoConfig ligoConfig);
|
||||||
void setRequiredSettings(list<string> filters, string level_design_path);
|
void setRequiredSettings(std::list<std::string> filters, std::string level_design_path);
|
||||||
set<string> getGenericNames();
|
std::set<std::string> getGenericNames();
|
||||||
map<string, TEntryInfo> getSimpleNames();
|
std::map<std::string, TEntryInfo> getSimpleNames();
|
||||||
string cleanupName(const std::string &name);
|
std::string cleanupName(const std::string &name);
|
||||||
ucstring cleanupUcName(const ucstring &name);
|
ucstring cleanupUcName(const ucstring &name);
|
||||||
void cleanSimpleNames();
|
void cleanSimpleNames();
|
||||||
void cleanGenericNames();
|
void cleanGenericNames();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /* EXTRACT_BOT_NAMES_H */
|
#endif /* EXTRACT_BOT_NAMES_H */
|
||||||
|
|
||||||
|
|
|
@ -16,128 +16,125 @@
|
||||||
|
|
||||||
#include "extract_new_sheet_names.h"
|
#include "extract_new_sheet_names.h"
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
using namespace NLMISC;
|
|
||||||
using namespace NLLIGO;
|
|
||||||
using namespace STRING_MANAGER;
|
|
||||||
|
|
||||||
namespace TranslationManager
|
namespace TranslationManager
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
/*
|
/*
|
||||||
* Specialisation of IWordListBuilder to list sheets in a directory
|
* Specialisation of IWordListBuilder to list sheets in a directory
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
bool CSheetWordListBuilder::buildWordList(std::vector<std::string> &allWords, std::string workSheetFileName)
|
||||||
bool CSheetWordListBuilder::buildWordList(std::vector<string> &allWords, string workSheetFileName)
|
{
|
||||||
{
|
SheetExt = NLMISC::toLower(SheetExt);
|
||||||
SheetExt= toLower(SheetExt);
|
|
||||||
// verify the directory is correct
|
// verify the directory is correct
|
||||||
if(!CFile::isDirectory(SheetPath))
|
if(!NLMISC::CFile::isDirectory(SheetPath))
|
||||||
{
|
{
|
||||||
nlwarning("Error: Directory '%s' not found. '%s' Aborted", SheetPath.c_str(), workSheetFileName.c_str());
|
nlwarning("Error: Directory '%s' not found. '%s' Aborted", SheetPath.c_str(), workSheetFileName.c_str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// list all files.
|
// list all files.
|
||||||
std::vector<string> allFiles;
|
std::vector<std::string> allFiles;
|
||||||
allFiles.reserve(100000);
|
allFiles.reserve(100000);
|
||||||
CPath::getPathContent(SheetPath, true, false, true, allFiles, NULL);
|
NLMISC::CPath::getPathContent(SheetPath, true, false, true, allFiles, NULL);
|
||||||
|
|
||||||
// Keep only the extension we want, and remove "_" (parent)
|
// Keep only the extension we want, and remove "_" (parent)
|
||||||
allWords.clear();
|
allWords.clear();
|
||||||
allWords.reserve(allFiles.size());
|
allWords.reserve(allFiles.size());
|
||||||
for(uint i=0;i<allFiles.size();i++)
|
for(size_t i = 0; i < allFiles.size(); i++)
|
||||||
{
|
{
|
||||||
string fileNameWithoutExt= CFile::getFilenameWithoutExtension(allFiles[i]);
|
std::string fileNameWithoutExt = NLMISC::CFile::getFilenameWithoutExtension(allFiles[i]);
|
||||||
string extension= toLower(CFile::getExtension(allFiles[i]));
|
std::string extension = NLMISC::toLower(NLMISC::CFile::getExtension(allFiles[i]));
|
||||||
|
|
||||||
// bad extension?
|
// bad extension?
|
||||||
if(extension!=SheetExt)
|
if(extension!=SheetExt)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// parent?
|
// parent?
|
||||||
if(fileNameWithoutExt.empty()||fileNameWithoutExt[0]=='_')
|
if(fileNameWithoutExt.empty() || fileNameWithoutExt[0] == '_')
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// ok, add
|
// ok, add
|
||||||
allWords.push_back(toLower(fileNameWithoutExt));
|
allWords.push_back(NLMISC::toLower(fileNameWithoutExt));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
/*
|
/*
|
||||||
* Specialisation of IWordListBuilder to list new region/place name from .primitive
|
* Specialisation of IWordListBuilder to list new region/place name from .primitive
|
||||||
*/
|
*/
|
||||||
bool CRegionPrimWordListBuilder::buildWordList(std::vector<string> &allWords, string workSheetFileName)
|
bool CRegionPrimWordListBuilder::buildWordList(std::vector<std::string> &allWords, std::string workSheetFileName)
|
||||||
{
|
{
|
||||||
// verify the directory is correct
|
// verify the directory is correct
|
||||||
if(!CFile::isDirectory(PrimPath))
|
if(!NLMISC::CFile::isDirectory(PrimPath))
|
||||||
{
|
{
|
||||||
nlwarning("Error: Directory '%s' not found. '%s' Aborted", PrimPath.c_str(), workSheetFileName.c_str());
|
nlwarning("Error: Directory '%s' not found. '%s' Aborted", PrimPath.c_str(), workSheetFileName.c_str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// list all files.
|
// list all files.
|
||||||
std::vector<string> allFiles;
|
std::vector<std::string> allFiles;
|
||||||
allFiles.reserve(100000);
|
allFiles.reserve(100000);
|
||||||
CPath::getPathContent(PrimPath, true, false, true, allFiles, NULL);
|
NLMISC::CPath::getPathContent(PrimPath, true, false, true, allFiles, NULL);
|
||||||
|
|
||||||
// parse all primitive that match the filter
|
// parse all primitive that match the filter
|
||||||
allWords.clear();
|
allWords.clear();
|
||||||
allWords.reserve(100000);
|
allWords.reserve(100000);
|
||||||
// to avoid duplicate
|
// to avoid duplicate
|
||||||
set<string> allWordSet;
|
std::set<std::string> allWordSet;
|
||||||
for(uint i=0;i<allFiles.size();i++)
|
for(size_t i = 0; i < allFiles.size(); i++)
|
||||||
{
|
{
|
||||||
string fileName= CFile::getFilename(allFiles[i]);
|
std::string fileName = NLMISC::CFile::getFilename(allFiles[i]);
|
||||||
// filter don't match?
|
// filter don't match?
|
||||||
bool oneMatch= false;
|
bool oneMatch= false;
|
||||||
for(uint filter=0;filter<PrimFilter.size();filter++)
|
for(size_t filter = 0; filter < PrimFilter.size(); filter++)
|
||||||
{
|
{
|
||||||
if(testWildCard(fileName, PrimFilter[filter]))
|
if(NLMISC::testWildCard(fileName, PrimFilter[filter]))
|
||||||
oneMatch= true;
|
oneMatch= true;
|
||||||
}
|
}
|
||||||
if(!oneMatch)
|
if(!oneMatch)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// ok, read the file
|
// ok, read the file
|
||||||
CPrimitives PrimDoc;
|
NLLIGO::CPrimitives PrimDoc;
|
||||||
CPrimitiveContext::instance().CurrentPrimitive = &PrimDoc;
|
NLLIGO::CPrimitiveContext::instance().CurrentPrimitive = &PrimDoc;
|
||||||
if (!loadXmlPrimitiveFile(PrimDoc, allFiles[i], LigoConfig))
|
if (!NLLIGO::loadXmlPrimitiveFile(PrimDoc, allFiles[i], LigoConfig))
|
||||||
{
|
{
|
||||||
nlwarning("Error: cannot open file '%s'. '%s' Aborted", allFiles[i].c_str(), workSheetFileName.c_str());
|
nlwarning("Error: cannot open file '%s'. '%s' Aborted", allFiles[i].c_str(), workSheetFileName.c_str());
|
||||||
CPrimitiveContext::instance().CurrentPrimitive = NULL;
|
NLLIGO::CPrimitiveContext::instance().CurrentPrimitive = NULL;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
CPrimitiveContext::instance().CurrentPrimitive = NULL;
|
NLLIGO::CPrimitiveContext::instance().CurrentPrimitive = NULL;
|
||||||
|
|
||||||
// For all primitives of interest
|
// For all primitives of interest
|
||||||
const char *listClass[]= {"continent", "region", "place", "stable",
|
const char *listClass[] = {"continent", "region", "place", "stable",
|
||||||
"teleport_destination", "room_template"};
|
"teleport_destination", "room_template"
|
||||||
const char *listProp[]= {"name", "name", "name", "name",
|
};
|
||||||
"place_name", "place_name"};
|
|
||||||
|
const char *listProp[] = {"name", "name", "name", "name",
|
||||||
|
"place_name", "place_name"
|
||||||
|
};
|
||||||
|
|
||||||
const uint numListClass= sizeof(listClass)/sizeof(listClass[0]);
|
const uint numListClass= sizeof(listClass)/sizeof(listClass[0]);
|
||||||
const uint numListProp= sizeof(listProp)/sizeof(listProp[0]);
|
const uint numListProp= sizeof(listProp)/sizeof(listProp[0]);
|
||||||
nlctassert(numListProp==numListClass);
|
nlctassert(numListProp == numListClass);
|
||||||
for(uint cid=0;cid<numListClass;cid++)
|
for(uint cid = 0; cid < numListClass; cid++)
|
||||||
{
|
{
|
||||||
// parse the whole hierarchy
|
// parse the whole hierarchy
|
||||||
TPrimitiveClassPredicate predCont(listClass[cid]);
|
NLLIGO::TPrimitiveClassPredicate predCont(listClass[cid]);
|
||||||
CPrimitiveSet<TPrimitiveClassPredicate> setPlace;
|
NLLIGO::CPrimitiveSet<NLLIGO::TPrimitiveClassPredicate> setPlace;
|
||||||
TPrimitiveSet placeRes;
|
NLLIGO::TPrimitiveSet placeRes;
|
||||||
setPlace.buildSet(PrimDoc.RootNode, predCont, placeRes);
|
setPlace.buildSet(PrimDoc.RootNode, predCont, placeRes);
|
||||||
|
|
||||||
// for all found
|
// for all found
|
||||||
for (uint placeId= 0; placeId < placeRes.size(); ++placeId)
|
for (size_t placeId = 0; placeId < placeRes.size(); ++placeId)
|
||||||
{
|
{
|
||||||
string primName;
|
std::string primName;
|
||||||
if(placeRes[placeId]->getPropertyByName(listProp[cid], primName) && !primName.empty())
|
if(placeRes[placeId]->getPropertyByName(listProp[cid], primName) && !primName.empty())
|
||||||
{
|
{
|
||||||
primName= toLower(primName);
|
primName = NLMISC::toLower(primName);
|
||||||
// avoid duplicate
|
// avoid duplicate
|
||||||
if(allWordSet.insert(primName).second)
|
if(allWordSet.insert(primName).second)
|
||||||
{
|
{
|
||||||
|
@ -147,8 +144,7 @@ bool CRegionPrimWordListBuilder::buildWordList(std::vector<string> &allWords, st
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -30,43 +30,34 @@
|
||||||
#include "nel/ligo/primitive.h"
|
#include "nel/ligo/primitive.h"
|
||||||
#include "nel/ligo/primitive_utils.h"
|
#include "nel/ligo/primitive_utils.h"
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
using namespace NLMISC;
|
|
||||||
using namespace NLLIGO;
|
|
||||||
using namespace STRING_MANAGER;
|
|
||||||
|
|
||||||
namespace TranslationManager
|
namespace TranslationManager
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
/*
|
/*
|
||||||
* Interface to build the whole list of words (key id) for a specific worksheet
|
* Interface to build the whole list of words (key id) for a specific worksheet
|
||||||
*/
|
*/
|
||||||
struct IWordListBuilder
|
struct IWordListBuilder
|
||||||
{
|
{
|
||||||
virtual bool buildWordList(std::vector<string> &allWords, string workSheetFileName) =0;
|
virtual bool buildWordList(std::vector<std::string> &allWords, std::string workSheetFileName) =0;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CSheetWordListBuilder : public IWordListBuilder
|
struct CSheetWordListBuilder : public IWordListBuilder
|
||||||
{
|
{
|
||||||
string SheetExt;
|
std::string SheetExt;
|
||||||
string SheetPath;
|
std::string SheetPath;
|
||||||
|
|
||||||
virtual bool buildWordList(std::vector<string> &allWords, string workSheetFileName);
|
virtual bool buildWordList(std::vector<std::string> &allWords, std::string workSheetFileName);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CRegionPrimWordListBuilder : public IWordListBuilder
|
struct CRegionPrimWordListBuilder : public IWordListBuilder
|
||||||
{
|
{
|
||||||
string PrimPath;
|
std::string PrimPath;
|
||||||
vector<string> PrimFilter;
|
std::vector<std::string> PrimFilter;
|
||||||
NLLIGO::CLigoConfig LigoConfig;
|
NLLIGO::CLigoConfig LigoConfig;
|
||||||
virtual bool buildWordList(std::vector<string> &allWords, string workSheetFileName);
|
virtual bool buildWordList(std::vector<std::string> &allWords, std::string workSheetFileName);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /* EXTRACT_NEW_SHEET_NAMES_H */
|
#endif /* EXTRACT_NEW_SHEET_NAMES_H */
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,28 @@
|
||||||
|
// Translation Manager Plugin - OVQT Plugin <http://dev.ryzom.com/projects/nel/>
|
||||||
|
// 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/>.
|
||||||
|
|
||||||
#include "ftp_selection.h"
|
#include "ftp_selection.h"
|
||||||
|
|
||||||
#include <QtGui/QMessageBox>
|
#include <QtGui/QMessageBox>
|
||||||
#include <QtNetwork/QFtp>
|
#include <QtNetwork/QFtp>
|
||||||
|
|
||||||
namespace TranslationManager
|
namespace TranslationManager
|
||||||
{
|
{
|
||||||
CFtpSelection::CFtpSelection(QWidget *parent): QDialog(parent)
|
CFtpSelection::CFtpSelection(QWidget *parent): QDialog(parent)
|
||||||
{
|
{
|
||||||
_ui.setupUi(this);
|
_ui.setupUi(this);
|
||||||
connect(_ui.connectButton, SIGNAL(clicked()), this, SLOT(ConnectButtonClicked()));
|
connect(_ui.connectButton, SIGNAL(clicked()), this, SLOT(ConnectButtonClicked()));
|
||||||
connect(_ui.doneButton, SIGNAL(clicked()), this, SLOT(DoneButtonClicked()));
|
connect(_ui.doneButton, SIGNAL(clicked()), this, SLOT(DoneButtonClicked()));
|
||||||
|
@ -14,7 +30,7 @@ namespace TranslationManager
|
||||||
connect(_ui.cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
|
connect(_ui.cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
|
||||||
|
|
||||||
// file list
|
// file list
|
||||||
connect(_ui.fileList, SIGNAL(itemActivated(QTreeWidgetItem*,int)),this, SLOT(processItem(QTreeWidgetItem*,int)));
|
connect(_ui.fileList, SIGNAL(itemActivated(QTreeWidgetItem *,int)),this, SLOT(processItem(QTreeWidgetItem *,int)));
|
||||||
_ui.fileList->setEnabled(false);
|
_ui.fileList->setEnabled(false);
|
||||||
_ui.fileList->setRootIsDecorated(false);
|
_ui.fileList->setRootIsDecorated(false);
|
||||||
_ui.fileList->setHeaderLabels(QStringList() << tr("Name") << tr("Size") << tr("Owner") << tr("Group") << tr("Time"));
|
_ui.fileList->setHeaderLabels(QStringList() << tr("Name") << tr("Size") << tr("Owner") << tr("Group") << tr("Time"));
|
||||||
|
@ -25,22 +41,25 @@ namespace TranslationManager
|
||||||
_ui.doneButton->setEnabled(false);
|
_ui.doneButton->setEnabled(false);
|
||||||
|
|
||||||
status = false;
|
status = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Connection with the FTP Server. We retrieve the file list.
|
// Connection with the FTP Server. We retrieve the file list.
|
||||||
void CFtpSelection::ConnectButtonClicked()
|
void CFtpSelection::ConnectButtonClicked()
|
||||||
{
|
{
|
||||||
conn = new QFtp(this);
|
conn = new QFtp(this);
|
||||||
connect(conn, SIGNAL(commandFinished(int,bool)), this, SLOT(FtpCommandFinished(int,bool)));
|
connect(conn, SIGNAL(commandFinished(int,bool)), this, SLOT(FtpCommandFinished(int,bool)));
|
||||||
connect(conn, SIGNAL(listInfo(QUrlInfo)), this, SLOT(AddToList(QUrlInfo)));
|
connect(conn, SIGNAL(listInfo(QUrlInfo)), this, SLOT(AddToList(QUrlInfo)));
|
||||||
#ifndef QT_NO_CURSOR
|
|
||||||
setCursor(Qt::WaitCursor);
|
setCursor(Qt::WaitCursor);
|
||||||
#endif
|
|
||||||
QUrl url(_ui.url->text());
|
QUrl url(_ui.url->text());
|
||||||
if (!url.isValid() || url.scheme().toLower() != QLatin1String("ftp")) {
|
if (!url.isValid() || url.scheme().toLower() != QLatin1String("ftp"))
|
||||||
|
{
|
||||||
conn->connectToHost(_ui.url->text(), 21);
|
conn->connectToHost(_ui.url->text(), 21);
|
||||||
conn->login();
|
conn->login();
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
conn->connectToHost(url.host(), url.port(21));
|
conn->connectToHost(url.host(), url.port(21));
|
||||||
|
|
||||||
if (!url.userName().isEmpty())
|
if (!url.userName().isEmpty())
|
||||||
|
@ -50,14 +69,13 @@ namespace TranslationManager
|
||||||
if (!url.path().isEmpty())
|
if (!url.path().isEmpty())
|
||||||
conn->cd(url.path());
|
conn->cd(url.path());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the user action.
|
// Get the user action.
|
||||||
void CFtpSelection::FtpCommandFinished(int, bool error)
|
void CFtpSelection::FtpCommandFinished(int, bool error)
|
||||||
{
|
{
|
||||||
#ifndef QT_NO_CURSOR
|
|
||||||
setCursor(Qt::ArrowCursor);
|
setCursor(Qt::ArrowCursor);
|
||||||
#endif
|
|
||||||
if (conn->currentCommand() == QFtp::ConnectToHost)
|
if (conn->currentCommand() == QFtp::ConnectToHost)
|
||||||
{
|
{
|
||||||
if (error)
|
if (error)
|
||||||
|
@ -85,7 +103,9 @@ namespace TranslationManager
|
||||||
status = false;
|
status = false;
|
||||||
file->close();
|
file->close();
|
||||||
file->remove();
|
file->remove();
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
file->close();
|
file->close();
|
||||||
status = true;
|
status = true;
|
||||||
}
|
}
|
||||||
|
@ -94,15 +114,16 @@ namespace TranslationManager
|
||||||
|
|
||||||
if (conn->currentCommand() == QFtp::List)
|
if (conn->currentCommand() == QFtp::List)
|
||||||
{
|
{
|
||||||
if (isDirectory.isEmpty()) {
|
if (isDirectory.isEmpty())
|
||||||
|
{
|
||||||
_ui.fileList->addTopLevelItem(new QTreeWidgetItem(QStringList() << tr("<empty>")));
|
_ui.fileList->addTopLevelItem(new QTreeWidgetItem(QStringList() << tr("<empty>")));
|
||||||
_ui.fileList->setEnabled(false);
|
_ui.fileList->setEnabled(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Make the file list with directories and files
|
// Make the file list with directories and files
|
||||||
void CFtpSelection::AddToList(const QUrlInfo &urlInfo)
|
void CFtpSelection::AddToList(const QUrlInfo &urlInfo)
|
||||||
{
|
{
|
||||||
QTreeWidgetItem *item = new QTreeWidgetItem;
|
QTreeWidgetItem *item = new QTreeWidgetItem;
|
||||||
item->setText(0, urlInfo.name());
|
item->setText(0, urlInfo.name());
|
||||||
item->setText(1, QString::number(urlInfo.size()));
|
item->setText(1, QString::number(urlInfo.size()));
|
||||||
|
@ -115,14 +136,15 @@ namespace TranslationManager
|
||||||
|
|
||||||
isDirectory[urlInfo.name()] = urlInfo.isDir();
|
isDirectory[urlInfo.name()] = urlInfo.isDir();
|
||||||
_ui.fileList->addTopLevelItem(item);
|
_ui.fileList->addTopLevelItem(item);
|
||||||
if (!_ui.fileList->currentItem()) {
|
if (!_ui.fileList->currentItem())
|
||||||
|
{
|
||||||
_ui.fileList->setCurrentItem(_ui.fileList->topLevelItem(0));
|
_ui.fileList->setCurrentItem(_ui.fileList->topLevelItem(0));
|
||||||
_ui.fileList->setEnabled(true);
|
_ui.fileList->setEnabled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFtpSelection::processItem(QTreeWidgetItem* item, int)
|
void CFtpSelection::processItem(QTreeWidgetItem *item, int)
|
||||||
{
|
{
|
||||||
QString name = item->text(0);
|
QString name = item->text(0);
|
||||||
if (isDirectory.value(name))
|
if (isDirectory.value(name))
|
||||||
{
|
{
|
||||||
|
@ -132,38 +154,40 @@ namespace TranslationManager
|
||||||
currentPath += name;
|
currentPath += name;
|
||||||
conn->cd(name);
|
conn->cd(name);
|
||||||
conn->list();
|
conn->list();
|
||||||
#ifndef QT_NO_CURSOR
|
|
||||||
setCursor(Qt::WaitCursor);
|
setCursor(Qt::WaitCursor);
|
||||||
#endif
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_ui.doneButton->setEnabled(true);
|
_ui.doneButton->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exit from a directory
|
// Exit from a directory
|
||||||
void CFtpSelection::cdToParent()
|
void CFtpSelection::cdToParent()
|
||||||
{
|
{
|
||||||
#ifndef QT_NO_CURSOR
|
|
||||||
setCursor(Qt::WaitCursor);
|
setCursor(Qt::WaitCursor);
|
||||||
#endif
|
|
||||||
_ui.fileList->clear();
|
_ui.fileList->clear();
|
||||||
isDirectory.clear();
|
isDirectory.clear();
|
||||||
currentPath = currentPath.left(currentPath.lastIndexOf('/'));
|
currentPath = currentPath.left(currentPath.lastIndexOf('/'));
|
||||||
if (currentPath.isEmpty()) {
|
if (currentPath.isEmpty())
|
||||||
|
{
|
||||||
_ui.cdToParrent->setEnabled(false);
|
_ui.cdToParrent->setEnabled(false);
|
||||||
conn->cd("/");
|
conn->cd("/");
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
conn->cd(currentPath);
|
conn->cd(currentPath);
|
||||||
}
|
}
|
||||||
conn->list();
|
conn->list();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Done action
|
// Done action
|
||||||
void CFtpSelection::DoneButtonClicked()
|
void CFtpSelection::DoneButtonClicked()
|
||||||
{
|
{
|
||||||
QString fileName = _ui.fileList->currentItem()->text(0);
|
QString fileName = _ui.fileList->currentItem()->text(0);
|
||||||
|
|
||||||
if (QFile::exists(fileName)) {
|
if (QFile::exists(fileName))
|
||||||
|
{
|
||||||
QMessageBox::information(this, tr("FTP"),
|
QMessageBox::information(this, tr("FTP"),
|
||||||
tr("There already exists a file called %1 in "
|
tr("There already exists a file called %1 in "
|
||||||
"the current directory.")
|
"the current directory.")
|
||||||
|
@ -172,10 +196,11 @@ namespace TranslationManager
|
||||||
}
|
}
|
||||||
|
|
||||||
file = new QFile(fileName);
|
file = new QFile(fileName);
|
||||||
#ifndef QT_NO_CURSOR
|
|
||||||
setCursor(Qt::WaitCursor);
|
setCursor(Qt::WaitCursor);
|
||||||
#endif
|
|
||||||
if (!file->open(QIODevice::WriteOnly)) {
|
if (!file->open(QIODevice::WriteOnly))
|
||||||
|
{
|
||||||
QMessageBox::information(this, tr("FTP"),
|
QMessageBox::information(this, tr("FTP"),
|
||||||
tr("Unable to save the file %1: %2.")
|
tr("Unable to save the file %1: %2.")
|
||||||
.arg(fileName).arg(file->errorString()));
|
.arg(fileName).arg(file->errorString()));
|
||||||
|
@ -186,6 +211,6 @@ namespace TranslationManager
|
||||||
conn->get(_ui.fileList->currentItem()->text(0), file);
|
conn->get(_ui.fileList->currentItem()->text(0), file);
|
||||||
|
|
||||||
reject();
|
reject();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
#ifndef FTP_SELECTION_H
|
#ifndef FTP_SELECTION_H
|
||||||
#define FTP_SELECTION_H
|
#define FTP_SELECTION_H
|
||||||
|
|
||||||
|
#include "ui_ftp_selection.h"
|
||||||
|
|
||||||
#include <QtCore/QObject>
|
#include <QtCore/QObject>
|
||||||
#include <QtCore/QUrl>
|
#include <QtCore/QUrl>
|
||||||
#include <QtGui/QDialog>
|
#include <QtGui/QDialog>
|
||||||
|
@ -16,34 +18,33 @@
|
||||||
#include <QtCore/QFile>
|
#include <QtCore/QFile>
|
||||||
#include <QtNetwork>
|
#include <QtNetwork>
|
||||||
|
|
||||||
#include "ui_ftp_selection.h"
|
namespace TranslationManager
|
||||||
|
{
|
||||||
|
|
||||||
using namespace std;
|
class CFtpSelection : public QDialog
|
||||||
|
{
|
||||||
namespace TranslationManager {
|
|
||||||
|
|
||||||
class CFtpSelection : public QDialog
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
private:
|
|
||||||
Ui::FtpSelectionDialog _ui;
|
public:
|
||||||
QFtp *conn;
|
CFtpSelection(QWidget *parent = 0);
|
||||||
QHash<QString, bool> isDirectory;
|
~CFtpSelection() {}
|
||||||
QString currentPath;
|
bool status;
|
||||||
private Q_SLOTS:
|
QFile *file;
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
void cdToParent();
|
void cdToParent();
|
||||||
void processItem(QTreeWidgetItem*,int);
|
void processItem(QTreeWidgetItem *,int);
|
||||||
void ConnectButtonClicked();
|
void ConnectButtonClicked();
|
||||||
void DoneButtonClicked();
|
void DoneButtonClicked();
|
||||||
void FtpCommandFinished(int, bool error);
|
void FtpCommandFinished(int, bool error);
|
||||||
void AddToList(const QUrlInfo &urlInfo);
|
void AddToList(const QUrlInfo &urlInfo);
|
||||||
public:
|
|
||||||
bool status;
|
private:
|
||||||
QFile *file;
|
Ui::FtpSelectionDialog _ui;
|
||||||
CFtpSelection(QWidget* parent = 0);
|
QFtp *conn;
|
||||||
~CFtpSelection() {}
|
QHash<QString, bool> isDirectory;
|
||||||
};
|
QString currentPath;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* FTP_SELECTION_H */
|
#endif /* FTP_SELECTION_H */
|
||||||
|
|
||||||
|
|
|
@ -1,28 +1,43 @@
|
||||||
|
// Translation Manager Plugin - OVQT Plugin <http://dev.ryzom.com/projects/nel/>
|
||||||
#include <QtGui/qlistwidget.h>
|
// 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/>.
|
||||||
|
|
||||||
#include "source_selection.h"
|
#include "source_selection.h"
|
||||||
|
|
||||||
|
#include <QtGui/QListWidget>
|
||||||
|
|
||||||
namespace TranslationManager
|
namespace TranslationManager
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
CSourceDialog::CSourceDialog(QWidget *parent): QDialog(parent)
|
CSourceDialog::CSourceDialog(QWidget *parent): QDialog(parent)
|
||||||
{
|
{
|
||||||
_ui.setupUi(this);
|
_ui.setupUi(this);
|
||||||
// Set signal and slot for "OK Button"
|
|
||||||
connect(_ui.ok_button, SIGNAL(clicked()), this, SLOT(OkButtonClicked()));
|
connect(_ui.ok_button, SIGNAL(clicked()), this, SLOT(OkButtonClicked()));
|
||||||
// Set signal and slot for "Cancel Button"
|
|
||||||
connect(_ui.cancel_button, SIGNAL(clicked()), this, SLOT(reject()));
|
connect(_ui.cancel_button, SIGNAL(clicked()), this, SLOT(reject()));
|
||||||
|
|
||||||
_ui.sourceSelectionListWidget->setSortingEnabled(false);
|
_ui.sourceSelectionListWidget->setSortingEnabled(false);
|
||||||
connect(_ui.sourceSelectionListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem *)),
|
connect(_ui.sourceSelectionListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem *)),
|
||||||
this, SLOT(itemDoubleClicked(QListWidgetItem *)));
|
this, SLOT(itemDoubleClicked(QListWidgetItem *)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Insert options in the source dialog. Options like: from FTP Server, from Local directory etc.
|
// Insert options in the source dialog. Options like: from FTP Server, from Local directory etc.
|
||||||
void CSourceDialog::setSourceOptions(map<QListWidgetItem*,int> options)
|
void CSourceDialog::setSourceOptions(std::map<QListWidgetItem *, int> &options)
|
||||||
{
|
{
|
||||||
map<QListWidgetItem*,int>::iterator it;
|
std::map<QListWidgetItem *,int>::iterator it;
|
||||||
|
|
||||||
for(it = options.begin(); it != options.end(); ++it)
|
for(it = options.begin(); it != options.end(); ++it)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,16 +1,30 @@
|
||||||
|
// Translation Manager Plugin - OVQT Plugin <http://dev.ryzom.com/projects/nel/>
|
||||||
|
// 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/>.
|
||||||
|
|
||||||
#ifndef SOURCE_SELECTION_H
|
#ifndef SOURCE_SELECTION_H
|
||||||
#define SOURCE_SELECTION_H
|
#define SOURCE_SELECTION_H
|
||||||
|
|
||||||
|
#include "ui_source_selection.h"
|
||||||
|
|
||||||
#include <QtCore/QObject>
|
#include <QtCore/QObject>
|
||||||
#include <QtGui/QDialog>
|
#include <QtGui/QDialog>
|
||||||
#include <QtCore/QString>
|
#include <QtCore/QString>
|
||||||
#include <QtGui/QListWidgetItem>
|
#include <QtGui/QListWidgetItem>
|
||||||
#include "ui_source_selection.h"
|
|
||||||
#include <map>
|
|
||||||
|
|
||||||
using namespace std;
|
#include <map>
|
||||||
|
|
||||||
namespace TranslationManager
|
namespace TranslationManager
|
||||||
{
|
{
|
||||||
|
@ -18,16 +32,19 @@ namespace TranslationManager
|
||||||
class CSourceDialog : public QDialog
|
class CSourceDialog : public QDialog
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
private:
|
|
||||||
Ui::SourceSelectionDialog _ui;
|
public:
|
||||||
|
CSourceDialog(QWidget *parent = 0);
|
||||||
|
~CSourceDialog() {}
|
||||||
|
void setSourceOptions(std::map<QListWidgetItem *, int> &options);
|
||||||
|
QListWidgetItem *selected_item;
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void OkButtonClicked();
|
void OkButtonClicked();
|
||||||
void itemDoubleClicked(QListWidgetItem *item);
|
void itemDoubleClicked(QListWidgetItem *item);
|
||||||
public:
|
|
||||||
CSourceDialog(QWidget *parent = 0);
|
private:
|
||||||
~CSourceDialog(){}
|
Ui::SourceSelectionDialog _ui;
|
||||||
void setSourceOptions(map<QListWidgetItem*, int> options);
|
|
||||||
QListWidgetItem *selected_item;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,29 +1,38 @@
|
||||||
/*
|
// Translation Manager Plugin - OVQT Plugin <http://dev.ryzom.com/projects/nel/>
|
||||||
* File: translation_manager_constants.h
|
// Copyright (C) 2011 Emanuel Costea <cemycc@gmail.com>
|
||||||
* Author: cemycc
|
//
|
||||||
*
|
// This program is free software: you can redistribute it and/or modify
|
||||||
* Created on July 5, 2011, 9:15 PM
|
// 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/>.
|
||||||
|
|
||||||
#ifndef TRANSLATION_MANAGER_CONSTANTS_H
|
#ifndef TRANSLATION_MANAGER_CONSTANTS_H
|
||||||
#define TRANSLATION_MANAGER_CONSTANTS_H
|
#define TRANSLATION_MANAGER_CONSTANTS_H
|
||||||
|
|
||||||
namespace TranslationManager
|
namespace TranslationManager
|
||||||
{
|
{
|
||||||
namespace Constants
|
namespace Constants
|
||||||
{
|
{
|
||||||
const int ED_SHEET = 1;
|
const int ED_SHEET = 1;
|
||||||
const int ED_PHRASE = 2;
|
const int ED_PHRASE = 2;
|
||||||
|
|
||||||
const char * const WK_BOTNAMES = "bot_names_wk.txt";
|
const char *const WK_BOTNAMES = "bot_names_wk.txt";
|
||||||
const char * const WK_ITEM = "item_words_wk.txt";
|
const char *const WK_ITEM = "item_words_wk.txt";
|
||||||
const char * const WK_CREATURE = "creature_words_wk.txt";
|
const char *const WK_CREATURE = "creature_words_wk.txt";
|
||||||
const char * const WK_SBRICK = "sbrick_words_wk.txt";
|
const char *const WK_SBRICK = "sbrick_words_wk.txt";
|
||||||
const char * const WK_SPHRASE = "sphrase_words_wk.txt";
|
const char *const WK_SPHRASE = "sphrase_words_wk.txt";
|
||||||
const char * const WK_PLACE = "place_words_wk.txt";
|
const char *const WK_PLACE = "place_words_wk.txt";
|
||||||
const char * const WK_CONTINENT = "place_words_wk.txt";
|
const char *const WK_CONTINENT = "place_words_wk.txt";
|
||||||
const char * const WK_STABLE = "place_words_wk.txt";
|
const char *const WK_STABLE = "place_words_wk.txt";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* TRANSLATION_MANAGER_CONSTANTS_H */
|
#endif /* TRANSLATION_MANAGER_CONSTANTS_H */
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
// Translation Manager Plugin - OVQT Plugin <http://dev.ryzom.com/projects/nel/>
|
// 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>
|
// Copyright (C) 2011 Emanuel Costea <cemycc@gmail.com>
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -25,22 +24,21 @@
|
||||||
#include <QtGui/QUndoStack>
|
#include <QtGui/QUndoStack>
|
||||||
#include <QtCore/QFileInfo>
|
#include <QtCore/QFileInfo>
|
||||||
|
|
||||||
namespace TranslationManager {
|
namespace TranslationManager
|
||||||
|
{
|
||||||
|
|
||||||
|
class CEditor : public QMdiSubWindow
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
class CEditor : public QMdiSubWindow {
|
|
||||||
Q_OBJECT
|
|
||||||
protected:
|
|
||||||
QUndoStack* current_stack;
|
|
||||||
QString current_file;
|
|
||||||
int editor_type;
|
|
||||||
public:
|
public:
|
||||||
CEditor(QMdiArea* parent) : QMdiSubWindow(parent) {}
|
CEditor(QMdiArea *parent) : QMdiSubWindow(parent) {}
|
||||||
CEditor() : QMdiSubWindow() {}
|
CEditor() : QMdiSubWindow() {}
|
||||||
virtual void open(QString filename) =0;
|
virtual void open(QString filename) =0;
|
||||||
virtual void save() =0;
|
virtual void save() =0;
|
||||||
virtual void saveAs(QString filename) =0;
|
virtual void saveAs(QString filename) =0;
|
||||||
virtual void activateWindow() =0;
|
virtual void activateWindow() =0;
|
||||||
public:
|
|
||||||
int eType()
|
int eType()
|
||||||
{
|
{
|
||||||
return editor_type;
|
return editor_type;
|
||||||
|
@ -49,7 +47,7 @@ public:
|
||||||
{
|
{
|
||||||
return current_file;
|
return current_file;
|
||||||
}
|
}
|
||||||
void setUndoStack(QUndoStack* stack)
|
void setUndoStack(QUndoStack *stack)
|
||||||
{
|
{
|
||||||
current_stack = stack;
|
current_stack = stack;
|
||||||
}
|
}
|
||||||
|
@ -62,10 +60,12 @@ public:
|
||||||
setWindowFilePath(current_file);
|
setWindowFilePath(current_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
QUndoStack *current_stack;
|
||||||
|
QString current_file;
|
||||||
|
int editor_type;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /* TRANSLATION_MANAGER_EDITOR_H */
|
#endif /* TRANSLATION_MANAGER_EDITOR_H */
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
// Translation Manager Plugin - OVQT Plugin <http://dev.ryzom.com/projects/nel/>
|
// Translation Manager Plugin - OVQT Plugin <http://dev.ryzom.com/projects/nel/>
|
||||||
// Copyright (C) 2010 Winch Gate Property Limited
|
// Copyright (C) 2010 Winch Gate Property Limited
|
||||||
// Copyright (C) 2011 Emanuel Costea <cemycc@gmail.com>
|
// Copyright (C) 2011 Emanuel Costea <cemycc@gmail.com>
|
||||||
|
@ -16,32 +15,31 @@
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
// 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/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
// Project system includes
|
// Plugin includes
|
||||||
|
#include "translation_manager_main_window.h"
|
||||||
|
#include "translation_manager_constants.h"
|
||||||
|
#include "ftp_selection.h"
|
||||||
|
|
||||||
|
// Core includes
|
||||||
#include "../core/icore.h"
|
#include "../core/icore.h"
|
||||||
#include "../core/core_constants.h"
|
#include "../core/core_constants.h"
|
||||||
#include "../core/menu_manager.h"
|
#include "../core/menu_manager.h"
|
||||||
#include "../../extension_system/iplugin_spec.h"
|
#include "../../extension_system/iplugin_spec.h"
|
||||||
|
|
||||||
// Qt includes
|
// Qt includes
|
||||||
#include <QtGui/QWidget>
|
#include <QtCore/QFileInfo>
|
||||||
#include <QtGui/QMessageBox>
|
#include <QtCore/QEvent>
|
||||||
#include <QtCore/QSettings>
|
#include <QtCore/QSettings>
|
||||||
#include <QtGui/QErrorMessage>
|
|
||||||
#include <QtCore/QSignalMapper>
|
#include <QtCore/QSignalMapper>
|
||||||
|
#include <QtCore/QResource>
|
||||||
|
#include <QtGui/QMessageBox>
|
||||||
|
#include <QtGui/QErrorMessage>
|
||||||
#include <QtGui/QTableWidget>
|
#include <QtGui/QTableWidget>
|
||||||
#include <QtGui/QTableWidgetItem>
|
#include <QtGui/QTableWidgetItem>
|
||||||
#include <QtGui/QMdiSubWindow>
|
#include <QtGui/QMdiSubWindow>
|
||||||
#include <QtGui/QFileDialog>
|
#include <QtGui/QFileDialog>
|
||||||
#include <QtCore/QResource>
|
|
||||||
#include <QtGui/QMenuBar>
|
#include <QtGui/QMenuBar>
|
||||||
#include <QtCore/QFileInfo>
|
|
||||||
#include <QtCore/QEvent>
|
|
||||||
#include <QtGui/QCloseEvent>
|
#include <QtGui/QCloseEvent>
|
||||||
// Plugin includes
|
|
||||||
#include "translation_manager_main_window.h"
|
|
||||||
#include "translation_manager_constants.h"
|
|
||||||
#include "ftp_selection.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace TranslationManager
|
namespace TranslationManager
|
||||||
{
|
{
|
||||||
|
@ -53,7 +51,7 @@ CMainWindow::CMainWindow(QWidget *parent)
|
||||||
|
|
||||||
_ui.mdiArea->closeAllSubWindows();
|
_ui.mdiArea->closeAllSubWindows();
|
||||||
windowMapper = new QSignalMapper(this);
|
windowMapper = new QSignalMapper(this);
|
||||||
connect(windowMapper, SIGNAL(mapped(QWidget*)), this, SLOT(setActiveSubWindow(QWidget*)));
|
connect(windowMapper, SIGNAL(mapped(QWidget *)), this, SLOT(setActiveSubWindow(QWidget *)));
|
||||||
|
|
||||||
initialize_settings["georges"] = false;
|
initialize_settings["georges"] = false;
|
||||||
initialize_settings["ligo"] = false;
|
initialize_settings["ligo"] = false;
|
||||||
|
@ -83,45 +81,51 @@ void CMainWindow::createToolbar()
|
||||||
QMenu *wordsExtractionMenu = new QMenu("&Words extraction...");
|
QMenu *wordsExtractionMenu = new QMenu("&Words extraction...");
|
||||||
wordsExtractionMenu->setIcon(QIcon(Core::Constants::ICON_SETTINGS));
|
wordsExtractionMenu->setIcon(QIcon(Core::Constants::ICON_SETTINGS));
|
||||||
_ui.toolBar->addAction(wordsExtractionMenu->menuAction());
|
_ui.toolBar->addAction(wordsExtractionMenu->menuAction());
|
||||||
|
|
||||||
// extract bot names
|
// extract bot names
|
||||||
QAction *extractBotNamesAct = wordsExtractionMenu->addAction("&Extract bot names...");
|
QAction *extractBotNamesAct = wordsExtractionMenu->addAction("&Extract bot names...");
|
||||||
extractBotNamesAct->setStatusTip(tr("Extract bot names from primitives."));
|
extractBotNamesAct->setStatusTip(tr("Extract bot names from primitives."));
|
||||||
connect(extractBotNamesAct, SIGNAL(triggered()), this, SLOT(extractBotNames()));
|
connect(extractBotNamesAct, SIGNAL(triggered()), this, SLOT(extractBotNames()));
|
||||||
|
|
||||||
// Words extraction
|
// Words extraction
|
||||||
// -----------------------------
|
|
||||||
// signal mapper for extraction words
|
|
||||||
QSignalMapper *wordsExtractionMapper = new QSignalMapper(this);
|
QSignalMapper *wordsExtractionMapper = new QSignalMapper(this);
|
||||||
connect(wordsExtractionMapper, SIGNAL(mapped(QString)), this, SLOT(extractWords(QString)));
|
connect(wordsExtractionMapper, SIGNAL(mapped(QString)), this, SLOT(extractWords(QString)));
|
||||||
// extract item words
|
// extract item words
|
||||||
|
|
||||||
QAction *extractItemWordsAct = wordsExtractionMenu->addAction("&Extract item words...");
|
QAction *extractItemWordsAct = wordsExtractionMenu->addAction("&Extract item words...");
|
||||||
extractItemWordsAct->setStatusTip(tr("Extract item words"));
|
extractItemWordsAct->setStatusTip(tr("Extract item words"));
|
||||||
connect(extractItemWordsAct, SIGNAL(triggered()), wordsExtractionMapper, SLOT(map()));
|
connect(extractItemWordsAct, SIGNAL(triggered()), wordsExtractionMapper, SLOT(map()));
|
||||||
wordsExtractionMapper->setMapping(extractItemWordsAct, QString(Constants::WK_ITEM));
|
wordsExtractionMapper->setMapping(extractItemWordsAct, QString(Constants::WK_ITEM));
|
||||||
|
|
||||||
// extract creature words
|
// extract creature words
|
||||||
QAction *extractCreatureWordsAct = wordsExtractionMenu->addAction("&Extract creature words...");
|
QAction *extractCreatureWordsAct = wordsExtractionMenu->addAction(tr("&Extract creature words..."));
|
||||||
extractCreatureWordsAct->setStatusTip(tr("Extract creature words"));
|
extractCreatureWordsAct->setStatusTip(tr("Extract creature words"));
|
||||||
connect(extractCreatureWordsAct, SIGNAL(triggered()), wordsExtractionMapper, SLOT(map()));
|
connect(extractCreatureWordsAct, SIGNAL(triggered()), wordsExtractionMapper, SLOT(map()));
|
||||||
wordsExtractionMapper->setMapping(extractCreatureWordsAct, QString(Constants::WK_CREATURE));
|
wordsExtractionMapper->setMapping(extractCreatureWordsAct, QString(Constants::WK_CREATURE));
|
||||||
|
|
||||||
// extract sbrick words
|
// extract sbrick words
|
||||||
QAction *extractSbrickWordsAct = wordsExtractionMenu->addAction("&Extract sbrick words...");
|
QAction *extractSbrickWordsAct = wordsExtractionMenu->addAction("&Extract sbrick words...");
|
||||||
extractSbrickWordsAct->setStatusTip(tr("Extract sbrick words"));
|
extractSbrickWordsAct->setStatusTip(tr("Extract sbrick words"));
|
||||||
connect(extractSbrickWordsAct, SIGNAL(triggered()), wordsExtractionMapper, SLOT(map()));
|
connect(extractSbrickWordsAct, SIGNAL(triggered()), wordsExtractionMapper, SLOT(map()));
|
||||||
wordsExtractionMapper->setMapping(extractSbrickWordsAct, QString(Constants::WK_SBRICK));
|
wordsExtractionMapper->setMapping(extractSbrickWordsAct, QString(Constants::WK_SBRICK));
|
||||||
|
|
||||||
// extract sphrase words
|
// extract sphrase words
|
||||||
QAction *extractSphraseWordsAct = wordsExtractionMenu->addAction("&Extract sphrase words...");
|
QAction *extractSphraseWordsAct = wordsExtractionMenu->addAction("&Extract sphrase words...");
|
||||||
extractSphraseWordsAct->setStatusTip(tr("Extract sphrase words"));
|
extractSphraseWordsAct->setStatusTip(tr("Extract sphrase words"));
|
||||||
connect(extractSphraseWordsAct, SIGNAL(triggered()), wordsExtractionMapper, SLOT(map()));
|
connect(extractSphraseWordsAct, SIGNAL(triggered()), wordsExtractionMapper, SLOT(map()));
|
||||||
wordsExtractionMapper->setMapping(extractSphraseWordsAct, QString(Constants::WK_SPHRASE));
|
wordsExtractionMapper->setMapping(extractSphraseWordsAct, QString(Constants::WK_SPHRASE));
|
||||||
|
|
||||||
// extract place and region names
|
// extract place and region names
|
||||||
QAction *extractPlaceNamesAct = wordsExtractionMenu->addAction("&Extract place names...");
|
QAction *extractPlaceNamesAct = wordsExtractionMenu->addAction("&Extract place names...");
|
||||||
extractPlaceNamesAct->setStatusTip(tr("Extract place names from primitives"));
|
extractPlaceNamesAct->setStatusTip(tr("Extract place names from primitives"));
|
||||||
connect(extractPlaceNamesAct, SIGNAL(triggered()), wordsExtractionMapper, SLOT(map()));
|
connect(extractPlaceNamesAct, SIGNAL(triggered()), wordsExtractionMapper, SLOT(map()));
|
||||||
wordsExtractionMapper->setMapping(extractPlaceNamesAct, QString(Constants::WK_PLACE));
|
wordsExtractionMapper->setMapping(extractPlaceNamesAct, QString(Constants::WK_PLACE));
|
||||||
|
|
||||||
// Merge options
|
// Merge options
|
||||||
// -----------------------------
|
|
||||||
QAction *mergeSingleFileAct = wordsExtractionMenu->addAction("&Merge worksheet file...");
|
QAction *mergeSingleFileAct = wordsExtractionMenu->addAction("&Merge worksheet file...");
|
||||||
mergeSingleFileAct->setStatusTip(tr("Merge worksheet file from local or remote directory"));
|
mergeSingleFileAct->setStatusTip(tr("Merge worksheet file from local or remote directory"));
|
||||||
connect(mergeSingleFileAct, SIGNAL(triggered()), this, SLOT(mergeSingleFile()));
|
connect(mergeSingleFileAct, SIGNAL(triggered()), this, SLOT(mergeSingleFile()));
|
||||||
|
|
||||||
// Windows menu
|
// Windows menu
|
||||||
Core::ICore *core = Core::ICore::instance();
|
Core::ICore *core = Core::ICore::instance();
|
||||||
Core::MenuManager *menuManager = core->menuManager();
|
Core::MenuManager *menuManager = core->menuManager();
|
||||||
|
@ -130,12 +134,11 @@ void CMainWindow::createToolbar()
|
||||||
connect(windowMenu, SIGNAL(aboutToShow()), this, SLOT(updateWindowsList()));
|
connect(windowMenu, SIGNAL(aboutToShow()), this, SLOT(updateWindowsList()));
|
||||||
|
|
||||||
// Undo, Redo actions
|
// Undo, Redo actions
|
||||||
// -----------------------------
|
QAction *undoAction = menuManager->action(Core::Constants::UNDO);
|
||||||
QAction* undoAction = menuManager->action(Core::Constants::UNDO);
|
|
||||||
if (undoAction != 0)
|
if (undoAction != 0)
|
||||||
_ui.toolBar->addAction(undoAction);
|
_ui.toolBar->addAction(undoAction);
|
||||||
|
|
||||||
QAction* redoAction = menuManager->action(Core::Constants::REDO);
|
QAction *redoAction = menuManager->action(Core::Constants::REDO);
|
||||||
if (redoAction != 0)
|
if (redoAction != 0)
|
||||||
_ui.toolBar->addAction(redoAction);
|
_ui.toolBar->addAction(redoAction);
|
||||||
}
|
}
|
||||||
|
@ -152,19 +155,18 @@ void CMainWindow::updateToolbar(QMdiSubWindow *window)
|
||||||
QAction *deleteRowAct = new QAction(tr("Delete row"), this);
|
QAction *deleteRowAct = new QAction(tr("Delete row"), this);
|
||||||
connect(deleteRowAct, SIGNAL(triggered()), window, SLOT(deleteRow()));
|
connect(deleteRowAct, SIGNAL(triggered()), window, SLOT(deleteRow()));
|
||||||
windowMenu->addAction(deleteRowAct);
|
windowMenu->addAction(deleteRowAct);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the active subwindow
|
// Set the active subwindow
|
||||||
void CMainWindow::setActiveSubWindow(QWidget* window)
|
void CMainWindow::setActiveSubWindow(QWidget *window)
|
||||||
{
|
{
|
||||||
if (!window)
|
if (!window)
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
QMdiSubWindow *cwindow = qobject_cast<QMdiSubWindow *>(window);
|
QMdiSubWindow *mdiWindow = qobject_cast<QMdiSubWindow *>(window);
|
||||||
_ui.mdiArea->setActiveSubWindow(cwindow);
|
if (mdiWindow != 0)
|
||||||
|
_ui.mdiArea->setActiveSubWindow(mdiWindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Functions for updating the windows list
|
// Functions for updating the windows list
|
||||||
|
@ -174,7 +176,7 @@ void CMainWindow::updateWindowsList()
|
||||||
{
|
{
|
||||||
windowMenu->clear();
|
windowMenu->clear();
|
||||||
QMdiSubWindow *current_window = _ui.mdiArea->activeSubWindow();
|
QMdiSubWindow *current_window = _ui.mdiArea->activeSubWindow();
|
||||||
QList<QMdiSubWindow*> subWindows = _ui.mdiArea->subWindowList();
|
QList<QMdiSubWindow *> subWindows = _ui.mdiArea->subWindowList();
|
||||||
|
|
||||||
updateToolbar(current_window);
|
updateToolbar(current_window);
|
||||||
|
|
||||||
|
@ -182,9 +184,12 @@ void CMainWindow::updateWindowsList()
|
||||||
{
|
{
|
||||||
QString window_file = QFileInfo(subWindows.at(i)->windowFilePath()).fileName();
|
QString window_file = QFileInfo(subWindows.at(i)->windowFilePath()).fileName();
|
||||||
QString action_text;
|
QString action_text;
|
||||||
if (i < 9) {
|
if (i < 9)
|
||||||
|
{
|
||||||
action_text = QString("&%1 %2").arg(i + 1).arg(window_file);
|
action_text = QString("&%1 %2").arg(i + 1).arg(window_file);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
action_text = QString("%1 %2").arg(i + 1).arg(window_file);
|
action_text = QString("%1 %2").arg(i + 1).arg(window_file);
|
||||||
}
|
}
|
||||||
QAction *action = new QAction(action_text, this);
|
QAction *action = new QAction(action_text, this);
|
||||||
|
@ -194,7 +199,9 @@ void CMainWindow::updateWindowsList()
|
||||||
windowMenu->addAction(action);
|
windowMenu->addAction(action);
|
||||||
windowMapper->setMapping(action, subWindows.at(i));
|
windowMapper->setMapping(action, subWindows.at(i));
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
windowMenu->clear();
|
windowMenu->clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -206,7 +213,7 @@ void CMainWindow::open()
|
||||||
settings->beginGroup("translationmanager");
|
settings->beginGroup("translationmanager");
|
||||||
QString lastOpenLocation = settings->value("lastOpenLocation").toString();
|
QString lastOpenLocation = settings->value("lastOpenLocation").toString();
|
||||||
QString file_name = QFileDialog::getOpenFileName(this, tr("Open translation file"), lastOpenLocation, tr("Translation files (*txt)"));
|
QString file_name = QFileDialog::getOpenFileName(this, tr("Open translation file"), lastOpenLocation, tr("Translation files (*txt)"));
|
||||||
QFileInfo* file_info = new QFileInfo(file_name);
|
QFileInfo *file_info = new QFileInfo(file_name);
|
||||||
settings->setValue("lastOpenLocation", file_info->absolutePath());
|
settings->setValue("lastOpenLocation", file_info->absolutePath());
|
||||||
settings->endGroup();
|
settings->endGroup();
|
||||||
|
|
||||||
|
@ -218,9 +225,8 @@ void CMainWindow::open()
|
||||||
editor->activateWindow();
|
editor->activateWindow();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#ifndef QT_NO_CURSOR
|
|
||||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||||
#endif
|
|
||||||
// sheet editor
|
// sheet editor
|
||||||
if(isWorksheetEditor(file_name))
|
if(isWorksheetEditor(file_name))
|
||||||
{
|
{
|
||||||
|
@ -237,17 +243,14 @@ void CMainWindow::open()
|
||||||
new_window->open(file_name);
|
new_window->open(file_name);
|
||||||
new_window->activateWindow();
|
new_window->activateWindow();
|
||||||
}
|
}
|
||||||
#ifndef QT_NO_CURSOR
|
|
||||||
QApplication::restoreOverrideCursor();
|
QApplication::restoreOverrideCursor();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open a work file. You can set the directory for work file in the settings dialog
|
// Open a work file. You can set the directory for work file in the settings dialog
|
||||||
void CMainWindow::openWorkFile(QString file)
|
void CMainWindow::openWorkFile(QString file)
|
||||||
{
|
{
|
||||||
QFileInfo* file_path = new QFileInfo(QString("%1/%2").arg(work_path).arg(file));
|
QFileInfo *file_path = new QFileInfo(QString("%1/%2").arg(work_path).arg(file));
|
||||||
if(file_path->exists())
|
if(file_path->exists())
|
||||||
{
|
{
|
||||||
if(isWorksheetEditor(file_path->filePath()))
|
if(isWorksheetEditor(file_path->filePath()))
|
||||||
|
@ -256,31 +259,26 @@ void CMainWindow::openWorkFile(QString file)
|
||||||
new_window->open(file_path->filePath());
|
new_window->open(file_path->filePath());
|
||||||
new_window->activateWindow();
|
new_window->activateWindow();
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
QErrorMessage error;
|
QErrorMessage error;
|
||||||
error.showMessage(QString("The %1 file don't exists.").arg(file_path->fileName()));
|
error.showMessage(tr("The %1 file don't exists.").arg(file_path->fileName()));
|
||||||
error.exec();
|
error.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save signal
|
|
||||||
void CMainWindow::save()
|
void CMainWindow::save()
|
||||||
{
|
{
|
||||||
if(_ui.mdiArea->subWindowList().size() > 0)
|
if(_ui.mdiArea->subWindowList().size() > 0)
|
||||||
{
|
{
|
||||||
CEditor* current_window = qobject_cast<CEditor*>(_ui.mdiArea->currentSubWindow());
|
CEditor *current_window = qobject_cast<CEditor *>(_ui.mdiArea->currentSubWindow());
|
||||||
#ifndef QT_NO_CURSOR
|
|
||||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||||
#endif
|
|
||||||
current_window->save();
|
current_window->save();
|
||||||
#ifndef QT_NO_CURSOR
|
|
||||||
QApplication::restoreOverrideCursor();
|
QApplication::restoreOverrideCursor();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save as signal
|
|
||||||
void CMainWindow::saveAs()
|
void CMainWindow::saveAs()
|
||||||
{
|
{
|
||||||
QString file_name;
|
QString file_name;
|
||||||
|
@ -288,17 +286,12 @@ void CMainWindow::saveAs()
|
||||||
{
|
{
|
||||||
file_name = QFileDialog::getSaveFileName(this);
|
file_name = QFileDialog::getSaveFileName(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!file_name.isEmpty())
|
if (!file_name.isEmpty())
|
||||||
{
|
{
|
||||||
CEditor* current_window = qobject_cast<CEditor*>(_ui.mdiArea->currentSubWindow());
|
CEditor *current_window = qobject_cast<CEditor *>(_ui.mdiArea->currentSubWindow());
|
||||||
#ifndef QT_NO_CURSOR
|
|
||||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||||
#endif
|
|
||||||
current_window->saveAs(file_name);
|
current_window->saveAs(file_name);
|
||||||
#ifndef QT_NO_CURSOR
|
|
||||||
QApplication::restoreOverrideCursor();
|
QApplication::restoreOverrideCursor();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -307,8 +300,8 @@ void CMainWindow::initializeSettings(bool georges = false)
|
||||||
{
|
{
|
||||||
if(georges == true && initialize_settings["georges"] == false)
|
if(georges == true && initialize_settings["georges"] == false)
|
||||||
{
|
{
|
||||||
CPath::addSearchPath(level_design_path.toStdString() + "/DFN", true, false);
|
NLMISC::CPath::addSearchPath(level_design_path.toStdString() + "/DFN", true, false);
|
||||||
CPath::addSearchPath(level_design_path.toStdString() + "/Game_elem/Creature", true, false);
|
NLMISC::CPath::addSearchPath(level_design_path.toStdString() + "/Game_elem/Creature", true, false);
|
||||||
initialize_settings["georges"] = true;
|
initialize_settings["georges"] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,7 +322,6 @@ void CMainWindow::initializeSettings(bool georges = false)
|
||||||
nlerror("Can't found path to world_editor_classes.xml");
|
nlerror("Can't found path to world_editor_classes.xml");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extracting words
|
// Extracting words
|
||||||
|
@ -337,19 +329,22 @@ void CMainWindow::extractWords(QString typeq)
|
||||||
{
|
{
|
||||||
if(verifySettings() == true)
|
if(verifySettings() == true)
|
||||||
{
|
{
|
||||||
CEditorWorksheet* editor_window = getEditorByWorksheetType(typeq);
|
CEditorWorksheet *editor_window = getEditorByWorksheetType(typeq);
|
||||||
if(editor_window != NULL)
|
if(editor_window != NULL)
|
||||||
{
|
{
|
||||||
editor_window->activateWindow();
|
editor_window->activateWindow();
|
||||||
QString file_path = editor_window->windowFilePath();
|
QString file_path = editor_window->windowFilePath();
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
openWorkFile(typeq);
|
openWorkFile(typeq);
|
||||||
editor_window = getEditorByWorksheetType(typeq);
|
editor_window = getEditorByWorksheetType(typeq);
|
||||||
if(editor_window != NULL)
|
if(editor_window != NULL)
|
||||||
{
|
{
|
||||||
editor_window->activateWindow();
|
editor_window->activateWindow();
|
||||||
QString file_path = editor_window->windowFilePath();
|
QString file_path = editor_window->windowFilePath();
|
||||||
} else return;
|
}
|
||||||
|
else return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString column_name;
|
QString column_name;
|
||||||
|
@ -358,48 +353,54 @@ void CMainWindow::extractWords(QString typeq)
|
||||||
// Primitives extraction
|
// Primitives extraction
|
||||||
CRegionPrimWordListBuilder builderP;
|
CRegionPrimWordListBuilder builderP;
|
||||||
bool isSheet = false;
|
bool isSheet = false;
|
||||||
if(typeq.toAscii() == Constants::WK_ITEM) {
|
if(typeq.toAscii() == Constants::WK_ITEM)
|
||||||
|
{
|
||||||
column_name = "item ID";
|
column_name = "item ID";
|
||||||
builderS.SheetExt = "sitem";
|
builderS.SheetExt = "sitem";
|
||||||
builderS.SheetPath = level_design_path.append("/game_element/sitem").toStdString();
|
builderS.SheetPath = level_design_path.append("/game_element/sitem").toStdString();
|
||||||
isSheet = true;
|
isSheet = true;
|
||||||
} else if(typeq.toAscii() == Constants::WK_CREATURE) {
|
}
|
||||||
|
else if(typeq.toAscii() == Constants::WK_CREATURE)
|
||||||
|
{
|
||||||
column_name = "creature ID";
|
column_name = "creature ID";
|
||||||
builderS.SheetExt = "creature";
|
builderS.SheetExt = "creature";
|
||||||
builderS.SheetPath = level_design_path.append("/Game_elem/Creature/fauna").toStdString();
|
builderS.SheetPath = level_design_path.append("/Game_elem/Creature/fauna").toStdString();
|
||||||
isSheet = true;
|
isSheet = true;
|
||||||
} else if(typeq.toAscii() == Constants::WK_SBRICK) {
|
}
|
||||||
|
else if(typeq.toAscii() == Constants::WK_SBRICK)
|
||||||
|
{
|
||||||
column_name = "sbrick ID";
|
column_name = "sbrick ID";
|
||||||
builderS.SheetExt = "sbrick";
|
builderS.SheetExt = "sbrick";
|
||||||
builderS.SheetPath = level_design_path.append("/game_element/sbrick").toStdString();
|
builderS.SheetPath = level_design_path.append("/game_element/sbrick").toStdString();
|
||||||
isSheet = true;
|
isSheet = true;
|
||||||
} else if(typeq.toAscii() == Constants::WK_SPHRASE) {
|
}
|
||||||
|
else if(typeq.toAscii() == Constants::WK_SPHRASE)
|
||||||
|
{
|
||||||
column_name = "sphrase ID";
|
column_name = "sphrase ID";
|
||||||
builderS.SheetExt = "sphrase";
|
builderS.SheetExt = "sphrase";
|
||||||
builderS.SheetPath = level_design_path.append("/game_element/sphrase").toStdString();
|
builderS.SheetPath = level_design_path.append("/game_element/sphrase").toStdString();
|
||||||
isSheet = true;
|
isSheet = true;
|
||||||
} else if(typeq.toAscii() == Constants::WK_PLACE) {
|
}
|
||||||
|
else if(typeq.toAscii() == Constants::WK_PLACE)
|
||||||
|
{
|
||||||
column_name = "placeId";
|
column_name = "placeId";
|
||||||
builderP.PrimPath = primitives_path.toStdString();
|
builderP.PrimPath = primitives_path.toStdString();
|
||||||
builderP.PrimFilter.push_back("region_*.primitive");
|
builderP.PrimFilter.push_back("region_*.primitive");
|
||||||
builderP.PrimFilter.push_back("indoors_*.primitive");
|
builderP.PrimFilter.push_back("indoors_*.primitive");
|
||||||
isSheet = false;
|
isSheet = false;
|
||||||
}
|
}
|
||||||
#ifndef QT_NO_CURSOR
|
|
||||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||||
#endif
|
|
||||||
if(isSheet)
|
if(isSheet)
|
||||||
{
|
{
|
||||||
editor_window->extractWords(editor_window->windowFilePath(), column_name, builderS);
|
editor_window->extractWords(editor_window->windowFilePath(), column_name, builderS);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
initializeSettings(false);
|
initializeSettings(false);
|
||||||
editor_window->extractWords(editor_window->windowFilePath(), column_name, builderP);
|
editor_window->extractWords(editor_window->windowFilePath(), column_name, builderP);
|
||||||
}
|
}
|
||||||
#ifndef QT_NO_CURSOR
|
|
||||||
QApplication::restoreOverrideCursor();
|
QApplication::restoreOverrideCursor();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract bot names from primitives
|
// Extract bot names from primitives
|
||||||
|
@ -407,44 +408,44 @@ void CMainWindow::extractBotNames()
|
||||||
{
|
{
|
||||||
if(verifySettings() == true)
|
if(verifySettings() == true)
|
||||||
{
|
{
|
||||||
CEditorWorksheet* editor_window = getEditorByWorksheetType(NULL);
|
CEditorWorksheet *editor_window = getEditorByWorksheetType(NULL);
|
||||||
if(editor_window != NULL)
|
if(editor_window != NULL)
|
||||||
{
|
{
|
||||||
editor_window->activateWindow();
|
editor_window->activateWindow();
|
||||||
QString file_path = editor_window->windowFilePath();
|
QString file_path = editor_window->windowFilePath();
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
openWorkFile(Constants::WK_BOTNAMES);
|
openWorkFile(Constants::WK_BOTNAMES);
|
||||||
editor_window = getEditorByWorksheetType(NULL);
|
editor_window = getEditorByWorksheetType(NULL);
|
||||||
if(editor_window != NULL)
|
if(editor_window != NULL)
|
||||||
{
|
{
|
||||||
editor_window->activateWindow();
|
editor_window->activateWindow();
|
||||||
QString file_path = editor_window->windowFilePath();
|
QString file_path = editor_window->windowFilePath();
|
||||||
} else return;
|
|
||||||
}
|
}
|
||||||
#ifndef QT_NO_CURSOR
|
else return;
|
||||||
|
}
|
||||||
|
|
||||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||||
#endif
|
|
||||||
initializeSettings(true);
|
initializeSettings(true);
|
||||||
editor_window->extractBotNames(convertQStringList(filters), level_design_path.toStdString(), ligoConfig);
|
editor_window->extractBotNames(convertQStringList(filters), level_design_path.toStdString(), ligoConfig);
|
||||||
#ifndef QT_NO_CURSOR
|
|
||||||
QApplication::restoreOverrideCursor();
|
QApplication::restoreOverrideCursor();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Merge the content for 2 worksheet files
|
// Merge the content for 2 worksheet files
|
||||||
void CMainWindow::mergeSingleFile()
|
void CMainWindow::mergeSingleFile()
|
||||||
{
|
{
|
||||||
CEditor* editor_window = qobject_cast<CEditor*>(_ui.mdiArea->currentSubWindow());
|
CEditor *editor_window = qobject_cast<CEditor *>(_ui.mdiArea->currentSubWindow());
|
||||||
CSourceDialog *dialog = new CSourceDialog(this);
|
CSourceDialog *dialog = new CSourceDialog(this);
|
||||||
CFtpSelection* ftp_dialog;
|
CFtpSelection *ftp_dialog;
|
||||||
map<QListWidgetItem*, int> methods;
|
map<QListWidgetItem *, int> methods;
|
||||||
QString file_name;
|
QString file_name;
|
||||||
|
|
||||||
if (_ui.mdiArea->subWindowList().size() == 0)
|
if (_ui.mdiArea->subWindowList().size() == 0)
|
||||||
{
|
{
|
||||||
QErrorMessage error;
|
QErrorMessage error;
|
||||||
error.showMessage(QString("Open a work file in editor for merge operation."));
|
error.showMessage(tr("Open a work file in editor for merge operation."));
|
||||||
error.exec();
|
error.exec();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -452,16 +453,16 @@ void CMainWindow::mergeSingleFile()
|
||||||
if(editor_window->eType() != Constants::ED_SHEET) // Sheet Editor
|
if(editor_window->eType() != Constants::ED_SHEET) // Sheet Editor
|
||||||
{
|
{
|
||||||
QErrorMessage error;
|
QErrorMessage error;
|
||||||
error.showMessage(QString("Please open or activate the window with a sheet file."));
|
error.showMessage(tr("Please open or activate the window with a sheet file."));
|
||||||
error.exec();
|
error.exec();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// create items
|
// create items
|
||||||
QListWidgetItem* local_item = new QListWidgetItem();
|
QListWidgetItem *local_item = new QListWidgetItem();
|
||||||
local_item->setText("Local directory");
|
local_item->setText("Local directory");
|
||||||
methods[local_item] = 0;
|
methods[local_item] = 0;
|
||||||
QListWidgetItem* ftp_item = new QListWidgetItem();
|
QListWidgetItem *ftp_item = new QListWidgetItem();
|
||||||
ftp_item->setText("From a FTP server");
|
ftp_item->setText("From a FTP server");
|
||||||
methods[ftp_item] = 1;
|
methods[ftp_item] = 1;
|
||||||
|
|
||||||
|
@ -475,7 +476,7 @@ void CMainWindow::mergeSingleFile()
|
||||||
}
|
}
|
||||||
else if(dialog->selected_item == ftp_item) // Ftp directory
|
else if(dialog->selected_item == ftp_item) // Ftp directory
|
||||||
{
|
{
|
||||||
CFtpSelection* ftp_dialog = new CFtpSelection(this);
|
CFtpSelection *ftp_dialog = new CFtpSelection(this);
|
||||||
ftp_dialog->show();
|
ftp_dialog->show();
|
||||||
|
|
||||||
if(ftp_dialog->exec() && ftp_dialog->status == true)
|
if(ftp_dialog->exec() && ftp_dialog->status == true)
|
||||||
|
@ -491,26 +492,30 @@ void CMainWindow::mergeSingleFile()
|
||||||
return;
|
return;
|
||||||
|
|
||||||
editor_window->activateWindow();
|
editor_window->activateWindow();
|
||||||
CEditorWorksheet* current_window = qobject_cast<CEditorWorksheet*>(editor_window);
|
CEditorWorksheet *current_window = qobject_cast<CEditorWorksheet *>(editor_window);
|
||||||
if(current_window->windowFilePath() == file_name)
|
if(current_window->windowFilePath() == file_name)
|
||||||
return;
|
return;
|
||||||
if(current_window->compareWorksheetFile(file_name))
|
if(current_window->compareWorksheetFile(file_name))
|
||||||
{
|
{
|
||||||
current_window->mergeWorksheetFile(file_name);
|
current_window->mergeWorksheetFile(file_name);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
QErrorMessage error;
|
QErrorMessage error;
|
||||||
error.showMessage(tr("The file: %1 has different columns from the current file in editor.").arg(file_name));
|
error.showMessage(tr("The file: %1 has different columns from the current file in editor.").arg(file_name));
|
||||||
error.exec();
|
error.exec();
|
||||||
}
|
}
|
||||||
if(dialog->selected_item == ftp_item)
|
if(dialog->selected_item == ftp_item)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
// TODO: uninit ftp_dialog?????
|
||||||
if(!ftp_dialog->file->remove())
|
if(!ftp_dialog->file->remove())
|
||||||
{
|
{
|
||||||
QErrorMessage error;
|
QErrorMessage error;
|
||||||
error.showMessage(tr("Please remove the file from ftp server manually. The file is located on the same directory with OVQT application."));
|
error.showMessage(tr("Please remove the file from ftp server manually. The file is located on the same directory with OVQT application."));
|
||||||
error.exec();
|
error.exec();
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -544,9 +549,7 @@ bool CMainWindow::verifySettings()
|
||||||
error_settings.exec();
|
error_settings.exec();
|
||||||
count_errors = true;
|
count_errors = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return !count_errors;
|
return !count_errors;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CCoreListener::closeMainWindow() const
|
bool CCoreListener::closeMainWindow() const
|
||||||
|
@ -554,12 +557,13 @@ bool CCoreListener::closeMainWindow() const
|
||||||
bool okToClose = true;
|
bool okToClose = true;
|
||||||
Q_FOREACH(QMdiSubWindow *subWindow, m_MainWindow->_ui.mdiArea->subWindowList())
|
Q_FOREACH(QMdiSubWindow *subWindow, m_MainWindow->_ui.mdiArea->subWindowList())
|
||||||
{
|
{
|
||||||
CEditor *currentEditor = qobject_cast<CEditor*>(subWindow);
|
CEditor *currentEditor = qobject_cast<CEditor *>(subWindow);
|
||||||
if(subWindow->isWindowModified())
|
if(subWindow->isWindowModified())
|
||||||
{
|
{
|
||||||
QMessageBox msgBox;
|
QMessageBox msgBox;
|
||||||
|
msgBox.setIcon(QMessageBox::Question);
|
||||||
msgBox.setText(tr("The document has been modified ( %1 ).").arg(currentEditor->windowFilePath()));
|
msgBox.setText(tr("The document has been modified ( %1 ).").arg(currentEditor->windowFilePath()));
|
||||||
msgBox.setInformativeText("Do you want to save your changes?");
|
msgBox.setInformativeText(tr("Do you want to save your changes?"));
|
||||||
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
|
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
|
||||||
msgBox.setDefaultButton(QMessageBox::Save);
|
msgBox.setDefaultButton(QMessageBox::Save);
|
||||||
int ret = msgBox.exec();
|
int ret = msgBox.exec();
|
||||||
|
@ -594,16 +598,19 @@ CEditorWorksheet *CMainWindow::getEditorByWorksheetType(const QString &type)
|
||||||
{
|
{
|
||||||
Q_FOREACH(QMdiSubWindow *subWindow, _ui.mdiArea->subWindowList())
|
Q_FOREACH(QMdiSubWindow *subWindow, _ui.mdiArea->subWindowList())
|
||||||
{
|
{
|
||||||
CEditor *currentEditor = qobject_cast<CEditor*>(subWindow);
|
CEditor *currentEditor = qobject_cast<CEditor *>(subWindow);
|
||||||
if(currentEditor->eType() == Constants::ED_SHEET)
|
if(currentEditor->eType() == Constants::ED_SHEET)
|
||||||
{
|
{
|
||||||
CEditorWorksheet *editor = qobject_cast<CEditorWorksheet *>(currentEditor);
|
CEditorWorksheet *editor = qobject_cast<CEditorWorksheet *>(currentEditor);
|
||||||
if(type != NULL) {
|
if(type != NULL)
|
||||||
|
{
|
||||||
if(editor->isSheetTable(type))
|
if(editor->isSheetTable(type))
|
||||||
{
|
{
|
||||||
return editor;
|
return editor;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if(editor->isBotNamesTable())
|
if(editor->isBotNamesTable())
|
||||||
{
|
{
|
||||||
return editor;
|
return editor;
|
||||||
|
@ -614,8 +621,7 @@ CEditorWorksheet *CMainWindow::getEditorByWorksheetType(const QString &type)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::list<std::string> CMainWindow::convertQStringList(QStringList listq)
|
||||||
list<string> CMainWindow::convertQStringList(QStringList listq)
|
|
||||||
{
|
{
|
||||||
std::list<std::string> stdlist;
|
std::list<std::string> stdlist;
|
||||||
|
|
||||||
|
@ -623,7 +629,6 @@ list<string> CMainWindow::convertQStringList(QStringList listq)
|
||||||
{
|
{
|
||||||
stdlist.push_back(text.toStdString());
|
stdlist.push_back(text.toStdString());
|
||||||
}
|
}
|
||||||
|
|
||||||
return stdlist;
|
return stdlist;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -635,19 +640,13 @@ bool CMainWindow::isWorksheetEditor(QString filename)
|
||||||
if(wk_file.ColCount > 1)
|
if(wk_file.ColCount > 1)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CMainWindow::isPhraseEditor(QString filename)
|
bool CMainWindow::isPhraseEditor(QString filename)
|
||||||
{
|
{
|
||||||
vector<STRING_MANAGER::TPhrase> phrases;
|
vector<STRING_MANAGER::TPhrase> phrases;
|
||||||
if(readPhraseFile(filename.toStdString(), phrases, false))
|
return readPhraseFile(filename.toStdString(), phrases, false);
|
||||||
{
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} /* namespace TranslationManager */
|
} /* namespace TranslationManager */
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
// Translation Manager Plugin - OVQT Plugin <http://dev.ryzom.com/projects/nel/>
|
// 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>
|
// Copyright (C) 2011 Emanuel Costea <cemycc@gmail.com>
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -15,20 +14,19 @@
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
// 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/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
#ifndef MAIN_WINDOW_H
|
#ifndef MAIN_WINDOW_H
|
||||||
#define MAIN_WINDOW_H
|
#define MAIN_WINDOW_H
|
||||||
|
|
||||||
|
// Project includes
|
||||||
|
#include "ui_translation_manager_main_window.h"
|
||||||
|
#include "translation_manager_editor.h"
|
||||||
|
#include "source_selection.h"
|
||||||
|
#include "editor_worksheet.h"
|
||||||
|
#include "editor_phrase.h"
|
||||||
|
|
||||||
// Project system includes
|
// Project system includes
|
||||||
#include "../core/icore_listener.h"
|
#include "../core/icore_listener.h"
|
||||||
|
|
||||||
// Nel includes
|
|
||||||
#include "nel/misc/types_nl.h"
|
|
||||||
#include "nel/misc/sheet_id.h"
|
|
||||||
#include "nel/misc/path.h"
|
|
||||||
#include "nel/misc/diff_tool.h"
|
|
||||||
#include "nel/ligo/ligo_config.h"
|
|
||||||
|
|
||||||
// Qt includes
|
// Qt includes
|
||||||
#include <QtCore/QObject>
|
#include <QtCore/QObject>
|
||||||
#include <QtGui/QUndoStack>
|
#include <QtGui/QUndoStack>
|
||||||
|
@ -39,16 +37,15 @@
|
||||||
#include <QtCore/QSignalMapper>
|
#include <QtCore/QSignalMapper>
|
||||||
#include <QtGui/QDialog>
|
#include <QtGui/QDialog>
|
||||||
|
|
||||||
// Plugin includes
|
// STL includes
|
||||||
#include "translation_manager_editor.h"
|
|
||||||
#include "source_selection.h"
|
|
||||||
#include "ui_translation_manager_main_window.h"
|
|
||||||
#include <set>
|
#include <set>
|
||||||
#include "editor_worksheet.h"
|
|
||||||
#include "editor_phrase.h"
|
|
||||||
|
|
||||||
class QWidget;
|
|
||||||
|
|
||||||
|
// Nel includes
|
||||||
|
#include "nel/misc/types_nl.h"
|
||||||
|
#include "nel/misc/sheet_id.h"
|
||||||
|
#include "nel/misc/path.h"
|
||||||
|
#include "nel/misc/diff_tool.h"
|
||||||
|
#include "nel/ligo/ligo_config.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -58,12 +55,15 @@ namespace TranslationManager
|
||||||
class CMainWindow : public QMainWindow
|
class CMainWindow : public QMainWindow
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CMainWindow(QWidget *parent = 0);
|
CMainWindow(QWidget *parent = 0);
|
||||||
virtual ~CMainWindow() {}
|
virtual ~CMainWindow() {}
|
||||||
QUndoStack *m_undoStack;
|
QUndoStack *m_undoStack;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Ui::CMainWindow _ui;
|
Ui::CMainWindow _ui;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// actions
|
// actions
|
||||||
QAction *openAct;
|
QAction *openAct;
|
||||||
|
@ -80,6 +80,7 @@ private:
|
||||||
QString translation_path;
|
QString translation_path;
|
||||||
QString work_path;
|
QString work_path;
|
||||||
NLLIGO::CLigoConfig ligoConfig;
|
NLLIGO::CLigoConfig ligoConfig;
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void extractBotNames();
|
void extractBotNames();
|
||||||
void extractWords(QString typeq);
|
void extractWords(QString typeq);
|
||||||
|
@ -89,6 +90,7 @@ private Q_SLOTS:
|
||||||
void setActiveSubWindow(QWidget *window);
|
void setActiveSubWindow(QWidget *window);
|
||||||
void updateWindowsList();
|
void updateWindowsList();
|
||||||
void mergeSingleFile();
|
void mergeSingleFile();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void openWorkFile(QString file);
|
void openWorkFile(QString file);
|
||||||
void updateToolbar(QMdiSubWindow *window);
|
void updateToolbar(QMdiSubWindow *window);
|
||||||
|
@ -97,22 +99,20 @@ private:
|
||||||
void createMenus();
|
void createMenus();
|
||||||
void createToolbar();
|
void createToolbar();
|
||||||
void initializeSettings(bool georges);
|
void initializeSettings(bool georges);
|
||||||
list<string> convertQStringList(QStringList listq);
|
std::list<std::string> convertQStringList(QStringList listq);
|
||||||
CEditor* getEditorByWindowFilePath(const QString &fileName);
|
CEditor *getEditorByWindowFilePath(const QString &fileName);
|
||||||
// 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);
|
bool isPhraseEditor(QString filename);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class CCoreListener : public Core::ICoreListener
|
class CCoreListener : public Core::ICoreListener
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CCoreListener(CMainWindow* mainWindow, QObject *parent = 0): ICoreListener(parent)
|
CCoreListener(CMainWindow *mainWindow, QObject *parent = 0): ICoreListener(parent)
|
||||||
{
|
{
|
||||||
m_MainWindow = mainWindow;
|
m_MainWindow = mainWindow;
|
||||||
}
|
}
|
||||||
|
@ -124,10 +124,6 @@ public:
|
||||||
CMainWindow *m_MainWindow;
|
CMainWindow *m_MainWindow;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} // namespace TranslationManager
|
} // namespace TranslationManager
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // SIMPLE_VIEWER_H
|
|
||||||
|
|
|
@ -19,7 +19,8 @@
|
||||||
#include "translation_manager_plugin.h"
|
#include "translation_manager_plugin.h"
|
||||||
#include "translation_manager_settings_page.h"
|
#include "translation_manager_settings_page.h"
|
||||||
#include "translation_manager_main_window.h"
|
#include "translation_manager_main_window.h"
|
||||||
// Project system includes
|
|
||||||
|
// Core includes
|
||||||
#include "../core/icore.h"
|
#include "../core/icore.h"
|
||||||
#include "../core/core_constants.h"
|
#include "../core/core_constants.h"
|
||||||
#include "../core/menu_manager.h"
|
#include "../core/menu_manager.h"
|
||||||
|
@ -65,11 +66,8 @@ bool TranslationManagerPlugin::initialize(ExtensionSystem::IPluginManager *plugi
|
||||||
|
|
||||||
void TranslationManagerPlugin::extensionsInitialized()
|
void TranslationManagerPlugin::extensionsInitialized()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TranslationManagerPlugin::setNelContext(NLMISC::INelContext *nelContext)
|
void TranslationManagerPlugin::setNelContext(NLMISC::INelContext *nelContext)
|
||||||
{
|
{
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
|
@ -86,23 +84,6 @@ void TranslationManagerPlugin::addAutoReleasedObject(QObject *obj)
|
||||||
_autoReleaseObjects.prepend(obj);
|
_autoReleaseObjects.prepend(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
QObject* TranslationManagerPlugin::objectByName(const QString &name) const
|
|
||||||
{
|
|
||||||
Q_FOREACH (QObject *qobj, _plugMan->allObjects())
|
|
||||||
if (qobj->objectName() == name)
|
|
||||||
return qobj;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ExtensionSystem::IPluginSpec *TranslationManagerPlugin::pluginByName(const QString &name) const
|
|
||||||
{
|
|
||||||
Q_FOREACH (ExtensionSystem::IPluginSpec *spec, _plugMan->plugins())
|
|
||||||
if (spec->name() == name)
|
|
||||||
return spec;
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_EXPORT_PLUGIN(TranslationManager::TranslationManagerPlugin)
|
Q_EXPORT_PLUGIN(TranslationManager::TranslationManagerPlugin)
|
|
@ -45,7 +45,7 @@ class IPluginSpec;
|
||||||
namespace TranslationManager
|
namespace TranslationManager
|
||||||
{
|
{
|
||||||
|
|
||||||
class CTranslationManagerContext;
|
class CTranslationManagerContext;
|
||||||
|
|
||||||
class TranslationManagerPlugin : public QObject, public ExtensionSystem::IPlugin
|
class TranslationManagerPlugin : public QObject, public ExtensionSystem::IPlugin
|
||||||
{
|
{
|
||||||
|
@ -58,12 +58,8 @@ public:
|
||||||
void extensionsInitialized();
|
void extensionsInitialized();
|
||||||
|
|
||||||
void setNelContext(NLMISC::INelContext *nelContext);
|
void setNelContext(NLMISC::INelContext *nelContext);
|
||||||
|
|
||||||
void addAutoReleasedObject(QObject *obj);
|
void addAutoReleasedObject(QObject *obj);
|
||||||
|
|
||||||
QObject *objectByName(const QString &name) const;
|
|
||||||
ExtensionSystem::IPluginSpec *pluginByName(const QString &name) const;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
NLMISC::CLibraryContext *_LibContext;
|
NLMISC::CLibraryContext *_LibContext;
|
||||||
|
|
||||||
|
@ -75,8 +71,9 @@ private:
|
||||||
class CTranslationManagerContext: public Core::IContext
|
class CTranslationManagerContext: public Core::IContext
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CTranslationManagerContext(CMainWindow* mainWindow, QObject *parent = 0): IContext(parent)
|
CTranslationManagerContext(CMainWindow *mainWindow, QObject *parent = 0): IContext(parent)
|
||||||
{
|
{
|
||||||
m_MainWindow = mainWindow;
|
m_MainWindow = mainWindow;
|
||||||
}
|
}
|
||||||
|
@ -109,9 +106,8 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
CMainWindow *m_MainWindow;
|
CMainWindow *m_MainWindow;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Plugin
|
}
|
||||||
|
|
||||||
#endif // TRANSLATION_MANAGER_PLUGIN_H
|
#endif // TRANSLATION_MANAGER_PLUGIN_H
|
|
@ -1,5 +1,4 @@
|
||||||
// Translation Manager Plugin - OVQT Plugin <http://dev.ryzom.com/projects/nel/>
|
// 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>
|
// Copyright (C) 2011 Emanuel Costea <cemycc@gmail.com>
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -17,17 +16,15 @@
|
||||||
|
|
||||||
#include "translation_manager_settings_page.h"
|
#include "translation_manager_settings_page.h"
|
||||||
|
|
||||||
|
// Core includes
|
||||||
|
#include "../core/icore.h"
|
||||||
|
|
||||||
// Qt includes
|
// Qt includes
|
||||||
#include <QtCore/QSettings>
|
#include <QtCore/QSettings>
|
||||||
#include <QtGui/QWidget>
|
#include <QtGui/QWidget>
|
||||||
#include <QtGui/QFileDialog>
|
#include <QtGui/QFileDialog>
|
||||||
#include <QtGui/QListWidgetItem>
|
#include <QtGui/QListWidgetItem>
|
||||||
|
|
||||||
// NeL includes
|
|
||||||
|
|
||||||
// Project includes
|
|
||||||
#include "../core/icore.h"
|
|
||||||
|
|
||||||
namespace TranslationManager
|
namespace TranslationManager
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -203,5 +200,4 @@ void CTranslationManagerSettingsPage::writeSettings()
|
||||||
settings->sync();
|
settings->sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
} /* namespace Plugin */
|
|
|
@ -24,13 +24,9 @@
|
||||||
|
|
||||||
#include "ui_translation_manager_settings_page.h"
|
#include "ui_translation_manager_settings_page.h"
|
||||||
|
|
||||||
class QWidget;
|
|
||||||
|
|
||||||
namespace TranslationManager
|
namespace TranslationManager
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
@class CTranslationManagerSettingsPage
|
|
||||||
*/
|
|
||||||
class CTranslationManagerSettingsPage : public Core::IOptionsPage
|
class CTranslationManagerSettingsPage : public Core::IOptionsPage
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -61,6 +57,6 @@ private:
|
||||||
void readSettings();
|
void readSettings();
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Plugin
|
}
|
||||||
|
|
||||||
#endif // TRANSLATION_MANAGER_SETTINGS_H
|
#endif // TRANSLATION_MANAGER_SETTINGS_H
|
|
@ -6,34 +6,21 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>533</width>
|
<width>589</width>
|
||||||
<height>478</height>
|
<height>490</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Form</string>
|
<string>Form</string>
|
||||||
</property>
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_5">
|
||||||
|
<item row="0" column="0">
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>10</y>
|
|
||||||
<width>531</width>
|
|
||||||
<height>421</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Translation Manager Plugin</string>
|
<string>Translation Manager Plugin</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="">
|
<layout class="QGridLayout" name="gridLayout_4">
|
||||||
<property name="geometry">
|
<item row="0" column="0">
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>30</y>
|
|
||||||
<width>521</width>
|
|
||||||
<height>232</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="label_5">
|
<widget class="QLabel" name="label_5">
|
||||||
|
@ -118,45 +105,8 @@
|
||||||
<widget class="QListWidget" name="lang_list"/>
|
<widget class="QListWidget" name="lang_list"/>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
|
||||||
<widget class="QWidget" name="">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>340</y>
|
|
||||||
<width>521</width>
|
|
||||||
<height>60</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout_2">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="label_6">
|
|
||||||
<property name="text">
|
|
||||||
<string>Translation directory</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QLineEdit" name="translation_edit"/>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QToolButton" name="translation_add">
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<widget class="QWidget" name="">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>270</y>
|
|
||||||
<width>521</width>
|
|
||||||
<height>60</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout_3">
|
<layout class="QGridLayout" name="gridLayout_3">
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="label_8">
|
<widget class="QLabel" name="label_8">
|
||||||
|
@ -176,8 +126,32 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_6">
|
||||||
|
<property name="text">
|
||||||
|
<string>Translation directory</string>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLineEdit" name="translation_edit"/>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QToolButton" name="translation_add">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../core/core.qrc"/>
|
<include location="../core/core.qrc"/>
|
||||||
|
|
Loading…
Reference in a new issue