MC zamiast DRO

Niestety MC uruchomione w karcie przez EMBEDTAB 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]
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"),
("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)
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:
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