From 1fc5128e4ca5a98c04fe2b8be2dd2739c5938aa5 Mon Sep 17 00:00:00 2001 From: Peter Antypas Date: Sun, 13 Feb 2022 21:24:03 -0800 Subject: [PATCH 01/11] GUI client validating HW revision --- latest/Apps/maiana-update/maiana-update.fbp | 250 +++++++++++++++++++- latest/Apps/maiana-update/maianaclient.py | 6 +- latest/Apps/maiana-update/mainframe.py | 26 +- latest/Apps/maiana-update/mainwindow.py | 35 ++- 4 files changed, 308 insertions(+), 9 deletions(-) diff --git a/latest/Apps/maiana-update/maiana-update.fbp b/latest/Apps/maiana-update/maiana-update.fbp index d9fa3f4..a5f65b0 100644 --- a/latest/Apps/maiana-update/maiana-update.fbp +++ b/latest/Apps/maiana-update/maiana-update.fbp @@ -50,7 +50,7 @@ 605,300 wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX ; ; forward_declare - MAIANA Transponder Manager ver 0.1 + MAIANA Transponder Manager ver 0.2 0 @@ -180,7 +180,7 @@ gSizer1 none - 5 + 6 0 5 @@ -395,7 +395,7 @@ 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALL 0 1 @@ -759,6 +759,250 @@ -1 + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Breakout Board Generation + 0 + + 0 + + + 0 + + 1 + m_staticText21 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + (unknown) + 0 + + 0 + + + 0 + + 1 + m_breakoutLbl + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Bootloader Present + 0 + + 0 + + + 0 + + 1 + m_staticText23 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + (unknown) + 0 + + 0 + + + 0 + + 1 + m_bootloaderLbl + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + diff --git a/latest/Apps/maiana-update/maianaclient.py b/latest/Apps/maiana-update/maianaclient.py index 208b3fe..8b58390 100644 --- a/latest/Apps/maiana-update/maianaclient.py +++ b/latest/Apps/maiana-update/maianaclient.py @@ -84,7 +84,11 @@ class MaianaClient: return {} systokens = re.split(',|\\*', sysline.decode('utf-8')) - sysd = {'fw': systokens[2], 'hw': systokens[1], 'cpu': systokens[4]} + sysd = {'fw': systokens[2], + 'hw': systokens[1], + 'cpu': systokens[4], + 'newbrkout': int(systokens[5]), + 'bootloader': int(systokens[6])} return sysd except: pass diff --git a/latest/Apps/maiana-update/mainframe.py b/latest/Apps/maiana-update/mainframe.py index 37f2f7c..983c203 100644 --- a/latest/Apps/maiana-update/mainframe.py +++ b/latest/Apps/maiana-update/mainframe.py @@ -17,7 +17,7 @@ import wx.xrc class MainFrame ( wx.Frame ): def __init__( self, parent ): - wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"MAIANA Transponder Manager ver 0.1", pos = wx.DefaultPosition, size = wx.Size( 605,300 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX|wx.TAB_TRAVERSAL ) + wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"MAIANA Transponder Manager ver 0.2", pos = wx.DefaultPosition, size = wx.Size( 605,300 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX|wx.TAB_TRAVERSAL ) self.SetSizeHints( wx.DefaultSize, wx.DefaultSize ) @@ -25,7 +25,7 @@ class MainFrame ( wx.Frame ): self.m_notebook2 = wx.Notebook( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_StatusPnl = wx.Panel( self.m_notebook2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) - gSizer1 = wx.GridSizer( 5, 2, 0, 0 ) + gSizer1 = wx.GridSizer( 6, 2, 0, 0 ) self.m_staticText1 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Serial Port", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText1.Wrap( -1 ) @@ -52,7 +52,7 @@ class MainFrame ( wx.Frame ): self.m_staticText7 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"CPU", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText7.Wrap( -1 ) - gSizer1.Add( self.m_staticText7, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer1.Add( self.m_staticText7, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) self.m_CPULbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_CPULbl.Wrap( -1 ) @@ -85,6 +85,26 @@ class MainFrame ( wx.Frame ): gSizer1.Add( self.m_FWRevLbl, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + self.m_staticText21 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Breakout Board Generation", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText21.Wrap( -1 ) + + gSizer1.Add( self.m_staticText21, 0, wx.ALL, 5 ) + + self.m_breakoutLbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_breakoutLbl.Wrap( -1 ) + + gSizer1.Add( self.m_breakoutLbl, 0, wx.ALL, 5 ) + + self.m_staticText23 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Bootloader Present", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText23.Wrap( -1 ) + + gSizer1.Add( self.m_staticText23, 0, wx.ALL, 5 ) + + self.m_bootloaderLbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_bootloaderLbl.Wrap( -1 ) + + gSizer1.Add( self.m_bootloaderLbl, 0, wx.ALL, 5 ) + self.m_StatusPnl.SetSizer( gSizer1 ) self.m_StatusPnl.Layout() diff --git a/latest/Apps/maiana-update/mainwindow.py b/latest/Apps/maiana-update/mainwindow.py index 77a6d9d..836ecb4 100644 --- a/latest/Apps/maiana-update/mainwindow.py +++ b/latest/Apps/maiana-update/mainwindow.py @@ -4,6 +4,8 @@ import serial import wx from fwUpdateThread import * +MIN_HW_REV = [b'11', b'0', b'0'] + class MainWindow(MainFrame): def __init__(self): MainFrame.__init__(self, None) @@ -37,8 +39,8 @@ class MainWindow(MainFrame): else: #Assuming status is RUNNING self.m_SerialBtn.SetLabel(b'Disconnect') - self.enableUI() if self.refreshSys(): + self.enableUI() self.refreshStation() self.m_StationSaveBtn.Disable() else: @@ -94,7 +96,8 @@ class MainWindow(MainFrame): def enableUI(self): self.m_StationPnl.Enable() - self.m_FWUpdatePnl.Enable() + if self.sysdata['bootloader']: + self.m_FWUpdatePnl.Enable() def disableUI(self): self.m_StationPnl.Disable() @@ -108,15 +111,43 @@ class MainWindow(MainFrame): self.stationdata = MaianaClient.loadStation(self.port) return self.renderStation() + def validateRev(self, rev): + tokens = rev.split('.') + if len(tokens) < 3: + return False + + for i in range(3): + if int(tokens[i]) < int(MIN_HW_REV[i]): + return False + + return True + + + def renderSys(self): if not 'hw' in self.sysdata: wx.MessageDialog(self, b'There was no response from MAIANA. Please check connections and try again.', 'Timeout', wx.OK | wx.STAY_ON_TOP|wx.CENTRE).ShowModal() return False + if not self.validateRev(self.sysdata['hw']): + wx.MessageDialog(self, b'This version of MAIANA is too old for this software to manage.', + 'Unrecognized', wx.OK | wx.STAY_ON_TOP|wx.CENTRE).ShowModal() + return False + self.m_HWRevLbl.SetLabel(self.sysdata['hw']) self.m_FWRevLbl.SetLabel(self.sysdata['fw']) self.m_CPULbl.SetLabel(self.sysdata['cpu']) + if self.sysdata['newbrkout']: + self.m_breakoutLbl.SetLabel(b'New') + else: + self.m_breakoutLbl.SetLabel(b'Legacy') + + if self.sysdata['bootloader']: + self.m_bootloaderLbl.SetLabel('Yes') + else: + self.m_bootloaderLbl.SetLabel('No') + return True def renderStation(self): From 34672121ecd13a3f00db9be768ffc768a807b4b0 Mon Sep 17 00:00:00 2001 From: mgrouch <1Mike.zz> Date: Sun, 20 Feb 2022 22:14:45 +0000 Subject: [PATCH 02/11] align labels right --- latest/Apps/maiana-update/maiana-update.fbp | 78 ++++++++++----------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/latest/Apps/maiana-update/maiana-update.fbp b/latest/Apps/maiana-update/maiana-update.fbp index a5f65b0..3351645 100644 --- a/latest/Apps/maiana-update/maiana-update.fbp +++ b/latest/Apps/maiana-update/maiana-update.fbp @@ -119,11 +119,11 @@ - + Status 1 - + 1 1 1 @@ -174,7 +174,7 @@ wxTAB_TRAVERSAL - + 2 0 @@ -184,7 +184,7 @@ 0 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -243,7 +243,7 @@ -1 - + 5 wxEXPAND 1 @@ -395,7 +395,7 @@ 5 - wxALIGN_CENTER_VERTICAL|wxALL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -517,7 +517,7 @@ 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -639,7 +639,7 @@ 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -759,11 +759,11 @@ -1 - + 5 - wxALL + wxALIGN_RIGHT|wxALL 0 - + 1 1 1 @@ -820,11 +820,11 @@ -1 - + 5 wxALL 0 - + 1 1 1 @@ -881,11 +881,11 @@ -1 - + 5 - wxALL + wxALIGN_RIGHT|wxALL 0 - + 1 1 1 @@ -942,11 +942,11 @@ -1 - + 5 wxALL 0 - + 1 1 1 @@ -1006,11 +1006,11 @@ - + Station Data 0 - + 1 1 1 @@ -1061,7 +1061,7 @@ wxTAB_TRAVERSAL - + 4 0 @@ -1071,7 +1071,7 @@ 0 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -1197,7 +1197,7 @@ 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -1323,7 +1323,7 @@ 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -1449,7 +1449,7 @@ 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -1575,7 +1575,7 @@ 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -1701,7 +1701,7 @@ 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -1827,7 +1827,7 @@ 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -1953,7 +1953,7 @@ 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -2337,11 +2337,11 @@ - + FW Update 0 - + 1 1 1 @@ -2392,16 +2392,16 @@ wxTAB_TRAVERSAL - + bSizer41 wxVERTICAL none - + 5 wxEXPAND 1 - + 2 0 -1,90 @@ -2411,7 +2411,7 @@ 0 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 1 1 @@ -2538,11 +2538,11 @@ - + 5 wxEXPAND 1 - + 2 0 @@ -2690,11 +2690,11 @@ - + 5 wxALL 0 - + 1 1 1 From f69f4ecf6af1c34bb47e339596e0112312957561 Mon Sep 17 00:00:00 2001 From: Peter Antypas Date: Mon, 21 Feb 2022 07:54:05 -0800 Subject: [PATCH 03/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 089f0f0..646bc41 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Fast forward to 2021, and several other sailors who are looking for the same fea -The main difference between MAIANA™ and every commercial transponder is that it's a self-contained unit, and thus its performance is 100% repeatable. The entire transponder circuit, the GNSS and all antennas are in the same housing. The design has been validated by fabricating _over 80 units_ now (December 2021). +The main difference between MAIANA™ and every commercial transponder is that it's a self-contained unit, and thus its performance is 100% repeatable. The entire transponder circuit, the GNSS and all antennas are in the same housing. The design has been validated by fabricating _over 100 units_ now (February 2022). So with all the core functionality kept outside and under tight control, the only other thing we need is power and data connections. Now, what's the most common cable that can carry a few signals 50 feet away? If you guessed "Ethernet", you guessed right. Commonplace Cat5 cable can deliver power plus serial data signals anywhere on an average sized pleasure boat. So that's how the exterior unit connects to the cabin, where one of these breakouts offers USB, NMEA0183 or NMEA2000 adapters to connect to the rest of the boat's systems. From 9e0942c8143a832b4c2e1ba00e97d0b657d98889 Mon Sep 17 00:00:00 2001 From: Peter Antypas Date: Mon, 21 Feb 2022 08:00:48 -0800 Subject: [PATCH 04/11] New label alignment --- latest/Apps/maiana-update/mainframe.py | 30 +++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/latest/Apps/maiana-update/mainframe.py b/latest/Apps/maiana-update/mainframe.py index 983c203..ed2f9ef 100644 --- a/latest/Apps/maiana-update/mainframe.py +++ b/latest/Apps/maiana-update/mainframe.py @@ -30,7 +30,7 @@ class MainFrame ( wx.Frame ): self.m_staticText1 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Serial Port", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText1.Wrap( -1 ) - gSizer1.Add( self.m_staticText1, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer1.Add( self.m_staticText1, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) bSizer4 = wx.BoxSizer( wx.HORIZONTAL ) @@ -52,7 +52,7 @@ class MainFrame ( wx.Frame ): self.m_staticText7 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"CPU", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText7.Wrap( -1 ) - gSizer1.Add( self.m_staticText7, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) + gSizer1.Add( self.m_staticText7, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) self.m_CPULbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_CPULbl.Wrap( -1 ) @@ -64,7 +64,7 @@ class MainFrame ( wx.Frame ): self.m_staticText3 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Hardware Revision", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText3.Wrap( -1 ) - gSizer1.Add( self.m_staticText3, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer1.Add( self.m_staticText3, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) self.m_HWRevLbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_HWRevLbl.Wrap( -1 ) @@ -76,7 +76,7 @@ class MainFrame ( wx.Frame ): self.m_staticText5 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Firmware Revision", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText5.Wrap( -1 ) - gSizer1.Add( self.m_staticText5, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer1.Add( self.m_staticText5, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) self.m_FWRevLbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_FWRevLbl.Wrap( -1 ) @@ -88,7 +88,7 @@ class MainFrame ( wx.Frame ): self.m_staticText21 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Breakout Board Generation", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText21.Wrap( -1 ) - gSizer1.Add( self.m_staticText21, 0, wx.ALL, 5 ) + gSizer1.Add( self.m_staticText21, 0, wx.ALIGN_RIGHT|wx.ALL, 5 ) self.m_breakoutLbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_breakoutLbl.Wrap( -1 ) @@ -98,7 +98,7 @@ class MainFrame ( wx.Frame ): self.m_staticText23 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Bootloader Present", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText23.Wrap( -1 ) - gSizer1.Add( self.m_staticText23, 0, wx.ALL, 5 ) + gSizer1.Add( self.m_staticText23, 0, wx.ALIGN_RIGHT|wx.ALL, 5 ) self.m_bootloaderLbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_bootloaderLbl.Wrap( -1 ) @@ -118,7 +118,7 @@ class MainFrame ( wx.Frame ): self.m_staticText101 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"MMSI", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText101.Wrap( -1 ) - gSizer2.Add( self.m_staticText101, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer2.Add( self.m_staticText101, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) self.m_MMSIText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size( 100,-1 ), 0 ) gSizer2.Add( self.m_MMSIText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) @@ -126,7 +126,7 @@ class MainFrame ( wx.Frame ): self.m_staticText11 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Call Sign", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText11.Wrap( -1 ) - gSizer2.Add( self.m_staticText11, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer2.Add( self.m_staticText11, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) self.m_CallsignText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) gSizer2.Add( self.m_CallsignText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) @@ -134,7 +134,7 @@ class MainFrame ( wx.Frame ): self.m_staticText12 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Name", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText12.Wrap( -1 ) - gSizer2.Add( self.m_staticText12, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer2.Add( self.m_staticText12, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) self.m_NameText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_NameText.SetMaxLength( 20 ) @@ -145,7 +145,7 @@ class MainFrame ( wx.Frame ): self.m_staticText13 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Vessel Type", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText13.Wrap( -1 ) - gSizer2.Add( self.m_staticText13, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer2.Add( self.m_staticText13, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) m_VesselTypeChoiceChoices = [ u"Fishing", u"Diving", u"Sailing", u"Pleasure" ] self.m_VesselTypeChoice = wx.Choice( self.m_StationPnl, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_VesselTypeChoiceChoices, 0 ) @@ -155,7 +155,7 @@ class MainFrame ( wx.Frame ): self._ = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Length (m)", wx.DefaultPosition, wx.DefaultSize, 0 ) self._.Wrap( -1 ) - gSizer2.Add( self._, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer2.Add( self._, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) self.m_LengthText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0 ) gSizer2.Add( self.m_LengthText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) @@ -163,7 +163,7 @@ class MainFrame ( wx.Frame ): self.m_staticText15 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Beam (m)", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText15.Wrap( -1 ) - gSizer2.Add( self.m_staticText15, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer2.Add( self.m_staticText15, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) self.m_BeamText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0 ) gSizer2.Add( self.m_BeamText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) @@ -171,7 +171,7 @@ class MainFrame ( wx.Frame ): self.m_staticText17 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Port Offset (m)", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText17.Wrap( -1 ) - gSizer2.Add( self.m_staticText17, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer2.Add( self.m_staticText17, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) self.m_PortOffsetText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0 ) gSizer2.Add( self.m_PortOffsetText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) @@ -179,7 +179,7 @@ class MainFrame ( wx.Frame ): self.m_staticText16 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Bow Offset (m)", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText16.Wrap( -1 ) - gSizer2.Add( self.m_staticText16, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer2.Add( self.m_staticText16, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) self.m_BowOffsetText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0 ) gSizer2.Add( self.m_BowOffsetText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) @@ -220,7 +220,7 @@ class MainFrame ( wx.Frame ): self.m_staticText28 = wx.StaticText( self.m_FWUpdatePnl, wx.ID_ANY, u"Binary File:", wx.DefaultPosition, wx.Size( 80,-1 ), 0 ) self.m_staticText28.Wrap( -1 ) - gSizer4.Add( self.m_staticText28, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer4.Add( self.m_staticText28, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) self.m_FWBinaryPicker = wx.FilePickerCtrl( self.m_FWUpdatePnl, wx.ID_ANY, wx.EmptyString, u"Select a file", u"*.bin", wx.DefaultPosition, wx.Size( -1,-1 ), wx.FLP_CHANGE_DIR|wx.FLP_DEFAULT_STYLE|wx.FLP_FILE_MUST_EXIST|wx.FLP_OPEN ) gSizer4.Add( self.m_FWBinaryPicker, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.EXPAND, 5 ) From 4344c0b7fbb1984691bd6fa7f7b51ae18b928276 Mon Sep 17 00:00:00 2001 From: mgrouch <1Mike.zz> Date: Tue, 22 Feb 2022 00:57:45 +0000 Subject: [PATCH 05/11] fixes for sizing and alignment --- latest/Apps/maiana-update/maiana-update.fbp | 50 +-- latest/Apps/maiana-update/mainframe.py | 366 ++++++++++---------- 2 files changed, 210 insertions(+), 206 deletions(-) diff --git a/latest/Apps/maiana-update/maiana-update.fbp b/latest/Apps/maiana-update/maiana-update.fbp index 3351645..910379e 100644 --- a/latest/Apps/maiana-update/maiana-update.fbp +++ b/latest/Apps/maiana-update/maiana-update.fbp @@ -47,7 +47,7 @@ MainFrame - 605,300 + 620,329 wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX ; ; forward_declare MAIANA Transponder Manager ver 0.2 @@ -119,11 +119,11 @@ - + Status 1 - + 1 1 1 @@ -290,8 +290,8 @@ 0 - 150,-1 - 1 + 180,-1 + 0 m_SerialPortChoice 1 @@ -761,7 +761,7 @@ 5 - wxALIGN_RIGHT|wxALL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -822,7 +822,7 @@ 5 - wxALL + wxALIGN_CENTER_VERTICAL|wxALL 0 1 @@ -883,7 +883,7 @@ 5 - wxALIGN_RIGHT|wxALL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -944,7 +944,7 @@ 5 - wxALL + wxALIGN_CENTER_VERTICAL|wxALL 0 1 @@ -1006,11 +1006,11 @@ - + Station Data 0 - + 1 1 1 @@ -1061,7 +1061,7 @@ wxTAB_TRAVERSAL - + 4 0 @@ -1168,7 +1168,7 @@ 0 - + 180,-1 1 m_MMSIText 1 @@ -1179,7 +1179,7 @@ Resizable 1 - 100,-1 + -1,-1 ; ; forward_declare 0 @@ -1294,7 +1294,7 @@ 0 - + 120,-1 1 m_CallsignText 1 @@ -1420,7 +1420,7 @@ 20 0 - 140,-1 + 180,-1 1 m_NameText 1 @@ -2079,7 +2079,7 @@ 5 - wxALL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -2140,7 +2140,7 @@ 5 - wxALL + wxALIGN_CENTER_VERTICAL|wxALIGN_LEFT|wxALL 0 1 @@ -2201,7 +2201,7 @@ 5 - wxALL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -2337,11 +2337,11 @@ - + FW Update 0 - + 1 1 1 @@ -2392,16 +2392,16 @@ wxTAB_TRAVERSAL - + bSizer41 wxVERTICAL none - + 5 wxEXPAND 1 - + 2 0 -1,90 @@ -2459,7 +2459,7 @@ Resizable 1 - 80,-1 + -1,-1 ; ; forward_declare 0 diff --git a/latest/Apps/maiana-update/mainframe.py b/latest/Apps/maiana-update/mainframe.py index 983c203..8da3cfe 100644 --- a/latest/Apps/maiana-update/mainframe.py +++ b/latest/Apps/maiana-update/mainframe.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- ########################################################################### -## Python code generated with wxFormBuilder (version 3.10.1-39-g978478d5-dirty) +## Python code generated with wxFormBuilder (version 3.10.1) ## http://www.wxformbuilder.org/ ## ## PLEASE DO *NOT* EDIT THIS FILE! @@ -16,296 +16,300 @@ import wx.xrc class MainFrame ( wx.Frame ): - def __init__( self, parent ): - wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"MAIANA Transponder Manager ver 0.2", pos = wx.DefaultPosition, size = wx.Size( 605,300 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX|wx.TAB_TRAVERSAL ) + def __init__( self, parent ): + wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"MAIANA Transponder Manager ver 0.2", pos = wx.DefaultPosition, size = wx.Size( 620,329 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX|wx.TAB_TRAVERSAL ) - self.SetSizeHints( wx.DefaultSize, wx.DefaultSize ) + self.SetSizeHints( wx.DefaultSize, wx.DefaultSize ) - bSizer1 = wx.BoxSizer( wx.VERTICAL ) + bSizer1 = wx.BoxSizer( wx.VERTICAL ) - self.m_notebook2 = wx.Notebook( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_StatusPnl = wx.Panel( self.m_notebook2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) - gSizer1 = wx.GridSizer( 6, 2, 0, 0 ) + self.m_notebook2 = wx.Notebook( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_StatusPnl = wx.Panel( self.m_notebook2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) + gSizer1 = wx.GridSizer( 6, 2, 0, 0 ) - self.m_staticText1 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Serial Port", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_staticText1.Wrap( -1 ) + self.m_staticText1 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Serial Port", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText1.Wrap( -1 ) - gSizer1.Add( self.m_staticText1, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer1.Add( self.m_staticText1, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) - bSizer4 = wx.BoxSizer( wx.HORIZONTAL ) + bSizer4 = wx.BoxSizer( wx.HORIZONTAL ) - m_SerialPortChoiceChoices = [] - self.m_SerialPortChoice = wx.Choice( self.m_StatusPnl, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_SerialPortChoiceChoices, 0 ) - self.m_SerialPortChoice.SetSelection( 0 ) - self.m_SerialPortChoice.SetMinSize( wx.Size( 150,-1 ) ) + m_SerialPortChoiceChoices = [] + self.m_SerialPortChoice = wx.Choice( self.m_StatusPnl, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_SerialPortChoiceChoices, 0 ) + self.m_SerialPortChoice.SetSelection( 0 ) + self.m_SerialPortChoice.SetMinSize( wx.Size( 180,-1 ) ) - bSizer4.Add( self.m_SerialPortChoice, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + bSizer4.Add( self.m_SerialPortChoice, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) - self.m_SerialBtn = wx.Button( self.m_StatusPnl, wx.ID_ANY, u"Connect", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_SerialBtn.Enable( False ) + self.m_SerialBtn = wx.Button( self.m_StatusPnl, wx.ID_ANY, u"Connect", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_SerialBtn.Enable( False ) - bSizer4.Add( self.m_SerialBtn, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + bSizer4.Add( self.m_SerialBtn, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) - gSizer1.Add( bSizer4, 1, wx.EXPAND, 5 ) + gSizer1.Add( bSizer4, 1, wx.EXPAND, 5 ) - self.m_staticText7 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"CPU", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_staticText7.Wrap( -1 ) + self.m_staticText7 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"CPU", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText7.Wrap( -1 ) - gSizer1.Add( self.m_staticText7, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) + gSizer1.Add( self.m_staticText7, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) - self.m_CPULbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_CPULbl.Wrap( -1 ) + self.m_CPULbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_CPULbl.Wrap( -1 ) - self.m_CPULbl.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, wx.EmptyString ) ) + self.m_CPULbl.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, wx.EmptyString ) ) - gSizer1.Add( self.m_CPULbl, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer1.Add( self.m_CPULbl, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) - self.m_staticText3 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Hardware Revision", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_staticText3.Wrap( -1 ) + self.m_staticText3 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Hardware Revision", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText3.Wrap( -1 ) - gSizer1.Add( self.m_staticText3, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer1.Add( self.m_staticText3, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) - self.m_HWRevLbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_HWRevLbl.Wrap( -1 ) + self.m_HWRevLbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_HWRevLbl.Wrap( -1 ) - self.m_HWRevLbl.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, wx.EmptyString ) ) + self.m_HWRevLbl.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, wx.EmptyString ) ) - gSizer1.Add( self.m_HWRevLbl, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer1.Add( self.m_HWRevLbl, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) - self.m_staticText5 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Firmware Revision", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_staticText5.Wrap( -1 ) + self.m_staticText5 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Firmware Revision", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText5.Wrap( -1 ) - gSizer1.Add( self.m_staticText5, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer1.Add( self.m_staticText5, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) - self.m_FWRevLbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_FWRevLbl.Wrap( -1 ) + self.m_FWRevLbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_FWRevLbl.Wrap( -1 ) - self.m_FWRevLbl.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, wx.EmptyString ) ) + self.m_FWRevLbl.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, wx.EmptyString ) ) - gSizer1.Add( self.m_FWRevLbl, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer1.Add( self.m_FWRevLbl, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) - self.m_staticText21 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Breakout Board Generation", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_staticText21.Wrap( -1 ) + self.m_staticText21 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Breakout Board Generation", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText21.Wrap( -1 ) - gSizer1.Add( self.m_staticText21, 0, wx.ALL, 5 ) + gSizer1.Add( self.m_staticText21, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) - self.m_breakoutLbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_breakoutLbl.Wrap( -1 ) + self.m_breakoutLbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_breakoutLbl.Wrap( -1 ) - gSizer1.Add( self.m_breakoutLbl, 0, wx.ALL, 5 ) + gSizer1.Add( self.m_breakoutLbl, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - self.m_staticText23 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Bootloader Present", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_staticText23.Wrap( -1 ) + self.m_staticText23 = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"Bootloader Present", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText23.Wrap( -1 ) - gSizer1.Add( self.m_staticText23, 0, wx.ALL, 5 ) + gSizer1.Add( self.m_staticText23, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) - self.m_bootloaderLbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_bootloaderLbl.Wrap( -1 ) + self.m_bootloaderLbl = wx.StaticText( self.m_StatusPnl, wx.ID_ANY, u"(unknown)", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_bootloaderLbl.Wrap( -1 ) - gSizer1.Add( self.m_bootloaderLbl, 0, wx.ALL, 5 ) + gSizer1.Add( self.m_bootloaderLbl, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) - self.m_StatusPnl.SetSizer( gSizer1 ) - self.m_StatusPnl.Layout() - gSizer1.Fit( self.m_StatusPnl ) - self.m_notebook2.AddPage( self.m_StatusPnl, u"Status", True ) - self.m_StationPnl = wx.Panel( self.m_notebook2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) - self.m_StationPnl.Enable( False ) + self.m_StatusPnl.SetSizer( gSizer1 ) + self.m_StatusPnl.Layout() + gSizer1.Fit( self.m_StatusPnl ) + self.m_notebook2.AddPage( self.m_StatusPnl, u"Status", True ) + self.m_StationPnl = wx.Panel( self.m_notebook2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) + self.m_StationPnl.Enable( False ) - gSizer2 = wx.GridSizer( 0, 4, 0, 0 ) + gSizer2 = wx.GridSizer( 0, 4, 0, 0 ) - self.m_staticText101 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"MMSI", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_staticText101.Wrap( -1 ) + self.m_staticText101 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"MMSI", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText101.Wrap( -1 ) - gSizer2.Add( self.m_staticText101, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer2.Add( self.m_staticText101, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) - self.m_MMSIText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size( 100,-1 ), 0 ) - gSizer2.Add( self.m_MMSIText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + self.m_MMSIText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size( -1,-1 ), 0 ) + self.m_MMSIText.SetMinSize( wx.Size( 180,-1 ) ) - self.m_staticText11 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Call Sign", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_staticText11.Wrap( -1 ) + gSizer2.Add( self.m_MMSIText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) - gSizer2.Add( self.m_staticText11, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + self.m_staticText11 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Call Sign", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText11.Wrap( -1 ) - self.m_CallsignText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - gSizer2.Add( self.m_CallsignText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer2.Add( self.m_staticText11, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) - self.m_staticText12 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Name", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_staticText12.Wrap( -1 ) + self.m_CallsignText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_CallsignText.SetMinSize( wx.Size( 120,-1 ) ) - gSizer2.Add( self.m_staticText12, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer2.Add( self.m_CallsignText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) - self.m_NameText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_NameText.SetMaxLength( 20 ) - self.m_NameText.SetMinSize( wx.Size( 140,-1 ) ) + self.m_staticText12 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Name", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText12.Wrap( -1 ) - gSizer2.Add( self.m_NameText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer2.Add( self.m_staticText12, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) - self.m_staticText13 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Vessel Type", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_staticText13.Wrap( -1 ) + self.m_NameText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_NameText.SetMaxLength( 20 ) + self.m_NameText.SetMinSize( wx.Size( 180,-1 ) ) - gSizer2.Add( self.m_staticText13, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer2.Add( self.m_NameText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) - m_VesselTypeChoiceChoices = [ u"Fishing", u"Diving", u"Sailing", u"Pleasure" ] - self.m_VesselTypeChoice = wx.Choice( self.m_StationPnl, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_VesselTypeChoiceChoices, 0 ) - self.m_VesselTypeChoice.SetSelection( 0 ) - gSizer2.Add( self.m_VesselTypeChoice, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + self.m_staticText13 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Vessel Type", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText13.Wrap( -1 ) - self._ = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Length (m)", wx.DefaultPosition, wx.DefaultSize, 0 ) - self._.Wrap( -1 ) + gSizer2.Add( self.m_staticText13, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) - gSizer2.Add( self._, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + m_VesselTypeChoiceChoices = [ u"Fishing", u"Diving", u"Sailing", u"Pleasure" ] + self.m_VesselTypeChoice = wx.Choice( self.m_StationPnl, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_VesselTypeChoiceChoices, 0 ) + self.m_VesselTypeChoice.SetSelection( 0 ) + gSizer2.Add( self.m_VesselTypeChoice, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) - self.m_LengthText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0 ) - gSizer2.Add( self.m_LengthText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + self._ = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Length (m)", wx.DefaultPosition, wx.DefaultSize, 0 ) + self._.Wrap( -1 ) - self.m_staticText15 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Beam (m)", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_staticText15.Wrap( -1 ) + gSizer2.Add( self._, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) - gSizer2.Add( self.m_staticText15, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + self.m_LengthText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0 ) + gSizer2.Add( self.m_LengthText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) - self.m_BeamText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0 ) - gSizer2.Add( self.m_BeamText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + self.m_staticText15 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Beam (m)", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText15.Wrap( -1 ) - self.m_staticText17 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Port Offset (m)", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_staticText17.Wrap( -1 ) + gSizer2.Add( self.m_staticText15, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) - gSizer2.Add( self.m_staticText17, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + self.m_BeamText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0 ) + gSizer2.Add( self.m_BeamText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) - self.m_PortOffsetText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0 ) - gSizer2.Add( self.m_PortOffsetText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + self.m_staticText17 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Port Offset (m)", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText17.Wrap( -1 ) - self.m_staticText16 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Bow Offset (m)", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_staticText16.Wrap( -1 ) + gSizer2.Add( self.m_staticText17, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) - gSizer2.Add( self.m_staticText16, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + self.m_PortOffsetText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0 ) + gSizer2.Add( self.m_PortOffsetText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) - self.m_BowOffsetText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0 ) - gSizer2.Add( self.m_BowOffsetText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + self.m_staticText16 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, u"Bow Offset (m)", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText16.Wrap( -1 ) - self.m_staticText18 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_staticText18.Wrap( -1 ) + gSizer2.Add( self.m_staticText16, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) - gSizer2.Add( self.m_staticText18, 0, wx.ALL, 5 ) + self.m_BowOffsetText = wx.TextCtrl( self.m_StationPnl, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, 0 ) + gSizer2.Add( self.m_BowOffsetText, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) - self.m_staticText19 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_staticText19.Wrap( -1 ) + self.m_staticText18 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText18.Wrap( -1 ) - gSizer2.Add( self.m_staticText19, 0, wx.ALL, 5 ) + gSizer2.Add( self.m_staticText18, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) - self.m_staticText20 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_staticText20.Wrap( -1 ) + self.m_staticText19 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText19.Wrap( -1 ) - gSizer2.Add( self.m_staticText20, 0, wx.ALL, 5 ) + gSizer2.Add( self.m_staticText19, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT|wx.ALL, 5 ) - self.m_StationSaveBtn = wx.Button( self.m_StationPnl, wx.ID_ANY, u"Save", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_StationSaveBtn.Enable( False ) + self.m_staticText20 = wx.StaticText( self.m_StationPnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText20.Wrap( -1 ) - gSizer2.Add( self.m_StationSaveBtn, 0, wx.ALL|wx.ALIGN_BOTTOM, 5 ) + gSizer2.Add( self.m_staticText20, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) + self.m_StationSaveBtn = wx.Button( self.m_StationPnl, wx.ID_ANY, u"Save", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_StationSaveBtn.Enable( False ) - self.m_StationPnl.SetSizer( gSizer2 ) - self.m_StationPnl.Layout() - gSizer2.Fit( self.m_StationPnl ) - self.m_notebook2.AddPage( self.m_StationPnl, u"Station Data", False ) - self.m_FWUpdatePnl = wx.Panel( self.m_notebook2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) - self.m_FWUpdatePnl.Enable( False ) + gSizer2.Add( self.m_StationSaveBtn, 0, wx.ALL|wx.ALIGN_BOTTOM, 5 ) - bSizer41 = wx.BoxSizer( wx.VERTICAL ) - gSizer4 = wx.GridSizer( 1, 2, 0, 0 ) + self.m_StationPnl.SetSizer( gSizer2 ) + self.m_StationPnl.Layout() + gSizer2.Fit( self.m_StationPnl ) + self.m_notebook2.AddPage( self.m_StationPnl, u"Station Data", False ) + self.m_FWUpdatePnl = wx.Panel( self.m_notebook2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) + self.m_FWUpdatePnl.Enable( False ) - gSizer4.SetMinSize( wx.Size( -1,90 ) ) - self.m_staticText28 = wx.StaticText( self.m_FWUpdatePnl, wx.ID_ANY, u"Binary File:", wx.DefaultPosition, wx.Size( 80,-1 ), 0 ) - self.m_staticText28.Wrap( -1 ) + bSizer41 = wx.BoxSizer( wx.VERTICAL ) - gSizer4.Add( self.m_staticText28, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + gSizer4 = wx.GridSizer( 1, 2, 0, 0 ) - self.m_FWBinaryPicker = wx.FilePickerCtrl( self.m_FWUpdatePnl, wx.ID_ANY, wx.EmptyString, u"Select a file", u"*.bin", wx.DefaultPosition, wx.Size( -1,-1 ), wx.FLP_CHANGE_DIR|wx.FLP_DEFAULT_STYLE|wx.FLP_FILE_MUST_EXIST|wx.FLP_OPEN ) - gSizer4.Add( self.m_FWBinaryPicker, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.EXPAND, 5 ) + gSizer4.SetMinSize( wx.Size( -1,90 ) ) + self.m_staticText28 = wx.StaticText( self.m_FWUpdatePnl, wx.ID_ANY, u"Binary File:", wx.DefaultPosition, wx.Size( -1,-1 ), 0 ) + self.m_staticText28.Wrap( -1 ) + gSizer4.Add( self.m_staticText28, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT|wx.ALL, 5 ) - bSizer41.Add( gSizer4, 1, wx.EXPAND, 5 ) + self.m_FWBinaryPicker = wx.FilePickerCtrl( self.m_FWUpdatePnl, wx.ID_ANY, wx.EmptyString, u"Select a file", u"*.bin", wx.DefaultPosition, wx.Size( -1,-1 ), wx.FLP_CHANGE_DIR|wx.FLP_DEFAULT_STYLE|wx.FLP_FILE_MUST_EXIST|wx.FLP_OPEN ) + gSizer4.Add( self.m_FWBinaryPicker, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.EXPAND, 5 ) - gSizer5 = wx.GridSizer( 1, 2, 0, 0 ) - self.m_FWProgress = wx.Gauge( self.m_FWUpdatePnl, wx.ID_ANY, 100, wx.DefaultPosition, wx.Size( 350,-1 ), wx.GA_HORIZONTAL ) - self.m_FWProgress.SetValue( 0 ) - gSizer5.Add( self.m_FWProgress, 0, wx.ALL, 5 ) + bSizer41.Add( gSizer4, 1, wx.EXPAND, 5 ) - self.m_FWUpdateBtn = wx.Button( self.m_FWUpdatePnl, wx.ID_ANY, u"Update", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_FWUpdateBtn.Enable( False ) + gSizer5 = wx.GridSizer( 1, 2, 0, 0 ) - gSizer5.Add( self.m_FWUpdateBtn, 0, wx.ALL|wx.ALIGN_RIGHT, 5 ) + self.m_FWProgress = wx.Gauge( self.m_FWUpdatePnl, wx.ID_ANY, 100, wx.DefaultPosition, wx.Size( 350,-1 ), wx.GA_HORIZONTAL ) + self.m_FWProgress.SetValue( 0 ) + gSizer5.Add( self.m_FWProgress, 0, wx.ALL, 5 ) + self.m_FWUpdateBtn = wx.Button( self.m_FWUpdatePnl, wx.ID_ANY, u"Update", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_FWUpdateBtn.Enable( False ) - bSizer41.Add( gSizer5, 1, wx.EXPAND, 5 ) + gSizer5.Add( self.m_FWUpdateBtn, 0, wx.ALL|wx.ALIGN_RIGHT, 5 ) - self.m_FWUpdateStatusLbl = wx.StaticText( self.m_FWUpdatePnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.m_FWUpdateStatusLbl.Wrap( -1 ) - self.m_FWUpdateStatusLbl.SetMinSize( wx.Size( 520,-1 ) ) + bSizer41.Add( gSizer5, 1, wx.EXPAND, 5 ) - bSizer41.Add( self.m_FWUpdateStatusLbl, 0, wx.ALL, 5 ) + self.m_FWUpdateStatusLbl = wx.StaticText( self.m_FWUpdatePnl, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_FWUpdateStatusLbl.Wrap( -1 ) + self.m_FWUpdateStatusLbl.SetMinSize( wx.Size( 520,-1 ) ) - self.m_FWUpdatePnl.SetSizer( bSizer41 ) - self.m_FWUpdatePnl.Layout() - bSizer41.Fit( self.m_FWUpdatePnl ) - self.m_notebook2.AddPage( self.m_FWUpdatePnl, u"FW Update", False ) + bSizer41.Add( self.m_FWUpdateStatusLbl, 0, wx.ALL, 5 ) - bSizer1.Add( self.m_notebook2, 1, wx.EXPAND |wx.ALL, 5 ) + self.m_FWUpdatePnl.SetSizer( bSizer41 ) + self.m_FWUpdatePnl.Layout() + bSizer41.Fit( self.m_FWUpdatePnl ) + self.m_notebook2.AddPage( self.m_FWUpdatePnl, u"FW Update", False ) - self.SetSizer( bSizer1 ) - self.Layout() + bSizer1.Add( self.m_notebook2, 1, wx.EXPAND |wx.ALL, 5 ) - self.Centre( wx.BOTH ) - # Connect Events - self.m_SerialPortChoice.Bind( wx.EVT_CHOICE, self.onSerialPortSelection ) - self.m_SerialBtn.Bind( wx.EVT_BUTTON, self.onSerialBtnClick ) - self.m_MMSIText.Bind( wx.EVT_TEXT, self.onStationEdit ) - self.m_CallsignText.Bind( wx.EVT_TEXT, self.onStationEdit ) - self.m_NameText.Bind( wx.EVT_TEXT, self.onStationEdit ) - self.m_VesselTypeChoice.Bind( wx.EVT_CHOICE, self.onStationEdit ) - self.m_LengthText.Bind( wx.EVT_TEXT, self.onStationEdit ) - self.m_BeamText.Bind( wx.EVT_TEXT, self.onStationEdit ) - self.m_PortOffsetText.Bind( wx.EVT_TEXT, self.onStationEdit ) - self.m_BowOffsetText.Bind( wx.EVT_TEXT, self.onStationEdit ) - self.m_StationSaveBtn.Bind( wx.EVT_BUTTON, self.onStationSaveBtnClick ) - self.m_FWBinaryPicker.Bind( wx.EVT_FILEPICKER_CHANGED, self.onFWBinarySelection ) - self.m_FWUpdateBtn.Bind( wx.EVT_BUTTON, self.onFWUpdateBtnClick ) + self.SetSizer( bSizer1 ) + self.Layout() - def __del__( self ): - pass + self.Centre( wx.BOTH ) + # Connect Events + self.m_SerialPortChoice.Bind( wx.EVT_CHOICE, self.onSerialPortSelection ) + self.m_SerialBtn.Bind( wx.EVT_BUTTON, self.onSerialBtnClick ) + self.m_MMSIText.Bind( wx.EVT_TEXT, self.onStationEdit ) + self.m_CallsignText.Bind( wx.EVT_TEXT, self.onStationEdit ) + self.m_NameText.Bind( wx.EVT_TEXT, self.onStationEdit ) + self.m_VesselTypeChoice.Bind( wx.EVT_CHOICE, self.onStationEdit ) + self.m_LengthText.Bind( wx.EVT_TEXT, self.onStationEdit ) + self.m_BeamText.Bind( wx.EVT_TEXT, self.onStationEdit ) + self.m_PortOffsetText.Bind( wx.EVT_TEXT, self.onStationEdit ) + self.m_BowOffsetText.Bind( wx.EVT_TEXT, self.onStationEdit ) + self.m_StationSaveBtn.Bind( wx.EVT_BUTTON, self.onStationSaveBtnClick ) + self.m_FWBinaryPicker.Bind( wx.EVT_FILEPICKER_CHANGED, self.onFWBinarySelection ) + self.m_FWUpdateBtn.Bind( wx.EVT_BUTTON, self.onFWUpdateBtnClick ) - # Virtual event handlers, override them in your derived class - def onSerialPortSelection( self, event ): - event.Skip() + def __del__( self ): + pass - def onSerialBtnClick( self, event ): - event.Skip() - def onStationEdit( self, event ): - event.Skip() + # Virtual event handlers, override them in your derived class + def onSerialPortSelection( self, event ): + event.Skip() + def onSerialBtnClick( self, event ): + event.Skip() + def onStationEdit( self, event ): + event.Skip() - def onStationSaveBtnClick( self, event ): - event.Skip() - def onFWBinarySelection( self, event ): - event.Skip() - def onFWUpdateBtnClick( self, event ): - event.Skip() + def onStationSaveBtnClick( self, event ): + event.Skip() + + def onFWBinarySelection( self, event ): + event.Skip() + + def onFWUpdateBtnClick( self, event ): + event.Skip() From 597621c1297a691841a4b456cef6f2b1d310e371 Mon Sep 17 00:00:00 2001 From: Peter Antypas Date: Thu, 24 Feb 2022 12:20:41 -0800 Subject: [PATCH 06/11] Retuning for ECS crystal --- latest/Firmware/NMEA2000Adapter/.gitignore | 1 + latest/Firmware/Transponder/Inc/config.h | 2 +- .../Transponder/Inc/radio_config_Si4463_nonstd_preamble.h | 2 +- latest/Firmware/Transponder/Inc/radio_config_si4362_c2.h | 2 +- latest/Firmware/Transponder/Inc/radio_config_si4460.h | 2 +- latest/Firmware/Transponder/Inc/radio_config_si4467.h | 2 +- 6 files changed, 6 insertions(+), 5 deletions(-) diff --git a/latest/Firmware/NMEA2000Adapter/.gitignore b/latest/Firmware/NMEA2000Adapter/.gitignore index b5e5a9c..f46ca94 100644 --- a/latest/Firmware/NMEA2000Adapter/.gitignore +++ b/latest/Firmware/NMEA2000Adapter/.gitignore @@ -18,3 +18,4 @@ Debug /Board1.3-L431/ /Board1.3-L422/ /Board2.0-L422/ +/Board6.0-L432/ diff --git a/latest/Firmware/Transponder/Inc/config.h b/latest/Firmware/Transponder/Inc/config.h index 30388da..7bb65fe 100644 --- a/latest/Firmware/Transponder/Inc/config.h +++ b/latest/Firmware/Transponder/Inc/config.h @@ -25,7 +25,7 @@ #include "TXPowerSettings.h" -#define FW_REV "4.0.2" +#define FW_REV "4.1.0" /* diff --git a/latest/Firmware/Transponder/Inc/radio_config_Si4463_nonstd_preamble.h b/latest/Firmware/Transponder/Inc/radio_config_Si4463_nonstd_preamble.h index 3e25bbf..55d4680 100644 --- a/latest/Firmware/Transponder/Inc/radio_config_Si4463_nonstd_preamble.h +++ b/latest/Firmware/Transponder/Inc/radio_config_Si4463_nonstd_preamble.h @@ -64,7 +64,7 @@ // Descriptions: // GLOBAL_XO_TUNE - Configure the internal capacitor frequency tuning bank for the crystal oscillator. */ -#define RF_GLOBAL_XO_TUNE_1 0x11, 0x00, 0x01, 0x00, 0x2D +#define RF_GLOBAL_XO_TUNE_1 0x11, 0x00, 0x01, 0x00, 0x40 /* // Set properties: RF_GLOBAL_CONFIG_1 diff --git a/latest/Firmware/Transponder/Inc/radio_config_si4362_c2.h b/latest/Firmware/Transponder/Inc/radio_config_si4362_c2.h index c4447e3..0772659 100644 --- a/latest/Firmware/Transponder/Inc/radio_config_si4362_c2.h +++ b/latest/Firmware/Transponder/Inc/radio_config_si4362_c2.h @@ -68,7 +68,7 @@ // GLOBAL_XO_TUNE - Configure the internal capacitor frequency tuning bank for the crystal oscillator. // GLOBAL_CLK_CFG - Clock configuration options. */ -#define RF_GLOBAL_XO_TUNE_2 0x11, 0x00, 0x02, 0x00, 0x2D, 0x00 +#define RF_GLOBAL_XO_TUNE_2 0x11, 0x00, 0x02, 0x00, 0x40, 0x00 /* // Set properties: RF_GLOBAL_CONFIG_1 diff --git a/latest/Firmware/Transponder/Inc/radio_config_si4460.h b/latest/Firmware/Transponder/Inc/radio_config_si4460.h index 6207ac9..ebe97eb 100644 --- a/latest/Firmware/Transponder/Inc/radio_config_si4460.h +++ b/latest/Firmware/Transponder/Inc/radio_config_si4460.h @@ -62,7 +62,7 @@ // GLOBAL_XO_TUNE - Configure the internal capacitor frequency tuning bank for the crystal oscillator. // GLOBAL_CLK_CFG - Clock configuration options. */ -#define RF_GLOBAL_XO_TUNE_2 0x11, 0x00, 0x02, 0x00, 0x2D, 0x00 +#define RF_GLOBAL_XO_TUNE_2 0x11, 0x00, 0x02, 0x00, 0x40, 0x00 /* // Set properties: RF_GLOBAL_CONFIG_1 diff --git a/latest/Firmware/Transponder/Inc/radio_config_si4467.h b/latest/Firmware/Transponder/Inc/radio_config_si4467.h index fc69f11..286d9dc 100644 --- a/latest/Firmware/Transponder/Inc/radio_config_si4467.h +++ b/latest/Firmware/Transponder/Inc/radio_config_si4467.h @@ -63,7 +63,7 @@ // GLOBAL_XO_TUNE - Configure the internal capacitor frequency tuning bank for the crystal oscillator. // GLOBAL_CLK_CFG - Clock configuration options. */ -#define RF_GLOBAL_XO_TUNE_2 0x11, 0x00, 0x02, 0x00, 0x2D, 0x00 +#define RF_GLOBAL_XO_TUNE_2 0x11, 0x00, 0x02, 0x00, 0x40, 0x00 /* // Set properties: RF_GLOBAL_CONFIG_1 From 90f357e11033c051bae85aa7613b5ebebc13c498 Mon Sep 17 00:00:00 2001 From: Peter Antypas Date: Thu, 24 Feb 2022 12:21:53 -0800 Subject: [PATCH 07/11] Fixed UI to enable FW update when board boots in 'rescue' mode --- latest/Apps/maiana-update/mainwindow.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/latest/Apps/maiana-update/mainwindow.py b/latest/Apps/maiana-update/mainwindow.py index 836ecb4..b1a0645 100644 --- a/latest/Apps/maiana-update/mainwindow.py +++ b/latest/Apps/maiana-update/mainwindow.py @@ -33,7 +33,8 @@ class MainWindow(MainFrame): elif status == MaianaStatus.DFU: wx.MessageBox(b'MAIANA is currently in firmware update mode. This is the only task you can perform.', 'DFU warning', wx.OK) - self.enableUI() + #self.enableUI() + self.m_FWUpdatePnl.Enable() self.m_SerialBtn.SetLabel(b'Disconnect') self.m_StationSaveBtn.Disable() else: From 1b9a5df007c361f1cabfc7740589e6a35e2937f0 Mon Sep 17 00:00:00 2001 From: Peter Antypas Date: Thu, 24 Feb 2022 14:57:56 -0800 Subject: [PATCH 08/11] Retuned for ECS crystal --- .../Transponder/Inc/radio_config_Si4463_nonstd_preamble.h | 2 +- latest/Firmware/Transponder/Inc/radio_config_si4362_c2.h | 2 +- latest/Firmware/Transponder/Inc/radio_config_si4460.h | 2 +- latest/Firmware/Transponder/Inc/radio_config_si4467.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/latest/Firmware/Transponder/Inc/radio_config_Si4463_nonstd_preamble.h b/latest/Firmware/Transponder/Inc/radio_config_Si4463_nonstd_preamble.h index 55d4680..d9986cf 100644 --- a/latest/Firmware/Transponder/Inc/radio_config_Si4463_nonstd_preamble.h +++ b/latest/Firmware/Transponder/Inc/radio_config_Si4463_nonstd_preamble.h @@ -64,7 +64,7 @@ // Descriptions: // GLOBAL_XO_TUNE - Configure the internal capacitor frequency tuning bank for the crystal oscillator. */ -#define RF_GLOBAL_XO_TUNE_1 0x11, 0x00, 0x01, 0x00, 0x40 +#define RF_GLOBAL_XO_TUNE_1 0x11, 0x00, 0x01, 0x00, 0x41 /* // Set properties: RF_GLOBAL_CONFIG_1 diff --git a/latest/Firmware/Transponder/Inc/radio_config_si4362_c2.h b/latest/Firmware/Transponder/Inc/radio_config_si4362_c2.h index 0772659..b00b570 100644 --- a/latest/Firmware/Transponder/Inc/radio_config_si4362_c2.h +++ b/latest/Firmware/Transponder/Inc/radio_config_si4362_c2.h @@ -68,7 +68,7 @@ // GLOBAL_XO_TUNE - Configure the internal capacitor frequency tuning bank for the crystal oscillator. // GLOBAL_CLK_CFG - Clock configuration options. */ -#define RF_GLOBAL_XO_TUNE_2 0x11, 0x00, 0x02, 0x00, 0x40, 0x00 +#define RF_GLOBAL_XO_TUNE_2 0x11, 0x00, 0x02, 0x00, 0x41, 0x00 /* // Set properties: RF_GLOBAL_CONFIG_1 diff --git a/latest/Firmware/Transponder/Inc/radio_config_si4460.h b/latest/Firmware/Transponder/Inc/radio_config_si4460.h index ebe97eb..1359c22 100644 --- a/latest/Firmware/Transponder/Inc/radio_config_si4460.h +++ b/latest/Firmware/Transponder/Inc/radio_config_si4460.h @@ -62,7 +62,7 @@ // GLOBAL_XO_TUNE - Configure the internal capacitor frequency tuning bank for the crystal oscillator. // GLOBAL_CLK_CFG - Clock configuration options. */ -#define RF_GLOBAL_XO_TUNE_2 0x11, 0x00, 0x02, 0x00, 0x40, 0x00 +#define RF_GLOBAL_XO_TUNE_2 0x11, 0x00, 0x02, 0x00, 0x41, 0x00 /* // Set properties: RF_GLOBAL_CONFIG_1 diff --git a/latest/Firmware/Transponder/Inc/radio_config_si4467.h b/latest/Firmware/Transponder/Inc/radio_config_si4467.h index 286d9dc..4d5a36c 100644 --- a/latest/Firmware/Transponder/Inc/radio_config_si4467.h +++ b/latest/Firmware/Transponder/Inc/radio_config_si4467.h @@ -63,7 +63,7 @@ // GLOBAL_XO_TUNE - Configure the internal capacitor frequency tuning bank for the crystal oscillator. // GLOBAL_CLK_CFG - Clock configuration options. */ -#define RF_GLOBAL_XO_TUNE_2 0x11, 0x00, 0x02, 0x00, 0x40, 0x00 +#define RF_GLOBAL_XO_TUNE_2 0x11, 0x00, 0x02, 0x00, 0x41, 0x00 /* // Set properties: RF_GLOBAL_CONFIG_1 From 998a2e05ec62cc3c57fd828ee60ab5b3c3548624 Mon Sep 17 00:00:00 2001 From: Peter Antypas Date: Thu, 24 Feb 2022 15:00:15 -0800 Subject: [PATCH 09/11] Another GUI bugfix --- latest/Apps/maiana-update/mainwindow.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/latest/Apps/maiana-update/mainwindow.py b/latest/Apps/maiana-update/mainwindow.py index b1a0645..3a5c012 100644 --- a/latest/Apps/maiana-update/mainwindow.py +++ b/latest/Apps/maiana-update/mainwindow.py @@ -166,8 +166,9 @@ class MainWindow(MainFrame): self.m_BowOffsetText.SetValue('{}'.format(self.stationdata['bowoffset'])) t = self.stationdata['type'] - i = MaianaClient.VESSEL_TYPES.index(t) - self.m_VesselTypeChoice.SetSelection(i) + if t in MaianaClient.VESSEL_TYPES: + i = MaianaClient.VESSEL_TYPES.index(t) + self.m_VesselTypeChoice.SetSelection(i) return True def validateStationInputs(self): From 59ca29bf68fa04ef0fbeeb22c985a342684331d1 Mon Sep 17 00:00:00 2001 From: Peter Antypas Date: Thu, 24 Feb 2022 15:07:16 -0800 Subject: [PATCH 10/11] GUI version 3.0 --- latest/Apps/maiana-update/maiana-update.fbp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/latest/Apps/maiana-update/maiana-update.fbp b/latest/Apps/maiana-update/maiana-update.fbp index 910379e..0ebebdc 100644 --- a/latest/Apps/maiana-update/maiana-update.fbp +++ b/latest/Apps/maiana-update/maiana-update.fbp @@ -50,7 +50,7 @@ 620,329 wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX ; ; forward_declare - MAIANA Transponder Manager ver 0.2 + MAIANA Transponder Manager ver 0.3 0 From 974b93d7256029cfe16802fde9939af6ee8f8ae1 Mon Sep 17 00:00:00 2001 From: Peter Antypas Date: Thu, 24 Feb 2022 15:07:16 -0800 Subject: [PATCH 11/11] GUI version 0.3 --- latest/Apps/maiana-update/maiana-update.fbp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/latest/Apps/maiana-update/maiana-update.fbp b/latest/Apps/maiana-update/maiana-update.fbp index 910379e..0ebebdc 100644 --- a/latest/Apps/maiana-update/maiana-update.fbp +++ b/latest/Apps/maiana-update/maiana-update.fbp @@ -50,7 +50,7 @@ 620,329 wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX ; ; forward_declare - MAIANA Transponder Manager ver 0.2 + MAIANA Transponder Manager ver 0.3 0