MC zamiast DRO
Niestety MC uruchomione w karcie przez EMBED_TAB ląduje na samym końcu – za wszystkimi zakładkami NGCGUI.
Najwygodniej byłoby mieć MC od razu za podglądem – zamiast zupełnie bezużytecznej dla nas zakładki DRO.
Jeżeli ktoś lubi zakładkę DRO, to pierwszą część może pominąć i zacząć od słów ’No dobrze to pozbyliśmy sie zakładki DRO.’
Wg tego przepisu można dodać dowolną liczbę zakładek z dowolnymi (dającymi się osadzić) programami.
No to jedziemy – najpierw trzeba wyrzucić zakładkę DRO:
Otwieramy /usr/share/axis/tcl/axis.tcl,
szukamy linii:
set _tabs_preview [${pane_top}.right insert end preview -text [_ "Preview"]]
i komentujemy linie dotyczące _tabs_numbers
wychodzi nam coś takiego:
set _tabs_preview [${pane_top}.right insert end preview -text [_ "Preview"]] #set _tabs_numbers [${pane_top}.right insert end numbers -text [_ "DRO"]] # artur 2013.01.04 $_tabs_preview configure -borderwidth 1 #$_tabs_numbers configure -borderwidth 1 #pack ${_tabs_numbers}. -fill both -expand 1 #text ${_tabs_numbers}.text -width 1 -height 1 -wrap none # -background [systembuttonface] # -borderwidth 0 # -relief flat #pack ${_tabs_numbers}.text -fill both -expand 1 #bindtags ${_tabs_numbers}.text [list ${_tabs_numbers}.text . all]
To #artur 2013.01.04 można oczywiście pominąć – ja sobie po prostu zaznaczam co i kiedy zmieniałem.
Zapisujemy axis.tcl i otwieramy /usr/bin/axis.
Szukamy:
def redraw(self):
i komentujemy linie odpowiadające za odświeżanie DRO – zostaje nam tak:
def redraw(self): #if not self.winfo_viewable(): # artur 2013.01.04 #return self.redraw_dro() if self.select_event: self.select(self.select_event) self.select_event = None GlCanonDraw.redraw(self)
szukamy:
tabs_numbers
i komentujemy dwie linie:
#tabs_numbers = str(root_window.tk.call("set", "_tabs_numbers")) # artur 2013.01.04 pane_top = str(root_window.tk.call("set", "pane_top")) pane_bottom = str(root_window.tk.call("set", "pane_bottom")) widgets = nf.Widgets(root_window, ("help_window", Toplevel, ".keys"), ("about_window", Toplevel, ".about"), ("text", Text, pane_bottom + ".t.text"), ("preview_frame", Frame, tabs_preview), # ("numbers_text", Text, tabs_numbers + ".text"), #artur 2013.01.04 ("tabs", bwidget.NoteBook, pane_top + ".tabs"), ("right", bwidget.NoteBook, pane_top + ".right"), ("mdi_history", Listbox, tabs_mdi + ".history"), ("mdi_command", Entry, tabs_mdi + ".command"), ("code_text", Text, tabs_mdi + ".gcodes"),
i jeszcze komentujemy jedna linię na końcu pliku (6 linia od końca) :
#widgets.numbers_text.bind("", commands.redraw_soon) # artur 2013.01.04
No dobrze to pozbyliśmy sie zakładki DRO.
Teraz dodajemy naszą zakładkę przed zakładkami z NGCGUI.
Szukamy:
tkpkgs = inifile.findall("DISPLAY","TKPKG") or ""
i przed tą linią dajemy nasze wypociny:
# artur 04.01.2013 def mc(): from subprocess import Popen rxid = root_window.winfo_id() os.environ['AXIS_FORWARD_EVENTS_TO'] = str(rxid) w = _dynamic_tab("mc", "MC"); f = Tkinter.Frame(w, container=1, borderwidth=0, highlightthickness=0) f.pack(fill="both", expand=1) xid = f.winfo_id() c = "uxterm -into {XID} -geometry 108x28 -e mc" cmd = c.replace('{XID}', str(xid)).split() child = Popen(cmd) wait = cmd[:2] == ['halcmd', 'loadusr'] mc()
i już – mamy MC zamiast DRO.
Paczka ze zmienionymi plikami (z linuxcnc 2.5.1):
DRO