fix some bugs

This commit is contained in:
copper 2022-05-18 20:28:17 +08:00
parent a890d80b05
commit ece939b29e
4 changed files with 78 additions and 29 deletions

View File

@ -18,9 +18,9 @@ class LayerTree(QtWidgets.QWidget):
RIGHT_RASTER = 1
GRID = 3
tree_changed = QtCore.pyqtSignal(str)
tree_changed = QtCore.pyqtSignal()
zoom_to_layer_signal = QtCore.pyqtSignal(str)
result_clicked = QtCore.pyqtSignal(str, int)
def __init__(self, parent=None):
super().__init__(parent)
# self.tree_view = QTreeView(self)
@ -36,17 +36,11 @@ class LayerTree(QtWidgets.QWidget):
self.root.setText(0,'图层')
self.root.setIcon(0,QtGui.QIcon(':/icons/layer.png'))
# child1=QTreeWidgetItem()
# child1.setText(0,'child1')
# child1.setCheckState(0,Qt.Checked)
# self.root.addChild(child1)
self.tree.expandAll()
self.tree.addTopLevelItem(self.root)
# self.tree.clicked.connect(self.onClicked)
self.tree.itemClicked.connect(self.onItemClicked)
self.tree.itemChanged.connect(self.onItemChanged)
layout = QtWidgets.QGridLayout()
@ -54,22 +48,7 @@ class LayerTree(QtWidgets.QWidget):
self.setLayout(layout)
self.setLayoutDirection(Qt.LeftToRight)
self.is_in_add_layer = False
self.current_item = None
def onItemClicked(self, item:QtWidgets.QTreeWidgetItem, column):
if item == self.root:
return
root = item
if item.data(0, Qt.UserRole) != LayerTree.LAYER_TOOT:
root = item.parent()
if item.data(0, Qt.UserRole) == LayerTree.LAYER_TOOT:
return
layer = Project().layers[root.data(0, Qt.UserRole + 1)]
Project().current_layer = layer
if item.data(0, Qt.UserRole) == LayerTree.RESULT:
# result = layer.results[item.data(0, Qt.UserRole + 1)]
self.result_clicked.emit(layer.id, item.data(0, Qt.UserRole + 1))
self.current_item = None
def onItemChanged(self, item:QtWidgets.QTreeWidgetItem, column):
if self.is_in_add_layer:
@ -94,7 +73,7 @@ class LayerTree(QtWidgets.QWidget):
if item.data(0, Qt.UserRole) == LayerTree.GRID:
layer.grid_enable = item.checkState(0) == Qt.Checked
self.tree_changed.emit(layer.id)
self.tree_changed.emit()
def add_layer(self, layer:str):
# self.tree.it

View File

@ -100,6 +100,28 @@ class DoubleCanvas(QWidget):
self.mapcanva1.setMapTool(QgsMapToolZoom(self.mapcanva1, True))
self.mapcanva2.setMapTool(QgsMapToolZoom(self.mapcanva2, True))
def update_layer(self):
layers = Project().layers
layer_list_1 = []
layer_list_2 = []
for layer in layers.values():
if layer.enable:
if layer.grid_enable and self.grid_show:
layer_list_1.append(layer.grid_layer.grid_layer)
layer_list_2.append(layer.grid_layer.grid_layer)
if layer.l1_enable:
layer_list_1.append(layer.l1)
if layer.l2_enable:
layer_list_2.append(layer.l2)
for result in layer.results:
if result.enable:
layer_list_1.append(result.layer)
layer_list_2.append(result.layer)
self.mapcanva1.setLayers(layer_list_1)
self.mapcanva2.setLayers(layer_list_2)
def add_layer(self, layer:str):
if not layer in Project().layers:
self.clear()

View File

@ -1,6 +1,8 @@
from collections import OrderedDict
import os
from pathlib import Path
from threading import Thread
from time import sleep, time
from typing import Dict, List
import uuid
import numpy as np
@ -24,6 +26,21 @@ class Project(QObject):
ABSOLUTE_MODE = 'absolute'
RELATIVE_MODE = 'relative'
def run_auto_save(self):
t = Thread(target=self.auto_save)
t.run()
def auto_save(self):
# pre = time()
while True:
if Settings.General().auto_save and self.is_init:
self.save()
if self.is_closed:
break
sleep(Settings.General().auto_save_intervel)
def __init__(self,
parent=None):
super().__init__(parent)
@ -35,6 +52,8 @@ class Project(QObject):
self.file_mode = Project.ABSOLUTE_MODE
self.layers:Dict[str, PairLayer] = OrderedDict()
self.current_layer = None
self.is_closed = False
self.run_auto_save()
def connect(self, pair_canvas,
layer_tree,
@ -47,8 +66,7 @@ class Project(QObject):
self.layer_load.connect(layer_tree.add_layer)
self.layer_load.connect(pair_canvas.add_layer)
# self.layer_load.connect(message_box.add_layer)
#
def change_result(self, layer_id, result_id, data):
if layer_id in self.layers:
result = self.layers[layer_id].results[result_id]
@ -73,7 +91,7 @@ class Project(QObject):
pass
else:
self.load()
self.cmi_dir = str(Path(self.root)/'cmi')
# self.cmi_dir = str(Path(self.root)/'cmi')
# self.project_created.emit()
self.project_init.emit(True)

View File

@ -145,4 +145,34 @@ class Settings(QSettings):
def root(self):
with Settings(Settings.General.PRE) as s:
return s.value('root', './')
@property
def auto_save(self):
with Settings(Settings.General.PRE) as s:
return s.value('auto_save', True)
@property.setter
def auto_save(self, value):
if isinstance(value, bool):
pass
else:
if isinstance(value, (int,float)):
value = value != 0
else:
value = value is not None
with Settings(Settings.General.PRE) as s:
s.setValue('auto_save', value)
@property
def auto_save_intervel(self):
with Settings(Settings.General.PRE) as s:
return s.value('auto_save_intervel', 30)
@property.setter
def auto_save_intervel(self, value):
if isinstance(value, int) and value > 0:
pass
else:
return
with Settings(Settings.General.PRE) as s:
s.setValue('auto_save_intervel', value)