diff --git a/CallManage/CallManage.h b/CallManage/CallManage.h index 995c63c..8833b3b 100644 --- a/CallManage/CallManage.h +++ b/CallManage/CallManage.h @@ -38,6 +38,13 @@ signals: void sig_OpenProject(QString strName);//打开项目 void sig_CloseProject();//关闭项目 + void sig_ImportSingleWellLogData();//数据导入 + void sig_OutWellLogRound();//输出数据,数据导出 + + void sig_SaveAsPicture(); //导出长图 + void sig_SaveAsPdf(); //导出PDF + void sig_SaveAsSvg(); //导出SVG + void sig_ShowParameterCard(QString strSlfName, QString strName);//参数表查看 void sig_ShowCurve(QMap> mapShowObject);//曲线数据查看 void sig_DepthShift(QString strSlfName, QString strName, double DepthOffset);//深度移动 diff --git a/DataOutput/src/TranSlf2Data.cpp b/DataOutput/src/TranSlf2Data.cpp index da700eb..60aa371 100644 --- a/DataOutput/src/TranSlf2Data.cpp +++ b/DataOutput/src/TranSlf2Data.cpp @@ -1504,7 +1504,7 @@ void TranToAscii(CMemRdWt *mrw,QString Outfile,float sdep,float edep,float rlev, return; } FILE *fp; - fp=fopen(Outfile.toStdString().c_str(),"wt+"); + fp=fopen(UTF8ToGBK(Outfile)/*Outfile.toStdString().c_str()*/,"wt+"); if(fp==NULL) { QMessageBox::information(NULL,"提示","打开输出文件"+Outfile+"失败"); @@ -4333,7 +4333,7 @@ void TranSlf2Data(int FormatType,QMap > OutFileInfVec,O //如果输出文件目录不存在,先创建目录 QFileInfo rFileInfo(Outfile); QDir rDir = rFileInfo.absoluteDir(); - if(!rDir.exists())rDir.mkpath(rFileInfo.absolutePath()); + if(!rDir.exists())rDir.mkpath(UTF8ToGBK(rFileInfo.absolutePath())); if(FormatType<=3) TranToAscii(&mrw,Outfile,Outsdep,Outedep,Outrlev,NumObject,&OutInf[0],FormatType,IsCheck[5]); diff --git a/logPlus/mainwindow.cpp b/logPlus/mainwindow.cpp index dbfbe83..d78bf79 100644 --- a/logPlus/mainwindow.cpp +++ b/logPlus/mainwindow.cpp @@ -225,11 +225,15 @@ void MainWindow::initTitleBar() // QMenu* m_dataMenu = this->menuBar()->addMenu(tr("数据管理(&D)")); - // - QMenu* m_resultMenu = this->menuBar()->addMenu(tr("成果输出(&R)")); + m_dataMenu->addAction(QIcon( ::GetImagePath() + "wellog.png"), tr("&数据导入"), this, SLOT(s_ImportSingleWellLogData())); // QMenu* m_analyzeToolMenu = this->menuBar()->addMenu(tr("分析工具(&W)")); // + QMenu* m_resultMenu = this->menuBar()->addMenu(tr("成果输出(&R)")); + m_resultMenu->addAction(QIcon( ::GetImagePath() + "icon/SaveAsPicture.png"), tr("&导出长图"), this, SLOT(s_SaveAsPicture())); + m_resultMenu->addAction(QIcon( ::GetImagePath() + "icon/ExportPDF.png"), tr("&导出PDF"), this, SLOT(s_SaveAsPdf())); + m_resultMenu->addAction(QIcon( ::GetImagePath() + "icon/ExportSVG.png"), tr("&导出SVG"), this, SLOT(s_SaveAsSvg())); + // QMenu* m_SystemToolMenu = this->menuBar()->addMenu(tr("系统工具(&T)")); // QMenu* m_helpMenu = this->menuBar()->addMenu(tr("帮助(&H)")); @@ -257,8 +261,8 @@ void MainWindow::initToolBar() ui->mainToolBar->addAction(QIcon( ::GetImagePath() + "openproject.png"), tr("&打开项目"), this, SLOT(s_Open())); ui->mainToolBar->addSeparator();//添加分隔符 // - ui->mainToolBar->addAction(QIcon( ::GetImagePath() + "wellog.png"), tr("&数据导入"), this, SLOT(s_wellog())); - ui->mainToolBar->addAction(QIcon( ::GetImagePath() + "outcurves.png"), tr("&数据导出"), this, SLOT(s_outcurves())); + ui->mainToolBar->addAction(QIcon( ::GetImagePath() + "wellog.png"), tr("&数据导入"), this, SLOT(s_ImportSingleWellLogData())); + ui->mainToolBar->addAction(QIcon( ::GetImagePath() + "outcurves.png"), tr("&数据导出"), this, SLOT(s_OutWellLogRound())); ui->mainToolBar->addSeparator();//添加分隔符 // ui->mainToolBar->addAction(QIcon( ::GetImagePath() + "wellsectionwindow.png"), tr("&可视解释"), this, SLOT(s_showView())); @@ -432,6 +436,31 @@ void MainWindow::s_Open() } } +void MainWindow::s_ImportSingleWellLogData() +{ + emit CallManage::getInstance()->sig_ImportSingleWellLogData(); +} + +void MainWindow::s_OutWellLogRound() +{ + emit CallManage::getInstance()->sig_OutWellLogRound(); +} + +void MainWindow::s_SaveAsPicture() +{ + emit CallManage::getInstance()->sig_SaveAsPicture(); +} + +void MainWindow::s_SaveAsPdf() +{ + emit CallManage::getInstance()->sig_SaveAsPdf(); +} + +void MainWindow::s_SaveAsSvg() +{ + emit CallManage::getInstance()->sig_SaveAsSvg(); +} + void MainWindow::s_SaveProject() { // //加载插件显示 diff --git a/logPlus/mainwindow.h b/logPlus/mainwindow.h index 089f6b8..bc201cd 100644 --- a/logPlus/mainwindow.h +++ b/logPlus/mainwindow.h @@ -68,6 +68,11 @@ public: public slots: void s_New(); void s_Open(); + void s_ImportSingleWellLogData(); + void s_OutWellLogRound(); + void s_SaveAsPicture(); + void s_SaveAsPdf(); + void s_SaveAsSvg(); void s_SaveProject(); void s_CloseProject(); void slotExitSystem(); diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index 9191458..e2a51bc 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -306,6 +306,10 @@ void MainWindowCurve::initMainToolBar() connect(m_SaveAsPdfAc, &QAction::triggered, this, &MainWindowCurve::s_SaveAsPdf); connect(m_SaveAsSvgAc, &QAction::triggered, this, &MainWindowCurve::s_SaveAsSvg); + connect(CallManage::getInstance(), SIGNAL(sig_SaveAsPicture()), this, SLOT(s_SaveAsPicture())); + connect(CallManage::getInstance(), SIGNAL(sig_SaveAsPdf()), this, SLOT(s_SaveAsPdf())); + connect(CallManage::getInstance(), SIGNAL(sig_SaveAsSvg()), this, SLOT(s_SaveAsSvg())); + // connect(m_grepAc, &QAction::triggered, this, &MainWindow::s_Risize); // connect(m_compileAc, &QAction::triggered, this, &MainWindow::s_AddOne); // connect(m_debugAc, &QAction::triggered, this, &MainWindow::s_DrawImg); diff --git a/logPlus/qtprojectwidgets.cpp b/logPlus/qtprojectwidgets.cpp index f58908a..c64aa1f 100644 --- a/logPlus/qtprojectwidgets.cpp +++ b/logPlus/qtprojectwidgets.cpp @@ -58,6 +58,12 @@ QtProjectWidgets::QtProjectWidgets(QWidget *parent) //关联信号槽,关闭项目 connect(CallManage::getInstance(), SIGNAL(sig_CloseProject()), this, SLOT(s_CloseProject())); + //关联信号槽,数据导入 + connect(CallManage::getInstance(), SIGNAL(sig_ImportSingleWellLogData()), this, SLOT(onImportSingleWellLogDataToolBar())); + + //关联信号槽,输出数据,数据导出 + connect(CallManage::getInstance(), SIGNAL(sig_OutWellLogRound()), this, SLOT(onOutWellLogRound())); + //向左侧树图,追加固井结论表格 connect(CallManage::getInstance(), SIGNAL(sig_AddGujingToTree(QString,QString,QString)), this, SLOT(s_AddGujingToTree(QString,QString,QString))); @@ -771,10 +777,10 @@ void QtProjectWidgets::initWellsTreeMenu(QMenu *menu, QTreeWidget *treeWidget) connect(action_New, SIGNAL(triggered(bool)), this, SLOT(onCopyObject())); menu->addAction(action_New); - // action_New = new QAction("输出数据", treeWidget); - // action_New->setIcon(QIcon(GetImagePath() + "icon/outcurves.png")); // 设置图标 - // connect(action_New, SIGNAL(triggered(bool)), this, SLOT(onOutWellLogRound())); - // menu->addAction(action_New); + action_New = new QAction("输出数据", treeWidget); + action_New->setIcon(QIcon(GetImagePath() + "icon/outcurves.png")); // 设置图标 + connect(action_New, SIGNAL(triggered(bool)), this, SLOT(onOutWellLogRound())); + menu->addAction(action_New); } //初始化参数卡-右键菜单 void QtProjectWidgets::initParameterCardTreeMenu(QMenu *menu, QTreeWidget *treeWidget) @@ -1857,7 +1863,7 @@ void QtProjectWidgets::onImportFolder() return; } -void QtProjectWidgets::onImportSingleWellLogData() +void QtProjectWidgets::ImportSingleWellLogData(bool bToolBar) { MainWindow* pMainWindow = nullptr; @@ -1901,28 +1907,30 @@ void QtProjectWidgets::onImportSingleWellLogData() QMessageBox::information(NULL,"无法识别的文件",listFiles[0]); return ; } - QTreeWidgetItem *wellItem = *ui->treeWidget->selectedItems().begin(); - QString wellname = wellItem->text(0); + QFileInfo temDir(file_name); + QString tempWellName=temDir.completeBaseName(); + tempWellName.replace(" ","");//whp add 2020.3.3 删除井名中的空格 + //m_WellLogRoundInfo->SetName(tempWellName.toStdString()); + QString wellname = tempWellName; QString wellroundname = wellname; - QString strTreeTag = wellItem->data(0, Qt::UserRole).toString(); - if (strTreeTag == "wells") //井组 - { - QFileInfo temDir(file_name); - QString tempWellName=temDir.completeBaseName(); - tempWellName.replace(" ","");//whp add 2020.3.3 删除井名中的空格 - //m_WellLogRoundInfo->SetName(tempWellName.toStdString()); - wellname = tempWellName; - wellroundname = wellname; - } - else if (strTreeTag == "wellname") //井名 - { - } - else if (strTreeTag == "wellItem") //井次 + if (!bToolBar) { - wellname = wellItem->parent()->text(0); + QTreeWidgetItem *wellItem = *ui->treeWidget->selectedItems().begin(); + + QString strTreeTag = wellItem->data(0, Qt::UserRole).toString(); + if (strTreeTag == "wellname") //井名 + { + wellname = wellItem->text(0); + } + else if (strTreeTag == "wellItem") //井次 + { + wellname = wellItem->parent()->text(0); + wellroundname = wellItem->text(0); + } } + CDataImport::m_prjname = g_prjname; ImportDataDialog *pDialog = new ImportDataDialog(NULL,wellname,wellroundname); QTreeWidgetItem rootItem = *ui->treeWidget->topLevelItem(0); @@ -1934,11 +1942,20 @@ void QtProjectWidgets::onImportSingleWellLogData() QString strProjectFile = strProjectFolder + g_prjname; strProjectFile += ".wwl"; s_OpenProject(strProjectFile); - return ; } } } +void QtProjectWidgets::onImportSingleWellLogData() +{ + ImportSingleWellLogData(false); +} + +void QtProjectWidgets::onImportSingleWellLogDataToolBar() +{ + ImportSingleWellLogData(true); +} + void QtProjectWidgets::onImportSlfTable() { // CInDefTableDlg InDefTableDlg(0); @@ -1961,16 +1978,81 @@ void QtProjectWidgets::onImportSlfTable() void QtProjectWidgets::onOutWellLogRound() { - QTreeWidgetItem *wellItem = *ui->treeWidget->selectedItems().begin(); - - QString wellname = wellItem->text(0); - QString wellroundname = wellname; - - QString folderPath = GetLogdataPath(); - folderPath = folderPath + g_prjname; - folderPath = folderPath + "/" + "#" + wellname + "/" + wellroundname + ".slf"; QStringList namelist;//=GetSelWellRound(); - namelist<treeWidget->selectedItems().begin(); + if (wellItem) + { + QString strTreeTag = wellItem->data(0, Qt::UserRole).toString(); + if (strTreeTag == "wellname") //井名 + { + int childCount = wellItem->childCount(); // 获取子节点数量 + for (int i = 0; i < childCount; ++i) + { + QTreeWidgetItem *wellround = wellItem->child(i); + QString strSlfFile = wellItem->child(i)->data(0, Qt::UserRole + 1).toString(); // 存储额外数据,项目名 + namelist<data(0, Qt::UserRole + 1).toString(); // 存储额外数据,项目名 + namelist<parent(); + while(parenItem) + { + if (parenItem == ui->treeWidget->topLevelItem(0)) + break; + strTreeTag = wellItem->data(0, Qt::UserRole).toString(); + if (strTreeTag == "wellItem") //井次 + { + QString strSlfFile = wellItem->data(0, Qt::UserRole + 1).toString(); // 存储额外数据,项目名 + namelist<parent(); + } + } + } + if (namelist.size()==0) + { + int topCount = ui->treeWidget->topLevelItemCount(); // 获取顶级节点数量 + if(topCount<1) + { + return; + } + + QTreeWidgetItem *item = ui->treeWidget->topLevelItem(0); + int childCount = item->childCount(); // 获取子节点数量 + for (int i = 0; i < childCount; ++i) + { + //井组,数据分析... + QTreeWidgetItem *wellGroupItem = item->child(i); + QString wellGroupname = wellGroupItem->text(0); + if (wellGroupname == "井组") + { + int wellCount = wellGroupItem->childCount(); // 获取井节点数量 + for (int j = 0; j < wellCount; ++j) + { + QTreeWidgetItem *wellchild = wellGroupItem->child(j); + int wellchildCount = wellchild->childCount(); // 获取井节点数量 + for (int k = 0; k < wellchildCount; ++k) + { + QString strTreeTag = wellchild->child(k)->data(0, Qt::UserRole).toString(); + if (strTreeTag == "wellItem") //井次 + { + QString strSlfFile = wellchild->child(k)->data(0, Qt::UserRole + 1).toString(); // 存储额外数据,项目名 + namelist<