From f4281020b091772210eee55e8a65e659aacb752c Mon Sep 17 00:00:00 2001 From: Thomas Hooge Date: Mon, 17 Aug 2026 18:59:02 +0200 Subject: [PATCH] Some fixes for ymsgui --- INSTALL | 9 +++++---- ymsgui.py | 40 +++++++++++++++++++++------------------- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/INSTALL b/INSTALL index 462719d..5970480 100644 --- a/INSTALL +++ b/INSTALL @@ -95,6 +95,7 @@ Rename sample configfile config.inc-sample: mv config.inc-sample config.inc Open config.inc in a text editor and fill in your database details. +If you want to use local unix socket connection set host = socket. 5.3. Check file access rights for security @@ -106,14 +107,14 @@ Configfile should be readable by webserver but not writeable. 6. Setup local GUI Create a local database user with same name as your computer user and allow -database acces with current unix credentials: +database access with current unix credentials. E.g if your current unix user +is "ymsgui": mysql> CREATE USER 'ymsgui'@'localhost' IDENTIFIED VIA unix_socket; mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON yms.* TO 'ymsgui'@'localhost'; -Copy ymsgui.py to /usr/local/bin -Copy directory yms to /usr/local/share +Execute "install.sh" to install the software to your local operating system. -Start ymsgui.py, default configuration file is automatically created +Start "yms", default configuration file is automatically created 7. Start using YMS diff --git a/ymsgui.py b/ymsgui.py index ddf80d7..56e2de4 100755 --- a/ymsgui.py +++ b/ymsgui.py @@ -42,11 +42,23 @@ cfg = { 'shapedir': 'webgui/shapes' } +def get_share_dir(): + program_dir = os.path.dirname(os.path.abspath(__file__)) + source_ui = os.path.join(program_dir, "yms", "ui", "main.ui") + if os.path.isfile(source_ui): + return program_dir + return os.path.join( + os.path.dirname(os.path.dirname(program_dir)), + "share", + "yms" + ) + class Frontend(): def __init__(self): + self.uipath = os.path.join(get_share_dir(), "yms", "ui") builder = Gtk.Builder() - builder.add_from_file("yms/ui/main.ui") + builder.add_from_file(os.path.join(self.uipath, "main.ui")) builder.connect_signals(self) self.window = builder.get_object("wnd_main") gtkutils.init_named_controls(self, builder) @@ -230,21 +242,6 @@ def create_config(cfgfile): os.chmod(cfgfile, 0o600) if __name__ == "__main__": - - dialog = Gtk.MessageDialog( - message_type=Gtk.MessageType.QUESTION, - buttons=Gtk.ButtonsType.YES_NO, - text="Are you sure?" - ) - image = Gtk.Image.new_from_stock( - Gtk.STOCK_DIALOG_QUESTION, - Gtk.IconSize.DIALOG - ) - dialog.set_image(image) - dialog.show_all() - response = dialog.run() - dialog.destroy() - locale.setlocale(locale.LC_ALL, '') gettext.bindtextdomain('ymsgui', 'locale') gettext.textdomain('ymsgui') @@ -262,10 +259,15 @@ if __name__ == "__main__": else: cfg['host'] = config.get('DB', 'host') cfg['db'] = config.get('DB', 'db') - cfg['user'] = config.get('DB', 'user') - cfg['pass'] = config.get('DB', 'pass') db = database.Database(cfg['host'], cfg['db']) - if db.connect(cfg['user'], cfg['pass']): + connected = False + if cfg['host'] == 'socket': + connected = db.connect_local() + else: + cfg['user'] = config.get('DB', 'user') + cfg['pass'] = config.get('DB', 'pass') + connected = db.connect(cfg['user'], cfg['pass']) + if connected: app = Frontend() app.run() db.disconnect()