From 2d6dfdbd0e6e5642934bda6f3f850081b4400dd0 Mon Sep 17 00:00:00 2001 From: Randy Mackay Date: Mon, 9 Sep 2024 18:57:44 +0900 Subject: [PATCH] picviewer: more mosaic improvements --- MAVProxy/tools/mavpicviewer/mosaic_window2.py | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/MAVProxy/tools/mavpicviewer/mosaic_window2.py b/MAVProxy/tools/mavpicviewer/mosaic_window2.py index 39688c7d2b..10d21a2c04 100644 --- a/MAVProxy/tools/mavpicviewer/mosaic_window2.py +++ b/MAVProxy/tools/mavpicviewer/mosaic_window2.py @@ -50,10 +50,10 @@ def __init__(self, filelist, image_select_cb): # create window self.app = wx.App() - # update title - title_str = "PicViewer Mosaic (" + str(self.filenumber+1) + " of " + str(len(self.filelist)) + ")" - self.frame = wx.Frame(None, title=title_str, size=(565, 310)) + # create frame + self.frame = wx.Frame(None, size=(565, 310)) self.frame.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) + self.update_title() # add menu self.menu = wx.Menu() @@ -76,6 +76,7 @@ def __init__(self, filelist, image_select_cb): # add a read-only status text box self.text_status = wx.TextCtrl(self.frame, id=-1, size=(600, 60), style=wx.TE_READONLY | wx.TE_MULTILINE | wx.TE_RICH) + self.text_status.value = "POI lat: 0.0 lon: 0.0" # add a scrolled panel self.scrolled_panel = scrolled.ScrolledPanel(self.frame, -1, size=(600, 600), style=wx.TAB_TRAVERSAL) @@ -85,25 +86,18 @@ def __init__(self, filelist, image_select_cb): for i in range(len(self.filelist)): img_path = self.filelist[i] wx_image = wx.Image(img_path, wx.BITMAP_TYPE_ANY).Scale(100, 100) - #image = wx.StaticBitmap(self.scrolled_panel, wx.ID_ANY, wx.Bitmap(wx_image)) image = wx.StaticBitmap(self.scrolled_panel, i, wx.Bitmap(wx_image)) + image.SetForegroundColour(wx.GREEN) image.Bind(wx.EVT_LEFT_DOWN, self.on_image_click) - self.scrolled_panel_sizer.Add(image, proportion=0, flag=wx.EXPAND | wx.ALL, border=2, userData=i) + self.scrolled_panel_sizer.Add(image, proportion=0, flag=wx.ALL, border=2, userData=i) self.scrolled_panel.SetSizer(self.scrolled_panel_sizer) self.scrolled_panel.SetupScrolling(scroll_x=True, scroll_y=True) - # add a cancel button - self.cancel_button = wx.Button(self.frame, id=-1, label="cancel", size=(75, 25)) - #self.frame.Bind(wx.EVT_BUTTON, self.cancel_button_click , self.cancel_button) - # add a vertical and horizontal sizers self.vert_sizer = wx.BoxSizer(wx.VERTICAL) self.horiz_sizer = wx.BoxSizer(wx.HORIZONTAL) - self.horiz_sizer.Add(self.cancel_button, proportion=0, flag=wx.ALIGN_TOP | wx.ALL, border=5) - wx.CallAfter(self.cancel_button.Disable) - # set size hints and add sizer to frame self.vert_sizer.Add(self.text_status, proportion=0, flag=wx.EXPAND, border=5) self.vert_sizer.Add(self.scrolled_panel, proportion=0, flag=wx.EXPAND | wx.ALL, border=5) @@ -133,10 +127,21 @@ def set_title(self, title): """set image title""" self.frame.SetTitle(title) + # update title + def update_title(self): + """update title""" + title_str = f"PicViewer Mosaic ({self.filenumber+1} of {len(self.filelist)})" + self.set_title(title_str) + # process window events def on_image_click(self, event): """process image click event""" - self.image_select_cb(event.GetId()) + # update filenumber and title + self.filenumber = event.GetId() + self.update_title() + + # callback to parent to select image + self.image_select_cb(self.filenumber) # process window events def check_events(self):