23
23
# This will get replaced with a git SHA1 when you do a git archive
24
24
__revision__ = '$Format:%H$'
25
25
26
- from PyQt4 .QtCore import *
27
- from PyQt4 .QtGui import *
28
- from PyQt4 import QtCore , QtGui , QtWebKit
29
26
import os
30
27
import pickle
31
28
32
- class HelpEditionDialog (QtGui .QDialog ):
29
+ from PyQt4 .QtCore import *
30
+ from PyQt4 .QtGui import *
31
+
32
+ from sextante .ui .ui_DlgHelpEdition import Ui_DlgHelpEdition
33
+
34
+ class HelpEditionDialog (QDialog , Ui_DlgHelpEdition ):
33
35
34
36
ALG_DESC = "ALG_DESC"
35
37
ALG_CREATOR = "ALG_CREATOR"
36
38
ALG_HELP_CREATOR = "ALG_HELP_CREATOR"
37
39
38
40
def __init__ (self , alg ):
41
+ QDialog .__init__ (self )
42
+ self .setupUi (self )
43
+
39
44
self .alg = alg
40
- QtGui .QDialog .__init__ (self )
41
- self .setModal (True )
42
45
self .descriptions = {}
43
46
if self .alg .descriptionFile is not None :
44
47
helpfile = alg .descriptionFile + ".help"
45
48
if os .path .exists (helpfile ):
46
49
f = open (helpfile , "rb" )
47
50
self .descriptions = pickle .load (f )
48
51
self .currentName = self .ALG_DESC
49
- self .setupUi ()
50
-
51
- def setupUi (self ):
52
- self .resize (700 , 500 )
53
- self .tree = QtGui .QTreeWidget ()
54
- self .tree .setHeaderHidden (True )
55
- self .tree .setMinimumWidth (300 )
56
- QObject .connect (self .tree , QtCore .SIGNAL ("itemClicked(QTreeWidgetItem*, int)" ), self .changeItem )
57
- self .groupIcon = QtGui .QIcon ()
58
- self .groupIcon .addPixmap (self .style ().standardPixmap (QtGui .QStyle .SP_DirClosedIcon ),
59
- QtGui .QIcon .Normal , QtGui .QIcon .Off )
60
- self .groupIcon .addPixmap (self .style ().standardPixmap (QtGui .QStyle .SP_DirOpenIcon ),
61
- QtGui .QIcon .Normal , QtGui .QIcon .On )
62
- self .keyIcon = QtGui .QIcon ()
63
- self .keyIcon .addPixmap (self .style ().standardPixmap (QtGui .QStyle .SP_FileIcon ))
52
+
53
+ self .tree .itemClicked .connect (self .changeItem )
54
+
64
55
self .fillTree ()
65
- self .setWindowTitle ("Help editor" )
66
- self .horizontalLayout = QtGui .QHBoxLayout ()
67
- self .horizontalLayout .setSpacing (15 )
68
- self .horizontalLayout .setMargin (0 )
69
- self .label = QtGui .QLabel ()
70
- self .label .setText ("Select elements on the tree and fill their description in the text box below" )
71
- self .labelName = QtGui .QLabel ()
72
- self .labelName .setText ("Algorithm description" )
73
- self .text = QtGui .QTextEdit ()
74
- self .text .setMinimumHeight (200 )
75
- self .verticalLayout = QtGui .QVBoxLayout ()
76
- self .verticalLayout .setSpacing (5 )
77
- self .verticalLayout .setMargin (0 )
78
- self .verticalLayout .addWidget (self .tree )
79
- self .verticalLayout .addSpacing (20 )
80
- self .verticalLayout .addWidget (self .label )
81
- self .verticalLayout .addSpacing (20 )
82
- self .verticalLayout .addWidget (self .labelName )
83
- self .verticalLayout .addWidget (self .text )
84
- self .horizontalLayout .addLayout (self .verticalLayout )
85
- self .webView = QtWebKit .QWebView ()
86
- self .webView .setMinimumWidth (300 )
87
- self .webView .setHtml (self .getHtml ())
88
- self .horizontalLayout .addWidget (self .webView )
89
- self .closeButton = QtGui .QPushButton ()
90
- self .closeButton .setText ("Cancel" )
91
- self .saveButton = QtGui .QPushButton ()
92
- self .saveButton .setText ("OK" )
93
- self .horizontalLayout2 = QtGui .QHBoxLayout ()
94
- self .horizontalLayout2 .setSpacing (2 )
95
- self .horizontalLayout2 .setMargin (0 )
96
- self .horizontalLayout2 .addStretch (1000 )
97
- self .horizontalLayout2 .addWidget (self .saveButton )
98
- self .horizontalLayout2 .addWidget (self .closeButton )
99
- QObject .connect (self .closeButton , QtCore .SIGNAL ("clicked()" ), self .closeWindow )
100
- QObject .connect (self .saveButton , QtCore .SIGNAL ("clicked()" ), self .saveHelp )
101
- self .verticalLayout2 = QtGui .QVBoxLayout ()
102
- self .verticalLayout2 .setSpacing (2 )
103
- self .verticalLayout2 .setMargin (0 )
104
- self .verticalLayout2 .addLayout (self .horizontalLayout )
105
- self .verticalLayout2 .addLayout (self .horizontalLayout2 )
106
- self .setLayout (self .verticalLayout2 )
107
- QtCore .QMetaObject .connectSlotsByName (self )
108
56
self .updateHtmlView ()
109
57
110
- def closeWindow (self ):
58
+ def reject (self ):
111
59
self .descriptions = None
112
- self . close ( )
60
+ QDialog . reject ( self )
113
61
114
- def saveHelp (self ):
115
- self .descriptions [self .currentName ] = str (self .text .toPlainText ())
62
+ def accept (self ):
63
+ self .descriptions [self .currentName ] = unicode (self .text .toPlainText ())
116
64
if self .alg .descriptionFile is not None :
117
65
f = open (self .alg .descriptionFile + ".help" , "wb" )
118
66
pickle .dump (self .descriptions , f )
119
67
f .close ()
120
- self . close ( )
68
+ QDialog . accept ( self )
121
69
122
70
def getHtml (self ):
123
71
s = "<h2>Algorithm description</h2>\n "
@@ -140,7 +88,7 @@ def fillTree(self):
140
88
for param in self .alg .parameters :
141
89
item = TreeDescriptionItem (param .description , param .name )
142
90
parametersItem .addChild (item )
143
- outputsItem = TreeDescriptionItem ("Outputs" , None )
91
+ outputsItem = TreeDescriptionItem (self . tr ( "Outputs" ) , None )
144
92
self .tree .addTopLevelItem (outputsItem )
145
93
for out in self .alg .outputs :
146
94
item = TreeDescriptionItem (out .description , out .name )
@@ -154,27 +102,32 @@ def changeItem(self):
154
102
item = self .tree .currentItem ()
155
103
if isinstance (item , TreeDescriptionItem ):
156
104
if self .currentName :
157
- self .descriptions [self .currentName ] = str (self .text .toPlainText ())
105
+ self .descriptions [self .currentName ] = unicode (self .text .toPlainText ())
158
106
name = item .name
159
107
if name :
108
+ self .text .setEnabled (True )
160
109
self .updateHtmlView ()
161
110
self .currentName = name
162
- self .labelName .setText (item .description )
163
111
if name in self .descriptions :
164
112
self .text .setText (self .descriptions [name ])
165
113
else :
166
- self .text .setText ("" )
114
+ self .text .clear ()
115
+ else :
116
+ self .currentName = None
117
+ self .text .clear ()
118
+ self .text .setEnabled (False )
119
+ self .updateHtmlView ()
167
120
168
121
def updateHtmlView (self ):
169
122
self .webView .setHtml (self .getHtml ())
170
123
171
124
def getDescription (self , name ):
172
- if name in self .descriptions :
125
+ if name in self .descriptions :
173
126
return self .descriptions [name ]
174
127
else :
175
128
return ""
176
129
177
- class TreeDescriptionItem (QtGui . QTreeWidgetItem ):
130
+ class TreeDescriptionItem (QTreeWidgetItem ):
178
131
def __init__ (self , description , name ):
179
132
QTreeWidgetItem .__init__ (self )
180
133
self .name = name
0 commit comments