예제 #1
0
파일: plot.py 프로젝트: painter1/vistrails
class PlotProperties(QtGui.QDockWidget):
    def __init__(self, parent=None):
        super(PlotProperties, self).__init__(parent)
        self.setWindowFlags(self.windowFlags()
                            | QtCore.Qt.WindowStaysOnTopHint)
        self.setWindowTitle("Visualization Properties")
        self.area = QtGui.QScrollArea()
        self.area.setWidgetResizable(True)
        self.confWidget = QConfigurationWidget()
        self.area.setWidget(self.confWidget)
        self.setWidget(self.area)
        self.controller = None
        self.updateLocked = False
        self.hasChanges = False
        self.sheetName = None
        self.row = -1
        self.col = -1

    @classmethod
    def instance(klass, parent=None):
        if not hasattr(klass, '_instance'):
            klass._instance = klass(parent)
        return klass._instance

    def set_controller(self, controller):
        self.controller = controller
        self.updateProperties(None)

    def sizeHint(self):
        return QtCore.QSize(512, 512)

    def updateProperties(self, widget=None, sheetName=None, row=-1, col=-1):
        if self.updateLocked: return
        self.sheetName = sheetName
        self.row = row
        self.col = col
        self.confWidget.setUpdatesEnabled(False)
        self.confWidget.setVisible(False)
        self.confWidget.clear()
        if widget and self.controller:
            self.confWidget.setUpWidget(widget)
            self.connect(widget, QtCore.SIGNAL("plotDoneConfigure"),
                         self.configureDone)
            self.connect(widget, QtCore.SIGNAL("stateChanged"),
                         self.stateChanged)
        self.confWidget.setUpdatesEnabled(True)
        self.confWidget.setVisible(True)
        self.hasChanges = False
        # we need to reset the title in case there were changes
        self.setWindowTitle("Visualization Properties")

    def configureDone(self, action):
        self.controller.plot_properties_were_changed(self.sheetName, self.row,
                                                     self.col, action)

    def stateChanged(self):
        self.hasChanges = self.confWidget.widget.state_changed
        # self.setWindowModified seems not to work here
        # self.setWindowModified(self.hasChanges)
        title = str(self.windowTitle())
        if self.hasChanges:
            if not title.endswith("*"):
                self.setWindowTitle(title + "*")
        else:
            if title.endswith("*"):
                self.setWindowTitle(title[:-1])

    def lockUpdate(self):
        """ lockUpdate() -> None
        Do not allow updateModule()
        
        """
        self.updateLocked = True

    def unlockUpdate(self):
        """ unlockUpdate() -> None
        Allow updateModule()
        
        """
        self.updateLocked = False

    def closeEvent(self, event):
        self.confWidget.askToSaveChanges()
        event.accept()

    def activate(self):
        if self.isVisible() == False:
            # self.toolWindow().show()
            self.show()
        self.activateWindow()
        self.confWidget.activate()

    def set_visible(self, enabled):
        #print "set_visible ", self, enabled
        if hasattr(self, 'main_window') and self.main_window is not None:
            self.main_window.show()
            self.main_window.raise_()

        if enabled:
            self.show()
            self.raise_()
            self.setFloating(True)
예제 #2
0
파일: plot.py 프로젝트: benbu/uvcdat-gui
class PlotProperties(QtGui.QDockWidget):
    def __init__(self, parent=None):
        super(PlotProperties, self).__init__(parent)
        self.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)
        self.setWindowTitle("Visualization Properties")
        self.area = QtGui.QScrollArea()
        self.area.setWidgetResizable(True)
        self.confWidget = QConfigurationWidget()
        self.area.setWidget(self.confWidget)
        self.setWidget(self.area)
        self.controller = None
        self.updateLocked = False
        self.hasChanges = False
        self.sheetName = None
        self.row = -1
        self.col = -1
        
    @classmethod
    def instance(klass, parent=None):
        if not hasattr(klass, '_instance'):
            klass._instance = klass(parent)
        return klass._instance
        
    def set_controller(self, controller):
        self.controller = controller
        self.updateProperties(None)

    def sizeHint(self):
        return QtCore.QSize(512, 512)
    
    def updateProperties(self, widget=None, sheetName=None, row=-1, col=-1):
        if self.updateLocked: return
        self.sheetName = sheetName
        self.row = row
        self.col = col
        self.confWidget.setUpdatesEnabled(False)    
        self.confWidget.setVisible(False)
        self.confWidget.clear()
        if widget and self.controller:
            self.confWidget.setUpWidget(widget)
            self.connect(widget, QtCore.SIGNAL("plotDoneConfigure"),
                         self.configureDone)
            self.connect(widget, QtCore.SIGNAL("stateChanged"),
                         self.stateChanged)
        self.confWidget.setUpdatesEnabled(True)
        self.confWidget.setVisible(True)
        self.hasChanges = False
        # we need to reset the title in case there were changes
        self.setWindowTitle("Visualization Properties")
    
    def configureDone(self, action):
        self.controller.plot_properties_were_changed(self.sheetName,
                                                     self.row, self.col,
                                                     action)
    
    def stateChanged(self):
        self.hasChanges = self.confWidget.widget.state_changed
        # self.setWindowModified seems not to work here
        # self.setWindowModified(self.hasChanges)
        title = str(self.windowTitle())
        if self.hasChanges:
            if not title.endswith("*"):
                self.setWindowTitle(title + "*")
        else:
            if title.endswith("*"):
                self.setWindowTitle(title[:-1])
        
    def lockUpdate(self):
        """ lockUpdate() -> None
        Do not allow updateModule()
        
        """
        self.updateLocked = True
        
    def unlockUpdate(self):
        """ unlockUpdate() -> None
        Allow updateModule()
        
        """
        self.updateLocked = False
        
    def closeEvent(self, event):
        self.confWidget.askToSaveChanges()
        event.accept()
        
    def activate(self):
        if self.isVisible() == False:
            # self.toolWindow().show()
            self.show()
        self.activateWindow()
        self.confWidget.activate()
        
    def set_visible(self, enabled):
        #print "set_visible ", self, enabled
        if hasattr(self, 'main_window') and self.main_window is not None:
            self.main_window.show()
            self.main_window.raise_()

        if enabled:
            self.show()
            self.raise_()
            self.setFloating(True)