I posted some ugly hacked filters in the forum:
http://www.linuxcnc.org/component/option,com_kunena/Itemid,20/func,view/catid,38/id,2288/limit,6/limitstart,6/lang,english/#2326
they might not be working perfectly, but its a start.
On 3/14/2010 11:09 PM, Dave wrote:
> I really like this idea and want to patch my system and try this
> out.... I think the concept adds a lot of flexibility to EMC2.
>
> This seems like a useful addition as it moves the "filters" idea further
> along.
>
> Dave (Dave911 on the IRC)
>
> On 3/14/2010 10:55 AM, Jeff Epler wrote:
>
>> 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
>
------------------------------------------------------------------------------
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