Commit fb357bae authored by Guillaume Seguin's avatar Guillaume Seguin

Make instant reload of UI functional. Woohoo ^^

parent 6f6b4fc5
......@@ -101,6 +101,7 @@ class MainWindow(wx.Frame):
# when we're connected to a printer
self.panel = wx.Panel(self, -1, size = kwargs["size"])
self.reset_ui()
self.statefulControls = []
def reset_ui(self):
self.panels = []
......@@ -172,12 +173,6 @@ class MainWindow(wx.Frame):
self.panel.SetSizerAndFit(self.notesizer)
# disable all printer controls until we connect to a printer
self.pausebtn.Disable()
self.recoverbtn.Disable()
for i in self.printerControls:
i.Disable()
self.cbuttons_reload()
minsize = self.lowersizer.GetMinSize() # lower pane
minsize[1] = self.notebook.GetSize()[1]
......@@ -254,10 +249,19 @@ class MainWindow(wx.Frame):
minsize[1] = min(minsize[1], displaysize[1])
self.SetMinSize(self.ClientToWindowSize(minsize)) # client to window
# disable all printer controls until we connect to a printer
self.cbuttons_reload()
def gui_set_connected(self):
self.xyb.enable()
self.zb.enable()
for control in self.printerControls:
control.Enable()
def gui_set_disconnected(self):
self.printbtn.Disable()
self.pausebtn.Disable()
self.recoverbtn.Disable()
for i in self.printerControls:
i.Disable()
self.cbuttons_reload()
for control in self.printerControls:
control.Disable()
self.xyb.disable()
self.zb.disable()
......@@ -50,18 +50,38 @@ def MainToolbar(root, parentpanel = None, use_wrapsizer = False):
except:
pass
self.Add(root.baud)
root.connectbtn = make_autosize_button(parentpanel, _("Connect"), root.connect, _("Connect to the printer"), self)
root.resetbtn = make_autosize_button(parentpanel, _("Reset"), root.reset, _("Reset the printer"), self)
if not hasattr(root, "connectbtn"):
root.connectbtn = make_autosize_button(parentpanel, _("Connect"), root.connect, _("Connect to the printer"))
root.statefulControls.append(root.connectbtn)
else:
root.connectbtn.Reparent(parentpanel)
self.Add(root.connectbtn)
if not hasattr(root, "resetbtn"):
root.resetbtn = make_autosize_button(parentpanel, _("Reset"), root.reset, _("Reset the printer"))
root.statefulControls.append(root.resetbtn)
else:
root.resetbtn.Reparent(parentpanel)
self.Add(root.resetbtn)
self.AddStretchSpacer(prop = 1)
root.loadbtn = make_autosize_button(parentpanel, _("Load file"), root.loadfile, _("Load a 3D model file"), self)
root.sdbtn = make_autosize_button(parentpanel, _("SD"), root.sdmenu, _("SD Card Printing"), self)
root.sdbtn.Reparent(parentpanel)
root.printerControls.append(root.sdbtn)
root.printbtn = make_autosize_button(parentpanel, _("Print"), root.printfile, _("Start Printing Loaded File"), self)
root.printbtn.Disable()
root.pausebtn = make_autosize_button(parentpanel, _("Pause"), root.pause, _("Pause Current Print"), self)
if not hasattr(root, "printbtn"):
root.printbtn = make_autosize_button(parentpanel, _("Print"), root.printfile, _("Start Printing Loaded File"))
root.statefulControls.append(root.printbtn)
else:
root.printbtn.Reparent(parentpanel)
self.Add(root.printbtn)
if not hasattr(root, "pausebtn"):
root.pausebtn = make_autosize_button(parentpanel, _("Pause"), root.pause, _("Pause Current Print"))
root.statefulControls.append(root.pausebtn)
else:
root.pausebtn.Reparent(parentpanel)
self.Add(root.pausebtn)
root.offbtn = make_autosize_button(parentpanel, _("Off"), root.off, _("Turn printer off"), self)
root.printerControls.append(root.offbtn)
......
......@@ -247,6 +247,8 @@ class PronterWindow(MainWindow, pronsole.pronsole):
self.update_recent_files("recentfiles", self.settings.recentfiles)
self.reload_ui()
# disable all printer controls until we connect to a printer
self.gui_set_disconnected()
self.statusbar = self.CreateStatusBar()
self.statusbar.SetStatusText(_("Not connected to printer."))
......@@ -280,16 +282,33 @@ class PronterWindow(MainWindow, pronsole.pronsole):
def reload_ui(self, *args):
if not self.window_ready: return
self.Freeze()
# If UI is being recreated, delete current one
if self.ui_ready:
# Create a temporary panel to reparent widgets with state we want
# to retain across UI changes
logcontent = self.logbox.GetValue()
temppanel = wx.Panel(self)
for control in self.statefulControls:
control.GetContainingSizer().Detach(control)
control.Reparent(temppanel)
self.panel.DestroyChildren()
self.gwindow.Destroy()
self.reset_ui()
# Create UI
if self.settings.uimode == "Tabbed":
self.createTabbedGui()
else:
self.createGui(self.settings.uimode == "Compact",
self.settings.controlsmode == "Mini")
# Finalize
if self.online:
self.gui_set_connected()
if self.ui_ready:
self.logbox.SetValue(logcontent)
temppanel.Destroy()
self.panel.Layout()
self.ui_ready = True
self.Thaw()
......@@ -340,12 +359,7 @@ class PronterWindow(MainWindow, pronsole.pronsole):
if hasattr(self, "extrudersel"):
self.do_tool(self.extrudersel.GetValue())
for i in self.printerControls:
i.Enable()
# Enable XYButtons and ZButtons
self.xyb.enable()
self.zb.enable()
self.gui_set_connected()
if self.filename:
self.printbtn.Enable()
......@@ -1919,15 +1933,7 @@ Printrun. If not, see <http://www.gnu.org/licenses/>."""
wx.CallAfter(self.connectbtn.SetToolTip, wx.ToolTip(_("Connect to the printer")))
wx.CallAfter(self.connectbtn.Bind, wx.EVT_BUTTON, self.connect)
wx.CallAfter(self.printbtn.Disable)
wx.CallAfter(self.pausebtn.Disable)
wx.CallAfter(self.recoverbtn.Disable)
for i in self.printerControls:
wx.CallAfter(i.Disable)
# Disable XYButtons and ZButtons
wx.CallAfter(self.xyb.disable)
wx.CallAfter(self.zb.disable)
wx.CallAfter(self.gui_set_disconnected)
if self.paused:
self.p.paused = 0
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment