From f19ebefbe69b326d25864223bf2f6b47258c25b1 Mon Sep 17 00:00:00 2001 From: cemycc Date: Mon, 27 Jun 2011 03:02:21 +0300 Subject: [PATCH] Changed: #1307 Added option to extract the botnames from primitives. --HG-- branch : gsoc2011-translationovqt --- .../translation_manager/extract_bot_names.cpp | 28 ++- .../translation_manager_main_window.cpp | 192 +++++++++++++----- .../translation_manager_main_window.h | 2 + 3 files changed, 161 insertions(+), 61 deletions(-) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_bot_names.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_bot_names.cpp index a5e5690ad..66d7d1c69 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_bot_names.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/extract_bot_names.cpp @@ -155,6 +155,16 @@ map getSimpleNames() return SimpleNames; } +void cleanSimpleNames() +{ + SimpleNames.clear(); +} + +void cleanGenericNames() +{ + GenericNames.clear(); +} + string removeAndStoreFunction(const std::string &fullName) { string::size_type pos = fullName.find("$"); @@ -228,7 +238,7 @@ void addSimpleName(const std::string &name, const std::string &sheetName) } } -int extractBotNamesAll(map > config_paths, string ligo_class_file, string trans_path, string work_path) +void setPathsForPrimitives(map > config_paths, string ligo_class_file) { for (std::list::iterator it = config_paths["paths"].begin(); it != config_paths["paths"].end(); ++it) { @@ -265,8 +275,11 @@ int extractBotNamesAll(map > config_paths, string ligo_class LigoConfig.readPrimitiveClass(ligoPath.c_str(), false); NLLIGO::Register(); - CPrimitiveContext::instance().CurrentLigoConfig = &LigoConfig; + CPrimitiveContext::instance().CurrentLigoConfig = &LigoConfig; +} +void extractBotNamesFromPrimitives() +{ //------------------------------------------------------------------- // ok, ready for the real work, // first, read the primitives files and parse the primitives @@ -429,8 +442,13 @@ int extractBotNamesAll(map > config_paths, string ligo_class } } } - } - + } +} + +int extractBotNamesAll(map > config_paths, string ligo_class_file, string trans_path, string work_path) +{ + + /* //------------------------------------------------------------------- // step 2 : load the reference file @@ -760,7 +778,7 @@ int extractBotNamesAll(map > config_paths, string ligo_class CI18N::writeTextFile(trans_path_file, s, false); s = prepareExcelSheet(fcts); CI18N::writeTextFile(title_path_file, s, false); - +*/ return 0; } diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.cpp index 1866b3975..946ed78fe 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.cpp @@ -48,8 +48,13 @@ struct TEntryInfo }; set getGenericNames(); +void cleanGenericNames(); map getSimpleNames(); -int extractBotNamesAll(map > config_paths, string ligo_class_file, string trans_path, string work_path); +void cleanSimpleNames(); +void setPathsForPrimitives(map > config_paths, string ligo_class_file); +void extractBotNamesFromPrimitives(); +string cleanupName(const std::string &name); +ucstring cleanupUcName(const ucstring &name); namespace Plugin { @@ -61,6 +66,9 @@ CMainWindow::CMainWindow(QWidget *parent) _ui.mdiArea->closeAllSubWindows(); connect(_ui.mdiArea, SIGNAL(subWindowActivated(QMdiSubWindow*)),this, SLOT(activeSubWindowChanged())); + // set extraction scripts counters + execution_count["extract_bot_names"] = 0; + readSettings(); createToolbar(); m_undoStack = new QUndoStack(this); @@ -68,28 +76,25 @@ CMainWindow::CMainWindow(QWidget *parent) void CMainWindow::createToolbar() { - // Tools menu - Core::IMenuManager *menuManager = Core::ICore::instance()->menuManager(); - QMenu *translationManagerMenu = new QMenu("Translation Manager"); - QAction *extractBotNamesAct = translationManagerMenu->addAction("Extract bot names"); - extractBotNamesAct->setStatusTip(tr("Extract bot names from primitives")); - QMenu *toolMenu = menuManager->menu(Core::Constants::M_TOOLS); - toolMenu->addMenu(translationManagerMenu); - - // File menu openAct = new QAction(QIcon(Core::Constants::ICON_OPEN), "&Open...", this); _ui.toolBar->addAction(openAct); - connect(openAct, SIGNAL(triggered()), this, SLOT(open())); - + connect(openAct, SIGNAL(triggered()), this, SLOT(open())); saveAct = new QAction(QIcon(Core::Constants::ICON_SAVE), "&Save...", this); _ui.toolBar->addAction(saveAct); - connect(saveAct, SIGNAL(triggered()), this, SLOT(save())); - + connect(saveAct, SIGNAL(triggered()), this, SLOT(save())); saveAsAct = new QAction(QIcon(Core::Constants::ICON_SAVE_AS), "&Save as...", this); _ui.toolBar->addAction(saveAsAct); connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs())); + // Tools menu + QMenu *wordsExtractionMenu = new QMenu("&Words extraction..."); + wordsExtractionMenu->setIcon(QIcon(Core::Constants::ICON_SETTINGS)); + _ui.toolBar->addAction(wordsExtractionMenu->menuAction()); + QAction *extractBotNamesAct = wordsExtractionMenu->addAction("&Extract bot names..."); + extractBotNamesAct->setStatusTip(tr("Extract bot names from primitives.")); + connect(extractBotNamesAct, SIGNAL(triggered()), this, SLOT(extractBotNames())); + // Windows menu windowMapper = new QSignalMapper(this); connect(windowMapper, SIGNAL(mapped(QWidget*)), this, SLOT(setActiveSubWindow(QWidget*))); @@ -97,8 +102,6 @@ void CMainWindow::createToolbar() windowMenu->setIcon(QIcon(Core::Constants::ICON_PILL)); _ui.toolBar->addAction(windowMenu->menuAction()); connect(windowMenu, SIGNAL(aboutToShow()), this, SLOT(updateWindowsList())); - - } void CMainWindow::activeSubWindowChanged() @@ -136,32 +139,60 @@ void CMainWindow::open() STRING_MANAGER::TWorksheet wk_file; if(loadExcelSheet(file_name.toStdString(), wk_file, true) == true) { + bool hasHashValue = false; QTableWidget *wk_table = new QTableWidget(); wk_table->setToolTip(file_name); wk_table->setWindowFilePath(file_name); - wk_table->setColumnCount(wk_file.ColCount); + if(wk_file.getData(0, 0) == ucstring("*HASH_VALUE")) + { + wk_table->setColumnCount(wk_file.ColCount - 1); + hasHashValue = true; + } else { + wk_table->setColumnCount(wk_file.ColCount); + } wk_table->setRowCount(wk_file.size() - 1); // read columns name + for(unsigned int i = 0; i < wk_file.ColCount; i++) { - QTableWidgetItem *col = new QTableWidgetItem(); - ucstring col_name = wk_file.getData(0, i); - col->setText(tr(col_name.toString().c_str())); - - wk_table->setHorizontalHeaderItem(i, col); + if(hasHashValue && i == 0) + { + // we don't show the column with hash value + } else { + QTableWidgetItem *col = new QTableWidgetItem(); + ucstring col_name = wk_file.getData(0, i); + col->setText(tr(col_name.toString().c_str())); + if(hasHashValue) + { + wk_table->setHorizontalHeaderItem(i - 1, col); + } else { + wk_table->setHorizontalHeaderItem(i, col); + } + } } // read rows + for(unsigned int i = 1; i < wk_file.size(); i++) { for(unsigned int j = 0; j < wk_file.ColCount; j++) { - QTableWidgetItem *row = new QTableWidgetItem(); - ucstring row_value = wk_file.getData(i, j); - row->setText(tr(row_value.toString().c_str())); - - wk_table->setItem(i - 1, j, row); - } - } + if(hasHashValue && j == 0) + { + // we don't show the column with hash value + } else { + QTableWidgetItem *row = new QTableWidgetItem(); + ucstring row_value = wk_file.getData(i, j); + row->setText(tr(row_value.toString().c_str())); + if(hasHashValue) + { + wk_table->setItem(i - 1, j - 1, row); + } else { + wk_table->setItem(i - 1, j, row); + } + } + } + } + QMdiSubWindow *sub_window = new QMdiSubWindow(_ui.mdiArea); sub_window->setWidget(wk_table); wk_table->resizeColumnsToContents(); @@ -170,7 +201,6 @@ void CMainWindow::open() sub_window->activateWindow(); // set editor signals connect(wk_table, SIGNAL(cellChanged(int,int) ), this, SLOT(sheetEditorChanged(int,int))); - // windows menu updateWindowsList(); } else { QErrorMessage error_settings; @@ -284,10 +314,81 @@ void CMainWindow::saveAs() } } - - QErrorMessage error_settings; - error_settings.showMessage( file_name); - error_settings.exec(); +} + +void CMainWindow::extractBotNames() +{ + if(verifySettings() == true) + { + QMdiSubWindow *current_window = _ui.mdiArea->currentSubWindow(); + if(QString(current_window->widget()->metaObject()->className()) == "QTableWidget") // Sheet Editor + { + if(execution_count["extract_bot_names"] == 0) + setPathsForPrimitives(config_paths, ligo_path); + extractBotNamesFromPrimitives(); + execution_count["extract_bot_names"] = execution_count["extract_bot_names"] + 1; + + QWidget *subwindow_widget = current_window->widget(); + QTableWidget *table_editor = qobject_cast(subwindow_widget); + // get SimpleNames + { + map SimpleNames = getSimpleNames(); + map::iterator it(SimpleNames.begin()), last(SimpleNames.end()); + + for (; it != last; ++it) + { + QList search_results = table_editor->findItems(tr(it->first.c_str()), Qt::MatchExactly); + if(search_results.size() == 0) + { + const int currentRow = table_editor->rowCount(); + table_editor->setRowCount(currentRow + 1); + QTableWidgetItem *bot_name_row = new QTableWidgetItem(); + bot_name_row->setText(tr(it->first.c_str())); + bot_name_row->setBackgroundColor(QColor("#F75D59")); + table_editor ->setItem(currentRow, 0, bot_name_row); + QTableWidgetItem *translation_name_row = new QTableWidgetItem(); + translation_name_row->setBackgroundColor(QColor("#F75D59")); + translation_name_row->setText(tr(it->first.c_str())); + table_editor ->setItem(currentRow , 1, translation_name_row); + QTableWidgetItem *sheet_name_row = new QTableWidgetItem(); + sheet_name_row->setText(tr(it->second.SheetName.c_str())); + sheet_name_row->setBackgroundColor(QColor("#F75D59")); + table_editor ->setItem(currentRow, 2, sheet_name_row); + } + } + cleanSimpleNames(); + } + // get GenericNames + { + set GenericNames = getGenericNames(); + set::iterator it(GenericNames.begin()), last(GenericNames.end()); + for (; it != last; ++it) + { + string gnName = "gn_" + cleanupName(*it); + QList search_results = table_editor->findItems(tr((*it).c_str()), Qt::MatchExactly); + if(search_results.size() == 0) + { + const int currentRow = table_editor->rowCount(); + table_editor->setRowCount(currentRow + 1); + QTableWidgetItem *bot_name_row = new QTableWidgetItem(); + bot_name_row->setText(tr((*it).c_str())); + bot_name_row->setBackgroundColor(QColor("#F75D59")); + table_editor ->setItem(currentRow, 0, bot_name_row); + QTableWidgetItem *translation_name_row = new QTableWidgetItem(); + translation_name_row->setBackgroundColor(QColor("#F75D59")); + translation_name_row->setText(tr(gnName.c_str())); + table_editor ->setItem(currentRow , 1, translation_name_row); + QTableWidgetItem *sheet_name_row = new QTableWidgetItem(); + sheet_name_row->setText(" "); + sheet_name_row->setBackgroundColor(QColor("#F75D59")); + table_editor ->setItem(currentRow, 2, sheet_name_row); + } + } + cleanGenericNames(); + } + + } + } } void CMainWindow::readSettings() @@ -312,15 +413,6 @@ void CMainWindow::readSettings() settings->endGroup(); } -void CMainWindow::extractBotNames() -{ - if(verifySettings() == true) - { - - } -} - - bool CMainWindow::verifySettings() { bool count_errors = false; @@ -338,19 +430,7 @@ bool CMainWindow::verifySettings() 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; diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.h index 9d7cb8862..4df21fa0b 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/translation_manager/translation_manager_main_window.h @@ -79,6 +79,8 @@ private: string ligo_path; string translation_path; string work_path; + // counts + map execution_count; private Q_SLOTS: void extractBotNames(); void open();