finished preferences

This commit is contained in:
2024-11-22 18:36:35 +01:00
parent 90036da40e
commit 0d24511b6c
1107 changed files with 475 additions and 31 deletions

View File

@@ -22,10 +22,11 @@ from gi.repository import Gtk, Adw, Gdk, Gio
APPID = "com.angoosh.RDPConnect"
HOMEDIR = os.path.expanduser('~')
VERSION = "1.0.5rc1"
VERSION = "1.1.0"
conn_info = {}
settings = {}
settings["extra_params"] = {}
fernet = ""
def load_keys():
@@ -67,7 +68,123 @@ def load_config():
except:
print("[WARN] FILE: "+HOMEDIR+"/.config/rdpconnect/settings.json doesn't exist")
class PreferencesWindow(Gtk.Window):
global settings
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.builder = Gtk.Builder(self)
self.builder.add_from_file("/app/preferences.ui")
self.resx = self.builder.get_object("resx")
self.resy = self.builder.get_object("resy")
self.monitors = self.builder.get_object("monitors")
self.fullscreen = self.builder.get_object("fullscreen")
self.xfree = self.builder.get_object("xfree")
self.sound = self.builder.get_object("sound")
self.mic = self.builder.get_object("mic")
self.dynres = self.builder.get_object("dynres")
self.clipboard = self.builder.get_object("clipboard")
try:
self.clipboard.set_state(settings["extra_params"]["clipboard"])
self.clipboard.set_active(settings["extra_params"]["clipboard"])
except:
pass
try:
self.dynres.set_state(settings["extra_params"]["dynamic-resolution"])
self.dynres.set_active(settings["extra_params"]["dynamic-resolution"])
except:
pass
try:
self.mic.set_state(settings["extra_params"]["microphone"])
self.mic.set_active(settings["extra_params"]["microphone"])
except:
pass
try:
self.sound.set_state(settings["extra_params"]["sound"])
self.sound.set_active(settings["extra_params"]["sound"])
except:
pass
try:
if settings["rdp_bin"] == "xfreerdp":
self.xfree.set_state(True)
self.xfree.set_active(True)
except:
pass
try:
self.fullscreen.set_state(settings["extra_params"]["f"])
self.fullscreen.set_active(settings["extra_params"]["f"])
except:
pass
try:
self.monitors.get_buffer().set_text(str(settings["extra_params"]["monitors"]), len(settings["extra_params"]["monitors"]))
except:
pass
try:
self.resx.get_buffer().set_text(str(settings["extra_params"]["w"]), len(settings["extra_params"]["w"]))
except:
pass
try:
self.resy.get_buffer().set_text(str(settings["extra_params"]["h"]), len(settings["extra_params"]["h"]))
except:
pass
pref_window = self.builder.get_object("pref_window")
pref_window.show()
def f_resx(self, app):
settings["extra_params"]["w"] = self.resx.get_buffer().get_text()
def f_resy(self, app):
settings["extra_params"]["h"] = self.resy.get_buffer().get_text()
def monconf(self, app):
settings["extra_params"]["monitors"] = self.monitors.get_buffer().get_text()
def clipboard(self, app, state):
if state:
settings["extra_params"]["clipboard"] = True
else:
settings["extra_params"]["clipboard"] = False
def dynres(self, app, state):
if state:
settings["extra_params"]["dynamic-resolution"] = True
else:
settings["extra_params"]["dynamic-resolution"] = False
def microphone(self, app, state):
if state:
settings["extra_params"]["microphone"] = True
else:
settings["extra_params"]["microphone"] = False
def sound(self, app, state):
if state:
settings["extra_params"]["sound"] = True
else:
settings["extra_params"]["sound"] = False
def xfree(self, app, state):
if state:
settings["rdp_bin"] = "xfreerdp"
else:
settings["rdp_bin"] = "sdl-freerdp"
def fscr(self, app, state):
if state:
settings["extra_params"]["f"] = True
else:
settings["extra_params"]["f"] = False
def on_destroy(self, app):
print("Saving settings config to "+HOMEDIR+"/.config/rdpconnect/settings.json")
with open(HOMEDIR+"/.config/rdpconnect/settings.json", "w") as settings_file:
js = json.dumps(settings, sort_keys=True, indent=4, separators=(',', ': '))
settings_file.write(js)
class MyApp(Adw.Application):
def __init__(self, **kwargs):
super().__init__(**kwargs)
@@ -139,9 +256,7 @@ class MyApp(Adw.Application):
about_dialog.present()
def on_preferences(self, action, param):
pref_window = Gtk.Window(title="Preferences")
pref_window.show()
print("Preferences")
PreferencesWindow()
def saveConnConf(self):
if settings["save_conn"]:
@@ -172,17 +287,28 @@ class MyApp(Adw.Application):
settings["save_conn"] = True
else:
settings["save_conn"] = False
if not "extra_params" in settings:
settings["extra_params"] = []
if not "rdp_bin" in settings:
settings["rdp_bin"] = "sdl-freerdp"
self.saveConnConf()
extra_params = []
for item in settings["extra_params"]:
#check if is boolean
if type(settings["extra_params"][item]) == type(True):
if settings["extra_params"][item]:
extra_params.append("/"+str(item))
else:
if str(settings["extra_params"][item]) != "":
print(str(settings["extra_params"][item]))
extra_params.append("/"+str(item)+":"+str(settings["extra_params"][item]))
print(extra_params)
try:
subprocess.Popen([settings["rdp_bin"], "/v:"+str(conn_info["ip"]), "/u:"+str(conn_info["user"]), "/p:"+str(conn_info["passwd"])]+settings["extra_params"])
subprocess.Popen([settings["rdp_bin"], "/v:"+str(conn_info["ip"]), "/u:"+str(conn_info["user"]), "/p:"+str(conn_info["passwd"])]+extra_params)
except:
subprocess.Popen(["sdl-freerdp", "/v:"+str(conn_info["ip"]), "/u:"+str(conn_info["user"]), "/p:"+str(conn_info["passwd"])]+settings["extra_params"])
subprocess.Popen(["sdl-freerdp", "/v:"+str(conn_info["ip"]), "/u:"+str(conn_info["user"]), "/p:"+str(conn_info["passwd"])]+extra_params)
if not os.path.isdir(HOMEDIR+"/.config/rdpconnect"):
os.makedirs(HOMEDIR+"/.config/rdpconnect")