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

Reply via email to