diff --git a/MorphereAnalyzer/MorphereAnalyzer.pro b/MorphereAnalyzer/MorphereAnalyzer.pro index d688320..58e7d89 100644 --- a/MorphereAnalyzer/MorphereAnalyzer.pro +++ b/MorphereAnalyzer/MorphereAnalyzer.pro @@ -12,6 +12,7 @@ TARGET = MorphereAnalyzer TEMPLATE = app + SOURCES += main.cpp\ mainwindow.cpp \ widget.cpp \ diff --git a/MorphereAnalyzer/mainwindow.cpp b/MorphereAnalyzer/mainwindow.cpp index 523e53b..5db97eb 100644 --- a/MorphereAnalyzer/mainwindow.cpp +++ b/MorphereAnalyzer/mainwindow.cpp @@ -54,7 +54,6 @@ MainWindow::MainWindow() //p_qwFile = new QWidget; //p_qwAnalyzed1 = new QWidget; //p_qwText = new QWidget; - p_qwAnalyzer1 = new SAnaly1; //p_qwAnalyzer2 = new QWidget; p_qwDict = new SDictionary; diff --git a/MorphereAnalyzer/sanaly1.cpp b/MorphereAnalyzer/sanaly1.cpp index e99fe75..9a22bcc 100644 --- a/MorphereAnalyzer/sanaly1.cpp +++ b/MorphereAnalyzer/sanaly1.cpp @@ -14,6 +14,7 @@ #include "../Json/sjson.h" #include "../common.h" + /* QSqlDatabase dbWeb = QSqlDatabase::addDatabase("QMYSQL"); dbWeb.setHostName("db.big-bird.co.kr"); @@ -31,10 +32,12 @@ dbWeb.setDatabaseName("dbconcepters"); SAnaly1::SAnaly1(QWidget *parent) : QWidget(parent) { - 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(SY)"<<"외국어(SL)"<<"한자(SH)"<<"숫자(SN)"; -// qDebug() << m_strlistMorphere.size(); - qDebug() << m_strlistMorphereko.size(); + 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"; + } + QVBoxLayout *vMainLayout = new QVBoxLayout; vMainLayout->setAlignment(Qt::AlignVCenter); QVBoxLayout *vboxlayout = new QVBoxLayout; @@ -1537,3 +1540,35 @@ void SAnaly1::MemClear() m_mapViewResult.clear(); } +bool SAnaly1::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; +} diff --git a/MorphereAnalyzer/sanaly1.h b/MorphereAnalyzer/sanaly1.h index 90153b1..484d682 100644 --- a/MorphereAnalyzer/sanaly1.h +++ b/MorphereAnalyzer/sanaly1.h @@ -186,6 +186,7 @@ public slots: void MorphereListDel(); void AddDictionary(); void DelDictionary(); + bool setListMorphere(QStringList& MorphereEN, QStringList& MorphereKO); QTabWidget* getQTabWidget(); diff --git a/MorphereAnalyzer/sanalyzer.cpp b/MorphereAnalyzer/sanalyzer.cpp index 9d63ad1..78af813 100644 --- a/MorphereAnalyzer/sanalyzer.cpp +++ b/MorphereAnalyzer/sanalyzer.cpp @@ -1,6 +1,6 @@ #include "sanalyzer.h" - +#include AnalyzerThread::AnalyzerThread(QObject *parent) : QThread(parent), m_nThread(1), m_pWidget(NULL), m_nSource(0), m_bPeriod(false), m_nPeriod(0) { } @@ -144,8 +144,19 @@ void AnalyzerThread::run() if(userdict.length() < 1) { + /* char *t[] = {"RRR","-d","dic"}; int int_t = 3; + */ + + char a[] = "RRR"; + char b[] = "-d"; + char c[] = "dic"; + char *t[3]; + t[0] = a; + t[1] = b; + t[2] = c; + int int_t = 3; mecab = mecab_new(int_t, t); } @@ -153,8 +164,21 @@ void AnalyzerThread::run() { char *cstr = new char[userdict.toStdString().length() + 1]; strcpy(cstr, userdict.toStdString().c_str()); + /* + char **t = {"RRR","-d","dic","-u",cstr}; + int int_t = 5; + */ + char a[] = "RRR"; + char b[] = "-d"; + char c[] = "dic"; + char d[] = "-u"; - char *t[] = {"RRR","-d","dic","-u",cstr}; + char *t[5]; + t[0] = a; + t[1] = b; + t[2] = c; + t[3] = d; + t[4] = cstr; int int_t = 5; mecab = mecab_new(int_t, t); diff --git a/MorphereAnalyzer/widget.cpp b/MorphereAnalyzer/widget.cpp index 886b72b..9fc5859 100644 --- a/MorphereAnalyzer/widget.cpp +++ b/MorphereAnalyzer/widget.cpp @@ -51,6 +51,7 @@ Widget::Widget(QWidget *parent) vlayout->addWidget(setSearchWidgets()); vlayout->addWidget(setLengthWidgets()); + vlayout->addWidget(setCounterWidgets()); vlayout->addWidget(setReplaceWidgets()); vlayout->setAlignment(Qt::AlignTop); @@ -176,7 +177,11 @@ QGroupBox *Widget::setDateWidgets() { QPushButton *pbInsert = new QPushButton("Insert"); connect(pbInsert , SIGNAL(released()),this, SLOT(SearchDate())); + QPushButton *pbModify = new QPushButton("Modify"); + connect(pbModify , SIGNAL(released()),this, SLOT(SearchDateUpdate())); + hlayout->addWidget(pbInsert); + hlayout->addWidget(pbModify); } hlayout->setAlignment(Qt::AlignLeft|Qt::AlignTop); @@ -249,13 +254,19 @@ QGroupBox *Widget::setSearchWidgets() hlayout->addLayout(vlayout); { + QVBoxLayout *vsublayout = new QVBoxLayout(); QPushButton *pbInsert = new QPushButton("Insert"); - hlayout->addWidget(pbInsert); + vsublayout->addWidget(pbInsert); connect(pbInsert, SIGNAL(released()),this, SLOT(SearchKeyword())); + + QPushButton *pbModify = new QPushButton("Modify"); + connect(pbModify , SIGNAL(released()),this, SLOT(SearchKeywordUpdate())); + vsublayout->addWidget(pbModify); + hlayout->addLayout(vsublayout); } QGroupBox *groupBox = new QGroupBox(tr("Search")); - groupBox->setLayout(hlayout); + groupBox->setLayout(hlayout); return groupBox; } @@ -286,13 +297,62 @@ QGroupBox *Widget::setLengthWidgets() { QPushButton *pbInsert = new QPushButton("Insert"); connect(pbInsert , SIGNAL(released()),this, SLOT(SearchLengthInsert())); + QPushButton *pbModify = new QPushButton("Modify"); + connect(pbModify , SIGNAL(released()),this, SLOT(SearchLengthUpdate())); hlayout->addWidget(pbInsert); + hlayout->addWidget(pbModify); } QGroupBox *groupBox = new QGroupBox(tr("Length")); groupBox->setLayout(hlayout); return groupBox; } + +QGroupBox *Widget::setCounterWidgets() +{ + QHBoxLayout *hlayout = new QHBoxLayout(); + m_pcbCounterCatalog = new QComboBox; + m_pcbCounterComp = new QComboBox; + m_pcbCounterInsDel = new QComboBox; + m_pcbCounterCntApl = new QComboBox; + m_pleCounter = new QLineEdit; + + foreach(QStringList strList,m_vecColumn) + m_pcbCounterCatalog->addItem(strList.at(E_COLUMN_NAME)); + + m_pcbCounterComp->addItem(">",QVariant(E_LENGTH_COMP_GREATER)); + m_pcbCounterComp->addItem("<",QVariant(E_LENGTH_COMP_LESS)); + m_pcbCounterComp->addItem("=",QVariant(E_LENGTH_COMP_EQUAL)); + + m_pcbCounterInsDel->addItem("Add",QVariant(0)); + m_pcbCounterInsDel->addItem("Del",QVariant(1)); + + m_pcbCounterCntApl->addItem("Count",QVariant(0)); + m_pcbCounterCntApl->addItem("Apply",QVariant(1)); + + hlayout->addWidget(new QLabel("Item:")); + hlayout->addWidget(m_pcbCounterCatalog); + hlayout->addWidget(m_pcbCounterComp); + //hlayout->addWidget(m_pcbCounterCntApl); + hlayout->addWidget(new QLabel("Count:")); + hlayout->addWidget(m_pleCounter); + hlayout->addWidget(m_pcbCounterInsDel); + { + QPushButton *pbInsert = new QPushButton("Insert"); + connect(pbInsert , SIGNAL(released()),this, SLOT(SearchCounterInsert())); + QPushButton *pbModify = new QPushButton("Modify"); + connect(pbModify , SIGNAL(released()),this, SLOT(SearchCounterUpdate())); + hlayout->addWidget(pbInsert); + hlayout->addWidget(pbModify); + } + + QGroupBox *groupBox = new QGroupBox(tr("Counter")); + groupBox->setLayout(hlayout); + return groupBox; +} + + + QGroupBox *Widget::setReplaceWidgets() { QHBoxLayout *hlayout = new QHBoxLayout(); @@ -320,9 +380,14 @@ QGroupBox *Widget::setReplaceWidgets() hlayout->addWidget(m_pcbReplace); hlayout->addWidget(m_pleReplace); { + QVBoxLayout *vlayout = new QVBoxLayout(); QPushButton *pbInsert = new QPushButton("Insert"); connect(pbInsert , SIGNAL(released()),this, SLOT(SearchReplaceInsert())); - hlayout->addWidget(pbInsert); + vlayout->addWidget(pbInsert); + QPushButton *pbModify = new QPushButton("Modify"); + connect(pbModify , SIGNAL(released()),this, SLOT(SearchReplaceUpdate())); + vlayout->addWidget(pbModify); + hlayout->addLayout(vlayout); } QGroupBox *groupBox = new QGroupBox(tr("Replace")); groupBox->setLayout(hlayout); @@ -432,7 +497,7 @@ void Widget::SearchDate() foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) { nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); - InsertTimeFilter(pNew->getArticleSelect(),m_pdeStart->date(),m_pdeEnd->date(),nCurrentFilterGroupID); + DataBaseTimeFilter(pNew->getArticleSelect(),m_pdeStart->date(),m_pdeEnd->date(),nCurrentFilterGroupID,E_DATABASE_COMMAND_INSERT); } } @@ -489,7 +554,7 @@ void Widget::SearchKeyword() foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) { nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); - InsertSearchFilter(pNew->getArticleSelect(),m_pcbCatalog->currentIndex(),m_pcbMethod->currentIndex(),m_pcbKeyword->currentIndex(),strKey,nCurrentFilterGroupID); + DataBaseSearchFilter(pNew->getArticleSelect(),m_pcbCatalog->currentIndex(),m_pcbMethod->currentIndex(),m_pcbKeyword->currentIndex(),strKey,nCurrentFilterGroupID,E_DATABASE_COMMAND_INSERT); } } @@ -501,7 +566,7 @@ void Widget::SearchKeyword() strListKeyword[i] = " " + strListKeyword[i] + " "; } } - m_pProgress->setRange(0,pCurrent->rowCount()-1); + m_pProgress->setRange(0,pCurrent->rowCount()-1); for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) { bool bFlag = false; @@ -553,6 +618,182 @@ void Widget::SearchKeyword() RefreshFilter(nCurrentFilterGroupID); } +void Widget::SearchCounterInsert() +{ + bool ok; + m_pleCounter->text().toInt(&ok); + if(!ok) + return; + + STable *pCurrent = (STable *)m_ptwData->currentWidget(); + + int nCatalog = m_pcbCounterCatalog->currentIndex(); + int nFlag = m_pcbCounterInsDel->currentData().toInt(); + int nComp = m_pcbCounterComp->currentData().toInt(); + //int nCntApl = m_pcbCounterCntApl->currentData().toInt(); + int nCurrentFilterGroupID = D_NOT_SELECT; + + m_pProgress->setRange(0,pCurrent->rowCount()-1); + + QString strKey = m_pcbCounterCatalog->currentText(); + strKey += ","; + strKey += QString::number(m_pcbCounterComp->currentIndex()); + strKey += ","; + strKey += m_pleCounter->text(); + + + if (m_pgbFilter->isChecked()) + { + foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) + { + nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); + DataBaseCounterFilter(pCurrent->getArticleSelect(), nCatalog, nComp, nFlag, m_pleCounter->text(), nCurrentFilterGroupID, E_DATABASE_COMMAND_INSERT); + } + } + + //if(m_pcbCounterCntApl->currentIndex() == 0) + { + if(m_mapData.contains(strKey)) + m_mapData[strKey].clear(); + + QMap mapData; + + for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) + { + QString str; + if (nCatalog == m_nColumn) + { + QDateTime date; + str = date.fromString(pCurrent->item(nCount,nCatalog)->text().trimmed(),"yyyy-MM-dd hh:mm:ss").date().toString("yyyy-MM-dd"); + } + else + str = pCurrent->item(nCount,nCatalog)->text().trimmed(); + + + if(mapData.contains(str)) + { + mapData[str] += 1; + } + else + { + mapData.insert(str,1); + } + m_pProgress->setValue(nCount); + m_pProgress->repaint(); + } + int leCount = m_pleCounter->text().toInt(); + + if(m_pcbCounterComp->currentIndex() == 0) + { + for(QMap::iterator iterPos = mapData.begin(); iterPos != mapData.end() ;iterPos++) + { + if(iterPos.value() > leCount) + { + if(m_mapData.contains(strKey)) + { + m_mapData[strKey].insert(iterPos.key(), iterPos.value()); + } + else + { + QMap temp; + temp.insert(iterPos.key(), iterPos.value()); + m_mapData.insert(strKey, temp); + } + } + } + } + else if(m_pcbCounterComp->currentIndex() == 1) + { + for(QMap::iterator iterPos = mapData.begin(); iterPos != mapData.end() ;iterPos++) + { + if(iterPos.value() < leCount) + { + if(m_mapData.contains(strKey)) + { + m_mapData[strKey].insert(iterPos.key(), iterPos.value()); + } + else + { + QMap temp; + temp.insert(iterPos.key(), iterPos.value()); + m_mapData.insert(strKey, temp); + } + } + } + } + + else if(m_pcbCounterComp->currentIndex() == 2) + { + for(QMap::iterator iterPos = mapData.begin(); iterPos != mapData.end() ;iterPos++) + { + if(iterPos.value() == leCount) + { + if(m_mapData.contains(strKey)) + { + m_mapData[strKey].insert(iterPos.key(), iterPos.value()); + } + else + { + QMap temp; + temp.insert(iterPos.key(), iterPos.value()); + m_mapData.insert(strKey, temp); + } + } + } + } + } + + //if(m_pcbCounterCntApl->currentIndex() == 1) + { + if(!m_mapData.contains(strKey)) + return; + + STable *pNew = new STable; + pNew->setArticleSelect(pCurrent->getArticleSelect()); + pNew->SetHeaderList(&m_vecColumn,E_COLUMN_NAME); + + m_pProgress->setRange(0,pCurrent->rowCount()-1); + + for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) + { + bool bFlag = false; + QString strCurrent = pCurrent->item(nCount,nCatalog)->text().trimmed(); + if(m_mapData[strKey].contains(strCurrent)) + bFlag = true; + if (nFlag == 1) bFlag = !bFlag; + if (bFlag) InsertCopyRow(nCount,pCurrent,pNew); + m_pProgress->setValue(nCount); + m_pProgress->repaint(); + } + + m_ptwData->addTab(pNew,STable::GetArticleType(pCurrent->getArticleSelect())); + m_ptwData->setCurrentIndex(m_ptwData->count()-1); + } + if (nCurrentFilterGroupID != D_NOT_SELECT) + RefreshFilter(nCurrentFilterGroupID); + m_mapData[strKey].clear(); +} + +void Widget::SearchCounterUpdate() +{ + if (m_pgbFilter->isChecked()) + { + int nCurrentFilterGroupID = D_NOT_SELECT; + foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) + nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); + + if (nCurrentFilterGroupID == D_NOT_SELECT) return; + + int nCatalog = m_pcbCounterCatalog->currentIndex(); + int nComp = m_pcbCounterComp->currentData().toInt(); + int nFlag = m_pcbCounterInsDel->currentData().toInt(); + foreach (QListWidgetItem *item,m_plwFilter->selectedItems()) + DataBaseLengthFilter(((STable *)m_ptwData->currentWidget())->getArticleSelect(),nCatalog,nComp,nFlag,m_pleCounter->text(),nCurrentFilterGroupID,E_DATABASE_COMMAND_UPDATE,item->data(Qt::UserRole).toString()); + RefreshFilter(nCurrentFilterGroupID); + } +} + + void Widget::SearchLengthInsert() { STable *pNew = new STable; @@ -572,14 +813,14 @@ void Widget::SearchLengthInsert() foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) { nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); - InsertLengthFilter(pCurrent->getArticleSelect(),nCatalog,nComp,nFlag,m_pleLength->text(),nCurrentFilterGroupID); + DataBaseLengthFilter(pCurrent->getArticleSelect(),nCatalog,nComp,nFlag,m_pleLength->text(),nCurrentFilterGroupID,E_DATABASE_COMMAND_INSERT); } } for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) { bool bFlag = false; - int nCurrentLength = pCurrent->item(nCount,nCatalog)->text().trimmed().length(); + int nCurrentLength = pCurrent->item(nCount,nCatalog)->text().trimmed().length(); switch(nComp) { case E_LENGTH_COMP_GREATER: @@ -628,10 +869,10 @@ void Widget::SearchReplaceInsert() foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) { nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); - InsertReplaceFilter(pNew->getArticleSelect(),nCatalog, + DataBaseReplaceFilter(pNew->getArticleSelect(),nCatalog, m_pcbReplaceFind->currentData().toInt(), m_pleReplaceFind->text(),m_pleReplace->text(), - nCurrentFilterGroupID); + nCurrentFilterGroupID,E_DATABASE_COMMAND_INSERT); } } pNew->setRowCount(pCurrent->rowCount()); @@ -712,9 +953,97 @@ void Widget::SearchReplaceInsert() m_ptwData->setCurrentIndex(m_ptwData->count()-1); if (nCurrentFilterGroupID != D_NOT_SELECT) - RefreshFilter(nCurrentFilterGroupID); + RefreshFilter(nCurrentFilterGroupID); } +void Widget::SearchDateUpdate() +{ + if (m_pgbFilter->isChecked()) + { + int nCurrentFilterGroupID = D_NOT_SELECT; + foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) + nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); + + if (nCurrentFilterGroupID == D_NOT_SELECT) return; + + foreach (QListWidgetItem *item,m_plwFilter->selectedItems()) + DataBaseTimeFilter(((STable *)m_ptwData->currentWidget())->getArticleSelect(),m_pdeStart->date(),m_pdeEnd->date(),nCurrentFilterGroupID,E_DATABASE_COMMAND_UPDATE,item->data(Qt::UserRole).toString()); + RefreshFilter(nCurrentFilterGroupID); + } +} + +void Widget::SearchKeywordUpdate() +{ + if (m_pgbFilter->isChecked()) + { + int nCurrentFilterGroupID = D_NOT_SELECT; + foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) + nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); + if (nCurrentFilterGroupID == D_NOT_SELECT) return; + QString strKey = m_pleString->text().replace("\r\n"," "); + strKey = strKey.replace("\n"," "); + strKey = strKey.replace("\t"," "); + QString strTemp; + foreach(QString str, strKey.split(" ")) + { + if (str.trimmed().isEmpty() == false) + strTemp += str.trimmed() + " "; + } + strTemp = strTemp.trimmed(); + m_pleString->setText(strTemp); + strKey = strTemp; + foreach (QListWidgetItem *item,m_plwFilter->selectedItems()) + DataBaseSearchFilter(((STable *)m_ptwData->currentWidget())->getArticleSelect(),m_pcbCatalog->currentIndex(),m_pcbMethod->currentIndex(),m_pcbKeyword->currentIndex(),strKey,nCurrentFilterGroupID,E_DATABASE_COMMAND_UPDATE,item->data(Qt::UserRole).toString()); + RefreshFilter(nCurrentFilterGroupID); + } +} + +void Widget::SearchLengthUpdate() +{ + if (m_pgbFilter->isChecked()) + { + int nCurrentFilterGroupID = D_NOT_SELECT; + foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) + nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); + + if (nCurrentFilterGroupID == D_NOT_SELECT) return; + + int nCatalog = m_pcbLengthCatalog->currentIndex(); + int nComp = m_pcbLengthComp->currentData().toInt(); + int nFlag = m_pcbLengthInsDel->currentData().toInt(); + foreach (QListWidgetItem *item,m_plwFilter->selectedItems()) + DataBaseLengthFilter(((STable *)m_ptwData->currentWidget())->getArticleSelect(),nCatalog,nComp,nFlag,m_pleLength->text(),nCurrentFilterGroupID,E_DATABASE_COMMAND_UPDATE,item->data(Qt::UserRole).toString()); + RefreshFilter(nCurrentFilterGroupID); + } +} + +void Widget::SearchReplaceUpdate() +{ + if (m_pgbFilter->isChecked()) + { + int nCurrentFilterGroupID = D_NOT_SELECT; + foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) + nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); + + if (nCurrentFilterGroupID == D_NOT_SELECT) return; + + int nCatalog = m_pcbReplaceCatalog->currentIndex(); + QStringList strListKeyword; + if (m_pcbReplaceFind->currentData().toInt() == E_REPLACE_SPACE) + strListKeyword = m_pleReplaceFind->text().split(" "); + else + strListKeyword.push_back(m_pleReplaceFind->text()); + + foreach (QListWidgetItem *item,m_plwFilter->selectedItems()) + DataBaseReplaceFilter(((STable *)m_ptwData->currentWidget())->getArticleSelect(),nCatalog, + m_pcbReplaceFind->currentData().toInt(), + m_pleReplaceFind->text(),m_pleReplace->text(), + nCurrentFilterGroupID,E_DATABASE_COMMAND_UPDATE,item->data(Qt::UserRole).toString()); + RefreshFilter(nCurrentFilterGroupID); + } +} + + void Widget::DataGroupItemChanged( QListWidgetItem *item) { QMessageBox msg; @@ -898,7 +1227,7 @@ void Widget::FilterGroupRefresh() db.close(); } -void Widget::InsertFilter(int _nType,QString _strJson,int _nGroup) +void Widget::DataBaseFilter(int _nType,QString _strJson,int _nGroup,int _nCommand,QString _strFilterId) { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); @@ -911,10 +1240,21 @@ void Widget::InsertFilter(int _nType,QString _strJson,int _nGroup) return; } - QString sql = "insert into filter (type,data,filtergroup_id) value ("; - sql += QString::number(_nType); - sql += ",'" + _strJson + "',"; - sql += QString::number(_nGroup) + ")"; + QString sql; + switch(_nCommand) + { + case E_DATABASE_COMMAND_INSERT: + sql = "INSERT INTO filter SET "; + sql += QString("type=") + QString::number(_nType) + ","; + break; + case E_DATABASE_COMMAND_UPDATE: + sql = "UPDATE filter SET "; + break; + } + sql += QString("data='") + _strJson + "',"; + sql += QString("filtergroup_id=" ) + QString::number(_nGroup); + if (_nCommand == E_DATABASE_COMMAND_UPDATE) + sql += QString(" where id=") + _strFilterId; QSqlQuery query; if (query.exec(sql.toUtf8()) == false) { @@ -924,18 +1264,18 @@ void Widget::InsertFilter(int _nType,QString _strJson,int _nGroup) db.close(); } -void Widget::InsertTimeFilter(int _nArticle ,QDate _dateStart ,QDate _dateEnd ,int _nGroup) -{ +void Widget::DataBaseTimeFilter(int _nArticle ,QDate _dateStart ,QDate _dateEnd ,int _nGroup,int _nCommand,QString _strFilterId ) +{ QString strJson; SJson json; strJson = json.Set(strJson,"Article",QString::number(_nArticle)); strJson = json.Set(strJson,"Start",_dateStart.toString("yyyy-MM-dd")); strJson = json.Set(strJson,"End",_dateEnd.toString("yyyy-MM-dd")); - InsertFilter(E_FILTER_TYPE_DATE,json.Sql(strJson),_nGroup); + DataBaseFilter(E_FILTER_TYPE_DATE,json.Sql(strJson),_nGroup,_nCommand,_strFilterId); } -void Widget::InsertSearchFilter(int _nArticle,int _nCategory,int _nMethod,int _nKeyword, QString _str,int _nGroup) -{ +void Widget::DataBaseSearchFilter(int _nArticle,int _nCategory,int _nMethod,int _nKeyword, QString _str,int _nGroup,int _nCommand,QString _strFilterId) +{ QString strJson; SJson json; strJson = json.Set(strJson,"Article",QString::number(_nArticle)); @@ -943,10 +1283,10 @@ void Widget::InsertSearchFilter(int _nArticle,int _nCategory,int _nMethod,int _n strJson = json.Set(strJson,"Method",_nMethod); strJson = json.Set(strJson,"Keyword",_nKeyword); strJson = json.Set(strJson,"String",_str); - InsertFilter(E_FILTER_TYPE_SEARCH,json.Sql(strJson),_nGroup); + DataBaseFilter(E_FILTER_TYPE_SEARCH,json.Sql(strJson),_nGroup,_nCommand,_strFilterId); } -void Widget::InsertLengthFilter(int _nArticle,int _nCategory,int _nComp,int _nInsDel,QString _str,int _nGroup) +void Widget::DataBaseLengthFilter(int _nArticle,int _nCategory,int _nComp,int _nInsDel,QString _str,int _nGroup,int _nCommand,QString _strFilterId) { QString strJson; SJson json; @@ -955,10 +1295,25 @@ void Widget::InsertLengthFilter(int _nArticle,int _nCategory,int _nComp,int _nIn strJson = json.Set(strJson,"Comp",_nComp); strJson = json.Set(strJson,"InsDel",_nInsDel); strJson = json.Set(strJson,"String",_str); - InsertFilter(E_FILTER_TYPE_LENGTH,json.Sql(strJson),_nGroup); + DataBaseFilter(E_FILTER_TYPE_LENGTH,json.Sql(strJson),_nGroup,_nCommand,_strFilterId); } -void Widget::InsertReplaceFilter(int _nArticle,int _nCategory,int _nFind,QString _strFind,QString _strReplace,int _nGroup) + +void Widget::DataBaseCounterFilter(int _nArticle,int _nCategory,int _nComp,int _nInsDel,QString _str,int _nGroup,int _nCommand,QString _strFilterId) +{ + QString strJson; + SJson json; + strJson = json.Set(strJson,"Article",QString::number(_nArticle)); + strJson = json.Set(strJson,"Category",_nCategory); + strJson = json.Set(strJson,"Comp",_nComp); + strJson = json.Set(strJson,"InsDel",_nInsDel); + strJson = json.Set(strJson,"String",_str); + DataBaseFilter(E_FILTER_TYPE_COUNTER,json.Sql(strJson),_nGroup,_nCommand,_strFilterId); +} + + + +void Widget::DataBaseReplaceFilter(int _nArticle,int _nCategory,int _nFind,QString _strFind,QString _strReplace,int _nGroup,int _nCommand,QString _strFilterId) { QString strJson; SJson json; @@ -967,7 +1322,7 @@ void Widget::InsertReplaceFilter(int _nArticle,int _nCategory,int _nFind,QString strJson = json.Set(strJson,"Find",_nFind); strJson = json.Set(strJson,"String_Find",_strFind); strJson = json.Set(strJson,"String_Replace",_strReplace); - InsertFilter(E_FILTER_TYPE_REPLACE,json.Sql(strJson),_nGroup); + DataBaseFilter(E_FILTER_TYPE_REPLACE,json.Sql(strJson),_nGroup,_nCommand,_strFilterId); } void Widget::RefreshFilter(int _nGroup) @@ -1020,9 +1375,16 @@ void Widget::RefreshFilter(int _nGroup) str += json.Get(strJson,"String_Find") + " --> "; str += json.Get(strJson,"String_Replace"); break; - } + case E_FILTER_TYPE_COUNTER: + str += " "; + str += m_pcbCounterCatalog->itemText(json.GetNumber(strJson,"Category")) + " "; + str += m_pcbCounterComp->itemText(json.GetNumber(strJson,"Comp")) + " "; + str += json.Get(strJson,"String") + " , "; + str += m_pcbCounterInsDel->itemText(json.GetNumber(strJson,"InsDel")); + break; + } QListWidgetItem *pItem = new QListWidgetItem(str,m_plwFilter); - pItem->setData(Qt::UserRole, QVariant(query.value(0))); + pItem->setData(Qt::UserRole, QVariant(query.value(0))); } db.close(); } @@ -1113,15 +1475,27 @@ void Widget::currentFilterItemChanged(QListWidgetItem *_pCurrent, QListWidgetIte m_pleString->setText(""); m_pleLength->setText(""); break; + case E_FILTER_TYPE_COUNTER: + m_pcbCounterCatalog->setCurrentIndex(json.GetNumber(strJson,"Category")); + m_pcbCounterComp->setCurrentIndex(json.GetNumber(strJson,"Comp")); + m_pcbCounterInsDel->setCurrentIndex(json.GetNumber(strJson,"InsDel")); + m_pleCounter->setText(json.Get(strJson,"String")); + m_pleReplaceFind->setText(""); + m_pleReplace->setText(""); + m_pleString->setText(""); + break; } } bool Widget::ReloadColumn() { m_vecColumn.clear(); + qDebug() << "file open ready"; + QFile file("column.txt"); if (file.open(QIODevice::ReadOnly | QIODevice::Text) == false) return false; { + qDebug() << "file open starting"; while (!file.atEnd()) { QString str = QString(file.readLine()); @@ -1310,22 +1684,6 @@ void Widget::FileExit() exit(1); } -struct SCount -{ - SCount() - { - m_str.clear(); - m_nCount = 0; - } - - SCount(QString _str) - { - m_str = _str; - m_nCount = 1; - } - QString m_str; - int m_nCount; -}; void Widget::CountSave() { @@ -1375,3 +1733,18 @@ void Widget::CountSave() } file.close(); } +void Widget::Debug(QString _strMsg) +{ + /* + QTime time = QTime::currentTime(); + QString strOut = time.toString("[hh:mm:ss] ") + _strMsg; + + QFile file(QDate::currentDate().toString(Qt::ISODate)+ "_" + QString::number(QCoreApplication::applicationPid())+ ".debug.txt"); + if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) + return; + + QTextStream out(&file); + out << strOut << "\n"; + file.close(); + */ +} diff --git a/MorphereAnalyzer/widget.cpp.bak b/MorphereAnalyzer/widget.cpp.bak index e7b1c6f..886b72b 100644 --- a/MorphereAnalyzer/widget.cpp.bak +++ b/MorphereAnalyzer/widget.cpp.bak @@ -46,7 +46,7 @@ Widget::Widget(QWidget *parent) if (m_nColumn != -1) hlayout->addWidget(setDateWidgets()); hlayout->addWidget(setCountWidgets()); - vlayout->addLayout(hlayout); + //vlayout->addLayout(hlayout); } vlayout->addWidget(setSearchWidgets()); @@ -57,7 +57,7 @@ Widget::Widget(QWidget *parent) { QHBoxLayout *hlayout = new QHBoxLayout; hlayout->addWidget(setDataWidgets()); - //hlayout->addLayout(vlayout); + hlayout->addLayout(vlayout); //hlayout->addWidget(setFilterWidgets()); setFilterWidgets(); vMainLayout->addLayout(hlayout,2); @@ -90,6 +90,7 @@ QTableWidget *Widget::AddTable(QString _str) void Widget::CloseTab(int index) { + ((STable*)(m_ptwData->widget(index)))->clear(); m_ptwData->removeTab(index); } @@ -297,6 +298,7 @@ QGroupBox *Widget::setReplaceWidgets() QHBoxLayout *hlayout = new QHBoxLayout(); m_pcbReplaceCatalog = new QComboBox; m_pcbReplaceFind = new QComboBox; + m_pcbReplace = new QComboBox; m_pleReplaceFind = new QLineEdit; m_pleReplace = new QLineEdit; @@ -306,11 +308,16 @@ QGroupBox *Widget::setReplaceWidgets() m_pcbReplaceFind->addItem("Sentence",QVariant(E_REPLACE_SENTENCE)); m_pcbReplaceFind->addItem("Space",QVariant(E_REPLACE_SPACE)); + m_pcbReplace->addItem("0",QVariant(0)); + m_pcbReplace->addItem("1",QVariant(1)); + m_pcbReplace->addItem("2",QVariant(2)); + hlayout->addWidget(m_pcbReplaceCatalog); hlayout->addWidget(new QLabel("Find:")); hlayout->addWidget(m_pcbReplaceFind); hlayout->addWidget(m_pleReplaceFind); hlayout->addWidget(new QLabel("Replace:")); + hlayout->addWidget(m_pcbReplace); hlayout->addWidget(m_pleReplace); { QPushButton *pbInsert = new QPushButton("Insert"); @@ -339,11 +346,15 @@ QGroupBox *Widget::setFilterWidgets() connect(pbDelete, SIGNAL(released()),this, SLOT(FilterGroupDelete())); QPushButton *pbModify = new QPushButton("Modfiy"); connect(pbModify, SIGNAL(released()),this, SLOT(FilterGroupModify())); + QPushButton *pbCopy_Paste = new QPushButton("Copy&Paste"); + connect(pbCopy_Paste, SIGNAL(released()),this, SLOT(FilterGroupCopyPaste())); QPushButton *pbRefresh = new QPushButton("Refresh"); connect(pbRefresh, SIGNAL(released()),this, SLOT(FilterGroupRefresh())); hlayout->addWidget(pbInsert); hlayout->addWidget(pbDelete); + hlayout->addWidget(pbModify); + hlayout->addWidget(pbCopy_Paste); hlayout->addWidget(pbRefresh); vlayout->addLayout(hlayout); } @@ -603,17 +614,15 @@ void Widget::SearchReplaceInsert() pNew->setArticleSelect(pCurrent->getArticleSelect()); pNew->SetHeaderList(&m_vecColumn,E_COLUMN_NAME); m_pProgress->setRange(0,pCurrent->rowCount()-1); - int nCatalog = m_pcbReplaceCatalog->currentIndex(); - - bool bFlag = false; + int nCatalog = m_pcbReplaceCatalog->currentIndex(); QStringList strListKeyword; if (m_pcbReplaceFind->currentData().toInt() == E_REPLACE_SPACE) - { - bFlag = true; strListKeyword = m_pleReplaceFind->text().split(" "); - } - int nCurrentFilterGroupID = D_NOT_SELECT; + else + strListKeyword.push_back(m_pleReplaceFind->text()); + int nCurrentFilterGroupID = D_NOT_SELECT; + int nReplace = m_pcbReplace->currentIndex(); if (m_pgbFilter->isChecked()) { foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) @@ -633,14 +642,63 @@ void Widget::SearchReplaceInsert() if (nCatalog == nColumnCount) { QString strOut = pCurrent->item(nCount,nColumnCount)->text(); - if (bFlag) + switch(nReplace) + { + case 0: { foreach(QString str,strListKeyword) strOut = strOut.replace(str,m_pleReplace->text()); + break; + } + case 1: + { + QString strMiddle; + foreach(QString strLine,strOut.split("\n")) + { + foreach(QString strWord,strLine.split(" ")) + { + bool bFlag = false; + foreach(QString str,strListKeyword) + { + if (strWord == str) + { + strMiddle += m_pleReplace->text() + " "; + bFlag = true; + break; + } + } + if (bFlag == false) + strMiddle += strWord + " "; + } + strMiddle += "\n"; + } + strOut = strMiddle; + break; + } + case 2: + QString strMiddle; + foreach(QString strLine,strOut.split("\n")) + { + foreach(QString strWord,strLine.split(" ")) + { + bool bFlag = false; + foreach(QString str,strListKeyword) + { + if (strWord.contains(str)) + { + strMiddle += m_pleReplace->text() + " "; + bFlag = true; + break; + } + } + if (bFlag == false) + strMiddle += strWord + " "; + } + strMiddle += "\n"; + } + strOut = strMiddle; + break; } - else - strOut = strOut.replace(m_pleReplaceFind->text(),m_pleReplace->text()); - pNew->setItem(nCount,nColumnCount,new QTableWidgetItem(strOut)); } else @@ -761,7 +819,7 @@ void Widget::FilterGroupDelete() RefreshFilter(item->data(Qt::UserRole).toInt()); } db.close(); - FilterGroupRefresh(); + FilterGroupRefresh(); } void Widget::FilterGroupModify() @@ -776,7 +834,46 @@ void Widget::FilterGroupModify() qDebug() << db.lastError().text(); return; } + foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) + { + QString strQuery = QString("update filtergroup set name = '" + m_pleFilterGroup->text() + "' where id = " + item->data(Qt::UserRole).toString()); + qDebug() << strQuery; + db.exec(strQuery.toUtf8()); + } db.close(); + FilterGroupRefresh(); +} + +void Widget::FilterGroupCopyPaste() +{ + QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); + db.setHostName("bigbird.iptime.org"); + db.setUserName("admin"); + db.setPassword("admin123"); + db.setDatabaseName("concepters"); + if (db.open() == false) + { + qDebug() << db.lastError().text(); + return; + } + foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) + { + QSqlQuery query; + QString strQuery = QString("insert into filtergroup set " + "name = '" + item->text() + "-'"); + query.exec(strQuery.toUtf8()); + query.exec("select max(id) from filtergroup"); + if (query.next()) + { + strQuery = QString("insert into filter (type,data,filtergroup_id) select type,data,"); + strQuery += query.value(0).toString(); + strQuery += " from filter where filtergroup_id = " + item->data(Qt::UserRole).toString(); + qDebug() << strQuery; + query.exec(strQuery.toUtf8()); + } + } + db.close(); + FilterGroupRefresh(); } void Widget::FilterGroupRefresh() @@ -1038,6 +1135,7 @@ bool Widget::ReloadColumn() m_nColumn = -1; m_nTitle = -1; m_nBody = -1; + m_nPlatformTitle = -1; foreach(QStringList strList,m_vecColumn) { if (strList.at(E_COLUMN_DATE).trimmed() == QString("o") ) @@ -1063,6 +1161,14 @@ bool Widget::ReloadColumn() } m_nBody++; + foreach(QStringList strList,m_vecColumn) + { + if (strList.at(E_COLUMN_DATABASE).trimmed() == QString("platform_title") ) + break; + else + m_nPlatformTitle++; + } + m_nPlatformTitle++; return true; } diff --git a/MorphereAnalyzer/widget.h b/MorphereAnalyzer/widget.h index b46022d..fe3e13c 100644 --- a/MorphereAnalyzer/widget.h +++ b/MorphereAnalyzer/widget.h @@ -18,7 +18,22 @@ #include #include #include "stable.h" +struct SCount +{ + SCount() + { + m_str.clear(); + m_nCount = 0; + } + SCount(QString _str) + { + m_str = _str; + m_nCount = 1; + } + QString m_str; + int m_nCount; +}; class Widget : public QWidget { enum E_COLUMN @@ -35,6 +50,13 @@ class Widget : public QWidget E_LENGTH_COMP_LESS, E_LENGTH_COMP_EQUAL, }; + + enum E_DATABASE_COMMAND + { + E_DATABASE_COMMAND_INSERT = 0, + E_DATABASE_COMMAND_UPDATE, + }; + Q_OBJECT public: Widget(QWidget *parent = 0); @@ -84,6 +106,13 @@ private: QComboBox *m_pcbLengthComp; QComboBox *m_pcbLengthInsDel; QLineEdit *m_pleLength; + // Counter + QComboBox *m_pcbCounterCatalog; + QComboBox *m_pcbCounterComp; + QComboBox *m_pcbCounterInsDel; + QComboBox *m_pcbCounterCntApl; + QLineEdit *m_pleCounter; + // Filter QListWidget *m_plwFilterGroup; QListWidget *m_plwFilter; @@ -105,6 +134,9 @@ private: QProgressBar *m_pProgress; // Column QVector m_vecColumn; + QVector vecData; + QMap > m_mapData; + private: QMenuBar *setMenuWidget(); QGroupBox *setDataWidgets(); @@ -112,28 +144,40 @@ private: QGroupBox *setCountWidgets(); QGroupBox *setSearchWidgets(); QGroupBox *setLengthWidgets(); + QGroupBox *setCounterWidgets(); QGroupBox *setFilterWidgets(); QGroupBox *setReplaceWidgets(); QTableWidget *AddTable(QString _str); void SetTableHead(); - void InsertCopyRow(int _nRow,QTableWidget *_pCurrent,QTableWidget *_pNew); + void InsertCopyRow(int _nRow,QTableWidget *_pCurrent,QTableWidget *_pNew); void DataReload(QString _strTableName,int _nSelect); - void InsertFilter(int _nType,QString _strJson,int _nGroup); - void InsertTimeFilter(int _nTimeCategory ,QDate _dateStart ,QDate _dateEnd ,int _nGroup); - void InsertSearchFilter(int _nArticle,int _nCategory,int _nMethod,int _nKeyword, QString _str,int _nGroup); - void InsertLengthFilter(int _nArticle,int _nCategory,int _nComp,int _nInsDel,QString _str,int _nGroup); - void InsertReplaceFilter(int _nArticle,int _nCategory,int _nFind,QString _strFind,QString _strReplace,int _nGroup); + void DataBaseFilter(int _nType,QString _strJson,int _nGroup,int _nCommand,QString _strFilterId =""); + void DataBaseTimeFilter(int _nTimeCategory ,QDate _dateStart ,QDate _dateEnd ,int _nGroup,int _nCommand,QString _strFilterId=""); + void DataBaseSearchFilter(int _nArticle,int _nCategory,int _nMethod,int _nKeyword, QString _str,int _nGroup,int _nCommand,QString _strFilterId =""); + void DataBaseLengthFilter(int _nArticle,int _nCategory,int _nComp,int _nInsDel,QString _str,int _nGroup,int _nCommand,QString _strFilterId =""); + void DataBaseReplaceFilter(int _nArticle,int _nCategory,int _nFind,QString _strFind,QString _strReplace,int _nGroup,int _nCommand,QString _strFilterId =""); void RefreshFilter(int _nGroup); - - bool ReloadColumn(); + void DataBaseCounterFilter(int _nArticle,int _nCategory,int _nComp, int _nInsDel,QString _str,int _nGroup,int _nCommand,QString _strFilterId =""); + bool ReloadColumn(); QString GetArticleType(int _nSelect); public slots: void CloseTab(int index); - void DoubleClickTab(int index); - void SearchDate(); + void DoubleClickTab(int index); void CountSave(); + void SearchDate(); void SearchKeyword(); + void SearchLengthInsert(); + void SearchReplaceInsert(); + + void SearchDateUpdate(); + void SearchKeywordUpdate(); + void SearchLengthUpdate(); + void SearchReplaceUpdate(); + void SearchCounterUpdate(); + void SearchCounterInsert(); + + static void Debug(QString _strMsg); void DataGroupRefresh(); void DataGroupItemChanged ( QListWidgetItem * item ); void FilterGroupInsert(); @@ -144,8 +188,6 @@ public slots: void currentGroupItemChanged(QListWidgetItem *_pCurrent, QListWidgetItem *_pPrev=0); void FilterDelete(); void currentFilterItemChanged(QListWidgetItem *_pCurrent, QListWidgetItem *_pPrev=0); - void SearchLengthInsert(); - void SearchReplaceInsert(); void FileNew(); void FileImport(); void FileExport(); diff --git a/MorphereAnalyzer/widget.h.bak b/MorphereAnalyzer/widget.h.bak index 108bd7a..b46022d 100644 --- a/MorphereAnalyzer/widget.h.bak +++ b/MorphereAnalyzer/widget.h.bak @@ -55,6 +55,10 @@ public: { return m_nBody; } + int getPlatformTitlePosition() + { + return m_nPlatformTitle; + } private: // Data @@ -68,6 +72,7 @@ private: int m_nColumn; int m_nTitle; int m_nBody; + int m_nPlatformTitle; // Keyword QComboBox *m_pcbCatalog; QComboBox *m_pcbKeyword; @@ -89,6 +94,7 @@ private: QComboBox *m_pcbReplaceFind; QLineEdit *m_pleReplaceFind; QLineEdit *m_pleReplace; + QComboBox *m_pcbReplace; // Count QComboBox *m_pcbCountCatalog; @@ -134,6 +140,7 @@ public slots: void FilterGroupDelete(); void FilterGroupModify(); void FilterGroupRefresh(); + void FilterGroupCopyPaste(); void currentGroupItemChanged(QListWidgetItem *_pCurrent, QListWidgetItem *_pPrev=0); void FilterDelete(); void currentFilterItemChanged(QListWidgetItem *_pCurrent, QListWidgetItem *_pPrev=0);