Some fixes for ymsgui

This commit is contained in:
2026-08-17 18:59:02 +02:00
parent e43548b7fd
commit f4281020b0
2 changed files with 26 additions and 23 deletions
+5 -4
View File
@@ -95,6 +95,7 @@ Rename sample configfile config.inc-sample:
mv config.inc-sample config.inc mv config.inc-sample config.inc
Open config.inc in a text editor and fill in your database details. 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 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 6. Setup local GUI
Create a local database user with same name as your computer user and allow 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> CREATE USER 'ymsgui'@'localhost' IDENTIFIED VIA unix_socket;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON yms.* TO 'ymsgui'@'localhost'; mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON yms.* TO 'ymsgui'@'localhost';
Copy ymsgui.py to /usr/local/bin Execute "install.sh" to install the software to your local operating system.
Copy directory yms to /usr/local/share
Start ymsgui.py, default configuration file is automatically created Start "yms", default configuration file is automatically created
7. Start using YMS 7. Start using YMS
+21 -19
View File
@@ -42,11 +42,23 @@ cfg = {
'shapedir': 'webgui/shapes' '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(): class Frontend():
def __init__(self): def __init__(self):
self.uipath = os.path.join(get_share_dir(), "yms", "ui")
builder = Gtk.Builder() 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) builder.connect_signals(self)
self.window = builder.get_object("wnd_main") self.window = builder.get_object("wnd_main")
gtkutils.init_named_controls(self, builder) gtkutils.init_named_controls(self, builder)
@@ -230,21 +242,6 @@ def create_config(cfgfile):
os.chmod(cfgfile, 0o600) os.chmod(cfgfile, 0o600)
if __name__ == "__main__": 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, '') locale.setlocale(locale.LC_ALL, '')
gettext.bindtextdomain('ymsgui', 'locale') gettext.bindtextdomain('ymsgui', 'locale')
gettext.textdomain('ymsgui') gettext.textdomain('ymsgui')
@@ -262,10 +259,15 @@ if __name__ == "__main__":
else: else:
cfg['host'] = config.get('DB', 'host') cfg['host'] = config.get('DB', 'host')
cfg['db'] = config.get('DB', 'db') 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']) 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 = Frontend()
app.run() app.run()
db.disconnect() db.disconnect()