提交 3d6db475 编写于 作者: 编程深海AiKoder's avatar 编程深海AiKoder 🚴🏻

adjust GUI layout

上级 76c7babd
.vscode
\ No newline at end of file
#!/usr/bin/env python #!/usr/bin/env python
import wx import wx
from wx.core import SEND_EVENT_POST, Panel from wx.core import BITMAP_TYPE_ICO
class NrfutilGui(wx.Frame): class GenerateKey(wx.Panel):
def __init__(self, *args, **kw): """Generating and displaying keys"""
super(NrfutilGui, self).__init__(*args, **kw)
self.InitUI() def __init__(self, parent):
super(GenerateKey, self).__init__(parent)
def InitUI(self): self.vbox = wx.BoxSizer(wx.VERTICAL)
panel = wx.Panel(self) # group
hbox = wx.BoxSizer(wx.HORIZONTAL) self.sbox = wx.StaticBox(self, -1, "Generating and displaying keys")
self.sbox_sizer = wx.StaticBoxSizer(self.sbox, wx.HORIZONTAL)
vbox1 = wx.BoxSizer(wx.VERTICAL) self.hbox = wx.BoxSizer(wx.HORIZONTAL)
# Generating and displaying keys # item
step1_sbox = wx.StaticBox(panel, -1, "Generating and displaying keys") self.generate_btn = wx.Button(self.sbox, label="Generate")
step1_sbox_sizer = wx.StaticBoxSizer(step1_sbox, wx.HORIZONTAL) self.display_btn = wx.Button(self.sbox, label="Display")
self.hbox.Add(self.generate_btn, 0, wx.LEFT | wx.ALL, 2)
hbox1 = wx.BoxSizer(wx.HORIZONTAL) self.hbox.Add(self.display_btn, 0, wx.LEFT | wx.ALL, 2)
generate_btn = wx.Button(panel, label="Generate")
display_btn = wx.Button(panel, label="Display") self.sbox_sizer.Add(self.hbox, 0, wx.LEFT | wx.ALL, 2)
hbox1.Add(generate_btn, 0, wx.LEFT | wx.ALL, 2) self.vbox.Add(self.sbox_sizer, 0, wx.ALL | wx.ALIGN_LEFT, 2)
hbox1.Add(display_btn, 0, wx.LEFT | wx.ALL, 2) self.SetSizer(self.vbox)
step1_sbox_sizer.Add(hbox1, 0, wx.LEFT | wx.ALL, 2)
# Generating and displaying bootloader settings
step2_sbox = wx.StaticBox(
panel, -1, "Generating and displaying bootloader settings"
)
step2_sbox_sizer = wx.StaticBoxSizer(step2_sbox, wx.HORIZONTAL)
step2_gbs = wx.GridBagSizer(2, 2)
family_txt = wx.StaticText(panel, -1, "--family") class GenerateBlSettings(wx.Panel):
family_select = ["NRF51", "NRF52", "NRF52QFAB", "NRF52810", "NRF52840"] """Generating and displaying bootloader settings"""
family_cbo = wx.ComboBox(
panel, choices=family_select, value=family_select[1], style=wx.CB_READONLY def __init__(self, parent):
super(GenerateBlSettings, self).__init__(parent)
self.vbox = wx.BoxSizer(wx.VERTICAL)
# group
self.sbox = wx.StaticBox(
self, -1, "Generating and displaying bootloader settings"
) )
self.sbox_sizer = wx.StaticBoxSizer(self.sbox, wx.HORIZONTAL)
boot_version_txt = wx.StaticText(panel, -1, "--bootloader-version") self.gbs = wx.GridBagSizer(2, 2)
boot_version = wx.TextCtrl(panel, -1, value="1")
bl_settings_txt = wx.StaticText(panel, -1, label="--bl-settings-version") self.family_title = wx.StaticText(self.sbox, -1, "--family")
bl_settings_sel = ["1 (=SDK 12.0)", "2 (>=SDK 15.3.0)"] self.family_list = ["NRF51", "NRF52", "NRF52QFAB", "NRF52810", "NRF52840"]
bl_settings_cbo = wx.ComboBox( self.family_cbo = wx.ComboBox(
panel, self.sbox,
choices=bl_settings_sel, choices=self.family_list,
value=bl_settings_sel[1], value=self.family_list[1],
style=wx.CB_READONLY, style=wx.CB_READONLY,
) )
app_version_txt = wx.StaticText(panel, -1, "--application-version") self.boot_version_title = wx.StaticText(self.sbox, -1, "--bootloader-version")
app_version = wx.TextCtrl(panel, -1, value="10") self.boot_version = wx.TextCtrl(self.sbox, -1, value="1")
app_path_txt = wx.StaticText(panel, -1, "--application") self.bl_settings_title = wx.StaticText(
app_path_display = wx.TextCtrl(panel, style=wx.TE_READONLY) self.sbox, -1, label="--bl-settings-version"
app_path_btn = wx.Button(panel, label="Load") )
self.bl_settings_list = ["1 (=SDK 12.0)", "2 (>=SDK 15.3.0)"]
apply2_btn = wx.Button(panel, label="Generate") self.bl_settings_cbo = wx.ComboBox(
self.sbox,
step2_gbs.Add(family_txt, pos=(0, 0), flag=wx.ALL) choices=self.bl_settings_list,
step2_gbs.Add(family_cbo, pos=(0, 1), flag=wx.ALL) value=self.bl_settings_list[1],
step2_gbs.Add(boot_version_txt, pos=(1, 0), flag=wx.ALL)
step2_gbs.Add(boot_version, pos=(1, 1), flag=wx.ALL)
step2_gbs.Add(bl_settings_txt, pos=(2, 0), flag=wx.ALL)
step2_gbs.Add(bl_settings_cbo, pos=(2, 1), flag=wx.ALL)
step2_gbs.Add(app_version_txt, pos=(3, 0), flag=wx.ALL)
step2_gbs.Add(app_version, pos=(3, 1), flag=wx.ALL)
step2_gbs.Add(app_path_txt, pos=(4, 0), flag=wx.ALL)
step2_gbs.Add(app_path_display, pos=(4, 1), flag=wx.ALL)
step2_gbs.Add(app_path_btn, pos=(4, 2), flag=wx.ALL)
step2_gbs.Add(apply2_btn, pos=(5, 2), flag=wx.ALL)
step2_sbox_sizer.Add(step2_gbs, 0, wx.ALL | wx.LEFT, 2)
# Merging files into a single file
step3_sbox = wx.StaticBox(panel, -1, "Merging files into a single file")
step3_sbox_sizer = wx.StaticBoxSizer(step3_sbox, wx.HORIZONTAL)
step3_gbs = wx.GridBagSizer(2, 2)
sd_txt = wx.StaticText(panel, -1, "softdevice")
sd_path_txt = wx.TextCtrl(panel, style=wx.TE_READONLY)
sd_load_btn = wx.Button(panel, label="Load")
bl_txt = wx.StaticText(panel, -1, "bootloader")
bl_path_txt = wx.TextCtrl(panel, style=wx.TE_READONLY)
bl_load_btn = wx.Button(panel, label="Load")
app_txt = wx.StaticText(panel, -1, "application")
app_path_txt = wx.TextCtrl(panel, style=wx.TE_READONLY)
app_load_btn = wx.Button(panel, label="Load")
settings_txt = wx.StaticText(panel, -1, "settings")
settings_path_txt = wx.TextCtrl(panel, style=wx.TE_READONLY)
settings_load_btn = wx.Button(panel, label="Load")
apply3_btn = wx.Button(panel, label="Generate")
step3_gbs.Add(sd_txt, pos=(0, 0), flag=wx.ALL)
step3_gbs.Add(sd_path_txt, pos=(0, 1), flag=wx.ALL)
step3_gbs.Add(sd_load_btn, pos=(0, 2), flag=wx.ALL)
step3_gbs.Add(bl_txt, pos=(1, 0), flag=wx.ALL)
step3_gbs.Add(bl_path_txt, pos=(1, 1), flag=wx.ALL)
step3_gbs.Add(bl_load_btn, pos=(1, 2), flag=wx.ALL)
step3_gbs.Add(app_txt, pos=(2, 0), flag=wx.ALL)
step3_gbs.Add(app_path_txt, pos=(2, 1), flag=wx.ALL)
step3_gbs.Add(app_load_btn, pos=(2, 2), flag=wx.ALL)
step3_gbs.Add(settings_txt, pos=(3, 0), flag=wx.ALL)
step3_gbs.Add(settings_path_txt, pos=(3, 1), flag=wx.ALL)
step3_gbs.Add(settings_load_btn, pos=(3, 2), flag=wx.ALL)
step3_gbs.Add(apply3_btn, pos=(4, 2), flag=wx.ALL)
step3_sbox_sizer.Add(step3_gbs, 0, wx.ALL | wx.LEFT, 2)
# Generating DFU packages
step4_sbox = wx.StaticBox(panel, -1, "Generating DFU packages")
step4_sbox_sizer = wx.StaticBoxSizer(step4_sbox, wx.HORIZONTAL)
step4_gbs = wx.GridBagSizer(2, 2)
hw_version_txt = wx.StaticText(panel, -1, "--hw-version")
hw_version_select = ["52"]
hw_version = wx.ComboBox(
panel,
choices=hw_version_select,
value=hw_version_select[0],
style=wx.CB_READONLY, style=wx.CB_READONLY,
) )
sd_seq_txt = wx.StaticText(panel, -1, "--sd-req") self.app_version_title = wx.StaticText(self.sbox, -1, "--application-version")
sd_seq_sel = ["0x101 (s132_nrf52_7.2.0)", "0xCB (s132_nrf52_7.0.1)"] self.app_version = wx.TextCtrl(self.sbox, -1, value="10")
sd_seq_cb = wx.ComboBox(
panel, choices=sd_seq_sel, value=sd_seq_sel[0], style=wx.CB_READONLY self.app_path_title = wx.StaticText(self.sbox, -1, "--application")
self.app_path_display = wx.TextCtrl(self.sbox, style=wx.TE_READONLY)
self.app_path_btn = wx.Button(self.sbox, label="Load")
self.generate_btn = wx.Button(self.sbox, label="Generate")
self.gbs.Add(self.family_title, pos=(0, 0), flag=wx.ALL)
self.gbs.Add(self.family_cbo, pos=(0, 1), flag=wx.ALL)
self.gbs.Add(self.boot_version_title, pos=(1, 0), flag=wx.ALL)
self.gbs.Add(self.boot_version, pos=(1, 1), flag=wx.ALL)
self.gbs.Add(self.bl_settings_title, pos=(2, 0), flag=wx.ALL)
self.gbs.Add(self.bl_settings_cbo, pos=(2, 1), flag=wx.ALL)
self.gbs.Add(self.app_version_title, pos=(3, 0), flag=wx.ALL)
self.gbs.Add(self.app_version, pos=(3, 1), flag=wx.ALL)
self.gbs.Add(self.app_path_title, pos=(4, 0), flag=wx.ALL)
self.gbs.Add(self.app_path_display, pos=(4, 1), flag=wx.ALL)
self.gbs.Add(self.app_path_btn, pos=(4, 2), flag=wx.ALL)
self.gbs.Add(self.generate_btn, pos=(5, 2), flag=wx.ALL)
self.sbox_sizer.Add(self.gbs, 0, wx.ALL | wx.LEFT, 2)
self.vbox.Add(self.sbox_sizer, 0, wx.ALL | wx.ALIGN_LEFT, 2)
self.SetSizer(self.vbox)
class MergeFile(wx.Panel):
"""Merging files into a single file"""
def __init__(self, parent):
super(MergeFile, self).__init__(parent)
self.vbox = wx.BoxSizer(wx.VERTICAL)
# group
self.sbox = wx.StaticBox(self, -1, "Merging files into a single file")
self.sbox_sizer = wx.StaticBoxSizer(self.sbox, wx.HORIZONTAL)
self.gbs = wx.GridBagSizer(2, 2)
self.sd_txt = wx.StaticText(self.sbox, -1, "softdevice")
self.sd_path_txt = wx.TextCtrl(self.sbox, style=wx.TE_READONLY)
self.sd_load_btn = wx.Button(self.sbox, label="Load")
self.bl_txt = wx.StaticText(self.sbox, -1, "bootloader")
self.bl_path_txt = wx.TextCtrl(self.sbox, style=wx.TE_READONLY)
self.bl_load_btn = wx.Button(self.sbox, label="Load")
self.app_txt = wx.StaticText(self.sbox, -1, "application")
self.app_path_txt = wx.TextCtrl(self.sbox, style=wx.TE_READONLY)
self.app_load_btn = wx.Button(self.sbox, label="Load")
self.settings_txt = wx.StaticText(self.sbox, -1, "settings")
self.settings_path_txt = wx.TextCtrl(self.sbox, style=wx.TE_READONLY)
self.settings_load_btn = wx.Button(self.sbox, label="Load")
self.generate_btn = wx.Button(self.sbox, label="Generate")
self.gbs.Add(self.sd_txt, pos=(0, 0), flag=wx.ALL)
self.gbs.Add(self.sd_path_txt, pos=(0, 1), flag=wx.ALL)
self.gbs.Add(self.sd_load_btn, pos=(0, 2), flag=wx.ALL)
self.gbs.Add(self.bl_txt, pos=(1, 0), flag=wx.ALL)
self.gbs.Add(self.bl_path_txt, pos=(1, 1), flag=wx.ALL)
self.gbs.Add(self.bl_load_btn, pos=(1, 2), flag=wx.ALL)
self.gbs.Add(self.app_txt, pos=(2, 0), flag=wx.ALL)
self.gbs.Add(self.app_path_txt, pos=(2, 1), flag=wx.ALL)
self.gbs.Add(self.app_load_btn, pos=(2, 2), flag=wx.ALL)
self.gbs.Add(self.settings_txt, pos=(3, 0), flag=wx.ALL)
self.gbs.Add(self.settings_path_txt, pos=(3, 1), flag=wx.ALL)
self.gbs.Add(self.settings_load_btn, pos=(3, 2), flag=wx.ALL)
self.gbs.Add(self.generate_btn, pos=(4, 2), flag=wx.ALL)
self.sbox_sizer.Add(self.gbs, 0, wx.ALL | wx.LEFT, 2)
self.vbox.Add(self.sbox_sizer, 0, wx.ALL | wx.ALIGN_LEFT, 2)
self.SetSizer(self.vbox)
class GenerateDfuPackage(wx.Panel):
def __init__(self, parent):
super(GenerateDfuPackage, self).__init__(parent)
self.vbox = wx.BoxSizer(wx.VERTICAL)
# group
self.sbox = wx.StaticBox(self, -1, "Generating DFU packages")
self.sbox_sizer = wx.StaticBoxSizer(self.sbox, wx.HORIZONTAL)
self.gbs = wx.GridBagSizer(2, 2)
self.hw_version_txt = wx.StaticText(self.sbox, -1, "--hw-version")
self.hw_version_select = ["52"]
self.hw_version = wx.ComboBox(
self.sbox,
choices=self.hw_version_select,
value=self.hw_version_select[0],
style=wx.CB_READONLY,
) )
application_version_txt = wx.StaticText(panel, -1, "--application-version") self.sd_seq_txt = wx.StaticText(self.sbox, -1, "--sd-req")
application_version = wx.TextCtrl(panel, value="1") self.sd_seq_sel = ["0x101 (s132_nrf52_7.2.0)", "0xCB (s132_nrf52_7.0.1)"]
app_file_txt = wx.StaticText(panel, -1, "--application") self.sd_seq_cb = wx.ComboBox(
app_file_path = wx.TextCtrl(panel, style=wx.TE_READONLY) self.sbox,
app_file_load_btn = wx.Button(panel, label="Load") choices=self.sd_seq_sel,
key_file_txt = wx.StaticText(panel, -1, "--key-file") value=self.sd_seq_sel[0],
key_file_path = wx.TextCtrl(panel, style=wx.TE_READONLY) style=wx.CB_READONLY,
key_file_load_btn = wx.Button(panel, label="Load") )
step4_gbs.Add(hw_version_txt, pos=(0, 0), flag=wx.ALL)
step4_gbs.Add(hw_version, pos=(0, 1), flag=wx.ALL)
step4_gbs.Add(sd_seq_txt, pos=(1, 0), flag=wx.ALL)
step4_gbs.Add(sd_seq_cb, pos=(1, 1), flag=wx.ALL)
step4_gbs.Add(application_version_txt, pos=(2, 0), flag=wx.ALL)
step4_gbs.Add(application_version, pos=(2, 1), flag=wx.ALL)
step4_gbs.Add(app_file_txt, pos=(3, 0), flag=wx.ALL)
step4_gbs.Add(app_file_path, pos=(3, 1), flag=wx.ALL)
step4_gbs.Add(app_file_load_btn, pos=(3, 2), flag=wx.ALL)
step4_gbs.Add(key_file_txt, pos=(4, 0), flag=wx.ALL)
step4_gbs.Add(key_file_path, pos=(4, 1), flag=wx.ALL)
step4_gbs.Add(key_file_load_btn, pos=(4, 2), flag=wx.ALL)
step4_sbox_sizer.Add(step4_gbs, 0, wx.ALL | wx.LEFT, 2)
vbox1.Add(step1_sbox_sizer, 0, wx.ALL | wx.ALIGN_LEFT, 2)
vbox1.Add(step2_sbox_sizer, 0, wx.ALL | wx.ALIGN_LEFT, 2)
vbox1.Add(step3_sbox_sizer, 0, wx.ALL | wx.ALIGN_LEFT, 2)
vbox1.Add(step4_sbox_sizer, 0, wx.ALL | wx.ALIGN_LEFT, 2)
## right panel
vbox2 = wx.BoxSizer(wx.VERTICAL)
right_box = wx.StaticBox(panel, -1, "Logging") self.application_version_txt = wx.StaticText(
right_boxsizer = wx.StaticBoxSizer(right_box, wx.VERTICAL) self.sbox, -1, "--application-version"
log_ctrl = wx.TextCtrl( )
right_box, self.application_version = wx.TextCtrl(self.sbox, value="1")
self.app_file_txt = wx.StaticText(self.sbox, -1, "--application")
self.app_file_path = wx.TextCtrl(self.sbox, style=wx.TE_READONLY)
self.app_file_load_btn = wx.Button(self.sbox, label="Load")
self.key_file_txt = wx.StaticText(self.sbox, -1, "--key-file")
self.key_file_path = wx.TextCtrl(self.sbox, style=wx.TE_READONLY)
self.key_file_load_btn = wx.Button(self.sbox, label="Load")
self.gbs.Add(self.hw_version_txt, pos=(0, 0), flag=wx.ALL)
self.gbs.Add(self.hw_version, pos=(0, 1), flag=wx.ALL)
self.gbs.Add(self.sd_seq_txt, pos=(1, 0), flag=wx.ALL)
self.gbs.Add(self.sd_seq_cb, pos=(1, 1), flag=wx.ALL)
self.gbs.Add(self.application_version_txt, pos=(2, 0), flag=wx.ALL)
self.gbs.Add(self.application_version, pos=(2, 1), flag=wx.ALL)
self.gbs.Add(self.app_file_txt, pos=(3, 0), flag=wx.ALL)
self.gbs.Add(self.app_file_path, pos=(3, 1), flag=wx.ALL)
self.gbs.Add(self.app_file_load_btn, pos=(3, 2), flag=wx.ALL)
self.gbs.Add(self.key_file_txt, pos=(4, 0), flag=wx.ALL)
self.gbs.Add(self.key_file_path, pos=(4, 1), flag=wx.ALL)
self.gbs.Add(self.key_file_load_btn, pos=(4, 2), flag=wx.ALL)
self.sbox_sizer.Add(self.gbs, 0, wx.ALL | wx.LEFT, 2)
self.vbox.Add(self.sbox_sizer, 0, wx.ALL | wx.ALIGN_LEFT, 2)
self.SetSizer(self.vbox)
class Logger(wx.Panel):
def __init__(self, parent):
super(Logger, self).__init__(parent)
self.vbox = wx.BoxSizer(wx.VERTICAL)
# group
self.sbox = wx.StaticBox(self, -1, "Logging")
self.sbox_sizer = wx.StaticBoxSizer(self.sbox, wx.VERTICAL)
self.log_ctrl = wx.TextCtrl(
self.sbox,
size=(400, 600), size=(400, 600),
style=wx.TC_MULTILINE | wx.TE_READONLY | wx.VSCROLL | wx.TE_RICH2, style=wx.TC_MULTILINE | wx.TE_READONLY | wx.VSCROLL | wx.TE_RICH2,
) )
# log_ctrl.SetForegroundColour(wx.WHITE) self.log_ctrl.SetBackgroundColour(wx.WHITE)
# log_ctrl.SetBackgroundColour(wx.BLACK) self.sbox_sizer.Add(self.log_ctrl, proportion=1, flag=wx.EXPAND | wx.ALL)
log_ctrl.SetBackgroundColour(wx.WHITE) self.vbox.Add(self.sbox_sizer)
log_ctrl.SetValue("hello00000000000000000000000000000000000000000000000") self.SetSizer(self.vbox)
right_boxsizer.Add(log_ctrl, proportion=1, flag=wx.EXPAND | wx.ALL)
vbox2.Add(right_boxsizer)
class NrfutilGui(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(
self,
parent,
style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER,
title="Nrfutil Tool v1.0",
size=(800, 650),
)
self.initFrame()
def initFrame(self):
panel = wx.Panel(self)
hbox = wx.BoxSizer(wx.HORIZONTAL)
vbox1 = wx.BoxSizer(wx.VERTICAL)
vbox1.Add(GenerateKey(panel), 0, wx.ALL | wx.EXPAND, 1)
vbox1.Add(GenerateBlSettings(panel), 0, wx.ALL | wx.EXPAND, 1)
vbox1.Add(MergeFile(panel), 0, wx.ALL | wx.EXPAND, 1)
vbox1.Add(GenerateDfuPackage(panel), 0, wx.ALL | wx.EXPAND, 1)
vbox2 = wx.BoxSizer(wx.VERTICAL)
vbox2.Add(Logger(panel))
hbox.Add(vbox1) hbox.Add(vbox1)
hbox.Add(vbox2) hbox.Add(vbox2)
panel.SetSizer(hbox) panel.SetSizer(hbox)
ico = wx.Icon("configs/title.ico", type=BITMAP_TYPE_ICO)
self.SetIcon(ico)
# display # display
self.SetSize(800, 650) self.Layout()
self.SetTitle("Nrfutil Tool")
self.Centre() self.Centre()
self.Show(True) self.Show(True)
def main(): def main():
app = wx.App() app = wx.App(False)
ng = NrfutilGui(None, style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER) ng = NrfutilGui(None)
app.MainLoop() app.MainLoop()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册