Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/Remmina.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntenore Gatta (tmow) <antenore@simbiosi.org>2021-01-04 09:10:30 +0300
committerAntenore Gatta (tmow) <antenore@simbiosi.org>2021-01-04 09:10:30 +0300
commit57f7845e551fd47bcdb46304c64a8a11a94768db (patch)
treeebfa38fc47ca199497f9a021bbeaf0d6ef2c4db4 /plugins
parent8220012e15d58f5953ed642a45d20431f77f61b8 (diff)
parentef3cdec971b7f111b20d5ac5fa11a9c8b8d7459c (diff)
Merge branch 'master' into 'master'
Add capability to load Python plugins (not finished). See merge request Remmina/Remmina!2157
Diffstat (limited to 'plugins')
-rw-r--r--plugins/pyvnc/pyvnc.py97
-rw-r--r--plugins/tool_hello_world_python/toolsdevler.py72
2 files changed, 169 insertions, 0 deletions
diff --git a/plugins/pyvnc/pyvnc.py b/plugins/pyvnc/pyvnc.py
new file mode 100644
index 000000000..362c605ee
--- /dev/null
+++ b/plugins/pyvnc/pyvnc.py
@@ -0,0 +1,97 @@
+import sys
+import remmina
+import enum
+import gi
+gi.require_version("Gtk", "3.0")
+from gi.repository import Gtk, GLib
+import psutil
+
+class VncFeature:
+ PrefQuality = 1
+ PrefViewonly = 2
+ PrefDisableserverinput = 3
+ ToolRefresh = 4
+ ToolChat = 5
+ ToolSendCtrlAltDel = 6
+ Scale = 7
+ Unfocus = 8
+
+
+class Plugin:
+ def __init__(self):
+ self.name = "PyVNC"
+ self.type = "protocol"
+ self.description = "VNC but in Python!"
+ self.version = "1.0"
+ self.icon_name = "remmina-vnc-symbolic"
+ self.icon_name_ssh = "remmina-vnc-ssh-symbolic"
+ self.ssh_setting = remmina.PROTOCOL_SSH_SETTING_TUNNEL
+
+ self.features = [
+ remmina.Feature(
+ type=remmina.PROTOCOL_FEATURE_TYPE_PREF,
+ id=VncFeature.PrefQuality,
+ opt1=remmina.PROTOCOL_FEATURE_PREF_RADIO,
+ opt2="quality",
+ opt3=None)
+ ,remmina.Feature(remmina.PROTOCOL_FEATURE_TYPE_PREF, VncFeature.PrefViewonly, remmina.PROTOCOL_FEATURE_PREF_CHECK, "viewonly", None)
+ ,remmina.Feature(remmina.PROTOCOL_FEATURE_TYPE_PREF, VncFeature.PrefDisableserverinput, remmina.PROTOCOL_SETTING_TYPE_CHECK, "disableserverinput", "Disable server input")
+ ,remmina.Feature(remmina.PROTOCOL_FEATURE_TYPE_TOOL, VncFeature.ToolRefresh, "Refresh", None, None)
+ ,remmina.Feature(remmina.PROTOCOL_FEATURE_TYPE_TOOL, VncFeature.ToolChat, "Open Chat…", "face-smile", None)
+ ,remmina.Feature(remmina.PROTOCOL_FEATURE_TYPE_TOOL, VncFeature.ToolSendCtrlAltDel, "Send Ctrl+Alt+Delete", None, None)
+ ,remmina.Feature(remmina.PROTOCOL_FEATURE_TYPE_SCALE, VncFeature.Scale, None, None, None)
+ ,remmina.Feature(remmina.PROTOCOL_FEATURE_TYPE_UNFOCUS, VncFeature.Unfocus, None, None, None)
+ ]
+
+ colordepths = ("8", "256 colors (8 bpp)", "16", "High color (16 bpp)", "32", "True color (32 bpp)")
+ print(type(colordepths))
+ qualities = ("0", "Poor (fastest)", "1","Medium", "2","Good", "9","Best (slowest)")
+ print(type(qualities))
+ self.basic_settings = [
+ remmina.Setting(type=remmina.PROTOCOL_SETTING_TYPE_SERVER, name="server", label="", compact=False, opt1="_rfb._tcp",opt2=None)
+ , remmina.Setting(type=remmina.PROTOCOL_SETTING_TYPE_TEXT, name="proxy", label="Repeater", compact=False, opt1=None, opt2=None)
+ , remmina.Setting(type=remmina.PROTOCOL_SETTING_TYPE_TEXT, name="username", label="Username", compact=False, opt1=None, opt2=None)
+ , remmina.Setting(type=remmina.PROTOCOL_SETTING_TYPE_PASSWORD,name="password", label="User password",compact=False, opt1=None, opt2=None)
+ , remmina.Setting(type=remmina.PROTOCOL_SETTING_TYPE_SELECT, name="colordepth",label="Color depth", compact=False, opt1=colordepths,opt2=None)
+ , remmina.Setting(type=remmina.PROTOCOL_SETTING_TYPE_SELECT, name="quality", label="Quality", compact=False, opt1=qualities,opt2=None)
+ , remmina.Setting(type=remmina.PROTOCOL_SETTING_TYPE_KEYMAP, name="keymap", label="", compact=False, opt1=None, opt2=None)
+ ]
+ self.advanced_settings = [
+ remmina.Setting(remmina.PROTOCOL_SETTING_TYPE_CHECK, "showcursor", "Show remote cursor", True, None, None)
+ , remmina.Setting(remmina.PROTOCOL_SETTING_TYPE_CHECK, "viewonly", "View only", False, None, None)
+ , remmina.Setting(remmina.PROTOCOL_SETTING_TYPE_CHECK, "disableclipboard", "Disable clipboard sync", True, None, None)
+ , remmina.Setting(remmina.PROTOCOL_SETTING_TYPE_CHECK, "disableencryption", "Disable encryption", False, None, None)
+ , remmina.Setting(remmina.PROTOCOL_SETTING_TYPE_CHECK, "disableserverinput", "Disable server input", True, None, None)
+ , remmina.Setting(remmina.PROTOCOL_SETTING_TYPE_CHECK, "disablepasswordstoring", "Disable password storing", False, None, None)
+ ]
+
+ def init(self, gp):
+ print("[PyVNC.init]: Called!")
+ pass
+
+ def open_connection(self, gp):
+ print("[PyVNC.open_connection]: Called!")
+ pass
+
+ def close_connection(self, gp):
+ print("[PyVNC.close_connection]: Called!")
+ pass
+
+ def query_feature(self, gp):
+ print("[PyVNC.query_feature]: Called!")
+ pass
+
+ def call_feature(self, gp):
+ print("[PyVNC.call_feature]: Called!")
+ pass
+
+ def keystroke(self, gp):
+ print("[PyVNC.keystroke]: Called!")
+ pass
+
+ def screenshot(self, gp):
+ print("[PyVNC.screenshot]: Called!")
+ pass
+
+myPlugin = Plugin()
+remmina.register_plugin(myPlugin) \ No newline at end of file
diff --git a/plugins/tool_hello_world_python/toolsdevler.py b/plugins/tool_hello_world_python/toolsdevler.py
new file mode 100644
index 000000000..5e4cab25b
--- /dev/null
+++ b/plugins/tool_hello_world_python/toolsdevler.py
@@ -0,0 +1,72 @@
+import sys
+
+if not hasattr(sys, 'argv'):
+ sys.argv = ['']
+
+import remmina
+import gi
+gi.require_version("Gtk", "3.0")
+from gi.repository import Gtk, GLib
+import psutil
+
+class HelloPlugin:
+ def __init__(self):
+ self.name = "Hello"
+ self.type = "protocol"
+ self.description = "Hello World!"
+ self.version = "1.0"
+ self.icon_name = "remmina-tool"
+ self.icon_name_ssh = "remmina-tool"
+ self.btn = Gtk.Button(label="Hello!")
+ self.btn.connect("clicked", self.callback_add, "hello")
+ pass
+
+ def callback_add(self, widget, data):
+ print("Click :)")
+
+ def name(self):
+ return "Hello"
+
+ def init(self):
+ print("Init!")
+ return True
+
+
+ def open_connection(self, viewport):
+ print("open_connection!")
+ def foreach_child(child):
+ child.add(self.btn)
+ self.btn.show()
+ viewport.foreach(foreach_child)
+ print("Connected!")
+
+ remmina.log_print("[%s]: Plugin open connection\n" % self.name)
+ return True
+
+ def draw(self, widget, cr, color):
+ cr.rectangle(0, 0, 100, 100)
+ cr.set_source_rgb(color[0], color[1], color[2])
+ cr.fill()
+ cr.queue_draw_area(0, 0, 100, 100)
+
+ return True
+
+ def close_connection(self, viewport):
+ print("close_connection!")
+ remmina.log_print("[%s]: Plugin close connection\n" % self.name)
+ return True
+
+ def query_feature(self):
+ pass
+
+ def call_feature(self):
+ pass
+
+ def send_keystrokes(self):
+ pass
+
+ def get_plugin_screenshot(self):
+ pass
+
+myPlugin = HelloPlugin()
+remmina.register_plugin(myPlugin)