forked from Giswater/giswater_qgis_plugin
/
ws_arc_init.py
153 lines (112 loc) · 6.17 KB
/
ws_arc_init.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# -*- coding: utf-8 -*-
from PyQt4.QtCore import * # @UnusedWildImport
from PyQt4.QtGui import * # @UnusedWildImport
from qgis.utils import iface
import utils_giswater
from ws_parent_init import ParentDialog
def formOpen(dialog, layer, feature):
''' Function called when an arc is identified in the map '''
global feature_dialog
utils_giswater.setDialog(dialog)
# Create class to manage Feature Form interaction
feature_dialog = ArcDialog(iface, dialog, layer, feature)
init_config()
def init_config():
feature_dialog.dialog.findChild(QComboBox, "arccat_id").setVisible(False)
arccat_id = utils_giswater.getWidgetText("arccat_id", False)
feature_dialog.change_arc_type()
feature_dialog.dialog.findChild(QComboBox, "cat_arctype_id").activated.connect(feature_dialog.change_arc_type)
feature_dialog.dialog.findChild(QComboBox, "arccat_id_dummy").activated.connect(feature_dialog.change_arc_cat)
utils_giswater.setSelectedItem("arccat_id_dummy", arccat_id)
utils_giswater.setSelectedItem("arccat_id", arccat_id)
feature_dialog.dialog.findChild(QComboBox, "epa_type").activated.connect(feature_dialog.change_epa_type)
feature_dialog.dialog.findChild(QPushButton, "btn_accept").clicked.connect(feature_dialog.save)
feature_dialog.dialog.findChild(QPushButton, "btn_close").clicked.connect(feature_dialog.close)
class ArcDialog(ParentDialog):
def __init__(self, iface, dialog, layer, feature):
''' Constructor class '''
super(ArcDialog, self).__init__(iface, dialog, layer, feature)
self.init_config_arc()
def init_config_arc(self):
''' Custom form initial configuration for 'Arc' '''
# Define class variables
self.field_id = "arc_id"
self.id = utils_giswater.getWidgetText(self.field_id, False)
self.epa_type = utils_giswater.getWidgetText("epa_type", False)
if self.epa_type == 'PIPE':
self.epa_table = 'inp_pipe'
# Get widget controls
self.tab_analysis = self.dialog.findChild(QTabWidget, "tab_analysis")
self.tab_event = self.dialog.findChild(QTabWidget, "tab_event")
self.tab_main = self.dialog.findChild(QTabWidget, "tab_main")
# Manage tab visibility
self.set_tabs_visibility()
# Manage i18n
self.translate_form('ws_arc')
# Fill combo 'arc type' from 'epa_type'
self.fill_arc_type()
# Load data from related tables
self.load_data()
# Set layer in editing mode
self.layer.startEditing()
def set_tabs_visibility(self):
''' Hide some tabs '''
self.tab_main.removeTab(7)
self.tab_main.removeTab(4)
self.tab_main.removeTab(2)
self.tab_main.removeTab(1)
def load_tab_analysis(self):
''' Load data from tab 'Analysis' '''
if self.epa_type == 'PIPE':
self.fields_pipe = ['minorloss', 'status']
sql = "SELECT "
for i in range(len(self.fields_pipe)):
sql+= self.fields_pipe[i]+", "
sql = sql[:-2]
sql+= " FROM "+self.schema_name+"."+self.epa_table+" WHERE "+self.field_id+" = '"+self.id+"'"
row = self.dao.get_row(sql)
if row:
for i in range(len(self.fields_pipe)):
widget_name = self.epa_table+"_"+self.fields_pipe[i]
utils_giswater.setWidgetText(widget_name, str(row[i]))
def save_tab_analysis(self):
''' Save tab from tab 'Analysis' '''
#super(ArcDialog, self).save_tab_analysis()
if self.epa_type == 'PIPE':
values = []
sql = "UPDATE "+self.schema_name+"."+self.epa_table+" SET "
for i in range(len(self.fields_pipe)):
widget_name = self.epa_table+"_"+self.fields_pipe[i]
value = utils_giswater.getWidgetText(widget_name, True)
values.append(value)
sql+= self.fields_pipe[i]+" = "+str(values[i])+", "
sql = sql[:-2]
sql+= " WHERE "+self.field_id+" = '"+self.id+"'"
self.dao.execute_sql(sql)
''' Slot functions '''
def fill_arc_type(self):
''' Define and execute query to populate combo 'cat_arctype_id' '''
cat_arctype_id = utils_giswater.getWidgetText("cat_arctype_id", False)
sql = "SELECT id, man_table, epa_table FROM "+self.schema_name+".arc_type"
sql+= " WHERE epa_default = '"+self.epa_type+"' ORDER BY id"
rows = self.dao.get_rows(sql)
utils_giswater.fillComboBox("cat_arctype_id", rows)
utils_giswater.setWidgetText("cat_arctype_id", cat_arctype_id)
def change_arc_type(self):
''' Define and execute query to populate combo 'arccat_id_dummy' '''
cat_arctype_id = utils_giswater.getWidgetText("cat_arctype_id", True)
sql = "SELECT id FROM "+self.schema_name+".cat_arc"
sql+= " WHERE arctype_id = "+cat_arctype_id+" ORDER BY id"
rows = self.dao.get_rows(sql)
utils_giswater.fillComboBox("arccat_id_dummy", rows, False)
# Select first item by default
self.change_arc_cat()
def change_arc_cat(self):
''' Just select item to 'real' combo 'arccat_id' (that is hidden) '''
dummy = utils_giswater.getWidgetText("arccat_id_dummy", False)
utils_giswater.setWidgetText("arccat_id", dummy)
def change_epa_type(self, index):
''' Just select item to 'real' combo 'arccat_id' (that is hidden) '''
epa_type = utils_giswater.getWidgetText("epa_type", False)
self.save()
self.iface.openFeatureForm(self.layer, self.feature)