|
@@ -178,12 +178,19 @@ class ElTree(QWidget):
|
178
|
178
|
widgets.allTreeWidget.insertTopLevelItems(0, treeWidgetItems)
|
179
|
179
|
|
180
|
180
|
def contextMenuEvent(self, pos):
|
181
|
|
- print("contextMenuEvent called") # 调试信息
|
182
|
181
|
# 创建右键菜单
|
183
|
182
|
context_menu = QMenu(self)
|
|
183
|
+
|
|
184
|
+ # 添加删除选项
|
184
|
185
|
delete_action = QAction("删除", self)
|
185
|
186
|
delete_action.triggered.connect(self.delete_item)
|
186
|
187
|
context_menu.addAction(delete_action)
|
|
188
|
+
|
|
189
|
+ # 添加导出选项
|
|
190
|
+ export_action = QAction("导出", self)
|
|
191
|
+ export_action.triggered.connect(self.export_item)
|
|
192
|
+ context_menu.addAction(export_action)
|
|
193
|
+
|
187
|
194
|
context_menu.exec(widgets.allTreeWidget.mapToGlobal(pos))
|
188
|
195
|
|
189
|
196
|
def delete_item(self):
|
|
@@ -196,15 +203,13 @@ class ElTree(QWidget):
|
196
|
203
|
item = selected_items[0]
|
197
|
204
|
data = item.data(0, Qt.UserRole + 1)
|
198
|
205
|
if not data:
|
199
|
|
- QMessageBox.warning(self, '警告', '所选项目没有关联的数据')
|
|
206
|
+ self.warning = QMessageBox.warning(self, '警告', '所选项目没有关联的数据')
|
200
|
207
|
return
|
201
|
208
|
|
202
|
209
|
# 获取数据库路径和表名
|
203
|
210
|
dbname = data['listData'][0]
|
204
|
211
|
tablename = data['listData'][2]
|
205
|
212
|
dbpath = os.path.join(os.path.abspath('../SQL'), f"{dbname}.db")
|
206
|
|
- print(dbpath)
|
207
|
|
- print(tablename)
|
208
|
213
|
|
209
|
214
|
# 确保 tablename 是 UTF-8 编码的字符串
|
210
|
215
|
try:
|
|
@@ -212,7 +217,6 @@ class ElTree(QWidget):
|
212
|
217
|
except Exception as e:
|
213
|
218
|
QMessageBox.critical(self, '错误', f'表名编码转换错误: {str(e)}')
|
214
|
219
|
return
|
215
|
|
- print(tablename_utf8)
|
216
|
220
|
# 获取父节点
|
217
|
221
|
parent_item = item.parent()
|
218
|
222
|
if not parent_item:
|
|
@@ -220,7 +224,6 @@ class ElTree(QWidget):
|
220
|
224
|
return
|
221
|
225
|
|
222
|
226
|
parent_name = parent_item.text(0)
|
223
|
|
- print(f"Parent Name: {parent_name}")
|
224
|
227
|
|
225
|
228
|
# 确定要删除的表
|
226
|
229
|
tables_to_delete = []
|
|
@@ -255,7 +258,43 @@ class ElTree(QWidget):
|
255
|
258
|
self.refresh_tree()
|
256
|
259
|
except Exception as e:
|
257
|
260
|
QMessageBox.critical(self, '错误', f'删除数据时出错: {str(e)}')
|
258
|
|
- print(e)
|
|
261
|
+ def export_item(self):
|
|
262
|
+ # 获取当前选中的项目
|
|
263
|
+ selected_items = widgets.allTreeWidget.selectedItems()
|
|
264
|
+ if not selected_items:
|
|
265
|
+ QMessageBox.warning(self, '警告', '请先选择一个项目')
|
|
266
|
+ return
|
|
267
|
+
|
|
268
|
+ item = selected_items[0]
|
|
269
|
+ data = item.data(0, Qt.UserRole + 1)
|
|
270
|
+ if not data:
|
|
271
|
+ QMessageBox.warning(self, '警告', '所选项目没有关联的数据')
|
|
272
|
+ return
|
|
273
|
+
|
|
274
|
+ # 获取数据库路径和表名
|
|
275
|
+ dbname = data['listData'][0]
|
|
276
|
+ tablename = data['listData'][2]
|
|
277
|
+ tablename_utf8 = tablename.encode('utf-8')
|
|
278
|
+ dbpath = os.path.join(os.path.abspath('../SQL'), f"{dbname}.db")
|
|
279
|
+
|
|
280
|
+ # 获取父节点
|
|
281
|
+ parent_item = item.parent()
|
|
282
|
+ if not parent_item:
|
|
283
|
+ QMessageBox.warning(self, '警告', '所选项目没有父节点')
|
|
284
|
+ return
|
|
285
|
+
|
|
286
|
+ parent_name = parent_item.text(0)
|
|
287
|
+
|
|
288
|
+ # 根据父节点名称确定导出操作
|
|
289
|
+ if parent_name == '水准测段高差稳定计算':
|
|
290
|
+ GCExport.main_function(self, tablename_utf8, dbpath)
|
|
291
|
+ elif parent_name == '控制网复测平面基准计算':
|
|
292
|
+ GSExport.main_function(self, dbpath, tablename)
|
|
293
|
+ elif parent_name == '平面控制网稳定性计算':
|
|
294
|
+ WDExport.main_function(self, dbpath, tablename)
|
|
295
|
+ else:
|
|
296
|
+ QMessageBox.warning(self, '警告', '未知的父节点')
|
|
297
|
+ return
|
259
|
298
|
|
260
|
299
|
def refresh_tree(self):
|
261
|
300
|
# 调用 MainWindow 的 refresh_tree 方法
|
|
@@ -309,7 +348,6 @@ class DatabaseChangeHandler(FileSystemEventHandler):
|
309
|
348
|
|
310
|
349
|
def on_modified(self, event):
|
311
|
350
|
if event.src_path.endswith('.db'):
|
312
|
|
- print(f"Database file {event.src_path} has been modified.")
|
313
|
351
|
self.main_window.refresh_tree()
|
314
|
352
|
|
315
|
353
|
|