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)
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)
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_()