diff --git a/logPlus/qtprojectwidgets.cpp b/logPlus/qtprojectwidgets.cpp index ec93eb6..00eba14 100644 --- a/logPlus/qtprojectwidgets.cpp +++ b/logPlus/qtprojectwidgets.cpp @@ -625,6 +625,10 @@ void QtProjectWidgets::loadWellTree(QTreeWidgetItem *parent, QString fileFull, Q //初始化树形控件中的右键菜单 void QtProjectWidgets::initMenu() { + m_action_Paste = new QAction("粘贴", ui->treeWidget); + m_action_Paste ->setIcon(QIcon(GetImagePath() + "icon/Copy.png")); // 设置图标":/image/u174.png" + connect(m_action_Paste, SIGNAL(triggered()), this, SLOT(onPasteSelObject())); + //根节点(项目名称)-右键菜单 _menuRoot = new QMenu(ui->treeWidget); initRootTreeMenu(_menuRoot, ui->treeWidget); @@ -657,6 +661,14 @@ void QtProjectWidgets::initMenu() _menuTableFolder = new QMenu(ui->treeWidget); initTableFolderTreeMenu(_menuTableFolder, ui->treeWidget); + _menuCurveFolder = new QMenu(ui->treeWidget); + initCurveFolderTreeMenu(_menuCurveFolder, ui->treeWidget); + + _menuParCardFolder = new QMenu(ui->treeWidget); + initParCardFolderTreeMenu(_menuParCardFolder, ui->treeWidget); + + _menuWaveFolder = new QMenu(ui->treeWidget); + initWaveFolderTreeMenu(_menuWaveFolder, ui->treeWidget); // //评估方案-右键菜单 // _menuEvaluate = new QMenu(ui->treeWidget); // initEvaluateTreeMenu(_menuEvaluate, ui->treeWidget); @@ -708,6 +720,16 @@ void QtProjectWidgets::initParameterCardTreeMenu(QMenu *menu, QTreeWidget *treeW action_CardObject->setIcon(QIcon(GetImagePath() + "icon/Sheet.png")); // 设置图标":/image/u174.png" connect(action_CardObject, SIGNAL(triggered(bool)), this, SLOT(onShowParameterCard(bool))); menu->addAction(action_CardObject); + + QAction* action_Copy = new QAction("复制", treeWidget); + action_Copy->setIcon(QIcon(GetImagePath() + "icon/Copy.png")); // 设置图标":/image/u174.png" + connect(action_Copy, SIGNAL(triggered()), this, SLOT(onCopySelObject())); + menu->addAction(action_Copy); + + QAction* action_Delete = new QAction("删除", treeWidget); + action_Delete->setIcon(QIcon(GetImagePath() + "icon/Delete.png")); // 设置图标":/image/u174.png" + connect(action_Delete, SIGNAL(triggered()), this, SLOT(onDeleteObject())); + menu->addAction(action_Delete); } //初始化曲线对象(AC、BS...)-右键菜单 @@ -722,6 +744,16 @@ void QtProjectWidgets::initCurveObjectTreeMenu(QMenu *menu, QTreeWidget *treeWid m_action_DepthShift->setIcon(QIcon(GetImagePath() + "icon/RigidDepthShifting.png")); // 设置图标 connect(m_action_DepthShift, SIGNAL(triggered(bool)), this, SLOT(onDepthShift(bool))); menu->addAction(m_action_DepthShift); + + QAction* action_Copy = new QAction("复制", treeWidget); + action_Copy->setIcon(QIcon(GetImagePath() + "icon/Copy.png")); // 设置图标":/image/u174.png" + connect(action_Copy, SIGNAL(triggered()), this, SLOT(onCopySelObject())); + menu->addAction(action_Copy); + + QAction* action_Delete = new QAction("删除", treeWidget); + action_Delete->setIcon(QIcon(GetImagePath() + "icon/Delete.png")); // 设置图标":/image/u174.png" + connect(action_Delete, SIGNAL(triggered()), this, SLOT(onDeleteObject())); + menu->addAction(action_Delete); } //初始化波列对象-右键菜单 @@ -736,6 +768,16 @@ void QtProjectWidgets::initWaveObjectTreeMenu(QMenu *menu, QTreeWidget *treeWidg action_DepthShift->setIcon(QIcon(GetImagePath() + "icon/RigidDepthShifting.png")); // 设置图标 connect(action_DepthShift, SIGNAL(triggered(bool)), this, SLOT(onDepthShift(bool))); menu->addAction(action_DepthShift); + + QAction* action_Copy = new QAction("复制", treeWidget); + action_Copy->setIcon(QIcon(GetImagePath() + "icon/Copy.png")); // 设置图标":/image/u174.png" + connect(action_Copy, SIGNAL(triggered()), this, SLOT(onCopySelObject())); + menu->addAction(action_Copy); + + QAction* action_Delete = new QAction("删除", treeWidget); + action_Delete->setIcon(QIcon(GetImagePath() + "icon/Delete.png")); // 设置图标":/image/u174.png" + connect(action_Delete, SIGNAL(triggered()), this, SLOT(onDeleteObject())); + menu->addAction(action_Delete); } //初始化表格对象-右键菜单 @@ -750,6 +792,16 @@ void QtProjectWidgets::initTableObjectTreeMenu(QMenu *menu, QTreeWidget *treeWid action_DepthShift->setIcon(QIcon(GetImagePath() + "icon/RigidDepthShifting.png")); // 设置图标 connect(action_DepthShift, SIGNAL(triggered(bool)), this, SLOT(onDepthShift(bool))); menu->addAction(action_DepthShift); + + QAction* action_Copy = new QAction("复制", treeWidget); + action_Copy->setIcon(QIcon(GetImagePath() + "icon/Copy.png")); // 设置图标":/image/u174.png" + connect(action_Copy, SIGNAL(triggered()), this, SLOT(onCopySelObject())); + menu->addAction(action_Copy); + + QAction* action_Delete = new QAction("删除", treeWidget); + action_Delete->setIcon(QIcon(GetImagePath() + "icon/Delete.png")); // 设置图标":/image/u174.png" + connect(action_Delete, SIGNAL(triggered()), this, SLOT(onDeleteObject())); + menu->addAction(action_Delete); } //初始化根节点(井名称)-右键菜单 @@ -793,6 +845,7 @@ void QtProjectWidgets::initSlfNameTreeMenu(QMenu *menu, QTreeWidget *treeWidget) action_New->setIcon(QIcon(GetImagePath() + "icon/Edit.png")); // 设置图标 connect(action_New, SIGNAL(triggered(bool)), this, SLOT(onWelllogInformation())); menu->addAction(action_New); + menu->addAction(m_action_Paste); // QAction* action_DepthShift = new QAction("深度移动", treeWidget); @@ -808,8 +861,24 @@ void QtProjectWidgets::initTableFolderTreeMenu(QMenu *menu, QTreeWidget *treeWid action_New->setIcon(QIcon(GetImagePath() + "icon/CreateTable.png")); // 设置图标 connect(action_New, SIGNAL(triggered(bool)), this, SLOT(onCreateNewTable())); menu->addAction(action_New); -} + menu->addAction(m_action_Paste); +} +//初始化根节点(曲线表目录)-右键菜单 +void QtProjectWidgets::initCurveFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget) +{ + menu->addAction(m_action_Paste); +} +//初始化根节点(参数卡目录)-右键菜单 +void QtProjectWidgets::initParCardFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget) +{ + menu->addAction(m_action_Paste); +} +//初始化根节点(波列目录)-右键菜单 +void QtProjectWidgets::initWaveFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget) +{ + menu->addAction(m_action_Paste); +} //新建项目 void QtProjectWidgets::onNewProject(bool checked) { @@ -1069,6 +1138,92 @@ void QtProjectWidgets::onCreateNewTable() } } +//删除(曲线、表格、波列、参数卡) +void QtProjectWidgets::onDeleteObject() +{ + CLogIO *logio=new CLogIO; + if(!logio->Open(m_strSlfName.toStdString().c_str(),CLogIO::modeReadWrite)) { + delete logio; + return; + } + logio->DeleteObject(m_strCurveObjectName.toLocal8Bit().data()); + logio->Close(); + + foreach(QTreeWidgetItem *pItem, ui->treeWidget->selectedItems()) + { + QTreeWidgetItem *parentItem = pItem->parent()->parent(); // 上两层目录是井次 + RefreshWellRoundTree(parentItem); + break; + } +} + +void QtProjectWidgets::onCopySelObject() // 复制 +{ + m_strCopySlfName = m_strSlfName; // 当前复制的对象Slf文件 + m_strCopyCurveObjectName = m_strCurveObjectName; // 当前复制的对象名 +} + +void QtProjectWidgets::onPasteSelObject() // 粘贴 +{ + if (m_strCopySlfName == m_strSlfName) + { + CLogIO *logio=new CLogIO; + if(!logio->Open(m_strSlfName.toStdString().c_str(),CLogIO::modeReadWrite)) { + delete logio; + return; + } + char buf[1000]; + int i=1; + while(1) { + sprintf(buf,"%s_%d",m_strCopyCurveObjectName.toStdString().c_str(),i++); + if (0>logio->FindObjectName(buf)) + break; + } + logio->CopyObject(m_strCopyCurveObjectName.toStdString().c_str(), buf); + logio->Close(); + delete logio; + + foreach(QTreeWidgetItem *pItem, ui->treeWidget->selectedItems()) + { + QTreeWidgetItem *parentItem = pItem/*->parent()*/; // 上一层目录是井次 + if (parentItem && m_strSlfName == parentItem->data(0, Qt::UserRole+1).toString()) + RefreshWellRoundTree(parentItem); + parentItem = parentItem = pItem->parent(); + if (parentItem && m_strSlfName == parentItem->data(0, Qt::UserRole+1).toString()) + RefreshWellRoundTree(parentItem); + break; + } + return; + } +} + +//刷新井次树 +void QtProjectWidgets::RefreshWellRoundTree(QTreeWidgetItem *parentItem) +{ + if (parentItem && m_strSlfName == parentItem->data(0, Qt::UserRole+1).toString()) + { + // qDeleteAll(parentItem->takeChildren()); + QTreeWidgetItem *pWellItem = parentItem->parent(); + QString Wellname = parentItem->text(0); + // parentItem->setExpanded(false); + loadWellTree(parentItem->parent(), m_strSlfName, Wellname); + pWellItem->removeChild(parentItem); + pWellItem->setExpanded(true); + + int WellCount = pWellItem->childCount(); + for (int i = 0; i < WellCount; ++i) + { + QTreeWidgetItem *childItem = pWellItem->child(i); + childItem->setExpanded(true); + int childCount = childItem->childCount(); + for (int j = 0; j < childCount; ++j) + { + childItem->child(j)->setExpanded(true); + } + } + } +} + void QtProjectWidgets::onEditWelllogRound() { QTreeWidgetItem *wellItem = *ui->treeWidget->selectedItems().begin(); @@ -1298,7 +1453,29 @@ void QtProjectWidgets::onItemClicked(QTreeWidgetItem* item, int index) popMenu = _menuTableFolder; m_strSlfName = item->parent()->data(0, Qt::UserRole+1).toString();//从父节点(井次)获取slf } + else if (strTreeTag == "ParameterCard") + { + //表格数据-右键菜单 + popMenu = _menuParCardFolder; + m_strSlfName = item->parent()->data(0, Qt::UserRole+1).toString();//从父节点(井次)获取slf + } + else if (strTreeTag == "Wave") + { + //波列数据-右键菜单 + popMenu = _menuWaveFolder; + m_strSlfName = item->parent()->data(0, Qt::UserRole+1).toString();//从父节点(井次)获取slf + } + else if (strTreeTag == "Curve") + { + //曲线数据-右键菜单 + popMenu = _menuTableFolder; + m_strSlfName = item->parent()->data(0, Qt::UserRole+1).toString();//从父节点(井次)获取slf + } + if (m_strCopySlfName != m_strSlfName) + m_action_Paste->setVisible(false); + else + m_action_Paste->setVisible(true); // if (qApp->mouseButtons() == Qt::RightButton) // 只针对鼠标右键,弹出菜单 { diff --git a/logPlus/qtprojectwidgets.h b/logPlus/qtprojectwidgets.h index 5fa537a..7ca3038 100644 --- a/logPlus/qtprojectwidgets.h +++ b/logPlus/qtprojectwidgets.h @@ -57,8 +57,12 @@ public slots: void onWelllogInformation(); //编辑测井信息 void onDepthShift_Well(bool checked = false); //深度移动 //表格数据 根节点 - void onCreateNewTable(); //创建新表 - + void onCreateNewTable(); //创建新表 + //删除(曲线、表格、波列、参数卡) + void onDeleteObject(); // 删除 + void onCopySelObject(); // 复制 + void onPasteSelObject(); // 粘贴 + void RefreshWellRoundTree(QTreeWidgetItem *parentItem); // 刷新井次树 //向左侧树图,追加固井结论表格 void s_AddGujingToTree(QString strSlfName, QString strWellName, QString strLineName); @@ -77,7 +81,11 @@ public: QMenu *_menuWellName; //井名 QMenu *_menuSlfName; //井次 QMenu *_menuTableFolder; //表目录 + QMenu *_menuCurveFolder; //曲线目录 + QMenu *_menuParCardFolder; //参数卡目录 + QMenu *_menuWaveFolder; //波列目录 + QAction* m_action_Paste; //黏贴 //根节点(项目名称)-右键菜单 QAction* m_action_New; QAction* m_action_Open; @@ -91,6 +99,9 @@ public: QString m_strSlfName; QString m_strCurveObjectName; + QString m_strCopySlfName; // 当前复制的对象Slf文件 + QString m_strCopyCurveObjectName; // 当前复制的对象名 + public: void loadIndexSysTree(QTreeWidgetItem *parent, QString fileFull, QString prjname); void loadWellTree(QTreeWidgetItem *parent, QString fileFull, QString parentWellname); @@ -116,6 +127,13 @@ public: void initSlfNameTreeMenu(QMenu *menu, QTreeWidget *treeWidget); //初始化根节点(表目录)-右键菜单 void initTableFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget); + //初始化根节点(曲线表目录)-右键菜单 + void initCurveFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget); + //初始化根节点(参数卡目录)-右键菜单 + void initParCardFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget); + //初始化根节点(波列目录)-右键菜单 + void initWaveFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget); + private: QMap > m_qmapWellFiles;