def saveOrReloadSize(self,key) :
     if key & (qt.Qt.SHIFT|qt.Qt.CTRL) :
         key &= ~(qt.Qt.SHIFT|qt.Qt.CTRL)
         keyname = 'F%d' % ((key - qt.Qt.Key_F9) + 9)
         self.saveSize('_%d' % key)
         qt.QMessageBox.information(self,'Position and size','This configuration is saved on key %s' % keyname,qt.QMessageBox.Default)
     else:
         for display in self.windows:
             window = self.configuration.windows[str(display.name())]
             GUIDisplay.restoreSizes(self.configuration,window,display,configurationSuffix = '_%d' % key,moveWindowFlag = False)
Beispiel #2
0
 def saveOrReloadSize(self,key) :
     if key & (qt.Qt.SHIFT|qt.Qt.CTRL) :
         key &= ~(qt.Qt.SHIFT|qt.Qt.CTRL)
         keyname = 'F%d' % ((key - qt.Qt.Key_F9) + 9)
         self.saveSize('_%d' % key)
         qt.QMessageBox.information(self,'Position and size','This configuration is saved on key %s' % keyname,qt.QMessageBox.Default)
     else:
         for display in self.windows:
             window = self.configuration.windows[str(display.name())]
             GUIDisplay.restoreSizes(self.configuration,window,display,configurationSuffix = '_%d' % key,moveWindowFlag = False)
Beispiel #3
0
   def renew(self):
       self.windowPreviewBox.close(True)

       self.windowPreviewBox = qt.QVGroupBox("Window preview", self)
       self.windowPreview = GUIDisplay.WindowDisplayWidget(self.windowPreviewBox)

       qt.QObject.connect(self.windowPreview, qt.PYSIGNAL("itemClicked"), self.previewItemClicked)

       self.layout().addWidget(self.windowPreviewBox)

       self.windowPreviewBox.show()
Beispiel #4
0
   def __init__(self, *args, **kwargs):
        qt.QWidget.__init__(self, *args)
       
        self.setCaption("GUI Preview")

        self.windowPreviewBox = qt.QVGroupBox("Window preview", self)
        self.windowPreview = GUIDisplay.WindowDisplayWidget(self.windowPreviewBox)

        qt.QObject.connect(self.windowPreview, qt.PYSIGNAL("itemClicked"), self.previewItemClicked)

        qt.QVBoxLayout(self)
        self.layout().addWidget(self.windowPreviewBox)

        # set arbitrary default size
        self.resize(640,480)
Beispiel #5
0
    def execute(self, config):
        #
        # start in execution mode
        #
        self.windows = GUIDisplay.display(config, noBorder=self.noBorder)

        main_window = None
        if len(self.windows) > 0:
            main_window = self.windows[0]
            main_window.configuration = config
            qt.qApp.setMainWidget(main_window)

            if self.noBorder:
                main_window.move(0, 0)
                w = qt.qApp.desktop().width()
                h = qt.qApp.desktop().height()
                main_window.resize(qt.QSize(w, h))

            #
            # make connections
            #
            widgets_dict = dict(
                [
                    (callable(w.name) and w.name() or None, w)
                    for w in qt.QApplication.allWidgets()
                ]
            )

            def make_connections(items_list):
                for item in items_list:
                    try:
                        sender = widgets_dict[item["name"]]
                    except KeyError:
                        logging.getLogger().error(
                            "Could not find receiver widget %s", item["name"]
                        )
                    else:
                        for connection in item["connections"]:
                            _receiver = (
                                connection["receiver"] or connection["receiverWindow"]
                            )
                            try:
                                receiver = widgets_dict[_receiver]
                            except KeyError:
                                logging.getLogger().error(
                                    "Could not find receiver widget %s", _receiver
                                )
                            else:
                                try:
                                    slot = getattr(receiver, connection["slot"])
                                except AttributeError:
                                    logging.getLogger().error(
                                        "No slot '%s' in receiver %s",
                                        connection["slot"],
                                        _receiver,
                                    )
                                else:
                                    # print "connecting %s to slot %s on signal %s" % (sender, slot, connection["signal"])
                                    sender.connect(
                                        sender, qt.PYSIGNAL(connection["signal"]), slot
                                    )
                    make_connections(item["children"])

            make_connections(config.windows_list)

            #
            # set run mode for every brick
            #
            BlissWidget.setRunMode(True)

            if self.showMaximized:
                main_window.showMaximized()
            else:
                main_window.show()

            for window in self.windows:
                window._fontSizeAccel = qt.QAccel(window)
                window._fontSizeAccel.insertItem(qt.Qt.CTRL + qt.Qt.Key_Minus, 1)
                window._fontSizeAccel.insertItem(qt.Qt.CTRL + qt.Qt.Key_Plus, 2)
                window._fontSizeAccel.insertItem(qt.Qt.CTRL + qt.Qt.Key_Asterisk, 0)
                window._whatsThisAccel = qt.QAccel(window)
                window._whatsThisAccel.insertItem(qt.Qt.Key_F1)
                window._reloadAccel = qt.QAccel(window)
                window._reloadAccel.insertItem(qt.Qt.CTRL + qt.Qt.SHIFT + qt.Qt.Key_F5)

                window._splitterPositionAccel = qt.QAccel(window)
                for key in [qt.Qt.Key_F9, qt.Qt.Key_F10, qt.Qt.Key_F11, qt.Qt.Key_F12]:
                    window._splitterPositionAccel.insertItem(
                        qt.Qt.SHIFT + key, qt.Qt.SHIFT + key
                    )
                    window._splitterPositionAccel.insertItem(
                        qt.Qt.CTRL + key, qt.Qt.CTRL + key
                    )
                    window._splitterPositionAccel.insertItem(key, key)

                qt.QObject.connect(
                    window._splitterPositionAccel,
                    qt.SIGNAL("activated(int)"),
                    self.saveOrReloadSize,
                )
                qt.QObject.connect(
                    window._fontSizeAccel,
                    qt.SIGNAL("activated(int)"),
                    self.changeFontSize,
                )
                qt.QObject.connect(
                    window._whatsThisAccel,
                    qt.SIGNAL("activated(int)"),
                    BlissWidget.updateWhatsThis,
                )
                qt.QObject.connect(
                    window._reloadAccel, qt.SIGNAL("activated(int)"), self.reloadGUI
                )

                if window._show:
                    window.show()

        if BlissWidget._menuBar:
            BlissWidget._menuBar.setExpertMode(False)

        return main_window
    def execute(self, config):
        #
        # start in execution mode
        #
        self.windows = GUIDisplay.display(config, noBorder=self.noBorder)

        main_window = None
        if len(self.windows) > 0:
            main_window = self.windows[0]
            main_window.configuration = config
            qt.qApp.setMainWidget(main_window)

            if self.noBorder:
                main_window.move(0, 0)
                w = qt.qApp.desktop().width()
                h = qt.qApp.desktop().height()
                main_window.resize(qt.QSize(w, h))

            #
            # make connections
            #
            widgets_dict = dict([
                (isinstance(w.name, collections.Callable) and w.name()
                 or None, w) for w in qt.QApplication.allWidgets()
            ])

            def make_connections(items_list):
                for item in items_list:
                    try:
                        sender = widgets_dict[item["name"]]
                    except KeyError:
                        logging.getLogger().error(
                            "Could not find receiver widget %s", item["name"])
                    else:
                        for connection in item["connections"]:
                            _receiver = connection["receiver"] or connection[
                                "receiverWindow"]
                            try:
                                receiver = widgets_dict[_receiver]
                            except KeyError:
                                logging.getLogger().error(
                                    "Could not find receiver widget %s",
                                    _receiver)
                            else:
                                try:
                                    slot = getattr(receiver,
                                                   connection["slot"])
                                except AttributeError:
                                    logging.getLogger().error(
                                        "No slot '%s' in receiver %s",
                                        connection["slot"], _receiver)
                                else:
                                    #print "connecting %s to slot %s on signal %s" % (sender, slot, connection["signal"])
                                    sender.connect(
                                        sender,
                                        qt.PYSIGNAL(connection["signal"]),
                                        slot)
                    make_connections(item["children"])

            make_connections(config.windows_list)

            #
            # set run mode for every brick
            #
            BlissWidget.setRunMode(True)

            if self.showMaximized:
                main_window.showMaximized()
            else:
                main_window.show()

            for window in self.windows:
                window._fontSizeAccel = qt.QAccel(window)
                window._fontSizeAccel.insertItem(qt.Qt.CTRL + qt.Qt.Key_Minus,
                                                 1)
                window._fontSizeAccel.insertItem(qt.Qt.CTRL + qt.Qt.Key_Plus,
                                                 2)
                window._fontSizeAccel.insertItem(
                    qt.Qt.CTRL + qt.Qt.Key_Asterisk, 0)
                window._whatsThisAccel = qt.QAccel(window)
                window._whatsThisAccel.insertItem(qt.Qt.Key_F1)
                window._reloadAccel = qt.QAccel(window)
                window._reloadAccel.insertItem(qt.Qt.CTRL + qt.Qt.SHIFT +
                                               qt.Qt.Key_F5)

                window._splitterPositionAccel = qt.QAccel(window)
                for key in [
                        qt.Qt.Key_F9, qt.Qt.Key_F10, qt.Qt.Key_F11,
                        qt.Qt.Key_F12
                ]:
                    window._splitterPositionAccel.insertItem(
                        qt.Qt.SHIFT + key, qt.Qt.SHIFT + key)
                    window._splitterPositionAccel.insertItem(
                        qt.Qt.CTRL + key, qt.Qt.CTRL + key)
                    window._splitterPositionAccel.insertItem(key, key)

                qt.QObject.connect(window._splitterPositionAccel,
                                   qt.SIGNAL('activated(int)'),
                                   self.saveOrReloadSize)
                qt.QObject.connect(window._fontSizeAccel,
                                   qt.SIGNAL('activated(int)'),
                                   self.changeFontSize)
                qt.QObject.connect(window._whatsThisAccel,
                                   qt.SIGNAL('activated(int)'),
                                   BlissWidget.updateWhatsThis)
                qt.QObject.connect(window._reloadAccel,
                                   qt.SIGNAL('activated(int)'), self.reloadGUI)

                if window._show:
                    window.show()

        if BlissWidget._menuBar:
            BlissWidget._menuBar.setExpertMode(False)

        return main_window