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("<Configure>", 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

Artur.