Skip to content

Commit b8a7a2a

Browse files
committed
[processing] add QtDesigner .ui file for Number input dialog
1 parent 60bf80c commit b8a7a2a

File tree

3 files changed

+216
-83
lines changed

3 files changed

+216
-83
lines changed

python/plugins/processing/gui/NumberInputDialog.py

+63-83
Original file line numberDiff line numberDiff line change
@@ -25,137 +25,117 @@
2525

2626
__revision__ = '$Format:%H$'
2727

28-
from qgis.core import *
2928
from PyQt4.QtCore import *
3029
from PyQt4.QtGui import *
31-
from PyQt4 import QtCore, QtGui
30+
from qgis.core import *
31+
3232
from processing import interface
3333
from processing.tools import dataobjects
3434

35+
from processing.ui.ui_DlgNumberInput import Ui_DlgNumberInput
3536

36-
class NumberInputDialog(QtGui.QDialog):
37+
38+
class NumberInputDialog(QDialog, Ui_DlgNumberInput):
3739

3840
def __init__(self):
39-
QtGui.QDialog.__init__(self)
40-
self.setModal(True)
41-
self.setupUi()
41+
QDialog.__init__(self)
42+
self.setupUi(self)
43+
44+
if hasattr(self.leFormula, 'setPlaceholderText'):
45+
self.leFormula.setPlaceholderText(
46+
self.tr('[Enter your formula here]'))
47+
48+
self.treeValues.doubleClicked.connect(self.addValue)
49+
4250
self.value = None
4351

44-
def setupUi(self):
45-
self.resize(500, 350)
46-
self.buttonBox = QtGui.QDialogButtonBox()
47-
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
48-
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel
49-
| QtGui.QDialogButtonBox.Ok)
50-
self.label = QtGui.QLabel()
51-
self.label.setText('Enter expression in the text field.\nDouble click\
52-
on elements in the tree to add their values to the expression.')
53-
self.tree = QtGui.QTreeWidget()
54-
self.tree.setHeaderHidden(True)
5552
self.fillTree()
56-
self.formulaText = QtGui.QLineEdit()
57-
if hasattr(self.formulaText, 'setPlaceholderText'):
58-
self.formulaText.setPlaceholderText('[Enter your formula here]')
59-
self.setWindowTitle('Enter number or expression')
60-
self.verticalLayout = QtGui.QVBoxLayout()
61-
self.verticalLayout.setSpacing(2)
62-
self.verticalLayout.setMargin(0)
63-
self.verticalLayout.addWidget(self.label)
64-
self.verticalLayout.addWidget(self.tree)
65-
self.verticalLayout.addWidget(self.formulaText)
66-
self.verticalLayout.addWidget(self.buttonBox)
67-
self.setLayout(self.verticalLayout)
68-
self.tree.doubleClicked.connect(self.addValue)
69-
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL('accepted()'),
70-
self.okPressed)
71-
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL('rejected()'),
72-
self.cancelPressed)
73-
QtCore.QMetaObject.connectSlotsByName(self)
7453

7554
def fillTree(self):
76-
layersItem = QtGui.QTreeWidgetItem()
77-
layersItem.setText(0, 'Values from data layers extents')
78-
self.tree.addTopLevelItem(layersItem)
55+
layersItem = QTreeWidgetItem()
56+
layersItem.setText(0, self.tr('Values from data layers extents'))
57+
self.treeValues.addTopLevelItem(layersItem)
7958
layers = dataobjects.getAllLayers()
8059
for layer in layers:
81-
layerItem = QtGui.QTreeWidgetItem()
60+
layerItem = QTreeWidgetItem()
8261
layerItem.setText(0, unicode(layer.name()))
83-
layerItem.addChild(TreeValueItem('Min X',
62+
layerItem.addChild(TreeValueItem(self.tr('Min X'),
8463
layer.extent().xMinimum()))
85-
layerItem.addChild(TreeValueItem('Max X',
64+
layerItem.addChild(TreeValueItem(self.tr('Max X'),
8665
layer.extent().xMaximum()))
87-
layerItem.addChild(TreeValueItem('Min Y',
66+
layerItem.addChild(TreeValueItem(self.tr('Min Y'),
8867
layer.extent().yMinimum()))
89-
layerItem.addChild(TreeValueItem('Max y',
68+
layerItem.addChild(TreeValueItem(self.tr('Max Y'),
9069
layer.extent().yMaximum()))
9170
if isinstance(layer, QgsRasterLayer):
9271
cellsize = (layer.extent().xMaximum()
9372
- layer.extent().xMinimum()) / layer.width()
94-
layerItem.addChild(TreeValueItem('Cellsize', cellsize))
73+
layerItem.addChild(TreeValueItem(self.tr('Cellsize'),
74+
cellsize))
9575
layersItem.addChild(layerItem)
96-
layersItem = QtGui.QTreeWidgetItem()
97-
layersItem.setText(0, 'Values from raster layers statistics')
98-
self.tree.addTopLevelItem(layersItem)
76+
77+
layersItem = QTreeWidgetItem()
78+
layersItem.setText(0, self.tr('Values from raster layers statistics'))
79+
self.treeValues.addTopLevelItem(layersItem)
9980
layers = dataobjects.getRasterLayers()
10081
for layer in layers:
10182
for i in range(layer.bandCount()):
102-
if QGis.QGIS_VERSION_INT >= 10900:
103-
stats = layer.dataProvider().bandStatistics(i + 1)
104-
else:
105-
stats = layer.bandStatistics(i)
106-
layerItem = QtGui.QTreeWidgetItem()
83+
stats = layer.dataProvider().bandStatistics(i + 1)
84+
layerItem = QTreeWidgetItem()
10785
layerItem.setText(0, unicode(layer.name()))
108-
layerItem.addChild(TreeValueItem('Mean', stats.mean))
109-
layerItem.addChild(TreeValueItem('Std. deviation',
86+
layerItem.addChild(TreeValueItem(self.tr('Mean'), stats.mean))
87+
layerItem.addChild(TreeValueItem(self.tr('Std. deviation'),
11088
stats.stdDev))
111-
layerItem.addChild(TreeValueItem('Max value',
89+
layerItem.addChild(TreeValueItem(self.tr('Max value'),
11290
stats.maximumValue))
113-
layerItem.addChild(TreeValueItem('Min value',
91+
layerItem.addChild(TreeValueItem(self.tr('Min value'),
11492
stats.minimumValue))
11593
layersItem.addChild(layerItem)
11694

117-
canvasItem = QtGui.QTreeWidgetItem()
118-
canvasItem.setText(0, 'Values from QGIS map canvas')
119-
self.tree.addTopLevelItem(canvasItem)
95+
canvasItem = QTreeWidgetItem()
96+
canvasItem.setText(0, self.tr('Values from QGIS map canvas'))
97+
self.treeValues.addTopLevelItem(canvasItem)
12098
extent = interface.iface.mapCanvas().extent()
121-
extentItem = QtGui.QTreeWidgetItem()
122-
extentItem.setText(0, 'Current extent')
123-
extentItem.addChild(TreeValueItem('Min X', extent.xMinimum()))
124-
extentItem.addChild(TreeValueItem('Max X', extent.xMaximum()))
125-
extentItem.addChild(TreeValueItem('Min Y', extent.yMinimum()))
126-
extentItem.addChild(TreeValueItem('Max y', extent.yMaximum()))
99+
extentItem = QTreeWidgetItem()
100+
extentItem.setText(0, self.tr('Current extent'))
101+
extentItem.addChild(TreeValueItem(self.tr('Min X'), extent.xMinimum()))
102+
extentItem.addChild(TreeValueItem(self.tr('Max X'), extent.xMaximum()))
103+
extentItem.addChild(TreeValueItem(self.tr('Min Y'), extent.yMinimum()))
104+
extentItem.addChild(TreeValueItem(self.tr('Max Y'), extent.yMaximum()))
127105
canvasItem.addChild(extentItem)
106+
128107
extent = interface.iface.mapCanvas().fullExtent()
129-
extentItem = QtGui.QTreeWidgetItem()
130-
extentItem.setText(0, 'Full extent of all layers in map canvas')
131-
extentItem.addChild(TreeValueItem('Min X', extent.xMinimum()))
132-
extentItem.addChild(TreeValueItem('Max X', extent.xMaximum()))
133-
extentItem.addChild(TreeValueItem('Min Y', extent.yMinimum()))
134-
extentItem.addChild(TreeValueItem('Max y', extent.yMaximum()))
108+
extentItem = QTreeWidgetItem()
109+
extentItem.setText(0,
110+
self.tr('Full extent of all layers in map canvas'))
111+
extentItem.addChild(TreeValueItem(self.tr('Min X'), extent.xMinimum()))
112+
extentItem.addChild(TreeValueItem(self.tr('Max X'), extent.xMaximum()))
113+
extentItem.addChild(TreeValueItem(self.tr('Min Y'), extent.yMinimum()))
114+
extentItem.addChild(TreeValueItem(self.tr('Max Y'), extent.yMaximum()))
135115
canvasItem.addChild(extentItem)
136116

137117
def addValue(self):
138-
item = self.tree.currentItem()
118+
item = self.treeValues.currentItem()
139119
if isinstance(item, TreeValueItem):
140-
self.formulaText.setText(str(self.formulaText.text()) + ' '
141-
+ str(item.value))
120+
formula = self.leFormula.text() + ' ' + str(item.value)
121+
self.leFormula.setText(formula.strip())
142122

143-
def okPressed(self):
123+
def accept(self):
144124
try:
145-
self.value = float(eval(str(self.formulaText.text())))
146-
self.close()
125+
self.value = float(eval(str(self.leFormula.text())))
126+
QDialog.accept(self)
147127
except:
148-
QMessageBox.critical(self, 'Wrong expression',
149-
'The expression entered is not correct')
128+
QMessageBox.critical(self, self.tr('Wrong expression'),
129+
self.tr('The expression entered is not correct'))
150130

151-
def cancelPressed(self):
131+
def reject(self):
152132
self.value = None
153-
self.close()
133+
QDialog.reject(self)
154134

155135

156-
class TreeValueItem(QtGui.QTreeWidgetItem):
136+
class TreeValueItem(QTreeWidgetItem):
157137

158138
def __init__(self, name, value):
159139
QTreeWidgetItem.__init__(self)
160140
self.value = value
161-
self.setText(0, name + ':' + str(value))
141+
self.setText(0, name + ': ' + str(value))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>DlgNumberInput</class>
4+
<widget class="QDialog" name="DlgNumberInput">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>445</width>
10+
<height>300</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>Enter number or expression</string>
15+
</property>
16+
<layout class="QVBoxLayout" name="verticalLayout">
17+
<property name="spacing">
18+
<number>2</number>
19+
</property>
20+
<property name="leftMargin">
21+
<number>0</number>
22+
</property>
23+
<property name="topMargin">
24+
<number>5</number>
25+
</property>
26+
<property name="rightMargin">
27+
<number>0</number>
28+
</property>
29+
<property name="bottomMargin">
30+
<number>0</number>
31+
</property>
32+
<item>
33+
<widget class="QLabel" name="label">
34+
<property name="text">
35+
<string>Enter expression in the text field.
36+
Double click on elements in the tree to add their values to the expression.</string>
37+
</property>
38+
</widget>
39+
</item>
40+
<item>
41+
<widget class="QTreeWidget" name="treeValues">
42+
<attribute name="headerVisible">
43+
<bool>false</bool>
44+
</attribute>
45+
<column>
46+
<property name="text">
47+
<string notr="true">1</string>
48+
</property>
49+
</column>
50+
</widget>
51+
</item>
52+
<item>
53+
<widget class="QLineEdit" name="leFormula"/>
54+
</item>
55+
<item>
56+
<widget class="QDialogButtonBox" name="buttonBox">
57+
<property name="orientation">
58+
<enum>Qt::Horizontal</enum>
59+
</property>
60+
<property name="standardButtons">
61+
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
62+
</property>
63+
</widget>
64+
</item>
65+
</layout>
66+
</widget>
67+
<resources/>
68+
<connections>
69+
<connection>
70+
<sender>buttonBox</sender>
71+
<signal>accepted()</signal>
72+
<receiver>DlgNumberInput</receiver>
73+
<slot>accept()</slot>
74+
<hints>
75+
<hint type="sourcelabel">
76+
<x>248</x>
77+
<y>254</y>
78+
</hint>
79+
<hint type="destinationlabel">
80+
<x>157</x>
81+
<y>274</y>
82+
</hint>
83+
</hints>
84+
</connection>
85+
<connection>
86+
<sender>buttonBox</sender>
87+
<signal>rejected()</signal>
88+
<receiver>DlgNumberInput</receiver>
89+
<slot>reject()</slot>
90+
<hints>
91+
<hint type="sourcelabel">
92+
<x>316</x>
93+
<y>260</y>
94+
</hint>
95+
<hint type="destinationlabel">
96+
<x>286</x>
97+
<y>274</y>
98+
</hint>
99+
</hints>
100+
</connection>
101+
</connections>
102+
</ui>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# -*- coding: utf-8 -*-
2+
3+
# Form implementation generated from reading ui file 'python/plugins/processing/ui/DlgNumberInput.ui'
4+
#
5+
# Created: Thu Oct 3 10:29:20 2013
6+
# by: PyQt4 UI code generator 4.9.1
7+
#
8+
# WARNING! All changes made in this file will be lost!
9+
10+
from PyQt4 import QtCore, QtGui
11+
12+
try:
13+
_fromUtf8 = QtCore.QString.fromUtf8
14+
except AttributeError:
15+
_fromUtf8 = lambda s: s
16+
17+
class Ui_DlgNumberInput(object):
18+
def setupUi(self, DlgNumberInput):
19+
DlgNumberInput.setObjectName(_fromUtf8("DlgNumberInput"))
20+
DlgNumberInput.resize(445, 300)
21+
self.verticalLayout = QtGui.QVBoxLayout(DlgNumberInput)
22+
self.verticalLayout.setSpacing(2)
23+
self.verticalLayout.setContentsMargins(0, 5, 0, 0)
24+
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
25+
self.label = QtGui.QLabel(DlgNumberInput)
26+
self.label.setObjectName(_fromUtf8("label"))
27+
self.verticalLayout.addWidget(self.label)
28+
self.treeValues = QtGui.QTreeWidget(DlgNumberInput)
29+
self.treeValues.setObjectName(_fromUtf8("treeValues"))
30+
self.treeValues.headerItem().setText(0, _fromUtf8("1"))
31+
self.treeValues.header().setVisible(False)
32+
self.verticalLayout.addWidget(self.treeValues)
33+
self.leFormula = QtGui.QLineEdit(DlgNumberInput)
34+
self.leFormula.setObjectName(_fromUtf8("leFormula"))
35+
self.verticalLayout.addWidget(self.leFormula)
36+
self.buttonBox = QtGui.QDialogButtonBox(DlgNumberInput)
37+
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
38+
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
39+
self.buttonBox.setObjectName(_fromUtf8("buttonBox"))
40+
self.verticalLayout.addWidget(self.buttonBox)
41+
42+
self.retranslateUi(DlgNumberInput)
43+
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), DlgNumberInput.accept)
44+
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), DlgNumberInput.reject)
45+
QtCore.QMetaObject.connectSlotsByName(DlgNumberInput)
46+
47+
def retranslateUi(self, DlgNumberInput):
48+
DlgNumberInput.setWindowTitle(QtGui.QApplication.translate("DlgNumberInput", "Enter number or expression", None, QtGui.QApplication.UnicodeUTF8))
49+
self.label.setText(QtGui.QApplication.translate("DlgNumberInput", "Enter expression in the text field.\n"
50+
"Double click on elements in the tree to add their values to the expression.", None, QtGui.QApplication.UnicodeUTF8))
51+

0 commit comments

Comments
 (0)