From 5ecfb26a806fca0aa24288e2e575c581b8b82ab0 Mon Sep 17 00:00:00 2001 From: Ross Date: Mon, 19 Feb 2024 11:57:51 +0000 Subject: [PATCH] move lots of functions to menu --- anon_gui.py | 126 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 79 insertions(+), 47 deletions(-) diff --git a/anon_gui.py b/anon_gui.py index 335e2cb..2c51226 100644 --- a/anon_gui.py +++ b/anon_gui.py @@ -604,23 +604,72 @@ class AnonGui(wx.App): # Create File menu file_menu = wx.Menu() - file_menu.Append(wx.ID_OPEN, "&Open") - file_menu.Append(wx.ID_SAVE, "&Save") - file_menu.AppendSeparator() + + + # Create Load menu item + load_item = wx.MenuItem(file_menu, wx.ID_ANY, "&Import Directory") + #load_item.SetToolTip("Click to manually load dicom from a directory.") + file_menu.Append(load_item) + + self.Bind(wx.EVT_MENU, self.import_from_dir, load_item) + #file_menu.Append(wx.ID_OPEN, "&Open") + #file_menu.Append(wx.ID_SAVE, "&Save") + #file_menu.AppendSeparator() file_menu.Append(wx.ID_EXIT, "&Exit") self.menu_bar.Append(file_menu, "&File") - # Create Edit menu - edit_menu = wx.Menu() - edit_menu.Append(wx.ID_UNDO, "&Undo") - edit_menu.Append(wx.ID_REDO, "&Redo") - edit_menu.AppendSeparator() - edit_menu.Append(wx.ID_CUT, "Cu&t") - edit_menu.Append(wx.ID_COPY, "&Copy") - edit_menu.Append(wx.ID_PASTE, "&Paste") - self.menu_bar.Append(edit_menu, "&Edit") + # Create Images menu + images_menu = wx.Menu() + # Create Clear Files menu item + clear_files_item = wx.MenuItem(images_menu, wx.ID_ANY, "&Clear files") + #clear_files_item.SetToolTip("Click to clear all files.") + images_menu.Append(clear_files_item) + + self.menu_bar.Append(images_menu, "&Images") + + # Create Reorder Files menu item + reorder_files_item = wx.MenuItem(images_menu, wx.ID_ANY, "&Reorder") + #reorder_files_item.SetToolTip("Click to reorder files as they are shown below. This will sequentially rename the files. Please note this is usually better done once the files have been uploaded.") + images_menu.Append(reorder_files_item) + + self.Bind(wx.EVT_MENU, self.on_reorder_files, reorder_files_item) + + # Bind Clear Files menu item event + self.Bind(wx.EVT_MENU, self.ClearFiles, clear_files_item) + + + # Create Reannonymise Files menu item + reannonymise_files_item = wx.MenuItem(images_menu, wx.ID_ANY, "&Reannonymise") + #reannonymise_files_item.SetToolTip("Click to reannonymise the currently loaded files.") + images_menu.Append(reannonymise_files_item) + + self.Bind(wx.EVT_MENU, self.on_reannonymise_files, reannonymise_files_item) + + + # Create Refresh Files menu item + refresh_files_item = wx.MenuItem(images_menu, wx.ID_ANY, "&Refresh") + images_menu.Append(refresh_files_item) + + self.Bind(wx.EVT_MENU, lambda evt: self.LoadDir(), refresh_files_item) + + + # Create Item creation menu + create_menu = wx.Menu() + + create_menu_items = ( + ("&Rapid", f"/rapids/create/"), + ("&Long Series", f"/longs/create/series"), + ("&Atlas Case", f"/atlas/case/create/"), + ) + + for label, url in create_menu_items: + item = wx.MenuItem(create_menu, wx.ID_ANY, label) + create_menu.Append(item) + self.Bind(wx.EVT_MENU, lambda evt, url=url: webbrowser.open(f"{self.base_site_url}{url}"), item) + + self.menu_bar.Append(create_menu, "&Create") # Create Help menu help_menu = wx.Menu() @@ -628,6 +677,9 @@ class AnonGui(wx.App): help_menu.Append(wx.ID_ABOUT, "&About") self.menu_bar.Append(help_menu, "&Help") + self.Bind(wx.EVT_MENU, self.on_about_box, id=wx.ID_ABOUT) + self.Bind(wx.EVT_MENU, self.on_help, id=wx.ID_HELP) + # Set menu bar self.frame.SetMenuBar(self.menu_bar) @@ -686,43 +738,16 @@ class AnonGui(wx.App): self.login_button.SetForegroundColour(wx.BLUE) self.login_button.SetBackgroundColour(wx.WHITE) self.login_button.SetToolTip("Click to login to the server") - self.clear_files_button = wx.Button( - self.panel, id=wx.ID_ANY, label="Clear files" - ) - self.clear_files_button.SetToolTip("Click to clear all files.") - self.refresh_files_button = wx.Button(self.panel, id=wx.ID_ANY, label="Refresh") - self.reorder_files_button = wx.Button(self.panel, id=wx.ID_ANY, label="Reorder") - self.reorder_files_button.SetToolTip("Click to reorder files as they are shown below. This will sequentially rename the files. Please note this is usually better done once the files have been uploaded.") - self.reannonymise_files_button = wx.Button( - self.panel, id=wx.ID_ANY, label="Reannonymise" - ) - self.reannonymise_files_button.SetToolTip("Click to reannonymise the currently loaded files.") - self.manual_load_button = wx.Button(self.panel, id=wx.ID_ANY, label="Load") - self.manual_load_button.SetToolTip("Click to manually load dicom from a directory.") + # wx.Bind(self.clear_files_button, ) self.Bind(wx.EVT_BUTTON, self.Login, self.login_button) - self.Bind(wx.EVT_BUTTON, self.ClearFiles, self.clear_files_button) - self.Bind(wx.EVT_BUTTON, lambda evt: self.LoadDir(), self.refresh_files_button) - self.Bind(wx.EVT_BUTTON, self.ReorderFiles, self.reorder_files_button) - self.Bind(wx.EVT_BUTTON, self.ReAnnonymiseFiles, self.reannonymise_files_button) - #self.Bind( - # wx.EVT_BUTTON, - # lambda evt: self.AnnonymiseFilesInDir(self.input_dir, self.dir), - # self.manual_load_button, - #) - self.Bind(wx.EVT_BUTTON, self.import_from_dir, self.manual_load_button) - + #self.Bind(wx.EVT_BUTTON, self.ClearFiles, self.clear_files_button) # Use some sizers to see layout options # self.panel.sizer.Add(self.dirctrl, 1, wx.EXPAND) hoz = wx.BoxSizer(wx.HORIZONTAL) hoz.Add(self.login_button, 1, wx.EXPAND) - hoz.Add(self.clear_files_button, 1, wx.EXPAND) - hoz.Add(self.refresh_files_button, 1, wx.EXPAND) - hoz.Add(self.reorder_files_button, 1, wx.EXPAND) - hoz.Add(self.reannonymise_files_button, 1, wx.EXPAND) - hoz.Add(self.manual_load_button, 1, wx.EXPAND) self.panel.sizer.Add(hoz, 1, wx.EXPAND) @@ -866,17 +891,21 @@ class AnonGui(wx.App): logger.debug(keycode) if keycode == wx.WXK_F1: logger.debug("you pressed the F1!") - self.OnAboutBox() + self.on_help() return event.Skip() - def OnAboutBox(self, event=None): + def on_help(self, event=None): + webbrowser.open(f"{self.base_site_url}/atlas/help") + + def on_about_box(self, event=None): description = f""" An upload/export tool Settings -------- - Watch dir: {self.dir} + Watch/import dir: {self.input_dir} + Annonymised files dir: {self.dir} """ licence = """GPL""" @@ -885,7 +914,7 @@ class AnonGui(wx.App): # info.SetIcon(wx.Icon('hunter.png', wx.BITMAP_TYPE_PNG)) info.SetName("RadUploader") - info.SetVersion("0.1") + info.SetVersioe("0.1") info.SetDescription(description) info.SetLicence(licence) @@ -907,6 +936,9 @@ class AnonGui(wx.App): self.file_duplicate_check = {} if dir is None: dir = self.dir + + logger.debug(f"LoadDir : {dir} / refresh: {refresh} / clear_file_detail_map: {clear_file_detail_map}") + if refresh: self.files = {} self.series_map = {} @@ -979,7 +1011,7 @@ class AnonGui(wx.App): # viewer.MainLoop() break - def ReAnnonymiseFiles(self, event): + def on_reannonymise_files(self, event): global anonymizer anonymizer = dicognito.anonymizer.Anonymizer() paths = [] @@ -1004,7 +1036,7 @@ class AnonGui(wx.App): self.LoadDir(self.dir, clear_file_detail_map=True) - def ReorderFiles(self, event): + def on_reorder_files(self, event): paths = [] # self.file_observer.pause()