diff --git a/MorphereAnalyzer/sanaly1.cpp b/MorphereAnalyzer/sanaly1.cpp index 9a22bcc..3a5dd15 100644 --- a/MorphereAnalyzer/sanaly1.cpp +++ b/MorphereAnalyzer/sanaly1.cpp @@ -1549,7 +1549,7 @@ bool SAnaly1::setListMorphere(QStringList& MorphereEN, QStringList& MorphereKO) QString str = in.readLine(); - if(str.at(0) == "#") + if(str.at(0) == '#') { } else diff --git a/MorphereAnalyzer/sdictionary.cpp b/MorphereAnalyzer/sdictionary.cpp new file mode 100644 index 0000000..877cda1 --- /dev/null +++ b/MorphereAnalyzer/sdictionary.cpp @@ -0,0 +1,707 @@ +#include "sdictionary.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../Json/sjson.h" +#include "../common.h" +#include +/* +QSqlDatabase dbWeb = QSqlDatabase::addDatabase("QMYSQL"); +dbWeb.setHostName("db.big-bird.co.kr"); +dbWeb.setUserName("concepters"); +dbWeb.setPassword("con97996655"); +dbWeb.setDatabaseName("dbconcepters"); +*/ + +#define D_NOT_SELECT -1 + +#define SAFE_DELETE(x) if(x != NULL) { delete x; x = NULL; } +#define SAFE_DELETEARRAY(x) if(x != NULL) { delete [] x; x = NULL; } +#define SAFE_RELEASE(x) if(x != NULL) { x->Release(); x = NULL; } + +SDictionary::SDictionary(QWidget *parent) + : QWidget(parent) +{ + + if(!setListMorphere(m_strlistMorphere, m_strlistMorphereko)) + { + m_strlistMorphere << "NNG" <<"NNP"<<"NNB"<<"NNBC"<<"NR"<<"NP"<<"VV"<<"VA"<<"VX"<<"VCP"<<"VCN"<<"MM"<<"MAG"<<"MAJ"<<"IC"<<"JKS"<<"JKC"<<"JKG"<<"JKO"<<"JKB"<<"JKV"<<"JKQ"<<"JX"<<"JC"<<"EP"<<"EF"<<"EC"<<"ETN"<<"ETM"<<"XPN"<<"XSN"<<"XSV"<<"XSA"<<"XR"<<"SF"<<"SE"<<"SSO"<<"SSC"<<"SC"<<"SY"<<"SL"<<"SH"<<"SN"; + m_strlistMorphereko << "NNG" <<"NNP"<<"NNB"<<"NNBC"<<"NR"<<"NP"<<"VV"<<"VA"<<"VX"<<"VCP"<<"VCN"<<"MM"<<"MAG"<<"MAJ"<<"IC"<<"JKS"<<"JKC"<<"JKG"<<"JKO"<<"JKB"<<"JKV"<<"JKQ"<<"JX"<<"JC"<<"EP"<<"EF"<<"EC"<<"ETN"<<"ETM"<<"XPN"<<"XSN"<<"XSV"<<"XSA"<<"XR"<<"SF"<<"SE"<<"SSO"<<"SSC"<<"SC"<<"SY"<<"SL"<<"SH"<<"SN"; + } + +// qDebug() << m_strlistMorphere.size(); +// qDebug() << m_strlistMorphereko.size(); + + if(!setListMorphereHeader(m_strListHead)) + { + m_strListHead << "Keyword" << "LeftContextID" << "RightContextID" << "Cost" << "WordClass" << "SubWordClass" << "Final Consonant" << "Keyword" << "Compound" << "etc" << "etc" << "etc"; + } + QVBoxLayout *vMainLayout = new QVBoxLayout; + vMainLayout->addWidget(setMenuWidget()); + vMainLayout->setAlignment(Qt::AlignVCenter); + QVBoxLayout *vboxlayout = new QVBoxLayout; + QHBoxLayout *hboxlayout = new QHBoxLayout; + + /* + QGroupBox *gBox = setMorphereList(); + QGroupBox *gDate = setDate(); + QGroupBox *gFilter = setFilter(); + QGroupBox *gOther = setOther(); + QGroupBox *gSort = setSort(); + QGroupBox *gDictionary = setDictionary(); + */ + + QGroupBox *gCostCalculator = setCostCalculatorWidgets(); + QGroupBox *gCsvtoDic = setCsvToDicWidgets(); + QGroupBox *gAddKeyword = setAddKeywordWidgets(); + QGroupBox *gFileName = setFileNameWidgets(); + + hboxlayout->addWidget(gCostCalculator,3); + hboxlayout->addWidget(gCsvtoDic,3); + vboxlayout->addWidget(gAddKeyword,2); + vboxlayout->addWidget(gFileName, 0); + vMainLayout->addLayout(hboxlayout, 2); + vMainLayout->addLayout(vboxlayout, 2); + + +/* + m_ptwData = new QTabWidget; + m_ptwData->setTabsClosable(true); + connect(m_ptwData,SIGNAL(tabCloseRequested(int)),this,SLOT(CloseTab(int))); + connect(m_ptwData,SIGNAL(tabBarDoubleClicked(int)),this,SLOT(DoubleClickTab(int))); + AddTable("Start"); +*/ + m_pstTable = new STable; + + + vMainLayout->addWidget(m_pstTable, 13); + setLayout(vMainLayout); + FileNew(); +} + + +QGroupBox *SDictionary::setFileNameWidgets() +{ + QHBoxLayout *hlayout = new QHBoxLayout; + + m_plFileName = new QLabel; + hlayout->addWidget(m_plFileName); + + QGroupBox *groupBox = new QGroupBox(tr("File Name")); + + groupBox->setCheckable(true); + groupBox->setLayout(hlayout); + return groupBox; + +} + +QGroupBox *SDictionary::setCostCalculatorWidgets() +{ + QHBoxLayout *hlayout1 = new QHBoxLayout; + QHBoxLayout *hlayout2 = new QHBoxLayout; + QHBoxLayout *hlayout3 = new QHBoxLayout; + QVBoxLayout *vlayout = new QVBoxLayout; + + m_pleCCOpen = new QLineEdit; + m_pleCCSave = new QLineEdit; + + QPushButton *p_pbOpen = new QPushButton; + QPushButton *p_pbSave = new QPushButton; + QPushButton *p_pbCalc = new QPushButton; + + p_pbOpen->setText("Open"); + p_pbSave->setText("Save"); + p_pbCalc->setText("Calculate"); + + hlayout1->addWidget(new QLabel("Open : ")); + hlayout1->addWidget(m_pleCCOpen); + hlayout1->addWidget(p_pbOpen); + + hlayout2->addWidget(new QLabel("Save : ")); + hlayout2->addWidget(m_pleCCSave); + hlayout2->addWidget(p_pbSave); + + hlayout3->addWidget(p_pbCalc); + + vlayout->addLayout(hlayout1); + //vlayout->addLayout(hlayout2); + vlayout->addLayout(hlayout3); + + QGroupBox *groupBox = new QGroupBox(tr("Calculate Cost")); + connect(p_pbOpen, SIGNAL(released()),this, SLOT(OpenCalc())); + connect(p_pbCalc, SIGNAL(released()),this, SLOT(ExecCalc())); + + + groupBox->setCheckable(true); + groupBox->setLayout(vlayout); + return groupBox; +} + + + +QGroupBox *SDictionary::setCsvToDicWidgets() +{ + QHBoxLayout *hlayout1 = new QHBoxLayout; + QHBoxLayout *hlayout2 = new QHBoxLayout; + QHBoxLayout *hlayout3 = new QHBoxLayout; + QVBoxLayout *vlayout = new QVBoxLayout; + + m_pleCsvToDicOpen = new QLineEdit; + m_pleCsvToDicSave = new QLineEdit; + + QPushButton *p_pbOpen = new QPushButton; + QPushButton *p_pbSave = new QPushButton; + QPushButton *p_pbCalc = new QPushButton; + + p_pbOpen->setText("Open"); + p_pbSave->setText("Save"); + p_pbCalc->setText("Convert CSV to DIC"); + + hlayout1->addWidget(new QLabel("Open : ")); + hlayout1->addWidget(m_pleCsvToDicOpen); + hlayout1->addWidget(p_pbOpen); + + hlayout2->addWidget(new QLabel("Save : ")); + hlayout2->addWidget(m_pleCsvToDicSave); + hlayout2->addWidget(p_pbSave); + + hlayout3->addWidget(p_pbCalc); + + vlayout->addLayout(hlayout1); + //vlayout->addLayout(hlayout2); + vlayout->addLayout(hlayout3); + + QGroupBox *groupBox = new QGroupBox(tr("Convert CSV to DIC")); + connect(p_pbOpen, SIGNAL(released()),this, SLOT(OpenCsv())); + connect(p_pbCalc, SIGNAL(released()),this, SLOT(ExecCsv())); + + + groupBox->setCheckable(true); + + groupBox->setLayout(vlayout); + return groupBox; +} + + +void SDictionary::ExecCalc() +{ + QString strFilename = QFileDialog::getSaveFileName(0,"Exoprt file",QDir::currentPath(), + "csv files (*.csv);;All files (*.*)",new QString("Text files (*.csv)")); + if (strFilename.toLower().right(4) != QString(".csv")) + strFilename += ".csv"; + + QProcess::startDetached("mecab-dict-index",QStringList() << "-m" << "dic/model.def" << "-d" << "dic" << "-u" << strFilename << "-f" << "utf-8" << "-t" << "utf-8" << "-a" << m_pleCCOpen->text()); + +} + + +void SDictionary::ExecCsv() +{ + QString strFilename = QFileDialog::getSaveFileName(0,"Exoprt file",QDir::currentPath(), + "Dic files (*.dic);;All files (*.*)",new QString("Dic files (*.dic)")); + if (strFilename.toLower().right(4) != QString(".dic")) + strFilename += ".dic"; + + QProcess::startDetached("mecab-dict-index",QStringList() << "-d" << "dic" << "-u" << strFilename << "-f" << "utf-8" << "-t" << "utf-8" << m_pleCsvToDicOpen->text()); +} + + + +void SDictionary::OpenCsv() +{ + QString strFilename = QFileDialog::getOpenFileName(0,"Exoprt file",QDir::currentPath(), + "csv files (*.csv);;All files (*.*)",new QString("Text files (*.csv)")); + if (strFilename.toLower().right(4) != QString(".csv")) + strFilename += ".csv"; + QFile file(strFilename); + if(!file.open(QFile::ReadOnly | QFile::Text)) return; + m_pleCsvToDicOpen->setText(strFilename) ; + file.close(); +} + +void SDictionary::OpenCalc() +{ + QString strFilename = QFileDialog::getOpenFileName(0,"Exoprt file",QDir::currentPath(), + "csv files (*.csv);;All files (*.*)",new QString("Text files (*.csv)")); + if (strFilename.toLower().right(4) != QString(".csv")) + strFilename += ".csv"; + QFile file(strFilename); + if(!file.open(QFile::ReadOnly | QFile::Text)) return; + m_pleCCOpen->setText(strFilename) ; + file.close(); +} + +QGroupBox *SDictionary::setAddKeywordWidgets() +{ + QHBoxLayout *hlayout = new QHBoxLayout; + + m_pleAddKeyword = new QLineEdit; + m_pleAddMorphere = new QLineEdit; + m_pleAddPriority = new QLineEdit; + m_cbAddMorphere = new QComboBox; + m_cbAddFinalConsonant = new QComboBox; + + + for(int i = 0; i < m_strlistMorphere.count(); i++) + { + m_cbAddMorphere->addItem(m_strlistMorphereko[i], m_strlistMorphere[i]); + } + + m_cbAddFinalConsonant->addItem("True","T"); + m_cbAddFinalConsonant->addItem("False","F"); + m_pleAddMorphere->setText(m_cbAddMorphere->currentData(Qt::UserRole).toString()); + hlayout->addWidget(new QLabel("Keyword:")); + hlayout->addWidget(m_pleAddKeyword); + hlayout->addWidget(new QLabel("Morphere:")); + hlayout->addWidget(m_cbAddMorphere); + hlayout->addWidget(m_pleAddMorphere); + hlayout->addWidget(new QLabel("Last Consonant:")); + hlayout->addWidget(m_cbAddFinalConsonant); + hlayout->addWidget(new QLabel("Cost:")); + hlayout->addWidget(m_pleAddPriority); + + + connect(m_cbAddMorphere, SIGNAL(currentIndexChanged(int)),this, SLOT(MorphereChanged())); + + + QVBoxLayout *vlayout = new QVBoxLayout; + + QPushButton *ppbAdd = new QPushButton; + ppbAdd->setText("Add"); + + + connect(ppbAdd, SIGNAL(released()),this, SLOT(AddKeyword())); + + + vlayout->addLayout(hlayout); + vlayout->addWidget(ppbAdd); + + QGroupBox *groupBox = new QGroupBox(tr("ADD Keyword")); + + groupBox->setCheckable(true); + + groupBox->setLayout(vlayout); + groupBox->setChecked(true); + return groupBox; +} + + +void SDictionary::AddKeyword() +{ + if(m_pleAddKeyword->text().length() < 1) + return; + + + m_pstTable->setRowCount(m_pstTable->rowCount() + 1); + + QStringList strList; + + strList << m_pleAddKeyword->text() << "" << ""; + if(m_pleAddPriority->text().length() < 1) + strList << ""; + else + strList << m_pleAddPriority->text(); + + strList << m_pleAddMorphere->text(); + strList << "*"; + strList << m_cbAddFinalConsonant->currentData(Qt::UserRole).toString(); + strList << m_pleAddKeyword->text(); + strList << "*" << "*" << "*" << "*"; + + + for(int i = 0; i < strList.length(); i++) + { + m_pstTable->setItem(m_pstTable->rowCount()-1,i,new QTableWidgetItem(strList.at(i))); + } + m_pleAddKeyword->clear(); + m_pleAddPriority->clear(); + +} + +void SDictionary::MorphereChanged() +{ + m_pleAddMorphere->setText(m_cbAddMorphere->currentData(Qt::UserRole).toString()); +} + +SDictionary::~SDictionary() +{ +} +QMenuBar *SDictionary::setMenuWidget() +{ + QMenuBar *pMenuBar = new QMenuBar(); + { + QMenu *pFile = pMenuBar->addMenu("File"); + connect(pFile->addAction("New"), SIGNAL(triggered()), this, SLOT(FileNew())); + pFile->addSeparator(); + connect(pFile->addAction("Open"),SIGNAL(triggered()), this, SLOT(FileOpen())); + pFile->addSeparator(); + connect(pFile->addAction("Save"),SIGNAL(triggered()), this, SLOT(FileSave())); + connect(pFile->addAction("Save As"),SIGNAL(triggered()), this, SLOT(FileSaveAs())); + pFile->addSeparator(); + connect(pFile->addAction("Close"),SIGNAL(triggered()), this, SLOT(FileClose())); + pFile->addSeparator(); + //connect(pFile->addAction("Close"),SIGNAL(triggered()), this, SLOT(FileClose())); + //connect(pFile->addAction("CSV Import"), SIGNAL(triggered()), this, SLOT(FileImport())); + //connect(pFile->addAction("CSV Export"), SIGNAL(triggered()), this, SLOT(FileExport())); + //pFile->addSeparator(); + connect(pFile->addAction("Exit"), SIGNAL(triggered()), this, SLOT(FileExit())); + } + return pMenuBar; +} + +void SDictionary::FileNew() +{ + if(m_strFileName.isEmpty()) + { + if(m_pstTable->rowCount() > 0) + { + QMessageBox msg; + msg.setText("Please choose..."); + msg.setModal(true); + QPushButton *pbNew = msg.addButton("New",QMessageBox::ActionRole); + QPushButton *pbSave = msg.addButton("Save",QMessageBox::ActionRole); + QPushButton *pbCancel = msg.addButton("Cancel",QMessageBox::ActionRole); + msg.exec(); + if (msg.clickedButton() == pbNew){ } + else if (msg.clickedButton() == pbSave){ if(!FileSave()) return; } + else if (msg.clickedButton() == pbCancel) return; + } + } + else + { + QMessageBox msg; + msg.setText("Please choose..."); + msg.setModal(true); + QPushButton *pbNew = msg.addButton("New",QMessageBox::ActionRole); + QPushButton *pbSave = msg.addButton("Save",QMessageBox::ActionRole); + QPushButton *pbSaveAs = msg.addButton("Save As",QMessageBox::ActionRole); + QPushButton *pbCancel = msg.addButton("Cancel",QMessageBox::ActionRole); + msg.exec(); + if (msg.clickedButton() == pbNew){ } + else if (msg.clickedButton() == pbSave) { if(!FileSave()) return; } + else if (msg.clickedButton() == pbSaveAs) { if(!FileSaveAs()) return; } + else if (msg.clickedButton() == pbCancel) return; + } + + m_pstTable->clear(); + m_pstTable->setRowCount(0); + m_pstTable->setColumnCount(m_strListHead.size()); + int i = 0; + foreach(QString str, m_strListHead) + m_pstTable->setHorizontalHeaderItem(i++,new QTableWidgetItem(str)); + + m_strFileName.clear(); + m_plFileName->setText(m_strFileName); +} + +/* +void SDictionary::MSGBox() +{ + if(!m_strFileName.isEmpty()) + { + QMessageBox msg; + msg.setText("Please choose..."); + msg.setModal(true); + QPushButton *pbAll = msg.addButton("All",QMessageBox::ActionRole); + QPushButton *pbBody = msg.addButton("Body",QMessageBox::ActionRole); + QPushButton *pbReply = msg.addButton("Reply",QMessageBox::ActionRole); + msg.exec(); + if (msg.clickedButton() == pbAll) DataReload("data_" + item->data(Qt::UserRole).toString(),STable::E_ARTICLE_ALL); + else if (msg.clickedButton() == pbBody) DataReload("data_" + item->data(Qt::UserRole).toString(),STable::E_ARTICLE_BODY); + else if (msg.clickedButton() == pbReply) DataReload("data_" + item->data(Qt::UserRole).toString(),STable::E_ARTICLE_REPLY); + } +} + +*/ + +void SDictionary::FileOpen() +{ + if(m_strFileName.isEmpty()) + { + if(m_pstTable->rowCount() > 0) + { + QMessageBox msg; + msg.setText("Please choose..."); + msg.setModal(true); + QPushButton *pbOpen = msg.addButton("Open",QMessageBox::ActionRole); + QPushButton *pbSave = msg.addButton("Save",QMessageBox::ActionRole); + QPushButton *pbCancel = msg.addButton("Cancel",QMessageBox::ActionRole); + msg.exec(); + if (msg.clickedButton() == pbOpen){ } + else if (msg.clickedButton() == pbSave) { if(!FileSave()) return; } + else if (msg.clickedButton() == pbCancel) return; + } + } + else + { + QMessageBox msg; + msg.setText("Please choose..."); + msg.setModal(true); + QPushButton *pbOpen = msg.addButton("Open",QMessageBox::ActionRole); + QPushButton *pbSave = msg.addButton("Save",QMessageBox::ActionRole); + QPushButton *pbSaveAs = msg.addButton("Save As",QMessageBox::ActionRole); + QPushButton *pbCancel = msg.addButton("Cancel",QMessageBox::ActionRole); + msg.exec(); + if (msg.clickedButton() == pbOpen){ } + else if (msg.clickedButton() == pbSave) { if(!FileSave()) return; } + else if (msg.clickedButton() == pbSaveAs) { if(!FileSaveAs()) return; } + else if (msg.clickedButton() == pbCancel) return; + } + + QString strFilename = QFileDialog::getOpenFileName(0,"CSV file",QDir::currentPath(), + "csv files (*.csv);;All files (*.*)",new QString("CSV files (*.csv)")); + + QFile file(strFilename); + + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; + FileNew(); + + QTextStream in(&file); + + in.setCodec("utf-8"); + int nLine = 0; + while(!in.atEnd()) + { + in.readLine(); + nLine++; + } + in.seek(0); + + m_pstTable->setRowCount(nLine); + + int j = 0; + while(!in.atEnd()) + { + QString str = in.readLine(); + QStringList strlist = str.split(","); + + for(int i = 0; i < strlist.length(); i++) + { + m_pstTable->setItem(j,i,new QTableWidgetItem(strlist.at(i))); + } + j++; + } + file.close(); + m_strFileName = strFilename; + m_plFileName->setText(m_strFileName); +} + + + +bool SDictionary::FileSave() +{ + if(m_strFileName.isEmpty()) + { + return FileSaveAs(); + } + else + { + QFile file(m_strFileName); + if(!file.open(QFile::WriteOnly | QFile::Text)) return false; + + QTextStream out(&file); + + out.setCodec("utf-8"); + + for (int nCount = 0 ; nCount < m_pstTable->rowCount(); nCount++ ) + { + QString str; + for (int nColumnCount = 0;nColumnCount < m_pstTable->columnCount() ;nColumnCount++ ) + { + QString strtemp = m_pstTable->item(nCount,nColumnCount)->text().trimmed(); + str.append(strtemp); + str.append(","); + } + str = str.left(str.length() - 1); + out << str << endl; + } + file.close(); + m_plFileName->setText(m_strFileName); + return true; + } + m_plFileName->setText(m_strFileName); + return false; +} + + +bool SDictionary::FileSaveAs() +{ + + QString strFilename = QFileDialog::getSaveFileName(0,"Exoprt file",QDir::currentPath(), + "csv files (*.csv);;All files (*.*)",new QString("Text files (*.csv)")); + if(strFilename.isEmpty()) + { + return false; + } + if (strFilename.toLower().right(4) != QString(".csv")) + strFilename += ".csv"; + QFile file(strFilename); + if(!file.open(QFile::WriteOnly | QFile::Text)) return false; + + QTextStream out(&file); + + out.setCodec("utf-8"); + + for (int nCount = 0 ; nCount < m_pstTable->rowCount(); nCount++ ) + { + QString str; + for (int nColumnCount = 0;nColumnCount < m_pstTable->columnCount() ;nColumnCount++ ) + { + QString strtemp = m_pstTable->item(nCount,nColumnCount)->text().trimmed(); + str.append(strtemp); + str.append(","); + } + str = str.left(str.length() - 1); + out << str << endl; + } + + file.close(); + m_strFileName = strFilename; + m_plFileName->setText(m_strFileName); + return true; +} + + +void SDictionary::FileClose() +{ + if(m_strFileName.isEmpty()) + { + if(m_pstTable->rowCount() > 0) + { + QMessageBox msg; + msg.setText("Please choose..."); + msg.setModal(true); + QPushButton *pbNew = msg.addButton("Close",QMessageBox::ActionRole); + QPushButton *pbSave = msg.addButton("Save",QMessageBox::ActionRole); + QPushButton *pbCancel = msg.addButton("Cancel",QMessageBox::ActionRole); + msg.exec(); + if (msg.clickedButton() == pbNew){ } + else if (msg.clickedButton() == pbSave) { if(!FileSave()) return; } + else if (msg.clickedButton() == pbCancel) return; + } + } + else + { + QMessageBox msg; + msg.setText("Please choose..."); + msg.setModal(true); + QPushButton *pbNew = msg.addButton("Close",QMessageBox::ActionRole); + QPushButton *pbSave = msg.addButton("Save",QMessageBox::ActionRole); + QPushButton *pbSaveAs = msg.addButton("Save As",QMessageBox::ActionRole); + QPushButton *pbCancel = msg.addButton("Cancel",QMessageBox::ActionRole); + msg.exec(); + if (msg.clickedButton() == pbNew){ } + else if (msg.clickedButton() == pbSave) { if(!FileSave()) return; } + else if (msg.clickedButton() == pbSaveAs) { if(!FileSaveAs()) return; } + else if (msg.clickedButton() == pbCancel) return; + } + + m_pstTable->clear(); + m_pstTable->setRowCount(0); + m_pstTable->setColumnCount(m_strListHead.size()); + int i = 0; + foreach(QString str, m_strListHead) + m_pstTable->setHorizontalHeaderItem(i++,new QTableWidgetItem(str)); + + m_strFileName.clear(); + m_plFileName->setText(m_strFileName); +} + +void SDictionary::FileExit() +{ + this->hide(); +} + +struct SCount +{ + SCount() + { + m_str.clear(); + m_nCount = 0; + } + + SCount(QString _str) + { + m_str = _str; + m_nCount = 1; + } + QString m_str; + int m_nCount; +}; + + + + +bool SDictionary::setListMorphere(QStringList& MorphereEN, QStringList& MorphereKO) +{ + QFile fHeader("morpherelist.txt"); + if (!fHeader.open(QIODevice::ReadOnly | QIODevice::Text)) return false; + + QTextStream in(&fHeader); + + QString str = in.readLine(); + + if(str.at(0) == '#') + { + } + else + { + qDebug() << "The wrong file is read"; + return false; + } + + while(!in.atEnd()) + { + str = in.readLine(); + QStringList strList = str.trimmed().split("@",QString::SkipEmptyParts); + if(strList.isEmpty()) + break; + if(strList.size() < 2) + return false; + MorphereEN << strList.at(0).trimmed().replace("\"","").trimmed(); + MorphereKO << strList.at(1).trimmed().replace("\"","").trimmed(); + } + + return true; +} + +bool SDictionary::setListMorphereHeader(QStringList& MHeader) +{ + QFile fHeader("mcolumn.txt"); + if (!fHeader.open(QIODevice::ReadOnly | QIODevice::Text)) return false; + + QTextStream in(&fHeader); + + QString str = in.readLine(); + + if(str.at(0) == '#') + { + } + else + { + qDebug() << "The wrong file is"; + return false; + } + + while(!in.atEnd()) + { + str = in.readLine(); + QStringList strList = str.trimmed().split("@",QString::SkipEmptyParts); + if(strList.isEmpty()) + break; + if(strList.size() < 1) + return false; + MHeader << strList.at(0).trimmed().replace("\"","").trimmed(); + } + + return true; +} diff --git a/MorphereAnalyzer/sdictionary.h b/MorphereAnalyzer/sdictionary.h new file mode 100644 index 0000000..90e141a --- /dev/null +++ b/MorphereAnalyzer/sdictionary.h @@ -0,0 +1,88 @@ +#ifndef SDICTIONARY +#define SDICTIONARY + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "stable.h" + +class SDictionary : public QWidget +{ + Q_OBJECT +public: + SDictionary(QWidget *parent = 0); + ~SDictionary(); + +private: + // MorphereList + + QStringList m_strlistMorphere; + QStringList m_strlistMorphereko; + + //belows are dictionary components + QLineEdit *m_pleCCOpen; + QLineEdit *m_pleCCSave; + + QLineEdit *m_pleCsvToDicOpen; + QLineEdit *m_pleCsvToDicSave; + + QLineEdit *m_pleAddKeyword; + QLineEdit *m_pleAddMorphere; + QLineEdit *m_pleAddPriority; + QComboBox *m_cbAddMorphere; + QComboBox *m_cbAddFinalConsonant; + + QLabel *m_plFileName; + + STable *m_pstTable; + QStringList m_strListHead; + + QString m_strFileName; + + +private: + QMenuBar *setMenuWidget(); + + QGroupBox *setCostCalculatorWidgets(); + QGroupBox *setCsvToDicWidgets(); + QGroupBox *setAddKeywordWidgets(); + QGroupBox *setFileNameWidgets(); + + bool setListMorphere(QStringList& MorphereEN, QStringList& MorphereKO); + bool setListMorphereHeader(QStringList& MHeader); + +public slots: + void FileNew(); + void FileOpen(); + bool FileSave(); + bool FileSaveAs(); + void FileClose(); + void FileExit(); + + void MorphereChanged(); + void AddKeyword(); + void OpenCsv(); + void OpenCalc(); + void ExecCsv(); + void ExecCalc(); +}; + +#endif // SDICTIONARY +