refactor: convert settings dialog to tabbed interface and add about section
This commit is contained in:
@@ -178,7 +178,9 @@ STRINGS = {
|
||||
"settings_license_key": "Licensnøgle:",
|
||||
"settings_license_status": "Status: Ikke aktiveret",
|
||||
"settings_logging_group": "System / Diverse",
|
||||
"settings_logging": "Aktiver log-output (anbefales til fejlfinding)"
|
||||
"settings_logging": "Aktiver log-output (anbefales til fejlfinding)",
|
||||
"settings_about_group": "Om programmet",
|
||||
"settings_credits": "© 2026 SharePoint Explorer\n\nSkabt af:\nMartin Tranberg\nBlueprint"
|
||||
},
|
||||
"en": {
|
||||
"title": "SharePoint Explorer",
|
||||
@@ -272,7 +274,9 @@ STRINGS = {
|
||||
"settings_license_key": "License Key:",
|
||||
"settings_license_status": "Status: Not activated",
|
||||
"settings_logging_group": "System / Miscellaneous",
|
||||
"settings_logging": "Enable log output (recommended for troubleshooting)"
|
||||
"settings_logging": "Enable log output (recommended for troubleshooting)",
|
||||
"settings_about_group": "About",
|
||||
"settings_credits": "© 2026 SharePoint Explorer\n\nCreated by:\nMartin Tranberg\nBlueprint"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -403,7 +407,7 @@ class SettingsDialog(wx.Dialog):
|
||||
def __init__(self, parent, current_settings):
|
||||
lang = current_settings.get("language", "da")
|
||||
title = STRINGS[lang].get("settings_title", "Settings")
|
||||
super().__init__(parent, title=title, size=(520, 720))
|
||||
super().__init__(parent, title=title, size=(580, 550))
|
||||
|
||||
self.settings = current_settings.copy()
|
||||
self.lang = lang
|
||||
@@ -415,88 +419,101 @@ class SettingsDialog(wx.Dialog):
|
||||
def InitUI(self):
|
||||
vbox = wx.BoxSizer(wx.VERTICAL)
|
||||
|
||||
panel = wx.Panel(self)
|
||||
inner_vbox = wx.BoxSizer(wx.VERTICAL)
|
||||
# --- TABBED INTERFACE (wx.Notebook) ---
|
||||
self.nb = wx.Notebook(self)
|
||||
|
||||
# --- Group: Authentication ---
|
||||
auth_box = wx.StaticBox(panel, label=self.get_txt("settings_auth_group"))
|
||||
auth_sizer = wx.StaticBoxSizer(auth_box, wx.VERTICAL)
|
||||
# 1. ACCOUNT TAB
|
||||
account_panel = wx.Panel(self.nb)
|
||||
account_vbox = wx.BoxSizer(wx.VERTICAL)
|
||||
|
||||
grid = wx.FlexGridSizer(2, 2, 10, 10)
|
||||
grid.AddGrowableCol(1, 1)
|
||||
grid.Add(wx.StaticText(account_panel, label=self.get_txt("settings_client_id")), 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5)
|
||||
self.client_id_ctrl = wx.TextCtrl(account_panel, value=self.settings.get("client_id", ""), size=(-1, 25))
|
||||
grid.Add(self.client_id_ctrl, 1, wx.EXPAND)
|
||||
|
||||
grid.Add(wx.StaticText(panel, label=self.get_txt("settings_client_id")), 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5)
|
||||
self.client_id_ctrl = wx.TextCtrl(panel, value=self.settings.get("client_id", ""), size=(-1, 25))
|
||||
grid.Add(self.client_id_ctrl, 1, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL)
|
||||
grid.Add(wx.StaticText(account_panel, label=self.get_txt("settings_tenant_id")), 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5)
|
||||
self.tenant_id_ctrl = wx.TextCtrl(account_panel, value=self.settings.get("tenant_id", ""), size=(-1, 25))
|
||||
grid.Add(self.tenant_id_ctrl, 1, wx.EXPAND)
|
||||
|
||||
grid.Add(wx.StaticText(panel, label=self.get_txt("settings_tenant_id")), 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5)
|
||||
self.tenant_id_ctrl = wx.TextCtrl(panel, value=self.settings.get("tenant_id", ""), size=(-1, 25))
|
||||
grid.Add(self.tenant_id_ctrl, 1, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL)
|
||||
account_vbox.Add(grid, 1, wx.EXPAND | wx.ALL, 15)
|
||||
account_panel.SetSizer(account_vbox)
|
||||
self.nb.AddPage(account_panel, self.get_txt("settings_auth_group").split("/")[0].strip())
|
||||
|
||||
auth_sizer.Add(grid, 1, wx.EXPAND | wx.ALL, 10)
|
||||
inner_vbox.Add(auth_sizer, 0, wx.EXPAND | wx.ALL, 10)
|
||||
# 2. PATHS TAB
|
||||
paths_panel = wx.Panel(self.nb)
|
||||
paths_vbox = wx.BoxSizer(wx.VERTICAL)
|
||||
paths_inner = wx.BoxSizer(wx.VERTICAL)
|
||||
|
||||
# --- Group: Paths ---
|
||||
path_box = wx.StaticBox(panel, label=self.get_txt("settings_path_group"))
|
||||
path_sizer = wx.StaticBoxSizer(path_box, wx.VERTICAL)
|
||||
paths_inner.Add(wx.StaticText(paths_panel, label=self.get_txt("settings_temp_dir")), 0, wx.BOTTOM, 5)
|
||||
self.temp_dir_picker = wx.DirPickerCtrl(paths_panel, path=self.settings.get("temp_dir", "C:\\Temp_SP"), style=wx.DIRP_DIR_MUST_EXIST)
|
||||
paths_inner.Add(self.temp_dir_picker, 0, wx.EXPAND | wx.BOTTOM, 15)
|
||||
|
||||
path_sizer.Add(wx.StaticText(panel, label=self.get_txt("settings_temp_dir")), 0, wx.BOTTOM, 5)
|
||||
self.temp_dir_picker = wx.DirPickerCtrl(panel, path=self.settings.get("temp_dir", "C:\\Temp_SP"),
|
||||
style=wx.DIRP_DIR_MUST_EXIST)
|
||||
path_sizer.Add(self.temp_dir_picker, 0, wx.EXPAND | wx.BOTTOM, 10)
|
||||
paths_inner.Add(wx.StaticText(paths_panel, label=self.get_txt("settings_app_path")), 0, wx.BOTTOM, 5)
|
||||
app_path_box = wx.TextCtrl(paths_panel, value=CONFIG_DIR, style=wx.TE_READONLY | wx.BORDER_NONE)
|
||||
app_path_box.SetBackgroundColour(paths_panel.GetBackgroundColour())
|
||||
paths_inner.Add(app_path_box, 0, wx.EXPAND | wx.BOTTOM, 15)
|
||||
|
||||
path_sizer.Add(wx.StaticText(panel, label=self.get_txt("settings_app_path")), 0, wx.BOTTOM, 5)
|
||||
app_path_box = wx.TextCtrl(panel, value=CONFIG_DIR, style=wx.TE_READONLY | wx.BORDER_NONE)
|
||||
app_path_box.SetBackgroundColour(panel.GetBackgroundColour())
|
||||
path_sizer.Add(app_path_box, 0, wx.EXPAND | wx.BOTTOM, 10)
|
||||
paths_inner.Add(wx.StaticText(paths_panel, label=self.get_txt("settings_active_temp_path")), 0, wx.BOTTOM, 5)
|
||||
temp_path_box = wx.TextCtrl(paths_panel, value=TEMP_DIR, style=wx.TE_READONLY | wx.BORDER_NONE)
|
||||
temp_path_box.SetBackgroundColour(paths_panel.GetBackgroundColour())
|
||||
paths_inner.Add(temp_path_box, 0, wx.EXPAND)
|
||||
|
||||
path_sizer.Add(wx.StaticText(panel, label=self.get_txt("settings_active_temp_path")), 0, wx.BOTTOM, 5)
|
||||
temp_path_box = wx.TextCtrl(panel, value=TEMP_DIR, style=wx.TE_READONLY | wx.BORDER_NONE)
|
||||
temp_path_box.SetBackgroundColour(panel.GetBackgroundColour())
|
||||
path_sizer.Add(temp_path_box, 0, wx.EXPAND)
|
||||
paths_vbox.Add(paths_inner, 1, wx.EXPAND | wx.ALL, 15)
|
||||
paths_panel.SetSizer(paths_vbox)
|
||||
self.nb.AddPage(paths_panel, self.get_txt("settings_path_group"))
|
||||
|
||||
inner_vbox.Add(path_sizer, 0, wx.EXPAND | wx.ALL, 10)
|
||||
# 3. LICENSE TAB
|
||||
lic_panel = wx.Panel(self.nb)
|
||||
lic_vbox = wx.BoxSizer(wx.VERTICAL)
|
||||
lic_inner = wx.BoxSizer(wx.VERTICAL)
|
||||
|
||||
# --- Group: License ---
|
||||
lic_box = wx.StaticBox(panel, label=self.get_txt("settings_license_group"))
|
||||
lic_sizer = wx.StaticBoxSizer(lic_box, wx.VERTICAL)
|
||||
lic_inner.Add(wx.StaticText(lic_panel, label=self.get_txt("settings_license_key")), 0, wx.BOTTOM, 5)
|
||||
self.license_ctrl = wx.TextCtrl(lic_panel, value=self.settings.get("license_key", ""))
|
||||
lic_inner.Add(self.license_ctrl, 0, wx.EXPAND | wx.BOTTOM, 5)
|
||||
|
||||
lic_sizer.Add(wx.StaticText(panel, label=self.get_txt("settings_license_key")), 0, wx.BOTTOM, 5)
|
||||
self.license_ctrl = wx.TextCtrl(panel, value=self.settings.get("license_key", ""))
|
||||
lic_sizer.Add(self.license_ctrl, 0, wx.EXPAND | wx.BOTTOM, 5)
|
||||
|
||||
status_txt = wx.StaticText(panel, label=self.get_txt("settings_license_status"))
|
||||
status_txt = wx.StaticText(lic_panel, label=self.get_txt("settings_license_status"))
|
||||
status_txt.SetForegroundColour(wx.RED)
|
||||
lic_sizer.Add(status_txt, 0, wx.TOP, 5)
|
||||
lic_inner.Add(status_txt, 0, wx.TOP, 5)
|
||||
|
||||
inner_vbox.Add(lic_sizer, 0, wx.EXPAND | wx.ALL, 10)
|
||||
lic_vbox.Add(lic_inner, 1, wx.EXPAND | wx.ALL, 15)
|
||||
lic_panel.SetSizer(lic_vbox)
|
||||
self.nb.AddPage(lic_panel, self.get_txt("settings_license_group").split("/")[0].strip())
|
||||
|
||||
# --- Group: Language ---
|
||||
lang_box = wx.StaticBox(panel, label=self.get_txt("settings_lang_group"))
|
||||
lang_sizer = wx.StaticBoxSizer(lang_box, wx.HORIZONTAL)
|
||||
# 4. SYSTEM TAB
|
||||
sys_panel = wx.Panel(self.nb)
|
||||
sys_vbox = wx.BoxSizer(wx.VERTICAL)
|
||||
sys_inner = wx.BoxSizer(wx.VERTICAL)
|
||||
|
||||
lang_sizer.Add(wx.StaticText(panel, label=self.get_txt("settings_language")), 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 10)
|
||||
self.lang_choice = wx.Choice(panel, choices=["Dansk", "English"])
|
||||
lang_hbox = wx.BoxSizer(wx.HORIZONTAL)
|
||||
lang_hbox.Add(wx.StaticText(sys_panel, label=self.get_txt("settings_language")), 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 10)
|
||||
self.lang_choice = wx.Choice(sys_panel, choices=["Dansk", "English"])
|
||||
self.lang_choice.SetSelection(0 if self.settings.get("language") == "da" else 1)
|
||||
lang_sizer.Add(self.lang_choice, 1, wx.EXPAND)
|
||||
lang_hbox.Add(self.lang_choice, 1, wx.EXPAND)
|
||||
sys_inner.Add(lang_hbox, 0, wx.EXPAND | wx.BOTTOM, 15)
|
||||
|
||||
inner_vbox.Add(lang_sizer, 0, wx.EXPAND | wx.ALL, 10)
|
||||
|
||||
# --- Group: Miscellaneous ---
|
||||
misc_box = wx.StaticBox(panel, label=self.get_txt("settings_logging_group"))
|
||||
misc_sizer = wx.StaticBoxSizer(misc_box, wx.VERTICAL)
|
||||
|
||||
self.logging_cb = wx.CheckBox(panel, label=self.get_txt("settings_logging"))
|
||||
self.logging_cb = wx.CheckBox(sys_panel, label=self.get_txt("settings_logging"))
|
||||
self.logging_cb.SetValue(self.settings.get("logging_enabled", True))
|
||||
misc_sizer.Add(self.logging_cb, 0, wx.ALL, 10)
|
||||
sys_inner.Add(self.logging_cb, 0, wx.ALL, 5)
|
||||
|
||||
inner_vbox.Add(misc_sizer, 0, wx.EXPAND | wx.ALL, 10)
|
||||
sys_vbox.Add(sys_inner, 1, wx.EXPAND | wx.ALL, 15)
|
||||
sys_panel.SetSizer(sys_vbox)
|
||||
self.nb.AddPage(sys_panel, "System")
|
||||
|
||||
panel.SetSizer(inner_vbox)
|
||||
inner_vbox.Fit(panel)
|
||||
vbox.Add(panel, 1, wx.EXPAND | wx.ALL, 0)
|
||||
# 5. ABOUT TAB
|
||||
about_panel = wx.Panel(self.nb)
|
||||
about_vbox = wx.BoxSizer(wx.VERTICAL)
|
||||
|
||||
# --- Buttons ---
|
||||
about_info = wx.TextCtrl(about_panel, value=self.get_txt("settings_credits"), style=wx.TE_MULTILINE | wx.TE_READONLY | wx.BORDER_NONE)
|
||||
about_info.SetBackgroundColour(about_panel.GetBackgroundColour())
|
||||
about_vbox.Add(about_info, 1, wx.EXPAND | wx.ALL, 15)
|
||||
|
||||
about_panel.SetSizer(about_vbox)
|
||||
self.nb.AddPage(about_panel, self.get_txt("settings_about_group"))
|
||||
|
||||
vbox.Add(self.nb, 1, wx.EXPAND | wx.ALL, 10)
|
||||
|
||||
# --- BUTTONS ---
|
||||
btn_hbox = wx.BoxSizer(wx.HORIZONTAL)
|
||||
save_btn = wx.Button(self, label=self.get_txt("settings_save"), size=(150, 35))
|
||||
save_btn.SetBackgroundColour(wx.Colour(0, 120, 215)) # SharePoint Blue
|
||||
|
||||
Reference in New Issue
Block a user