Changed: #1307 Added extract_bot_names

This commit is contained in:
cemycc 2011-06-21 01:03:54 +03:00
parent d025085442
commit 7fa052e11c
11 changed files with 302 additions and 529 deletions

View file

@ -10,11 +10,11 @@ SET(OVQT_EXT_SYS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin.
${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin_spec.h) ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin_spec.h)
SET(OVQT_PLUG_TRANSLATION_MANAGER_HDR translation_manager_plugin.h SET(OVQT_PLUG_TRANSLATION_MANAGER_HDR translation_manager_plugin.h
qnel_widget.h translation_manager_main_window.h
simple_viewer.h
translation_manager_settings_page.h) translation_manager_settings_page.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)
SET(QT_USE_QTGUI TRUE) SET(QT_USE_QTGUI TRUE)
SET(QT_USE_QTOPENGL TRUE) SET(QT_USE_QTOPENGL TRUE)

View file

@ -145,6 +145,15 @@ set<string> GenericNames;
map<string, TEntryInfo> SimpleNames; map<string, TEntryInfo> SimpleNames;
set<string> Functions; set<string> Functions;
set<string> getGenericNames()
{
return GenericNames;
}
map<string, TEntryInfo> getSimpleNames()
{
return SimpleNames;
}
string removeAndStoreFunction(const std::string &fullName) string removeAndStoreFunction(const std::string &fullName)
{ {
@ -221,40 +230,6 @@ void addSimpleName(const std::string &name, const std::string &sheetName)
int extractBotNamesAll(map<string,list<string> > config_paths, string ligo_class_file, string trans_path, string work_path) int extractBotNamesAll(map<string,list<string> > config_paths, string ligo_class_file, string trans_path, string work_path)
{ {
//-------------------------------------------------------------------
// read the parameters
/*for (int i=2; i<argc; ++i)
{
string s = argv[i];
if (s == "-r")
{
// active remove mode
RemoveOlds = true;
}
else
{
nlwarning("Unknow option '%s'", argv[i]);
return -1;
}
} */
//-------------------------------------------------------------------
// read the configuration file
//CConfigFile cf;
//cf.load("bin/translation_tools.cfg");
//-------------------------------------------------------------------
// read the vars
//CConfigFile::CVar &paths = cf.getVar("Paths");
//CConfigFile::CVar &filtersVar = cf.getVar("Filters");
//CConfigFile::CVar &ligoClassFile= cf.getVar("LigoClassFile");
//CConfigFile::CVar &georgesPaths= cf.getVar("GeorgesPaths");
//CConfigFile::CVar &pathNoRecurse= cf.getVar("PathsNoRecurse");
//CConfigFile::CVar &workBotNamesFile= cf.getVar("WorkBotNamesFile");
//CConfigFile::CVar &transBotNamesFile= cf.getVar("TransBotNamesFile");
//CConfigFile::CVar &workTitleFile= cf.getVar("WorkTitleFile");
for (std::list<string>::iterator it = config_paths["paths"].begin(); it != config_paths["paths"].end(); ++it) for (std::list<string>::iterator it = config_paths["paths"].begin(); it != config_paths["paths"].end(); ++it)
{ {
CPath::addSearchPath(*it, true, false); CPath::addSearchPath(*it, true, false);
@ -269,7 +244,6 @@ int extractBotNamesAll(map<string,list<string> > config_paths, string ligo_class
Filters.push_back(*it); Filters.push_back(*it);
} }
//------------------------------------------------------------------- //-------------------------------------------------------------------
// init the sheets // init the sheets
CSheetId::init(false); CSheetId::init(false);
@ -451,26 +425,62 @@ int extractBotNamesAll(map<string,list<string> > config_paths, string ligo_class
} }
else else
{ {
TEntryInfo ei;
addSimpleName(removeAndStoreFunction(name), sheetStr); addSimpleName(removeAndStoreFunction(name), sheetStr);
} }
} }
} }
} }
//------------------------------------------------------------------- //-------------------------------------------------------------------
// step 2 : load the reference file // step 2 : load the reference file
nlinfo("Looking for missing translation:"); nlinfo("Looking for missing translation:");
string work_path_file = work_path + "/bot_names.txt";
string trans_path_file = trans_path + "/bot_names.txt";
string title_path_file = work_path + "/title_words_wk.txt";
TWorksheet botNames;
if (!CFile::fileExists(work_path_file) || !loadExcelSheet(work_path_file, botNames))
{
botNames.resize(botNames.size() + 1);
botNames.insertColumn(botNames.ColCount);
botNames.setData(0,botNames.ColCount - 1,ucstring("bot name"));
botNames.insertColumn(botNames.ColCount);
botNames.setData(0,botNames.ColCount - 1,ucstring("translated name"));
botNames.insertColumn(botNames.ColCount);
botNames.setData(0,botNames.ColCount - 1,ucstring("sheet_name"));
}
TWorksheet botNames; TWorksheet transBotNames;
loadExcelSheet(work_path, botNames, true); if (!CFile::fileExists(trans_path_file) || !loadExcelSheet(trans_path_file, transBotNames))
TWorksheet transBotNames; {
loadExcelSheet(trans_path, transBotNames, true); transBotNames.resize(transBotNames.size() + 1);
transBotNames.insertColumn(transBotNames.ColCount);
transBotNames.setData(0,transBotNames.ColCount - 1,ucstring("*HASH_VALUE"));
transBotNames.insertColumn(transBotNames.ColCount);
transBotNames.setData(0,transBotNames.ColCount - 1,ucstring("bot name"));
transBotNames.insertColumn(transBotNames.ColCount);
transBotNames.setData(0,transBotNames.ColCount - 1,ucstring("translated name"));
transBotNames.insertColumn(transBotNames.ColCount);
transBotNames.setData(0,transBotNames.ColCount - 1,ucstring("sheet_name"));
}
TWorksheet fcts; TWorksheet fcts;
loadExcelSheet(work_path, fcts, true); if (!CFile::fileExists(title_path_file) || !loadExcelSheet(title_path_file, fcts))
{
fcts.resize(fcts.size() + 1);
fcts.insertColumn(fcts.ColCount);
fcts.setData(0,fcts.ColCount - 1,ucstring("title_id"));
fcts.insertColumn(fcts.ColCount);
fcts.setData(0,fcts.ColCount - 1,ucstring("name"));
fcts.insertColumn(fcts.ColCount);
fcts.setData(0,fcts.ColCount - 1,ucstring("women_name"));
}
loadExcelSheet(work_path_file, botNames, true);
loadExcelSheet(trans_path_file, transBotNames, true);
loadExcelSheet(title_path_file, fcts, true);
// add missing element // add missing element
@ -482,9 +492,9 @@ int extractBotNamesAll(map<string,list<string> > config_paths, string ligo_class
nlverify(botNames.findId(botIdCol)); nlverify(botNames.findId(botIdCol));
uint transIdCol; uint transIdCol;
nlverify(transBotNames.findId(transIdCol)); nlverify(transBotNames.findId(transIdCol));
uint fctsIdCol; uint fctsIdCol;
nlverify(fcts.findId(fctsIdCol)); nlverify(fcts.findId(fctsIdCol));
// special treatment to add the sheet_name col // special treatment to add the sheet_name col
{ {
uint sheetCol; uint sheetCol;
@ -743,14 +753,13 @@ int extractBotNamesAll(map<string,list<string> > config_paths, string ligo_class
nlinfo("Adding %u new generic name", nbAddGenericName); nlinfo("Adding %u new generic name", nbAddGenericName);
nlinfo("Adding %u new function name", nbAddFunction); nlinfo("Adding %u new function name", nbAddFunction);
// saving the modified files // saving the modified files
ucstring s = prepareExcelSheet(botNames); ucstring s = prepareExcelSheet(botNames);
CI18N::writeTextFile(work_path, s, false); CI18N::writeTextFile(work_path_file, s, false);
s = prepareExcelSheet(transBotNames); s = prepareExcelSheet(transBotNames);
CI18N::writeTextFile(trans_path, s, false); CI18N::writeTextFile(trans_path_file, s, false);
s = prepareExcelSheet(fcts); s = prepareExcelSheet(fcts);
CI18N::writeTextFile(work_path, s, false); CI18N::writeTextFile(title_path_file, s, false);
return 0; return 0;
} }

View file

@ -1,197 +0,0 @@
// Object Viewer Qt - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
// Copyright (C) 2011 Dzmitry Kamiahin <dnk-88@tut.by>
//
// 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 "qnel_widget.h"
// STL includes
// Qt includes
#include <QtCore/QTimer>
#include <QtGui/QResizeEvent>
// NeL includes
#include <nel/misc/event_server.h>
#include <nel/misc/debug.h>
#include <nel/3d/u_driver.h>
#include <nel/3d/driver_user.h>
namespace NLQT
{
QNLWidget::QNLWidget(QWidget *parent)
: QNeLWidget(parent),
m_driver(NULL),
m_initialized(false),
m_interval(25)
{
setMouseTracking(true);
setFocusPolicy(Qt::StrongFocus);
init();
#ifdef Q_OS_LINUX
makeCurrent();
#endif
m_mainTimer = new QTimer(this);
connect(m_mainTimer, SIGNAL(timeout()), this, SLOT(updateRender()));
}
QNLWidget::~QNLWidget()
{
release();
}
void QNLWidget::init()
{
// create the driver
m_driver = NL3D::UDriver::createDriver(NULL, false, NULL);
nlassert(m_driver);
// initialize the nel 3d viewport
m_driver->setDisplay((nlWindow)winId(), NL3D::UDriver::CMode(width(), height(), 32));
// set the cache size for the font manager(in bytes)
m_driver->setFontManagerMaxMemory(2097152);
m_initialized = true;
}
void QNLWidget::release()
{
m_mainTimer->stop();
delete m_mainTimer;
if (m_initialized)
{
m_driver->release();
delete m_driver;
m_driver = NULL;
}
}
void QNLWidget::setInterval(int msec)
{
m_interval = msec;
m_mainTimer->setInterval(msec);
}
void QNLWidget::setBackgroundColor(NLMISC::CRGBA backgroundColor)
{
m_backgroundColor = backgroundColor;
}
void QNLWidget::updateRender()
{
if (isVisible())
{
if (m_initialized)
m_driver->EventServer.pump();
Q_EMIT updateData();
// Calc FPS
static sint64 lastTime = NLMISC::CTime::getPerformanceTime ();
sint64 newTime = NLMISC::CTime::getPerformanceTime ();
m_fps = float(1.0 / NLMISC::CTime::ticksToSecond (newTime-lastTime));
lastTime = newTime;
if (m_initialized && !m_driver->isLost())
{
//_driver->activate();
m_driver->clearBuffers(m_backgroundColor);
Q_EMIT updatePreRender();
Q_EMIT updatePostRender();
// swap 3d buffers
m_driver->swapBuffers();
}
}
}
void QNLWidget::showEvent(QShowEvent *showEvent)
{
QWidget::showEvent(showEvent);
m_driver->activate();
m_mainTimer->start(m_interval);
}
void QNLWidget::hideEvent(QHideEvent *hideEvent)
{
m_mainTimer->stop();
QWidget::hideEvent(hideEvent);
}
#if defined(NL_OS_WINDOWS)
typedef bool (*winProc)(NL3D::IDriver *driver, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
bool QNLWidget::winEvent(MSG *message, long *result)
{
if (m_driver && m_driver->isActive())
{
NL3D::IDriver *driver = dynamic_cast<NL3D::CDriverUser *>(m_driver)->getDriver();
if (driver)
{
winProc proc = (winProc)driver->getWindowProc();
return proc(driver, message->hwnd, message->message, message->wParam, message->lParam);
}
}
return false;
}
#elif defined(NL_OS_MAC)
typedef bool (*cocoaProc)(NL3D::IDriver *, const void *e);
bool QNLWidget::macEvent(EventHandlerCallRef caller, EventRef event)
{
if(caller)
nlerror("You are using QtCarbon! Only QtCocoa supported, please upgrade Qt");
if (m_driver && m_driver->isActive())
{
NL3D::IDriver *driver = dynamic_cast<NL3D::CDriverUser *>(m_driver)->getDriver();
if (driver)
{
cocoaProc proc = (cocoaProc)driver->getWindowProc();
return proc(driver, event);
}
}
return false;
}
#elif defined(NL_OS_UNIX)
typedef bool (*x11Proc)(NL3D::IDriver *drv, XEvent *e);
bool QNLWidget::x11Event(XEvent *event)
{
if (m_driver && m_driver->isActive())
{
NL3D::IDriver *driver = dynamic_cast<NL3D::CDriverUser *>(m_driver)->getDriver();
if (driver)
{
x11Proc proc = (x11Proc)driver->getWindowProc();
return proc(driver, event);
}
}
return false;
}
#endif
} /* namespace NLQT */

View file

@ -1,130 +0,0 @@
// Object Viewer Qt - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
// Copyright (C) 2011 Dzmitry Kamiahin <dnk-88@tut.by>
//
// 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 QNEL_WIDGET_H
#define QNEL_WIDGET_H
// NeL includes
#include <nel/misc/types_nl.h>
#include <nel/misc/rgba.h>
#include <nel/misc/event_emitter.h>
// Qt includes
#include <QtOpenGL/QGLWidget>
#include <QtGui/QWidget>
class QAction;
/* TODO every platform should use QWidget */
#if defined(NL_OS_WINDOWS)
typedef QWidget QNeLWidget;
#elif defined(NL_OS_MAC)
typedef QWidget QNeLWidget;
#elif defined(NL_OS_UNIX)
typedef QGLWidget QNeLWidget;
#endif // NL_OS_UNIX
namespace NL3D
{
class UDriver;
class UScene;
}
namespace NLQT
{
/**
@class QNLWidget
@brief Responsible for interaction between Qt and NeL.
@details Automatically begins to update the render if the widget is visible
or suspends the updating of render if the widget is hidden.
*/
class QNLWidget : public QNeLWidget
{
Q_OBJECT
public:
QNLWidget(QWidget *parent);
virtual ~QNLWidget();
/// Set the update interval renderer
void setInterval(int msec);
/// Set the background color.
void setBackgroundColor(NLMISC::CRGBA backgroundColor);
float fps() const
{
return m_fps;
}
inline NLMISC::CRGBA backgroundColor() const
{
return m_backgroundColor;
}
NL3D::UDriver *driver() const
{
return m_driver;
}
virtual QPaintEngine* paintEngine() const
{
return NULL;
}
Q_SIGNALS:
void updateData();
void updatePreRender();
void updatePostRender();
private Q_SLOTS:
void updateRender();
protected:
virtual void showEvent(QShowEvent *showEvent);
virtual void hideEvent(QHideEvent *hideEvent);
#if defined(NL_OS_WINDOWS)
virtual bool winEvent(MSG *message, long *result);
#elif defined(NL_OS_MAC)
virtual bool macEvent(EventHandlerCallRef caller, EventRef event);
#elif defined(NL_OS_UNIX)
virtual bool x11Event(XEvent *event);
#endif
private:
void init();
void release();
QNLWidget(const QNLWidget &);
QNLWidget &operator=(const QNLWidget &);
NL3D::UDriver *m_driver;
NLMISC::CRGBA m_backgroundColor;
QTimer *m_mainTimer;
bool m_initialized;
int m_interval;
float m_fps;
}; /* class QNLWidget */
} /* namespace NLQT */
#endif // QNEL_WIDGET_H

View file

@ -1,56 +0,0 @@
// Object Viewer Qt - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
// Copyright (C) 2011 Dzmitry Kamiahin <dnk-88@tut.by>
//
// 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 "simple_viewer.h"
// Qt includes
#include <QtGui/QWidget>
#include <QtGui/QGridLayout>
#include <QtGui/QMessageBox>
// NeL includes
// Project includes
namespace Plugin
{
CSimpleViewer::CSimpleViewer(QWidget *parent)
: QWidget(parent)
{
QGridLayout *gridLayout = new QGridLayout(this);
gridLayout->setObjectName(QString::fromUtf8("gridLayoutSimpleViewer"));
gridLayout->setContentsMargins(0, 0, 0, 0);
NLQT::QNLWidget *_nelWidget = new NLQT::QNLWidget(this);
gridLayout->addWidget(_nelWidget, 0, 0, 1, 1);
m_undoStack = new QUndoStack(this);
}
bool CCoreListener::closeMainWindow() const
{
int ret = QMessageBox::question(0, tr("Example close event hook"),
tr("Do you want to close window?"),
QMessageBox::Yes | QMessageBox::No);
if (ret == QMessageBox::Yes)
return true;
else
return false;
}
} /* namespace Plugin */

View file

@ -0,0 +1,169 @@
// Object Viewer Qt - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
// Copyright (C) 2011 Dzmitry Kamiahin <dnk-88@tut.by>
//
// 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 "translation_manager_main_window.h"
// Project system includes
#include "../core/icore.h"
// Qt includes
#include <QtGui/QWidget>
#include <QtGui/QMessageBox>
#include <QtGui/QLabel>
#include <QtGui/QTextEdit>
#include <QtCore/QSettings>
#include <QtGui/QErrorMessage>
#include <QtCore/QSignalMapper>
#include <QtGui/QTableWidget>
#include <QtGui/QListWidget>
#include <QtGui/QDockWidget>
#include <QtCore/QSize>
#include <QtGui/QGridLayout>
struct TEntryInfo
{
string SheetName;
};
set<string> getGenericNames();
map<string, TEntryInfo> getSimpleNames();
int extractBotNamesAll(map<string,list<string> > config_paths, string ligo_class_file, string trans_path, string work_path);
namespace Plugin
{
CMainWindow::CMainWindow(QWidget *parent)
: QMainWindow(parent)
{
_ui.setupUi(this);
_toolMenu = new QMenu(tr("Primitives"), _ui.toolBar);
_ui.toolBar->addAction(_toolMenu->menuAction());
QAction *extractBotNames = _toolMenu->addAction(tr("Extract bot names"));
extractBotNames->setStatusTip(tr("Extract bot names from primitives"));
connect(extractBotNames, SIGNAL(triggered()), this, SLOT(extractBotNames()));
readSettings();
m_undoStack = new QUndoStack(this);
}
void CMainWindow::readSettings()
{
QSettings *settings = Core::ICore::instance()->settings();
settings->beginGroup("translationmanager");
list<string> paths = convertQStringList(settings->value("paths").toStringList()); /* paths */
config_paths["paths"] = paths;
list<string> pathsR = convertQStringList(settings->value("pathsR").toStringList()); /* pathsR */
config_paths["pathsR"] = pathsR;
list<string> georges = convertQStringList(settings->value("georges").toStringList()); /* georges */
config_paths["georges"] = georges;
list<string> filters = convertQStringList(settings->value("filters").toStringList()); /* filters */
config_paths["filters"] = filters;
languages = convertQStringList(settings->value("trlanguages").toStringList()); /* languages */
ligo_path = settings->value("ligo").toString().toStdString();
translation_path = settings->value("translation").toString().toStdString();
work_path = settings->value("work").toString().toStdString();
settings->endGroup();
}
void CMainWindow::extractBotNames()
{
if(verifySettings() == true)
{
// int extract_bot_names = extractBotNamesAll(config_paths, ligo_path, translation_path, work_path);
QGridLayout* mainLayout = new QGridLayout();
//contentsWindow->setAllowedAreas(Qt::LeftDockWidgetArea);
QListWidget *listWidget = new QListWidget(this);
mainLayout->addWidget(QListWidget);
QTableWidget *tableWidget = new QTableWidget(this);
tableWidget->setRowCount(10);
tableWidget->setColumnCount(5);
mainLayout->addWidget(QTableWidget);
setCentralWidget(tableWidget);
}
}
bool CMainWindow::verifySettings()
{
bool count_errors = false;
QSettings *settings = Core::ICore::instance()->settings();
settings->beginGroup("translationmanager");
if(settings->value("paths").toList().count() == 0
|| settings->value("pathsR").toList().count() == 0
|| settings->value("georges").toList().count() == 0
|| settings->value("filters").toList().count() == 0)
{
QErrorMessage error_settings;
error_settings.showMessage("Please write all the paths on the settings dialog.");
error_settings.exec();
count_errors = true;
}
if((settings->value("ligo").toString().isEmpty()
|| settings->value("translation").toString().isEmpty()
|| settings->value("work").toString().isEmpty()
|| settings->value("trlanguages").toList().count() == 0)
&& count_errors == false)
{
QErrorMessage error_settings;
error_settings.showMessage("Please write the paths for ligo, translation and work files and the languages on the settings dialog." + settings->value("trlanguages").toString());
error_settings.exec();
count_errors = true;
}
settings->endGroup();
return !count_errors;
}
list<string> CMainWindow::convertQStringList(QStringList listq)
{
std::list<std::string> stdlist;
Q_FOREACH(QString text, listq)
{
stdlist.push_back(text.toStdString());
}
return stdlist;
}
bool CCoreListener::closeMainWindow() const
{
return true;
}
} /* namespace Plugin */

View file

@ -16,29 +16,53 @@
// 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 SIMPLE_VIEWER_H #ifndef MAIN_WINDOW_H
#define SIMPLE_VIEWER_H #define MAIN_WINDOW_H
// Project includes // Project includes
#include "qnel_widget.h"
#include "../core/icore_listener.h" #include "../core/icore_listener.h"
// Qt includes // Qt includes
#include <QtCore/QObject> #include <QtCore/QObject>
#include <QtGui/QUndoStack> #include <QtGui/QUndoStack>
#include <QtGui/QMainWindow>
#include <QtGui/QGridLayout>
#include <QtGui/QTabWidget>
#include <QtGui/QMenu>
#include "ui_translation_manager_main_window.h"
#include <set>
class QWidget; class QWidget;
using namespace std;
namespace Plugin namespace Plugin
{ {
class CSimpleViewer : public QWidget class CMainWindow : public QMainWindow
{ {
Q_OBJECT Q_OBJECT
public: public:
CSimpleViewer(QWidget *parent = 0); CMainWindow(QWidget *parent = 0);
virtual ~CSimpleViewer() {} virtual ~CMainWindow() {}
QUndoStack *m_undoStack;
QUndoStack *m_undoStack; private:
Ui::CMainWindow _ui;
QMenu *_toolMenu;
map<string, list<string> > config_paths;
list<string> languages;
string ligo_path;
string translation_path;
string work_path;
private Q_SLOTS:
void extractBotNames();
private:
void compareBotNames();
bool verifySettings();
void readSettings();
list<string> convertQStringList(QStringList listq);
}; };
class CCoreListener : public Core::ICoreListener class CCoreListener : public Core::ICoreListener

View file

@ -1,7 +1,7 @@
// Project includes // Project includes
#include "translation_manager_plugin.h" #include "translation_manager_plugin.h"
#include "translation_manager_settings_page.h" #include "translation_manager_settings_page.h"
#include "simple_viewer.h" #include "translation_manager_main_window.h"
// Project system includes // Project system includes
#include "../core/icore.h" #include "../core/icore.h"
#include "../core/core_constants.h" #include "../core/core_constants.h"
@ -14,13 +14,12 @@
// Qt includes // Qt includes
#include <QtCore/QObject> #include <QtCore/QObject>
#include <QtGui/QMessageBox> #include <QtGui/QMessageBox>
#include <QtGui/QErrorMessage>
#include <QtGui/QMainWindow> #include <QtGui/QMainWindow>
#include <QtGui/QMenu> #include <QtGui/QMenu>
#include <QtGui/QAction> #include <QtGui/QAction>
#include <QtGui/QMenuBar> #include <QtGui/QMenuBar>
int extractBotNamesAll(map<string,list<string> > config_paths, string ligo_class_file, string trans_path, string work_path);
namespace Plugin namespace Plugin
{ {
TranslationManagerPlugin::~TranslationManagerPlugin() TranslationManagerPlugin::~TranslationManagerPlugin()
@ -41,6 +40,7 @@ bool TranslationManagerPlugin::initialize(ExtensionSystem::IPluginManager *plugi
addAutoReleasedObject(new CTranslationManagerSettingsPage(this)); addAutoReleasedObject(new CTranslationManagerSettingsPage(this));
addAutoReleasedObject(new CTranslationManagerContext(this)); addAutoReleasedObject(new CTranslationManagerContext(this));
addAutoReleasedObject(new CCoreListener(this)); addAutoReleasedObject(new CCoreListener(this));
return true; return true;
} }
@ -56,39 +56,6 @@ void TranslationManagerPlugin::extensionsInitialized()
QAction *aboutQtAction = menuManager->action(Core::Constants::ABOUT_QT); QAction *aboutQtAction = menuManager->action(Core::Constants::ABOUT_QT);
helpMenu->addSeparator(); helpMenu->addSeparator();
helpMenu->insertAction(aboutQtAction, aboutTManPlugin); helpMenu->insertAction(aboutQtAction, aboutTManPlugin);
QMenu *transMenu = menuManager->menuBar()->addMenu("Translation Manager");
// Words extraction
QAction *botnamesAct = new QAction("Extract bot_names", this);
connect(botnamesAct, SIGNAL(triggered()), this, SLOT(extractBotNames()));
transMenu->addAction(botnamesAct);
}
void TranslationManagerPlugin::extractBotNames()
{
// prepare the config paths
list<string> paths,pathsR, georges, filters, languages;
string ligo, translation, work;
map<string, list<string> > config_paths;
QSettings *settings = Core::ICore::instance()->settings();
settings->beginGroup("translationmanager");
paths = ConvertQStringList(settings->value("paths").toStringList()); /* paths */
config_paths["paths"] = paths;
pathsR = ConvertQStringList(settings->value("pathsR").toStringList()); /* pathsR */
config_paths["pathsR"] = pathsR;
georges = ConvertQStringList(settings->value("georges").toStringList()); /* georges */
config_paths["georges"] = georges;
filters = ConvertQStringList(settings->value("filters").toStringList()); /* filters */
config_paths["filters"] = filters;
languages = ConvertQStringList(settings->value("languages").toStringList()); /* languages */
ligo = settings->value("ligo").toString().toStdString();
translation = settings->value("translation").toString().toStdString();
work = settings->value("work").toString().toStdString();
settings->endGroup();
extractBotNamesAll(config_paths, ligo, translation, work);
} }
void TranslationManagerPlugin::setNelContext(NLMISC::INelContext *nelContext) void TranslationManagerPlugin::setNelContext(NLMISC::INelContext *nelContext)
@ -101,17 +68,6 @@ void TranslationManagerPlugin::setNelContext(NLMISC::INelContext *nelContext)
_LibContext = new NLMISC::CLibraryContext(*nelContext); _LibContext = new NLMISC::CLibraryContext(*nelContext);
} }
list<string> TranslationManagerPlugin::ConvertQStringList(QStringList listq)
{
std::list<std::string> stdlist;
Q_FOREACH(QString text, listq)
{
stdlist.push_back(text.toStdString());
}
return stdlist;
}
QString TranslationManagerPlugin::name() const QString TranslationManagerPlugin::name() const
{ {
return "Translation Manager"; return "Translation Manager";

View file

@ -4,7 +4,7 @@
// Project includes // Project includes
#include "../../extension_system/iplugin.h" #include "../../extension_system/iplugin.h"
#include "../core/icontext.h" #include "../core/icontext.h"
#include "simple_viewer.h" #include "translation_manager_main_window.h"
// NeL includes // NeL includes
#include "nel/misc/app_context.h" #include "nel/misc/app_context.h"
@ -28,12 +28,13 @@ class IPluginSpec;
namespace Plugin namespace Plugin
{ {
class CTranslationManagerContext;
class TranslationManagerPlugin : public QObject, public ExtensionSystem::IPlugin class TranslationManagerPlugin : public QObject, public ExtensionSystem::IPlugin
{ {
Q_OBJECT Q_OBJECT
Q_INTERFACES(ExtensionSystem::IPlugin) Q_INTERFACES(ExtensionSystem::IPlugin)
public: public:
virtual ~TranslationManagerPlugin(); virtual ~TranslationManagerPlugin();
bool initialize(ExtensionSystem::IPluginManager *pluginManager, QString *errorString); bool initialize(ExtensionSystem::IPluginManager *pluginManager, QString *errorString);
@ -58,11 +59,6 @@ protected:
private: private:
ExtensionSystem::IPluginManager *_plugMan; ExtensionSystem::IPluginManager *_plugMan;
QList<QObject *> _autoReleaseObjects; QList<QObject *> _autoReleaseObjects;
list<string> ConvertQStringList(QStringList list);
private Q_SLOTS:
void extractBotNames();
}; };
class CTranslationManagerContext: public Core::IContext class CTranslationManagerContext: public Core::IContext
@ -71,7 +67,7 @@ class CTranslationManagerContext: public Core::IContext
public: public:
CTranslationManagerContext(QObject *parent = 0): IContext(parent) CTranslationManagerContext(QObject *parent = 0): IContext(parent)
{ {
m_simpleViewer = new CSimpleViewer(); m_MainWindow = new CMainWindow();
} }
virtual ~CTranslationManagerContext() {} virtual ~CTranslationManagerContext() {}
@ -90,18 +86,18 @@ public:
} }
virtual QWidget *widget() virtual QWidget *widget()
{ {
return m_simpleViewer; return m_MainWindow;
} }
virtual QUndoStack *undoStack() virtual QUndoStack *undoStack()
{ {
return m_simpleViewer->m_undoStack; return m_MainWindow->m_undoStack;
} }
virtual void open() virtual void open()
{ {
} }
CSimpleViewer *m_simpleViewer; CMainWindow *m_MainWindow;
}; };

View file

@ -68,7 +68,7 @@ QWidget *CTranslationManagerSettingsPage::createPage(QWidget *parent)
{ {
_currentPage = new QWidget(parent); _currentPage = new QWidget(parent);
_ui.setupUi(_currentPage); _ui.setupUi(_currentPage);
readSettings(); readSettings();
connect(_ui.paths_add, SIGNAL(clicked()), this, SLOT(pathAdd())); connect(_ui.paths_add, SIGNAL(clicked()), this, SLOT(pathAdd()));
connect(_ui.paths_del, SIGNAL(clicked()), this, SLOT(pathDel())); connect(_ui.paths_del, SIGNAL(clicked()), this, SLOT(pathDel()));
connect(_ui.pathsR_add, SIGNAL(clicked()), this, SLOT(pathRAdd())); connect(_ui.pathsR_add, SIGNAL(clicked()), this, SLOT(pathRAdd()));
@ -79,8 +79,8 @@ QWidget *CTranslationManagerSettingsPage::createPage(QWidget *parent)
connect(_ui.filter_del, SIGNAL(clicked()), this, SLOT(filterDel())); connect(_ui.filter_del, SIGNAL(clicked()), this, SLOT(filterDel()));
connect(_ui.lang_add, SIGNAL(clicked()), this, SLOT(languageAdd())); connect(_ui.lang_add, SIGNAL(clicked()), this, SLOT(languageAdd()));
connect(_ui.lang_del, SIGNAL(clicked()), this, SLOT(languageDel())); connect(_ui.lang_del, SIGNAL(clicked()), this, SLOT(languageDel()));
connect(_ui.translation_add, SIGNAL(clicked()), this, SLOT(translationAdd())); connect(_ui.translation_add, SIGNAL(clicked()), this, SLOT(translationAdd()));
connect(_ui.work_add, SIGNAL(clicked()), this, SLOT(workAdd())); connect(_ui.work_add, SIGNAL(clicked()), this, SLOT(workAdd()));
return _currentPage; return _currentPage;
} }
@ -218,13 +218,13 @@ void CTranslationManagerSettingsPage::readSettings()
pathsR = settings->value("pathsR").toStringList(); /* pathsR */ pathsR = settings->value("pathsR").toStringList(); /* pathsR */
georges = settings->value("georges").toStringList(); /* georges */ georges = settings->value("georges").toStringList(); /* georges */
filters = settings->value("filters").toStringList(); /* filters */ filters = settings->value("filters").toStringList(); /* filters */
languages = settings->value("languages").toStringList(); /* languages */ languages = settings->value("trlanguages").toStringList(); /* languages */
ligo = settings->value("ligo").toString(); ligo = settings->value("ligo").toString();
translation = settings->value("translation").toString(); translation = settings->value("translation").toString();
work = settings->value("work").toString(); work = settings->value("work").toString();
settings->endGroup(); settings->endGroup();
/* paths */ // paths
Q_FOREACH(QString path, paths) Q_FOREACH(QString path, paths)
{ {
QListWidgetItem *newItem = new QListWidgetItem; QListWidgetItem *newItem = new QListWidgetItem;
@ -232,7 +232,7 @@ void CTranslationManagerSettingsPage::readSettings()
newItem->setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); newItem->setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
_ui.paths_list->addItem(newItem); _ui.paths_list->addItem(newItem);
} }
/* pathsR */ // pathsR
Q_FOREACH(QString pathR, pathsR) Q_FOREACH(QString pathR, pathsR)
{ {
QListWidgetItem *newItem = new QListWidgetItem; QListWidgetItem *newItem = new QListWidgetItem;
@ -240,7 +240,7 @@ void CTranslationManagerSettingsPage::readSettings()
newItem->setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); newItem->setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
_ui.pathsR_list->addItem(newItem); _ui.pathsR_list->addItem(newItem);
} }
/* georges */ // georges
Q_FOREACH(QString george, georges) Q_FOREACH(QString george, georges)
{ {
QListWidgetItem *newItem = new QListWidgetItem; QListWidgetItem *newItem = new QListWidgetItem;
@ -248,7 +248,7 @@ void CTranslationManagerSettingsPage::readSettings()
newItem->setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); newItem->setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
_ui.georges_list->addItem(newItem); _ui.georges_list->addItem(newItem);
} }
/* filter */ // filter
Q_FOREACH(QString filter, filters) Q_FOREACH(QString filter, filters)
{ {
QListWidgetItem *newItem = new QListWidgetItem; QListWidgetItem *newItem = new QListWidgetItem;
@ -256,7 +256,7 @@ void CTranslationManagerSettingsPage::readSettings()
newItem->setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); newItem->setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
_ui.filter_list->addItem(newItem); _ui.filter_list->addItem(newItem);
} }
/* languages */ // languages
Q_FOREACH(QString lang, languages) Q_FOREACH(QString lang, languages)
{ {
QListWidgetItem *newItem = new QListWidgetItem; QListWidgetItem *newItem = new QListWidgetItem;
@ -264,11 +264,11 @@ void CTranslationManagerSettingsPage::readSettings()
newItem->setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); newItem->setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
_ui.lang_list->addItem(newItem); _ui.lang_list->addItem(newItem);
} }
/* ligo */ // ligo
_ui.ligo_edit->setText(ligo); _ui.ligo_edit->setText(ligo);
/* translation */ // translation
_ui.translation_edit->setText(translation); _ui.translation_edit->setText(translation);
/* work */ // work
_ui.work_edit->setText(work); _ui.work_edit->setText(work);
} }
@ -277,25 +277,26 @@ void CTranslationManagerSettingsPage::writeSettings()
{ {
QStringList paths, pathsR, georges, filters, languages; QStringList paths, pathsR, georges, filters, languages;
QString ligo, translation, work; QString ligo, translation, work;
/* paths */ // paths
for (int i = 0; i < _ui.paths_list->count(); ++i) for (int i = 0; i < _ui.paths_list->count(); ++i)
paths << _ui.paths_list->item(i)->text(); paths << _ui.paths_list->item(i)->text();
/* pathsR */ // pathsR
for (int i = 0; i < _ui.pathsR_list->count(); ++i) for (int i = 0; i < _ui.pathsR_list->count(); ++i)
pathsR << _ui.pathsR_list->item(i)->text(); pathsR << _ui.pathsR_list->item(i)->text();
/* georges */ // georges
for (int i = 0; i < _ui.georges_list->count(); ++i) for (int i = 0; i < _ui.georges_list->count(); ++i)
georges << _ui.georges_list->item(i)->text(); georges << _ui.georges_list->item(i)->text();
/* filters */ // filters
for (int i = 0; i < _ui.filter_list->count(); ++i) for (int i = 0; i < _ui.filter_list->count(); ++i)
filters << _ui.filter_list->item(i)->text(); filters << _ui.filter_list->item(i)->text();
/* languages */ // languages
for (int i = 0; i < _ui.lang_list->count(); ++i) for (int i = 0; i < _ui.lang_list->count(); ++i)
languages << _ui.lang_list->item(i)->text(); languages << _ui.lang_list->item(i)->text();
/* ligo path */ // ligo path
ligo = _ui.ligo_edit->text(); ligo = _ui.ligo_edit->text();
/* translations path*/ // translations path
translation = _ui.translation_edit->text(); translation = _ui.translation_edit->text();
// work path
work = _ui.work_edit->text(); work = _ui.work_edit->text();
QSettings *settings = Core::ICore::instance()->settings(); QSettings *settings = Core::ICore::instance()->settings();
@ -304,11 +305,12 @@ void CTranslationManagerSettingsPage::writeSettings()
settings->setValue("pathsR", pathsR); settings->setValue("pathsR", pathsR);
settings->setValue("georges", georges); settings->setValue("georges", georges);
settings->setValue("filters", filters); settings->setValue("filters", filters);
settings->setValue("languages", languages); settings->setValue("trlanguages", languages);
settings->setValue("ligo", ligo); settings->setValue("ligo", ligo);
settings->setValue("translation", translation); settings->setValue("translation", translation);
settings->setValue("work", work); settings->setValue("work", work);
settings->endGroup(); settings->endGroup();
settings->sync();
} }

View file

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>490</width> <width>490</width>
<height>482</height> <height>496</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -214,9 +214,9 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>9</x> <x>9</x>
<y>230</y> <y>190</y>
<width>450</width> <width>454</width>
<height>201</height> <height>161</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_5"> <layout class="QVBoxLayout" name="verticalLayout_5">
@ -280,7 +280,7 @@
<x>9</x> <x>9</x>
<y>10</y> <y>10</y>
<width>211</width> <width>211</width>
<height>221</height> <height>181</height>
</rect> </rect>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
@ -333,7 +333,7 @@
<x>240</x> <x>240</x>
<y>10</y> <y>10</y>
<width>221</width> <width>221</width>
<height>221</height> <height>181</height>
</rect> </rect>
</property> </property>
<layout class="QGridLayout" name="gridLayout_2"> <layout class="QGridLayout" name="gridLayout_2">