fix some bugs
This commit is contained in:
parent
a890d80b05
commit
ece939b29e
@ -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
|
||||
|
@ -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()
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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)
|
Loading…
x
Reference in New Issue
Block a user