Revision: 8091 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8091&view=rev Author: jdh2358 Date: 2010-01-17 01:42:30 +0000 (Sun, 17 Jan 2010)
Log Message: ----------- added Goekhan's apply patch to qt editor Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/qt4_editor/figureoptions.py trunk/matplotlib/lib/matplotlib/backends/qt4_editor/formlayout.py Modified: trunk/matplotlib/lib/matplotlib/backends/qt4_editor/figureoptions.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/qt4_editor/figureoptions.py 2010-01-16 23:14:50 UTC (rev 8090) +++ trunk/matplotlib/lib/matplotlib/backends/qt4_editor/figureoptions.py 2010-01-17 01:42:30 UTC (rev 8091) @@ -112,43 +112,46 @@ datalist = [(general, "Axes", "")] if has_curve: datalist.append((curves, "Curves", "")) - result = formlayout.fedit(datalist, title="Figure options", parent=parent, - icon=get_icon('qt4_editor_options.svg')) - if result is None: - return - - if has_curve: - general, curves = result - else: - general, = result - - # Set / General - title, xmin, xmax, xlabel, xscale, ymin, ymax, ylabel, yscale = general - axes.set_xscale(xscale) - axes.set_yscale(yscale) - axes.set_title(title) - axes.set_xlim(xmin, xmax) - axes.set_xlabel(xlabel) - axes.set_ylim(ymin, ymax) - axes.set_ylabel(ylabel) - - if has_curve: - # Set / Curves - for index, curve in enumerate(curves): - line = linedict[curvelabels[index]] - label, linestyle, linewidth, color, \ - marker, markersize, markerfacecolor, markeredgecolor = curve - line.set_label(label) - line.set_linestyle(linestyle) - line.set_linewidth(linewidth) - line.set_color(color) - if marker is not 'none': - line.set_marker(marker) - line.set_markersize(markersize) - line.set_markerfacecolor(markerfacecolor) - line.set_markeredgecolor(markeredgecolor) - - # Redraw - figure = axes.get_figure() - figure.canvas.draw() - + + def apply_callback(data): + """This function will be called to apply changes""" + if has_curve: + general, curves = data + else: + general, = data + + # Set / General + title, xmin, xmax, xlabel, xscale, ymin, ymax, ylabel, yscale = general + axes.set_xscale(xscale) + axes.set_yscale(yscale) + axes.set_title(title) + axes.set_xlim(xmin, xmax) + axes.set_xlabel(xlabel) + axes.set_ylim(ymin, ymax) + axes.set_ylabel(ylabel) + + if has_curve: + # Set / Curves + for index, curve in enumerate(curves): + line = linedict[curvelabels[index]] + label, linestyle, linewidth, color, \ + marker, markersize, markerfacecolor, markeredgecolor = curve + line.set_label(label) + line.set_linestyle(linestyle) + line.set_linewidth(linewidth) + line.set_color(color) + if marker is not 'none': + line.set_marker(marker) + line.set_markersize(markersize) + line.set_markerfacecolor(markerfacecolor) + line.set_markeredgecolor(markeredgecolor) + + # Redraw + figure = axes.get_figure() + figure.canvas.draw() + + data = formlayout.fedit(datalist, title="Figure options", parent=parent, + icon=get_icon('qt4_editor_options.svg'), apply=apply_callback) + if data is not None: + apply_callback(data) + Modified: trunk/matplotlib/lib/matplotlib/backends/qt4_editor/formlayout.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/qt4_editor/formlayout.py 2010-01-16 23:14:50 UTC (rev 8090) +++ trunk/matplotlib/lib/matplotlib/backends/qt4_editor/formlayout.py 2010-01-17 01:42:30 UTC (rev 8091) @@ -33,7 +33,11 @@ OTHER DEALINGS IN THE SOFTWARE. """ -__version__ = '1.0.5' +# History: +# 1.0.7: added support for "Apply" button +# 1.0.6: code cleaning + +__version__ = '1.0.7' __license__ = __doc__ DEBUG = False @@ -67,21 +71,21 @@ QPushButton.__init__(self, parent) self.setFixedSize(20, 20) self.setIconSize(QSize(12, 12)) - self.connect(self, SIGNAL("clicked()"), self.chooseColor) + self.connect(self, SIGNAL("clicked()"), self.choose_color) self._color = QColor() - def chooseColor(self): + def choose_color(self): rgba, valid = QColorDialog.getRgba(self._color.rgba(), self.parentWidget()) if valid: color = QColor.fromRgba(rgba) - self.setColor(color) + self.set_color(color) - def color(self): + def get_color(self): return self._color @pyqtSignature("QColor") - def setColor(self, color): + def set_color(self, color): if color != self._color: self._color = color self.emit(SIGNAL("colorChanged(QColor)"), self._color) @@ -89,7 +93,7 @@ pixmap.fill(color) self.setIcon(QIcon(pixmap)) - color = pyqtProperty("QColor", color, setColor) + color = pyqtProperty("QColor", get_color, set_color) def text_to_qcolor(text): @@ -369,8 +373,10 @@ class FormDialog(QDialog): """Form Dialog""" def __init__(self, data, title="", comment="", - icon=None, parent=None): + icon=None, parent=None, apply=None): super(FormDialog, self).__init__(parent) + + self.apply_callback = apply # Form if isinstance(data[0][0], (list, tuple)): @@ -387,6 +393,9 @@ # Button box bbox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + if self.apply_callback is not None: + apply_btn = bbox.addButton(QDialogButtonBox.Apply) + self.connect(apply_btn, SIGNAL("clicked()"), self.apply) self.connect(bbox, SIGNAL("accepted()"), SLOT("accept()")) self.connect(bbox, SIGNAL("rejected()"), SLOT("reject()")) layout.addWidget(bbox) @@ -406,17 +415,25 @@ self.data = None QDialog.reject(self) + def apply(self): + self.apply_callback(self.formwidget.get()) + def get(self): """Return form result""" return self.data -def fedit(data, title="", comment="", icon=None, parent=None): +def fedit(data, title="", comment="", icon=None, parent=None, apply=None): """ Create form dialog and return result (if Cancel button is pressed, return None) data: datalist, datagroup + title: string + comment: string + icon: QIcon instance + parent: parent QWidget + apply: apply callback (function) datalist: list/tuple of (field_name, field_value) datagroup: list/tuple of (datalist *or* datagroup, title, comment) @@ -440,7 +457,7 @@ if QApplication.startingUp(): QApplication([]) - dialog = FormDialog(data, title, comment, icon, parent) + dialog = FormDialog(data, title, comment, icon, parent, apply) if dialog.exec_(): return dialog.get() @@ -471,8 +488,11 @@ #--------- datalist example datalist = create_datalist_example() + def apply_test(data): + print "data:", data print "result:", fedit(datalist, title="Example", - comment="This is just an <b>example</b>.") + comment="This is just an <b>example</b>.", + apply=apply_test) #--------- datagroup example datagroup = create_datagroup_example() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev _______________________________________________ Matplotlib-checkins mailing list Matplotlib-checkins@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins