From 3a0ab1570b27b49b21ff9fa11a46288e6518e664 Mon Sep 17 00:00:00 2001 From: Jeremy Hammett Date: Mon, 23 Apr 2012 01:32:42 +0200 Subject: [PATCH 1/2] Update gviz.py --- gviz.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/gviz.py b/gviz.py index e919b71..81788b0 100755 --- a/gviz.py +++ b/gviz.py @@ -12,13 +12,15 @@ # # You should have received a copy of the GNU General Public License # along with Printrun. If not, see . - import wx,time - +ID_ABOUT = 101 +ID_EXIT = 110 class window(wx.Frame): def __init__(self,f,size=(600,600),build_dimensions=[200,200,100,0,0,0],grid=(10,50),extrusion_width=0.5): wx.Frame.__init__(self,None,title="Gcode view, shift to move view, mousewheel to set layer",size=(size[0],size[1])) self.p=gviz(self,size=size,build_dimensions=build_dimensions,grid=grid,extrusion_width=extrusion_width) + self.CreateStatusBar(1); + self.SetStatusText("Layer number and Z position show here when you scroll"); s=time.time() #print time.time()-s self.initpos=[0,0] @@ -28,7 +30,7 @@ class window(wx.Frame): self.Bind(wx.EVT_MOUSEWHEEL,self.zoom) self.p.Bind(wx.EVT_MOUSE_EVENTS,self.mouse) self.Bind(wx.EVT_MOUSE_EVENTS,self.mouse) - + def mouse(self,event): if event.ButtonUp(wx.MOUSE_BTN_LEFT): if(self.initpos is not None): @@ -76,6 +78,7 @@ class window(wx.Frame): class gviz(wx.Panel): def __init__(self,parent,size=(200,200),build_dimensions=[200,200,100,0,0,0],grid=(10,50),extrusion_width=0.5): wx.Panel.__init__(self,parent,-1,size=(size[0],size[1])) + self.parent=parent self.size=size self.build_dimensions=build_dimensions self.grid=grid @@ -122,12 +125,18 @@ class gviz(wx.Panel): def layerup(self): if(self.layerindex+10 and self.custombuttons[n-1] is None: n -= 1 - bedit.Show() - - + if bedit.ShowModal()==wx.ID_OK: + if n==len(self.custombuttons): + self.custombuttons+=[None] + self.custombuttons[n]=[bedit.name.GetValue().strip(),bedit.command.GetValue().strip()] + if bedit.color.GetValue().strip()!="": + self.custombuttons[n]+=[bedit.color.GetValue()] + self.cbutton_save(n,self.custombuttons[n]) + bedit.Destroy() + self.cbuttons_reload() + def cbutton_remove(self,e,button): n = button.custombutton self.custombuttons[n]=None @@ -1441,8 +1437,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if self.p.online: wx.CallAfter(self.printbtn.Enable) threading.Thread(target=self.loadviz).start() - dlg.Destroy() - + def loadviz(self): Xtot,Ytot,Ztot,Xmin,Xmax,Ymin,Ymax,Zmin,Zmax = pronsole.measurements(self.f) print pronsole.totalelength(self.f), _("mm of filament used in this print\n") @@ -1635,6 +1630,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): class macroed(wx.Dialog): """Really simple editor to edit macro definitions""" + def __init__(self,macro_name,definition,callback,gcode=False): self.indent_chars = " " title=" macro %s" @@ -1645,19 +1641,22 @@ class macroed(wx.Dialog): self.callback = callback self.panel=wx.Panel(self,-1) titlesizer=wx.BoxSizer(wx.HORIZONTAL) - title = wx.StaticText(self.panel,-1,title%macro_name) + titletext = wx.StaticText(self.panel,-1," _") #title%macro_name) #title.SetFont(wx.Font(11,wx.NORMAL,wx.NORMAL,wx.BOLD)) - titlesizer.Add(title,1) + titlesizer.Add(titletext,1) + self.findb = wx.Button(self.panel, -1, _("Find")) #New button for "Find" (Jezmy) + self.findb.Bind(wx.EVT_BUTTON, self.find) self.okb = wx.Button(self.panel, -1, _("Save")) self.okb.Bind(wx.EVT_BUTTON, self.save) self.Bind(wx.EVT_CLOSE, self.close) + titlesizer.Add(self.findb) titlesizer.Add(self.okb) self.cancelb = wx.Button(self.panel, -1, _("Cancel")) self.cancelb.Bind(wx.EVT_BUTTON, self.close) titlesizer.Add(self.cancelb) topsizer=wx.BoxSizer(wx.VERTICAL) topsizer.Add(titlesizer,0,wx.EXPAND) - self.e=wx.TextCtrl(self.panel,style=wx.TE_MULTILINE+wx.HSCROLL,size=(200,200)) + self.e=wx.TextCtrl(self.panel,style=wx.TE_MULTILINE+wx.HSCROLL,size=(400,400)) if not self.gcode: self.e.SetValue(self.unindent(definition)) else: @@ -1669,6 +1668,37 @@ class macroed(wx.Dialog): self.Show() self.e.SetFocus() + def find(self,ev): + # Ask user what to look for, find it and point at it ... (Jezmy) + S = self.e.GetStringSelection() + if not S : + S = "Z" + FindValue = wx.GetTextFromUser('Please enter a search string:', caption="Search", default_value=S, parent=None) + somecode = self.e.GetValue() + numLines = len(somecode) + position = somecode.find(FindValue, self.e.GetInsertionPoint()) + if position == -1 : + # ShowMessage(self,-1, "Not found!") + titletext = wx.TextCtrl(self.panel,-1,"Not Found!") + + + else: + # self.title.SetValue("Position : "+str(position)) + + titletext = wx.TextCtrl(self.panel,-1,str(position)) + + # ananswer = wx.MessageBox(str(numLines)+" Lines detected in file\n"+str(position), "OK") + self.e.SetFocus() + self.e.SetInsertionPoint(position) + self.e.SetSelection(position, position + len(FindValue)) + self.e.ShowPosition(position) + + def ShowMessage(self, ev , message): + dlg = wxMessageDialog(self, message, + "Info!", wxOK | wxICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() + def save(self,ev): self.Destroy() if not self.gcode: @@ -1760,8 +1790,6 @@ class ButtonEdit(wx.Dialog): topsizer.Add( (0,0),1) topsizer.Add(self.CreateStdDialogButtonSizer(wx.OK|wx.CANCEL),0,wx.ALIGN_CENTER) self.SetSizer(topsizer) - self.handler=None - def macrob_enabler(self,e): macro = self.command.GetValue() valid = False