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:
i komentujemy linie dotyczące _tabs_numbers
wychodzi nam coś takiego:
#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:
i komentujemy linie odpowiadające za odświeżanie DRO – zostaje nam tak:
#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:
i komentujemy dwie linie:
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) :
No dobrze to pozbyliśmy sie zakładki DRO.
Teraz dodajemy naszą zakładkę przed zakładkami z NGCGUI.
Szukamy:
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