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 ""

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