Jeff,
Is it possible to make "Edit program" to open the file after
filters/loaders, not the original?
Regards,
Alex.
Jeff Epler пишет:
> this feature is inspired by Bernhard Kubicek's work on a similar
> feature. Any number of filters may be listed in the inifile as
> [FILTER]PROGRAM=. These work similarly to extension-based filters,
> except that the user chooses them explicitly from the menu to apply
> them to the already-loaded file.
> ---
> This seems like a good idea. What do you think of this approach?
>
> share/axis/tcl/axis.tcl | 8 +++++-
> src/emc/usr_intf/axis/scripts/axis.py | 41
> +++++++++++++++++++++++++++++++++
> 2 files changed, 48 insertions(+), 1 deletions(-)
>
> diff --git a/share/axis/tcl/axis.tcl b/share/axis/tcl/axis.tcl
> index 24f0174..89caac6 100644
> --- a/share/axis/tcl/axis.tcl
> +++ b/share/axis/tcl/axis.tcl
> @@ -26,6 +26,8 @@ menu .menu.file \
> -tearoff 0
> menu .menu.file.recent \
> -tearoff 0
> +menu .menu.file.filters \
> + -tearoff 0
> menu .menu.machine \
> -tearoff 0
> menu .menu.machine.home \
> @@ -54,6 +56,10 @@ setup_menu_accel .menu.file end [_ "Recent _Files"]
> -command edit_program
> setup_menu_accel .menu.file end [_ "_Edit..."]
>
> +.menu.file add cascade \
> + -menu .menu.file.filters
> +setup_menu_accel .menu.file end [_ "F_ilter"]
> +
> .menu.file add command \
> -accelerator [_ "Ctrl-R"] \
> -command reload_file
> @@ -1880,7 +1886,7 @@ proc update_state {args} {
> relief {$task_state == $STATE_ON} .toolbar.machine_power
>
> state {$interp_state == $INTERP_IDLE && $taskfile != ""} \
> - .toolbar.reload {.menu.file "_Reload"}
> + .toolbar.reload {.menu.file "_Reload"} {.menu.file "F_ilter"}
> state {$taskfile != ""} \
> .toolbar.reload {.menu.file "_Save gcode as..."}
> state {$interp_state == $INTERP_IDLE && $taskfile != "" &&
> $::has_editor} \
> diff --git a/src/emc/usr_intf/axis/scripts/axis.py
> b/src/emc/usr_intf/axis/scripts/axis.py
> index 702307f..da97406 100755
> --- a/src/emc/usr_intf/axis/scripts/axis.py
> +++ b/src/emc/usr_intf/axis/scripts/axis.py
> @@ -1203,6 +1203,7 @@ widgets = nf.Widgets(root_window,
>
> ("menu_view", Menu, ".menu.view"),
> ("menu_file", Menu, ".menu.file"),
> + ("menu_filters", Menu, ".menu.file.filters"),
> ("menu_machine", Menu, ".menu.machine"),
> ("menu_touchoff", Menu, ".menu.machine.touchoff"),
>
> @@ -2407,6 +2408,28 @@ class TclCommands(nf.TclCommands):
> else:
> add_recent_file(f)
>
> + def filter_gcode(program):
> + global loaded_file
> + if not loaded_file: return
> + if get_filter(loaded_file):
> + srcfile = os.path.join(tempdir, os.path.basename(loaded_file))
> + else:
> + srcfile = loaded_file
> + outfile = tempfile.NamedTemporaryFile(
> + suffix="ngc", dir=tempdir, delete=False)
> + exitcode, stderr = filter_program(program, srcfile, outfile.name)
> + if exitcode:
> + root_window.tk.call("nf_dialog", (".error", "-ext", stderr),
> + _("Filter failed"),
> + _("The program %(program)r exited with code %(code)d. "
> + "Any error messages it produced are shown below:")
> + % {'program': program, 'code': exitcode},
> + "error",0,_("OK"))
> + return
> + dest = os.path.join(tempdir, os.path.basename(loaded_file))
> + os.rename(outfile.name, dest)
> + open_file_guts(dest, True, False)
> +
> commands = TclCommands(root_window)
>
> vars = nf.Variables(root_window,
> @@ -2778,6 +2801,23 @@ update_ms = int(1000 *
> float(inifile.find("DISPLAY","CYCLE_TIME") or 0.020))
> widgets.unhomemenu.add_command(command=commands.unhome_all_axes)
> root_window.tk.call("setup_menu_accel", widgets.unhomemenu, "end", _("Unhome
> All Axes"))
>
> +filters = inifile.findall("FILTER", "PROGRAM")
> +for f in filters:
> + if ";" in f:
> + p, t = f.split(";", 1)
> + else:
> + p = t = f
> + p = p.strip()
> + t = t.strip()
> + widgets.menu_filters.add_command(command=("filter_gcode", p), label=t)
> + try:
> + root_window.tk.call("setup_menu_accel", ".menu.file.filters", "end",
> t)
> + except Tkinter.TclError:
> + # The inifile has an invalid string, such as "Bogus_". Rather than
> + # punishing the user by refusing to start, skip the accelerator
> + # set-up logic
> + pass
> +
> s = emc.stat();
> s.poll()
> statfail=0
>
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers