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

Reply via email to