示例#1
0
    def test_manager(self):
        source = QObject()
        target = QObject()

        manager = BindingManager(submitPolicy=BindingManager.ManualSubmit)

        manager.bind((target, "target"), None).to((source, "source"))

        tbind = DynamicPropertyBinding(target, "target_copy")
        sbind = DynamicPropertyBinding(source, "source")
        schanged = []
        sbind.changed[object].connect(schanged.append)

        manager.bind(tbind, None).to(sbind)

        source.setProperty("source", 1)
        self.assertEqual(len(schanged), 1)

        self.assertEqual(toPyObject(target.property("target")), None)

        manager.commit()

        self.assertEqual(toPyObject(target.property("target")), 1)
        self.assertEqual(toPyObject(target.property("target_copy")), 1)

        source.setProperty("source", 2)

        manager.setSubmitPolicy(BindingManager.AutoSubmit)

        self.assertEqual(toPyObject(target.property("target")), 2)
        self.assertEqual(toPyObject(target.property("target_copy")), 2)
示例#2
0
    def test_dyn(self):
        obj = QObject()
        changed = []

        binding = DynamicPropertyBinding(obj, "test")
        binding.changed[object].connect(changed.append)

        self.assertIs(binding.get(), None)

        obj.setProperty("test", 1)
        self.assertEqual(binding.get(), 1)
        self.assertEqual(len(changed), 1)
        self.assertEqual(changed[-1], 1)

        binding.set(2)
        self.assertEqual(binding.get(), 2)
        self.assertEqual(len(changed), 2)
        self.assertEqual(changed[-1], 2)

        target = QObject()
        binding1 = DynamicPropertyBinding(target, "prop")

        binding1.bindTo(binding)

        self.assertEqual(binding1.get(), binding.get())
        self.assertEqual(target.property("prop"), 2)

        binding.set("a string")
        self.assertEqual(binding1.get(), "a string")
        self.assertEqual(binding1.get(), binding.get())
        self.assertEqual(target.property("prop"), "a string")

        binding1.unbind()
        binding.set(1)
        self.assertEqual(binding1.get(), "a string")
        self.assertEqual(target.property("prop"), "a string")
        self.assertEqual(binding.get(), 1)
        self.assertEqual(obj.property("test"), 1)
示例#3
0
 def __init__(self, args):
     super().__init__()
     self.connection = None
     self.conn_params = {p: None for p in ('host', 'user', 'port', 'password')}
     self.display = None
     # Initialise UI
     self.app = QApplication(sys.argv)
     self.window = QMainWindow()
     self.ui = Ui_SSHKBMWindow()
     self.ui.setupUi(self.window)
     self.on_disconnect()
     # Bind events
     self.ui.connectButton.clicked.connect(self.click_connect)
     self.ui.connectButton.setShortcut('Return')
     self.ui.sendTextButton.clicked.connect(self.click_send_text)
     QShortcut(QKeySequence('Ctrl+Return'),
         self.ui.typingField,
         activated=self.click_send_text)
     orig_evt = self.ui.keyboardTab.keyPressEvent
     def new_evt(evt):
         self.keyboard_key_pressed(evt.key(), evt.modifiers())
         orig_evt(evt)
     self.ui.keyboardTab.keyPressEvent = new_evt
     key_buttons = [b + 'Btn' for b in
         [d + 'Arrow' for d in ['up', 'down', 'left', 'right']] +
         ['f' + str(n) for n in range(1, 12)] +
         ['tab', 'caps', 'num', 'scroll',
          'ins', 'del', 'prtscr', 'pgup', 'pgdn', 'home', 'end', 'esc',
          'volUp', 'volDown', 'mute', 'play', 'stop', 'prev', 'next', 'space']]
     btn_clk = lambda b: lambda: self.keyboard_key_pressed(\
                             QObject.property(getattr(self.ui, b), 'Key'), 0)
     for b in key_buttons:
         getattr(self.ui, b).clicked.connect(btn_clk(b))
     self.mp = self.ui.mousePicture
     def new_evt(evt):
         self.mouse_cmd(evt.pos())
     self.mp.mousePressEvent = new_evt
     # Fill in default values
     self.ui.hostField.setText(args.get('host', ''))
     self.ui.portField.setText(args.get('port', ''))
     self.ui.userField.setText(args.get('user', ''))
     self.ui.passwordField.setText(args.get('password', ''))
     self.ui.displayField.setText(args.get('display', ''))
     # Finally, show the window
     self.window.show()
     if args.get('connect', False):
         self.click_connect()
     self.app.exec_()