lpcmanager

Firmware updater fix.

2017-04-05, dporopat
2ead3b695009
Parents ffb9a4cec11a
Children ae2e6ec83a7d
Firmware updater fix.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/FirmwareUpdateDialog.py Wed Apr 05 10:46:58 2017 +0200
@@ -0,0 +1,141 @@
+# -*- coding: utf-8 -*-
+
+#This file is part of Beremiz, a Integrated Development Environment for
+#programming IEC 61131-3 automates supporting plcopen standard and CanFestival.
+#
+#Copyright (C) 2015 : Yvan ROCH
+#
+#See COPYING file for copyrights details.
+#
+#This library is free software; you can redistribute it and/or
+#modify it under the terms of the GNU General Public
+#License as published by the Free Software Foundation; either
+#version 2.1 of the License, or (at your option) any later version.
+#
+#This library is distributed in the hope that it will be useful,
+#but WITHOUT ANY WARRANTY; without even the implied warranty of
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+#General Public License for more details.
+#
+#You should have received a copy of the GNU General Public
+#License along with this library; if not, write to the Free Software
+#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+import wx
+from os.path import expanduser
+
+class FirmwareUpdateDialog(wx.Dialog):
+ """
+ This class is the dialog for firmware update parameters selection
+ """
+
+ def _init_ctrls(self, parent):
+ wx.Dialog.__init__(self, parent=parent, size=wx.Size(600, 250), title=_('Firmware Update'))
+
+ # Widgets for the update image file selection
+ self.StaticTextFirmwareUpdateImageFile = wx.StaticText(label=_('Update image file:'), parent=self)
+ self.TextCtrltFirmwareUpdateImageFile = wx.TextCtrl(self)
+ self.TextCtrltFirmwareUpdateImageFile.SetMinSize((440, -1))
+ self.ButtonFirmwareUpdateImageFile = wx.Button(label=_('Add image file'), parent=self)
+ self.Bind(wx.EVT_BUTTON, self.OnButtonFirmwareUpdateImageFile, id=self.ButtonFirmwareUpdateImageFile.GetId())
+
+ # Widgets for the update type
+ self.StaticTextFirmwareUpdateType = wx.StaticText(label=_('Update type:'), parent=self)
+ self.RadioButtonFirmwareUpdateTypeLinuxKernel = wx.RadioButton(self, -1,
+ _('Linux kernel'), (10, 10), style=wx.RB_GROUP)
+ self.RadioButtonFirmwareUpdateTypeLinuxDTB = wx.RadioButton(self, -1,
+ _('Linux DTB'), (10, 30))
+ self.RadioButtonFirmwareUpdateTypeRootFs = wx.RadioButton(self, -1,
+ _('Root file system'), (10, 50))
+
+ # Widgets for the chunks size
+ self.StaticTextFirmwareUpdateChunksSize = wx.StaticText(label=_('Chunks size in KiB:'), parent=self)
+ self.SpinCtrlFirmwareUpdateChunksSize = wx.SpinCtrl(parent=self , size = (60, -1))
+ self.SpinCtrlFirmwareUpdateChunksSize.SetRange(1, 1024)
+ self.SpinCtrlFirmwareUpdateChunksSize.SetValue(256)
+
+ # Widgets for the reboot option
+ self.CheckBoxFirmwareUpdateReboot = wx.CheckBox(label=_('Reboot after update'), parent=self)
+
+ # Widgets for validation
+ self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL)
+
+ # Sizers
+ self.MainSizer = wx.FlexGridSizer(cols=1, rows=2)
+ self.SizerFirmwareUpdateImageFile = wx.FlexGridSizer(cols=2, rows=2, hgap=10, vgap=10)
+ self.SizerFirmwareUpdateTypeChunks = wx.FlexGridSizer(cols=2, rows=4, hgap=10, vgap=10)
+
+ # Populate Main sizer
+ self.MainSizer.Add(self.SizerFirmwareUpdateImageFile, flag=wx.EXPAND)
+ self.MainSizer.Add(self.SizerFirmwareUpdateTypeChunks, flag=wx.EXPAND)
+
+ # Make the main sizer rows and columns growable
+ self.MainSizer.AddGrowableCol(0)
+ self.MainSizer.AddGrowableRow(0)
+ self.MainSizer.AddGrowableRow(1)
+
+ # Populate Update image file sizer
+ self.SizerFirmwareUpdateImageFile.Add(self.StaticTextFirmwareUpdateImageFile, border=20,
+ flag=wx.TOP|wx.LEFT)
+ self.SizerFirmwareUpdateImageFile.Add((0,0))
+ self.SizerFirmwareUpdateImageFile.Add(self.TextCtrltFirmwareUpdateImageFile, border=20,
+ flag=wx.LEFT)
+ self.SizerFirmwareUpdateImageFile.Add(self.ButtonFirmwareUpdateImageFile, border=20,
+ flag=wx.RIGHT|wx.ALIGN_RIGHT)
+
+ # Populate Sizer for update type and chunks size
+ self.SizerFirmwareUpdateTypeChunks.Add(self.StaticTextFirmwareUpdateType, border=20,
+ flag=wx.TOP|wx.LEFT)
+ self.SizerFirmwareUpdateTypeChunks.Add(self.StaticTextFirmwareUpdateChunksSize, border=20,
+ flag=wx.TOP|wx.LEFT)
+ self.SizerFirmwareUpdateTypeChunks.Add(self.RadioButtonFirmwareUpdateTypeLinuxKernel, border=20,
+ flag=wx.LEFT)
+ self.SizerFirmwareUpdateTypeChunks.Add(self.SpinCtrlFirmwareUpdateChunksSize, border=20,
+ flag=wx.LEFT)
+ self.SizerFirmwareUpdateTypeChunks.Add(self.RadioButtonFirmwareUpdateTypeLinuxDTB, border=20,
+ flag=wx.LEFT)
+ self.SizerFirmwareUpdateTypeChunks.Add(self.CheckBoxFirmwareUpdateReboot,border=20,
+ flag=wx.LEFT)
+ self.SizerFirmwareUpdateTypeChunks.Add(self.RadioButtonFirmwareUpdateTypeRootFs, border=20,
+ flag=wx.LEFT)
+ self.SizerFirmwareUpdateTypeChunks.Add(self.ButtonSizer, border=20, flag=wx.ALIGN_RIGHT|wx.RIGHT)
+
+ # Make the rows and columns growable
+ self.SizerFirmwareUpdateImageFile.AddGrowableCol(0)
+ self.SizerFirmwareUpdateImageFile.AddGrowableCol(1)
+ self.SizerFirmwareUpdateImageFile.AddGrowableRow(0)
+ self.SizerFirmwareUpdateImageFile.AddGrowableRow(1)
+ self.SizerFirmwareUpdateTypeChunks.AddGrowableCol(0)
+ self.SizerFirmwareUpdateTypeChunks.AddGrowableCol(1)
+
+ # Set the main sizer
+ self.SetSizer(self.MainSizer)
+
+ def __init__(self, parent):
+ self._init_ctrls(parent)
+
+ def OnButtonFirmwareUpdateImageFile(self, event):
+ dlg = wx.FileDialog(self, _("Choose a firmware image file"), expanduser("~"), "", "*", wx.OPEN)
+ if dlg.ShowModal() == wx.ID_OK:
+ path = dlg.GetPath()
+ self.TextCtrltFirmwareUpdateImageFile.SetValue(path)
+ dlg.Destroy()
+
+ def GetFirmwareImageFile(self):
+ return self.TextCtrltFirmwareUpdateImageFile.GetValue()
+
+ def GetFirmwareUpdateType(self):
+ if self.RadioButtonFirmwareUpdateTypeLinuxKernel.GetValue() == True:
+ return 1
+ elif self.RadioButtonFirmwareUpdateTypeLinuxDTB.GetValue() == True:
+ return 2
+ elif self.RadioButtonFirmwareUpdateTypeRootFs.GetValue() == True:
+ return 3
+ else:
+ return 0
+
+ def GetChunksSize(self):
+ return self.SpinCtrlFirmwareUpdateChunksSize.GetValue()*1024
+
+ def GetReboot(self):
+ return self.CheckBoxFirmwareUpdateReboot.GetValue()