From 579b78ed8e632ef559c533fbdbe5ec55e691aeff Mon Sep 17 00:00:00 2001 From: tatiana Date: Mon, 23 Nov 2009 13:40:47 +0000 Subject: [PATCH] ADD: Menu bar items (under devel) --- invesalius/constants.py | 17 ++++++++++++++--- invesalius/gui/frame.py | 191 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------- invesalius/gui/task_importer.py | 29 +++++++++++++++-------------- 3 files changed, 175 insertions(+), 62 deletions(-) diff --git a/invesalius/constants.py b/invesalius/constants.py index 679de85..0a152f9 100644 --- a/invesalius/constants.py +++ b/invesalius/constants.py @@ -32,7 +32,6 @@ TEXT_COLOUR = (1,1,1) (X,Y) = (0.03, 0.97) TEXT_POS_LEFT_UP = (X, Y) -TEXT_POSITION = TEXT_POS_LEFT_UP #------------------------------------------------------------------ TEXT_POS_LEFT_DOWN = (X, 1-Y) # SetVerticalJustificationToBottom #------------------------------------------------------------------ @@ -306,8 +305,20 @@ VTK_WARNING = 0 #---------------------------------------------------------- -[ID_FILE_IMPORT, ID_FILE_LOAD_INTERNET, ID_FILE_SAVE, ID_FILE_PHOTO, -ID_FILE_PRINT, ID_FILE_OPEN] = [wx.NewId() for number in range(6)] +[ID_DICOM_IMPORT, ID_PROJECT_OPEN, ID_PROJECT_SAVE_AS, ID_PROJECT_SAVE, +ID_PROJECT_CLOSE, ID_PROJECT_INFO, ID_SAVE_SCREENSHOT, ID_DICOM_LOAD_NET, +ID_PRINT_SCREENSHOT, ID_EXIT] = [wx.NewId() for number in range(10)] + + +[ID_EDIT_UNDO, ID_EDIT_REDO, ID_EDIT_LIST] =\ + [wx.NewId() for number in range(3)] +[ID_TOOL_PROJECT, ID_TOOL_LAYOUT, ID_TOOL_OBJECT, ID_TOOL_SLICE] =\ + [wx.NewId() for number in range(4)] +[ID_TASK_BAR, ID_VIEW_FOUR] =\ + [wx.NewId() for number in range(2)] +[ID_VIEW_FULL, ID_VIEW_TEXT, ID_VIEW_3D_BACKGROUND] =\ + [wx.NewId() for number in range(3)] + #--------------------------------------------------------- diff --git a/invesalius/gui/frame.py b/invesalius/gui/frame.py index 5b490e5..bf686ab 100755 --- a/invesalius/gui/frame.py +++ b/invesalius/gui/frame.py @@ -213,9 +213,70 @@ class Frame(wx.Frame): evt.Skip() def OnMenuClick(self, evt): - ps.Publisher().sendMessage(("Run menu item", - str(evt.GetId()))) - + #ps.Publisher().sendMessage(("Event from GUI", + # evt.GetId())) + id = evt.GetId() + if id == const.ID_DICOM_IMPORT: + self.ImportDicom() + elif id == const.ID_PROJECT_OPEN: + self.OpenProject() + elif id == const.ID_PROJECT_SAVE: + if Project().save_as: + self.SaveAsProject() + else: + self.SaveProject() + elif id == const.ID_PROJECT_SAVE_AS: + self.SaveAsProject() + elif id == const.ID_PROJECT_CLOSE: + self.CloseProject() + elif id == const.ID_EXIT: + self.Exit() + + def ImportDicom(self): + dirpath = dlg.ShowImportDirDialog() + if dirpath: + ps.Publisher().sendMessage("Load data to import panel", dirpath) + + def OpenProject(self): + filepath = dlg.ShowOpenProjectDialog() + if filepath: + ps.Publisher().sendMessage('Open Project', filepath) + + def SaveAsProject(self): + self.SaveProject(True) + + def SaveProject(self, saveas=False): + filename = (Project().name).replace(' ','_') + if Project().save_as or saveas: + filename = dlg.ShowSaveAsProjectDialog(filename) + if filename: + Project().save_as = False + else: + return + ps.Publisher().sendMessage('Save Project',filename) + + + def SaveAsOld(self): + + filename = (Project().name).replace(' ','_') + filename = dlg.ShowSaveAsProjectDialog(filename) + if filename: + Project().save_as = False + else: + return + self.SaveProject(filename) + + def SaveProjectOld(self, filename=None): + if not filename: + filename = Project().name + ps.Publisher().sendMessage('Save Project',filename) + + def CloseProject(self): + print "TODO: CloseProject" + + def Exit(self): + print "TODO: Exit" + def ShowTask(self, pubsub_evt): self.aui_manager.GetPane("Tasks").Show() self.aui_manager.Update() @@ -244,31 +305,80 @@ class MenuBar(wx.MenuBar): def __init_items(self): + # FILE file_menu = wx.Menu() - file_menu.Append(const.ID_FILE_IMPORT, "Import...") - file_menu.Append(101, "Exit") - - view_menu = wx.Menu() - view_menu.Append(101, "Fullscreen") - - tools_menu = wx.Menu() - - options_menu = wx.Menu() - + #file_menu.Append(const.ID_DICOM_LOAD_NET, "Import DICOM from Internet...") + file_menu.Append(const.ID_DICOM_IMPORT, "Import DICOM...\tCtrl+I") + file_menu.Append(const.ID_PROJECT_OPEN, "Open Project...\tCtrl+O") + file_menu.Append(const.ID_PROJECT_SAVE, "Save Project\tCtrl+S") + file_menu.Append(const.ID_PROJECT_SAVE_AS, "Save Project As...") + file_menu.Append(const.ID_PROJECT_CLOSE, "Close Project") + file_menu.AppendSeparator() + #file_menu.Append(const.ID_PROJECT_INFO, "Project Information...") + #file_menu.AppendSeparator() + #file_menu.Append(const.ID_SAVE_SCREENSHOT, "Save Screenshot") + #file_menu.Append(const.ID_PRINT_SCREENSHOT, "Print Screenshot") + #file_menu.AppendSeparator() + #file_menu.Append(1, "C:\InvData\sample.inv") + #file_menu.AppendSeparator() + file_menu.Append(const.ID_EXIT, "Exit") + + # EDIT + #file_edit = wx.Menu() + #file_edit.Append(wx.ID_UNDO, "Undo\tCtrl+Z") + #file_edit.Append(wx.ID_REDO, "Redo\tCtrl+Y") + #file_edit.Append(const.ID_EDIT_LIST, "Show Undo List...") + + # VIEW + #view_tool_menu = wx.Menu() + #view_tool_menu.Append(const.ID_TOOL_PROJECT, "Project Toolbar") + #view_tool_menu.Append(const.ID_TOOL_LAYOUT, "Layout Toolbar") + #view_tool_menu.Append(const.ID_TOOL_OBJECT, "Object Toolbar") + #view_tool_menu.Append(const.ID_TOOL_SLICE, "Slice Toolbar") + + #view_layout_menu = wx.Menu() + #view_layout_menu.Append(const.ID_TASK_BAR, "Task Bar") + #view_layout_menu.Append(const.ID_VIEW_FOUR, "Four View") + + + #view_menu = wx.Menu() + #view_menu.AppendMenu(-1, "Toolbars",view_tool_menu) + #view_menu.AppendMenu(-1, "Layout", view_layout_menu) + #view_menu.AppendSeparator() + #view_menu.Append(const.ID_VIEW_FULL, "Fullscreen\tCtrl+F") + #view_menu.AppendSeparator() + #view_menu.Append(const.ID_VIEW_TEXT, "2D & 3D Text") + #view_menu.AppendSeparator() + #view_menu.Append(const.ID_VIEW_3D_BACKGROUND, "3D Background Colour") + + # TOOLS + #tools_menu = wx.Menu() + + # OPTIONS + #options_menu = wx.Menu() + #options_menu.Append(104, "Preferences...") + + # HELP help_menu = wx.Menu() + help_menu.Append(105, "Getting Started...") + #help_menu.Append(108, "User Manual...") + help_menu.AppendSeparator() + help_menu.Append(106, "About...") + #help_menu.Append(107, "Check For Updates Now...") # TODO: Check what is necessary under MacOS to show Groo and not Python # first menu item... Didn't manage to solve it up to now, the 3 lines # bellow are a frustated test, based on wxPython Demo # TODO: Google about this - test_menu = wx.Menu() - test_item = test_menu.Append(-1, '&About Groo', 'Groo RULES!!!') - wx.App.SetMacAboutMenuItemId(test_item.GetId()) + #test_menu = wx.Menu() + #test_item = test_menu.Append(-1, '&About Groo', 'Groo RULES!!!') + #wx.App.SetMacAboutMenuItemId(test_item.GetId()) self.Append(file_menu, "File") - self.Append(view_menu, "View") - self.Append(tools_menu, "Tools") - self.Append(options_menu, "Options") + #self.Append(file_edit, "Edit") + #self.Append(view_menu, "View") + #self.Append(tools_menu, "Tools") + #self.Append(options_menu, "Options") self.Append(help_menu, "Help") def __bind_events(self): @@ -276,19 +386,8 @@ class MenuBar(wx.MenuBar): # events should be binded directly from wx.Menu / wx.MenuBar # message "Binding events of wx.MenuBar" on [wxpython-users] # mail list in Oct 20 2008 - #self.parent.Bind(wx.EVT_MENU, self.OnNew, id=ID_NEW) - #self.parent.Bind(wx.EVT_MENU, self.OnOpen, id=ID_OPEN) pass - def OnNew(self, event): - print "New" - ps.Publisher().sendMessage(('NEW PROJECT')) - event.Skip() - - def OnOpen(self, event): - print "Open" - event.Skip() - # ------------------------------------------------------------------ class ProgressBar(wx.Gauge): @@ -422,31 +521,33 @@ class ProjectToolBar(wx.ToolBar): BMP_PHOTO = wx.Bitmap(os.path.join(const.ICON_DIR, "tool_photo.png"), wx.BITMAP_TYPE_PNG) - self.AddLabelTool(const.ID_FILE_LOAD_INTERNET, - "Load medical image...", - BMP_NET) - self.AddLabelTool(const.ID_FILE_IMPORT, + + #self.AddLabelTool(const.ID_DICOM_LOAD_NET, + # "Load medical image...", + # BMP_NET) + self.AddLabelTool(const.ID_DICOM_IMPORT, "Import medical image...", BMP_IMPORT) - self.AddLabelTool(const.ID_FILE_OPEN, + self.AddLabelTool(const.ID_PROJECT_OPEN, "Open InVesalius 3 project...", BMP_OPEN) - self.AddLabelTool(const.ID_FILE_SAVE, + self.AddLabelTool(const.ID_PROJECT_SAVE, "Save InVesalius project", BMP_SAVE) - self.AddLabelTool(const.ID_FILE_PHOTO, - "Take photo of screen", - BMP_PHOTO) - self.AddLabelTool(const.ID_FILE_PRINT, - "Print medical image...", - BMP_PRINT) + #self.AddLabelTool(const.ID_SAVE_SCREENSHOT, + # "Take photo of screen", + # BMP_PHOTO) + #self.AddLabelTool(const.ID_PRINT_SCREENSHOT, + # "Print medical image...", + # BMP_PRINT) self.Realize() def __bind_events(self): - self.Bind(wx.EVT_TOOL, self.OnToolSave, id=const.ID_FILE_SAVE) - self.Bind(wx.EVT_TOOL, self.OnToolOpen, id=const.ID_FILE_OPEN) - self.Bind(wx.EVT_TOOL, self.OnToolImport, id=const.ID_FILE_IMPORT) + + self.Bind(wx.EVT_TOOL, self.OnToolSave, id=const.ID_PROJECT_SAVE) + self.Bind(wx.EVT_TOOL, self.OnToolOpen, id=const.ID_PROJECT_OPEN) + self.Bind(wx.EVT_TOOL, self.OnToolImport, id=const.ID_DICOM_IMPORT) def OnToolImport(self, event): dirpath = dlg.ShowImportDirDialog() diff --git a/invesalius/gui/task_importer.py b/invesalius/gui/task_importer.py index 1ca9026..52eef22 100644 --- a/invesalius/gui/task_importer.py +++ b/invesalius/gui/task_importer.py @@ -70,14 +70,14 @@ class InnerTaskPanel(wx.Panel): link_import_local.UpdateLink() link_import_local.Bind(hl.EVT_HYPERLINK_LEFT, self.OnLinkImport) - tooltip = wx.ToolTip("Import DICOM files from PACS server") - link_import_pacs = hl.HyperLinkCtrl(self, -1,"Load from PACS server...") - link_import_pacs.SetUnderlines(False, False, False) - link_import_pacs.SetColours("BLACK", "BLACK", "BLACK") - link_import_pacs.SetToolTip(tooltip) - link_import_pacs.AutoBrowse(False) - link_import_pacs.UpdateLink() - link_import_pacs.Bind(hl.EVT_HYPERLINK_LEFT, self.OnLinkImportPACS) + #tooltip = wx.ToolTip("Import DICOM files from PACS server") + #link_import_pacs = hl.HyperLinkCtrl(self, -1,"Load from PACS server...") + #link_import_pacs.SetUnderlines(False, False, False) + #link_import_pacs.SetColours("BLACK", "BLACK", "BLACK") + #link_import_pacs.SetToolTip(tooltip) + #link_import_pacs.AutoBrowse(False) + #link_import_pacs.UpdateLink() + #link_import_pacs.Bind(hl.EVT_HYPERLINK_LEFT, self.OnLinkImportPACS) tooltip = wx.ToolTip("Open an existing InVesalius project...") link_open_proj = hl.HyperLinkCtrl(self,-1,"Open an existing project...") @@ -101,8 +101,8 @@ class InnerTaskPanel(wx.Panel): # Buttons related to hyperlinks button_style = pbtn.PB_STYLE_SQUARE | pbtn.PB_STYLE_DEFAULT - button_import_pacs = pbtn.PlateButton(self, BTN_IMPORT_PACS, "", BMP_NET, - style=button_style) + #button_import_pacs = pbtn.PlateButton(self, BTN_IMPORT_PACS, "", BMP_NET, + # style=button_style) button_import_local = pbtn.PlateButton(self, BTN_IMPORT_LOCAL, "", BMP_IMPORT, style=button_style) button_open_proj = pbtn.PlateButton(self, BTN_OPEN_PROJECT, "", @@ -115,10 +115,11 @@ class InnerTaskPanel(wx.Panel): flag_link = wx.EXPAND|wx.GROW|wx.LEFT|wx.TOP flag_button = wx.EXPAND | wx.GROW - fixed_sizer = wx.FlexGridSizer(rows=3, cols=2, hgap=2, vgap=0) + #fixed_sizer = wx.FlexGridSizer(rows=3, cols=2, hgap=2, vgap=0) + fixed_sizer = wx.FlexGridSizer(rows=2, cols=2, hgap=2, vgap=0) fixed_sizer.AddGrowableCol(0, 1) - fixed_sizer.AddMany([ (link_import_pacs, 1, flag_link, 3), - (button_import_pacs, 0, flag_button), + fixed_sizer.AddMany([ #(link_import_pacs, 1, flag_link, 3), + #(button_import_pacs, 0, flag_button), (link_import_local, 1, flag_link, 3), (button_import_local, 0, flag_button), (link_open_proj, 1, flag_link, 3), @@ -134,7 +135,7 @@ class InnerTaskPanel(wx.Panel): self.sizer = main_sizer # Test load and unload specific projects' links - self.TestLoadProjects() + #self.TestLoadProjects() def OnLinkImport(self, event): self.LinkImport() -- libgit2 0.21.2