29
29
30
30
import os
31
31
32
- from qgis .PyQt .QtCore import QSettings
32
+ from qgis .PyQt .QtCore import QSettings , pyqtSignal
33
33
from qgis .PyQt .QtWidgets import QWidget , QHBoxLayout , QMenu , QPushButton , QLineEdit , QSizePolicy , QAction , QFileDialog
34
34
from qgis .PyQt .QtGui import QCursor
35
35
36
+ from qgis .core import QgsMapLayer
37
+
36
38
from processing .gui .MultipleInputDialog import MultipleInputDialog
37
39
38
40
from processing .core .parameters import ParameterMultipleInput
45
47
46
48
class BatchInputSelectionPanel (QWidget ):
47
49
50
+ valueChanged = pyqtSignal ()
51
+
48
52
def __init__ (self , param , row , col , dialog ):
49
53
super (BatchInputSelectionPanel , self ).__init__ (None )
50
54
self .param = param
@@ -55,8 +59,10 @@ def __init__(self, param, row, col, dialog):
55
59
self .horizontalLayout .setSpacing (0 )
56
60
self .horizontalLayout .setMargin (0 )
57
61
self .text = QLineEdit ()
62
+ self .text .setObjectName ('text' )
58
63
self .text .setMinimumWidth (300 )
59
- self .text .setText ('' )
64
+ self .setValue ('' )
65
+ self .text .editingFinished .connect (self .on_text_EditingFinished )
60
66
self .text .setSizePolicy (QSizePolicy .Expanding ,
61
67
QSizePolicy .Expanding )
62
68
self .horizontalLayout .addWidget (self .text )
@@ -67,7 +73,7 @@ def __init__(self, param, row, col, dialog):
67
73
self .setLayout (self .horizontalLayout )
68
74
69
75
def _panel (self ):
70
- return self .dialog .mainWidget ()
76
+ return self .dialog .mainWidget
71
77
72
78
def _table (self ):
73
79
return self ._panel ().tblParameters
@@ -118,7 +124,7 @@ def showLayerSelectionDialog(self):
118
124
self ._panel ().addRow ()
119
125
for i , layeridx in enumerate (selected ):
120
126
self ._table ().cellWidget (i + self .row ,
121
- self .col ).setText (layers [layeridx ]. name () )
127
+ self .col ).setValue (layers [layeridx ])
122
128
123
129
def showFileSelectionDialog (self ):
124
130
settings = QSettings ()
@@ -151,10 +157,19 @@ def showFileSelectionDialog(self):
151
157
self ._panel ().addRow ()
152
158
for i , f in enumerate (files ):
153
159
self ._table ().cellWidget (i + self .row ,
154
- self .col ).setText (f )
155
-
156
- def setText (self , text ):
157
- return self .text .setText (text )
158
-
159
- def getText (self ):
160
- return self .text .text ()
160
+ self .col ).setValue (f )
161
+
162
+ def on_text_EditingFinished (self ):
163
+ self ._value = self .text .text ()
164
+ self .valueChanged .emit ()
165
+
166
+ def value (self ):
167
+ return self ._value
168
+
169
+ def setValue (self , value ):
170
+ self ._value = value
171
+ if isinstance (value , QgsMapLayer ):
172
+ self .text .setText (value .name ())
173
+ else : # should be basestring
174
+ self .text .setText (value )
175
+ self .valueChanged .emit ()
0 commit comments