diff --git a/sharepoint_browser.py b/sharepoint_browser.py index e6ee565..feba903 100644 --- a/sharepoint_browser.py +++ b/sharepoint_browser.py @@ -441,8 +441,9 @@ class SharePointApp(wx.Frame): self.active_edits = {} # item_id -> { "name": name, "event": Event, "waiting": bool } self.favorites = settings.get("favorites", []) self.fav_visible = settings.get("fav_visible", True) - self.sort_col = 0 # Default Name + self.sort_col = 0 # Default (Navn) self.sort_asc = True + self.compact_mode = False # System Ikoner self.image_list = wx.ImageList(16, 16) @@ -580,6 +581,8 @@ class SharePointApp(wx.Frame): nav_panel.SetSizer(nav_hbox) vbox.Add(nav_panel, 0, wx.EXPAND | wx.ALL, 5) + self.nav_hbox = nav_hbox # Gem til resize + self.nav_panel = nav_panel # 2. PATH BREADCRUMBS (Adresselinje-stil) self.path_panel = wx.Panel(panel, style=wx.BORDER_SIMPLE) @@ -673,6 +676,7 @@ class SharePointApp(wx.Frame): self.status_bar.SetStatusText(self.get_txt("status_ready")) panel.SetSizer(vbox) + self.Bind(wx.EVT_SIZE, self.on_resize) self.Layout() def on_right_click(self, event): @@ -1140,19 +1144,17 @@ class SharePointApp(wx.Frame): def refresh_ui_texts(self): # Update UI texts for main frame and buttons self.SetTitle(self.get_txt("title")) - self.back_btn.SetLabel(self.get_txt("btn_back")) - self.home_btn.SetLabel(self.get_txt("btn_home")) - self.done_btn.SetLabel(self.get_txt("btn_save_changes")) - self.upload_btn.SetLabel(self.get_txt("btn_upload_file")) - self.upload_folder_btn.SetLabel(self.get_txt("btn_upload_folder")) - self.new_folder_btn.SetLabel(self.get_txt("btn_new_folder")) - self.refresh_btn.SetLabel(self.get_txt("btn_refresh")) - self.settings_btn.SetLabel(self.get_txt("btn_settings")) + + # Hvis vi er i compact mode, skal vi ikke sætte labels på knapperne nu + if not self.compact_mode: + self._update_button_labels(full=True) + + self.settings_btn.SetLabel(self.get_txt("btn_settings") if not self.compact_mode else "") if self.access_token: - self.login_btn.SetLabel(self.get_txt("btn_logged_in")) + self.login_btn.SetLabel(self.get_txt("btn_logged_in") if not self.compact_mode else "") else: - self.login_btn.SetLabel(self.get_txt("btn_login")) + self.login_btn.SetLabel(self.get_txt("btn_login") if not self.compact_mode else "") # Re-set headers for ListCtrl cols = [self.get_txt("col_name"), self.get_txt("col_type"), self.get_txt("col_size"), self.get_txt("col_modified")] @@ -1218,6 +1220,72 @@ class SharePointApp(wx.Frame): self.current_items = [] self.update_path_display() + def on_resize(self, event): + width = self.GetSize().width + threshold = 1100 + + if width < threshold and not self.compact_mode: + self.compact_mode = True + self._update_button_labels(full=False) + elif width >= threshold and self.compact_mode: + self.compact_mode = False + self._update_button_labels(full=True) + + event.Skip() + + def _update_button_labels(self, full=True): + if not self: return + try: + # Liste over knapper og deres tilhørende oversættelses-nøgle + btns = [ + (self.back_btn, "btn_back", 40, 110), + (self.home_btn, "btn_home", 40, 110), + (self.refresh_btn, "btn_refresh", 40, 110), + (self.upload_btn, "btn_upload_file", 40, 130), + (self.upload_folder_btn, "btn_upload_folder", 40, 130), + (self.new_folder_btn, "btn_new_folder", 40, 120), + (self.settings_btn, "btn_settings", 40, 130) + ] + + for btn, key, compact_w, full_w in btns: + txt = self.get_txt(key) + btn.SetLabel(txt if full else "") + btn.SetToolTip(txt) + btn.SetMinSize((compact_w if not full else full_w, 30)) + btn.SetSize((compact_w if not full else full_w, 30)) + btn.SetBitmapMargins((12 if full else 10, 0)) + + # Special cases for Login and Done buttons + if full: + login_txt = self.get_txt("btn_logged_in") if self.access_token else self.get_txt("btn_login") + self.login_btn.SetLabel(login_txt) + self.login_btn.SetToolTip(login_txt) + self.login_btn.SetMinSize((130, 30)) + self.login_btn.SetBitmapMargins((12, 0)) + + done_txt = self.get_txt("btn_save_changes") + self.done_btn.SetLabel(done_txt) + self.done_btn.SetToolTip(done_txt) + self.done_btn.SetMinSize((250, 30)) + self.done_btn.SetBitmapMargins((12, 0)) + else: + login_txt = self.get_txt("btn_logged_in") if self.access_token else self.get_txt("btn_login") + self.login_btn.SetLabel("") + self.login_btn.SetToolTip(login_txt) + self.login_btn.SetMinSize((40, 30)) + self.login_btn.SetBitmapMargins((10, 0)) + + done_txt = self.get_txt("btn_save_changes") + self.done_btn.SetLabel("") + self.done_btn.SetToolTip(done_txt) + self.done_btn.SetMinSize((40, 30)) + self.done_btn.SetBitmapMargins((10, 0)) + + self.nav_panel.Layout() + self.Layout() + except RuntimeError: + pass + def update_path_display(self): if not self: return try: