summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Morley <chrisinnanaimo@hotmail.com>2014-01-25 13:28:31 -0800
committerChris Morley <chrisinnanaimo@hotmail.com>2014-01-25 13:28:31 -0800
commitfeeaf0c4ef0335a99ae9f8e24535e075f35920da (patch)
treef026db4aac2b4191ff9c941f028cb9009664e652
parent2190b97590052215b3a2572b497e918927a95edd (diff)
downloadlinuxcnc-feeaf0c4ef0335a99ae9f8e24535e075f35920da.tar.gz
linuxcnc-feeaf0c4ef0335a99ae9f8e24535e075f35920da.zip
gscreen -add a gaxis with-no-live-plot sim configuration
Low power machines need to drop the live plot.
-rw-r--r--configs/sim/gscreen/gscreen_custom/gaxis_no_plot.ini200
-rw-r--r--share/gscreen/skins/gaxis_no_plot/gaxis_no_plot.glade1659
-rw-r--r--share/gscreen/skins/gaxis_no_plot/gaxis_no_plot_handler.py189
3 files changed, 2048 insertions, 0 deletions
diff --git a/configs/sim/gscreen/gscreen_custom/gaxis_no_plot.ini b/configs/sim/gscreen/gscreen_custom/gaxis_no_plot.ini
new file mode 100644
index 000000000..1c2344c5a
--- /dev/null
+++ b/configs/sim/gscreen/gscreen_custom/gaxis_no_plot.ini
@@ -0,0 +1,200 @@
+# EMC controller parameters for a simulated machine.
+
+# General note: Comments can either be preceded with a # or ; - either is
+# acceptable, although # is in keeping with most linux config files.
+
+# General section -------------------------------------------------------------
+[EMC]
+
+# Version of this INI file
+VERSION = $Revision$
+
+# Name of machine, for use with display, etc.
+MACHINE = Linuxcnc-Gscreen_gaxis_no_plot
+
+# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
+#DEBUG = 0x7FFFFFFF
+DEBUG = 0
+
+# Sections for display options ------------------------------------------------
+[DISPLAY]
+
+
+# -c sets the glade and handler file to load -d is to display extra debug messages
+DISPLAY = gscreen -c gaxis_no_plot -c
+
+# Cycle time, in milliseconds, that display will sleep between polls
+CYCLE_TIME = 100
+
+# Highest / lowest value that will be allowed for overrides, 1.0 = 100%
+MAX_FEED_OVERRIDE = 2.0
+MIN_SPINDLE_OVERRIDE = .5
+MAX_SPINDLE_OVERRIDE = 1.0
+
+# Max and default jog speeds in units per second
+MAX_LINEAR_VELOCITY = 1.2
+DEFAULT_LINEAR_VELOCITY = .25
+
+# Prefix to be used
+PROGRAM_PREFIX = ../../nc_files/
+
+# Introductory graphic
+INTRO_GRAPHIC = linuxcnc.gif
+INTRO_TIME = 5
+
+[FILTER]
+PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
+PROGRAM_EXTENSION = .py Python Script
+
+png = image-to-gcode
+gif = image-to-gcode
+jpg = image-to-gcode
+py = python
+
+# Task controller section -----------------------------------------------------
+[TASK]
+
+# Name of task controller program, e.g., milltask
+TASK = milltask
+
+# Cycle time, in seconds, that task controller will sleep between polls
+CYCLE_TIME = 0.001
+
+# Part program interpreter section --------------------------------------------
+[RS274NGC]
+
+# File containing interpreter variables
+PARAMETER_FILE = sim.var
+
+# Motion control section ------------------------------------------------------
+[EMCMOT]
+
+EMCMOT = motmod
+
+# Timeout for comm to emcmot, in seconds
+COMM_TIMEOUT = 1.0
+
+# Interval between tries to emcmot, in seconds
+COMM_WAIT = 0.010
+
+# BASE_PERIOD is unused in this configuration but specified in core_sim.hal
+BASE_PERIOD = 0
+# Servo task period, in nano-seconds
+SERVO_PERIOD = 1000000
+
+# Hardware Abstraction Layer section --------------------------------------------------
+[HAL]
+
+# The run script first uses halcmd to execute any HALFILE
+# files, and then to execute any individual HALCMD commands.
+#
+
+# list of hal config files to run through halcmd
+# files are executed in the order in which they appear
+HALFILE = core_sim.hal
+HALFILE = sim_spindle_encoder.hal
+HALFILE = axis_manualtoolchange.hal
+HALFILE = simulated_home.hal
+
+# list of halcmd commands to execute
+# commands are executed in the order in which they appear
+
+
+# Single file that is executed after the GUI has started.
+POSTGUI_HALFILE = gaxis_postgui.hal
+
+HALUI = halui
+
+# Trajectory planner section --------------------------------------------------
+[TRAJ]
+
+AXES = 3
+COORDINATES = X Y Z
+HOME = 0 0 0
+LINEAR_UNITS = inch
+ANGULAR_UNITS = degree
+CYCLE_TIME = 0.010
+DEFAULT_VELOCITY = 1.2
+MAX_VELOCITY = 2.4
+POSITION_FILE = position.txt
+
+# Axes sections ---------------------------------------------------------------
+
+# First axis
+[AXIS_0]
+
+TYPE = LINEAR
+HOME = 0.000
+MAX_VELOCITY = 4
+MAX_ACCELERATION = 100.0
+BACKLASH = 0.000
+INPUT_SCALE = 4000
+OUTPUT_SCALE = 1.000
+MIN_LIMIT = -40.0
+MAX_LIMIT = 40.0
+FERROR = 0.050
+MIN_FERROR = 0.010
+HOME_OFFSET = 0.0
+HOME_SEARCH_VEL = 20.0
+HOME_LATCH_VEL = 20.0
+HOME_USE_INDEX = NO
+HOME_IGNORE_LIMITS = NO
+HOME_SEQUENCE = 1
+HOME_IS_SHARED = 1
+
+# Second axis
+[AXIS_1]
+
+TYPE = LINEAR
+HOME = 0.000
+MAX_VELOCITY = 4
+MAX_ACCELERATION = 100.0
+BACKLASH = 0.000
+INPUT_SCALE = 4000
+OUTPUT_SCALE = 1.000
+MIN_LIMIT = -40.0
+MAX_LIMIT = 40.0
+FERROR = 0.050
+MIN_FERROR = 0.010
+HOME_OFFSET = 0.0
+HOME_SEARCH_VEL = 20.0
+HOME_LATCH_VEL = 20.0
+HOME_USE_INDEX = NO
+HOME_IGNORE_LIMITS = NO
+HOME_SEQUENCE = 1
+
+# Third axis
+[AXIS_2]
+
+TYPE = LINEAR
+HOME = 0.0
+MAX_VELOCITY = 4
+MAX_ACCELERATION = 100.0
+BACKLASH = 0.000
+INPUT_SCALE = 4000
+OUTPUT_SCALE = 1.000
+MIN_LIMIT = -8.0
+MAX_LIMIT = 0.0001
+FERROR = 0.050
+MIN_FERROR = 0.010
+HOME_OFFSET = 1.0
+HOME_SEARCH_VEL = 20.0
+HOME_LATCH_VEL = 20.0
+HOME_USE_INDEX = NO
+HOME_IGNORE_LIMITS = NO
+HOME_SEQUENCE = 0
+HOME_IS_SHARED = 1
+
+# section for main IO controller parameters -----------------------------------
+[EMCIO]
+
+# Name of IO controller program, e.g., io
+EMCIO = io
+
+# cycle time, in seconds
+CYCLE_TIME = 0.100
+
+# tool table file
+TOOL_TABLE = sim.tbl
+TOOL_CHANGE_POSITION = 0 0 0
+TOOL_CHANGE_QUILL_UP = 1
diff --git a/share/gscreen/skins/gaxis_no_plot/gaxis_no_plot.glade b/share/gscreen/skins/gaxis_no_plot/gaxis_no_plot.glade
new file mode 100644
index 000000000..d294f4ccc
--- /dev/null
+++ b/share/gscreen/skins/gaxis_no_plot/gaxis_no_plot.glade
@@ -0,0 +1,1659 @@
+<?xml version="1.0"?>
+<interface>
+ <requires lib="gtk+" version="2.16"/>
+ <!-- interface-requires gladevcp 0.0 -->
+ <!-- interface-naming-policy project-wide -->
+ <object class="GtkWindow" id="window1">
+ <property name="default_width">1024</property>
+ <property name="default_height">768</property>
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkMenuBar" id="menubar1">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkMenuItem" id="menuitem1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_File</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu1">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkImageMenuItem" id="imagemenuitem1">
+ <property name="label">gtk-new</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="imagemenuitem2">
+ <property name="label">gtk-open</property>
+ <property name="visible">True</property>
+ <property name="related_action">emc_open</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <accelerator key="o" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="imagemenuitem3">
+ <property name="label">gtk-save</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <accelerator key="s" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="imagemenuitem4">
+ <property name="label">gtk-save-as</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <accelerator key="s" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
+ <property name="visible">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="imagemenuitem5">
+ <property name="label">gtk-quit</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menuitem2">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Machine</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu2">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_estop">
+ <property name="label" translatable="yes">Toggle _Emergency Stop</property>
+ <property name="visible">True</property>
+ <property name="related_action">emc_toggle_estop</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">False</property>
+ <accelerator key="e" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_power">
+ <property name="label" translatable="yes">Toggle _Machine Power</property>
+ <property name="visible">True</property>
+ <property name="related_action">emc_toggle_power</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">False</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menuitem3">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_View</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu4">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkRadioMenuItem" id="radiomenuitem1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Top view</property>
+ <property name="use_underline">True</property>
+ <property name="draw_as_radio">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRadioMenuItem" id="radiomenuitem2">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Top view 2</property>
+ <property name="use_underline">True</property>
+ <property name="draw_as_radio">True</property>
+ <property name="group">radiomenuitem1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separatormenuitem2">
+ <property name="visible">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menuitem4">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Help</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu3">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkImageMenuItem" id="imagemenuitem10">
+ <property name="label">gtk-about</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckMenuItem" id="menuitem5">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Preferences and Debug Tab</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkVBox" id="vbox2">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkToolbar" id="toolbar1">
+ <property name="visible">True</property>
+ <property name="toolbar_style">both</property>
+ <child>
+ <object class="GtkToggleToolButton" id="button_estop">
+ <property name="visible">True</property>
+ <property name="use_action_appearance">True</property>
+ <property name="related_action">emc_toggle_estop</property>
+ <property name="label" translatable="yes">ESTOP</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="button_machine_on">
+ <property name="visible">True</property>
+ <property name="use_action_appearance">True</property>
+ <property name="related_action">emc_toggle_power</property>
+ <property name="label" translatable="yes">Power</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparatorToolItem" id="toolbutton1">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton_open">
+ <property name="visible">True</property>
+ <property name="related_action">emc_open</property>
+ <property name="label" translatable="yes">Open</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-open</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton_reload">
+ <property name="visible">True</property>
+ <property name="related_action">hal_action_reload</property>
+ <property name="label" translatable="yes">Reload</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-refresh</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparatorToolItem" id="toolbutton2">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="toolbutton_run">
+ <property name="visible">True</property>
+ <property name="related_action">hal_toggleaction_run</property>
+ <property name="label" translatable="yes">Run</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-media-play</property>
+ <accelerator key="r" signal="clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton_step">
+ <property name="visible">True</property>
+ <property name="related_action">emc_auto_step</property>
+ <property name="label" translatable="yes">Step</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-media-next</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="toolbutton_pause">
+ <property name="visible">True</property>
+ <property name="related_action">emc_toggle_pause</property>
+ <property name="label" translatable="yes">Pause</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-media-pause</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton_stop">
+ <property name="visible">True</property>
+ <property name="related_action">hal_action_stop</property>
+ <property name="label" translatable="yes">Stop</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-media-stop</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="restart">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Run At
+ Line</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="metric_select">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Inch</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="all_home">
+ <property name="visible">True</property>
+ <property name="related_action">emc_home_all</property>
+ <property name="label" translatable="yes">All Home</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="go_home">
+ <property name="visible">True</property>
+ <property name="related_action">hal_action_go_home</property>
+ <property name="label" translatable="yes">Go Home</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox3">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkHPaned" id="hpaned1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="position">350</property>
+ <property name="position_set">True</property>
+ <child>
+ <object class="GtkVBox" id="vbox4">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkNotebook" id="notebook_main">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">automatic</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <child>
+ <object class="EMC_SourceView" id="gcode_view">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">False</property>
+ <property name="left_margin">2</property>
+ <property name="right_margin">2</property>
+ <property name="show_line_numbers">True</property>
+ <property name="show_line_marks">True</property>
+ <property name="tab_width">4</property>
+ <property name="auto_indent">True</property>
+ <property name="highlight_current_line">True</property>
+ <property name="indent_on_tab">False</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="ypad">10</property>
+ <property name="label" translatable="yes">Auto</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="State_Sensitive_Table" id="sensitive_table1">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="is_homed">False</property>
+ <child>
+ <object class="GtkHBox" id="hbox4">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="xalign">0.43999999761581421</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="jog_speed">
+ <property name="visible">True</property>
+ <property name="model">jog_speed_model</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext1"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="table1">
+ <property name="visible">True</property>
+ <property name="n_rows">5</property>
+ <property name="n_columns">5</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkHBox" id="hbox7">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">X</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button2">
+ <property name="label" translatable="yes">Home</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="related_action">emc_home_x</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="State_Sensitive_Table" id="sensitive_table2">
+ <property name="visible">True</property>
+ <property name="n_columns">3</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkButton" id="xpos">
+ <property name="label" translatable="yes">+</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="xneg">
+ <property name="label" translatable="yes">-</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="touch_offx">
+ <property name="label" translatable="yes">Touch off</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="right_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox8">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Y</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button4">
+ <property name="label" translatable="yes">Home</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="related_action">hal_action_home_y</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="State_Sensitive_Table" id="sensitive_table3">
+ <property name="visible">True</property>
+ <property name="n_columns">3</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkButton" id="ypos">
+ <property name="label" translatable="yes">+</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="yneg">
+ <property name="label" translatable="yes">-</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="touch_offy">
+ <property name="label" translatable="yes">Touch off</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="right_attach">5</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox9">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Z</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button3">
+ <property name="label" translatable="yes">Home</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="related_action">hal_action_home_z</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="State_Sensitive_Table" id="sensitive_table4">
+ <property name="visible">True</property>
+ <property name="n_columns">3</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkButton" id="zpos">
+ <property name="label" translatable="yes">+</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="zneg">
+ <property name="label" translatable="yes">-</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="touch_offz">
+ <property name="label" translatable="yes">Touch off</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="right_attach">5</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox10">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="label16">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Spindle</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label20">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="State_Sensitive_Table" id="sensitive_table5">
+ <property name="visible">True</property>
+ <property name="n_columns">3</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkButton" id="spos">
+ <property name="label" translatable="yes">+</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="sneg">
+ <property name="label" translatable="yes">-</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="s_run">
+ <property name="label" translatable="yes">Controls</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="right_attach">5</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Manual</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="EMC_MDIHistory" id="hal_mdihistory1">
+ <property name="visible">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">MDI</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox7">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkHBox" id="feed_override_box">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Feed Override</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkHScale" id="scale_fo">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment_fo</property>
+ <property name="digits">0</property>
+ <property name="value_pos">left</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="max_velocity_box">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkLabel" id="max_velocity_label">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Max Velocity</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkHScale" id="scale_mv">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment_mv</property>
+ <property name="digits">0</property>
+ <property name="value_pos">left</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="jog_speed_box">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Jog Speed</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkHScale" id="scale_jog">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment_jog</property>
+ <property name="value_pos">left</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="spindle_override_box">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkLabel" id="label17">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Spindle Override</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkHScale" id="scale_so">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment_so</property>
+ <property name="digits">0</property>
+ <property name="value_pos">left</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook_debug">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tab_border">0</property>
+ <child>
+ <object class="GtkNotebook" id="notebook_tab">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkVBox" id="vbox5">
+ <property name="visible">True</property>
+ <child>
+ <object class="Combi_DRO" id="dro_x">
+ <property name="visible">True</property>
+ <property name="abs_color">#00000000ffff</property>
+ <property name="unhomed_color">#ffff00000000</property>
+ <property name="auto_units">False</property>
+ <property name="dtg_color">#ffffffff0000</property>
+ <property name="rel_color">#000000000000</property>
+ <property name="homed_color">#0000ffff0000</property>
+ <property name="font_size">50</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="Combi_DRO" id="dro_y">
+ <property name="visible">True</property>
+ <property name="abs_color">#00000000ffff</property>
+ <property name="unhomed_color">#ffff00000000</property>
+ <property name="auto_units">False</property>
+ <property name="dtg_color">#ffffffff0000</property>
+ <property name="rel_color">#000000000000</property>
+ <property name="joint_number">1</property>
+ <property name="homed_color">#0000ffff0000</property>
+ <property name="font_size">50</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="Combi_DRO" id="dro_z">
+ <property name="visible">True</property>
+ <property name="abs_color">#00000000ffff</property>
+ <property name="unhomed_color">#ffff00000000</property>
+ <property name="auto_units">False</property>
+ <property name="dtg_color">#ffffffff0000</property>
+ <property name="rel_color">#000000000000</property>
+ <property name="joint_number">2</property>
+ <property name="homed_color">#0000ffff0000</property>
+ <property name="font_size">50</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label13">
+ <property name="visible">True</property>
+ <property name="ypad">10</property>
+ <property name="label" translatable="yes">Dro</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label14">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label15">
+ <property name="visible">True</property>
+ <property name="yalign">0.51999998092651367</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="ypad">10</property>
+ <property name="label" translatable="yes">Main</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">automatic</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <child>
+ <object class="GtkTextView" id="alarm_history">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">False</property>
+ <property name="wrap_mode">word</property>
+ <property name="cursor_visible">False</property>
+ <property name="buffer">alarm_buffer</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label18">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Alarm</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox10">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkScrolledWindow" id="terminal_window">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">automatic</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox5">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkButton" id="run_halshow">
+ <property name="label" translatable="yes"> Launch
+Halshow</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="run_calibration">
+ <property name="label" translatable="yes">Calibration</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="run_halmeter">
+ <property name="label" translatable="yes">Halmeter</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="run_status">
+ <property name="label" translatable="yes">linuxcnc
+ Status</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="run_halscope">
+ <property name="label" translatable="yes">Halscope</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="run_ladder">
+ <property name="label" translatable="yes">Ladder</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label19">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">System</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">350</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment_vcp">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkVBox" id="vcp_box">
+ <property name="visible">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkStatusbar" id="statusbar1">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <property name="has_resize_grip">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="EMC_Action_Run" id="emc_auto_run">
+ <property name="label">Run</property>
+ <property name="tooltip">Run current file</property>
+ <property name="stock_id">gtk-media-play</property>
+ </object>
+ <object class="EMC_Action_Step" id="emc_auto_step">
+ <property name="label">Step</property>
+ <property name="tooltip">Step over next command</property>
+ <property name="stock_id">gtk-media-next</property>
+ </object>
+ <object class="EMC_Action_Pause" id="emc_auto_pause">
+ <property name="label">Pause</property>
+ <property name="tooltip">Pause/resume execution</property>
+ <property name="stock_id">gtk-media-pause</property>
+ </object>
+ <object class="EMC_Action_Resume" id="emc_auto_resume">
+ <property name="stock_id">gtk-media-stop</property>
+ </object>
+ <object class="EMC_Action_Stop" id="hal_action_stop">
+ <property name="stock_id">gtk-stop</property>
+ </object>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="stock">gtk-disconnect</property>
+ </object>
+ <object class="EMC_ToggleAction_ESTOP" id="emc_toggle_estop">
+ <property name="label">ESTOP</property>
+ <property name="tooltip">Toggle Emergency Stop</property>
+ <property name="stock_id">gtk-stop</property>
+ </object>
+ <object class="EMC_ToggleAction_Power" id="emc_toggle_power">
+ <property name="label">Power</property>
+ <property name="tooltip">Toggle Machine Power</property>
+ <property name="stock_id">gtk-disconnect</property>
+ </object>
+ <object class="EMC_ToggleAction_Run" id="hal_toggleaction_run">
+ <property name="label">Run</property>
+ <property name="tooltip">Run current file</property>
+ <property name="stock_id">gtk-media-play</property>
+ </object>
+ <object class="EMC_ToggleAction_Pause" id="emc_toggle_pause">
+ <property name="icon_name">gtk-media-pause</property>
+ </object>
+ <object class="EMC_Action_MDI" id="hal_action_go_home">
+ <property name="label">Go Home</property>
+ <property name="stock_id">gtk-jump-to</property>
+ <property name="hide_if_empty">False</property>
+ <property name="command">G0 X0 Y0 Z0</property>
+ </object>
+ <object class="EMC_Action_Open" id="emc_open">
+ <property name="stock_id">gtk-open</property>
+ </object>
+ <object class="EMC_Action_Reload" id="hal_action_reload">
+ <property name="stock_id">gtk-refresh</property>
+ </object>
+ <object class="EMC_Action_Home" id="emc_home_all">
+ <property name="short_label">Home</property>
+ <property name="stock_id">gtk-home</property>
+ <property name="confirm_homed">True</property>
+ </object>
+ <object class="EMC_Action_Unhome" id="emc_unhome_all"/>
+ <object class="EMC_Action_Home" id="emc_home_x">
+ <property name="confirm_homed">True</property>
+ <property name="axis">0</property>
+ </object>
+ <object class="EMC_Action_Unhome" id="emc_unhome_x">
+ <property name="axis">0</property>
+ </object>
+ <object class="EMC_Stat" id="hal_status">
+ <signal name="all_homed" handler="on_hal_status_all_homed"/>
+ </object>
+ <object class="GtkAdjustment" id="restart_adjustment">
+ <property name="upper">1000000</property>
+ <property name="step_increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_fo">
+ <property name="value">100</property>
+ <property name="upper">200</property>
+ <property name="step_increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_jog">
+ <property name="value">15</property>
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_mv">
+ <property name="value">100</property>
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ </object>
+ <object class="GtkListStore" id="jog_speed_model">
+ <columns>
+ <!-- column-name title -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
+ <object class="GtkDialog" id="restart_dialog">
+ <property name="border_width">5</property>
+ <property name="type">popup</property>
+ <property name="title" translatable="yes">Program Restart</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox6">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkVBox" id="vbox13">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="label40">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Highlighting the run-at-line with the
+up / down buttons or entering the line
+directly.</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox12">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkButton" id="restart_line_up">
+ <property name="label" translatable="yes">Line
+ Up</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="restart_line_input">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">&#x25CF;</property>
+ <property name="adjustment">restart_adjustment</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="restart_line_down">
+ <property name="label" translatable="yes"> Line
+Down</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area6">
+ <property name="visible">True</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="restart_ok">
+ <property name="label" translatable="yes">Restart</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="restart_cancel">
+ <property name="label" translatable="yes">Cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">restart_ok</action-widget>
+ <action-widget response="0">restart_cancel</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkTextBuffer" id="alarm_buffer"/>
+ <object class="GtkAdjustment" id="adjustment_spindle">
+ <property name="value">300</property>
+ <property name="upper">3000</property>
+ <property name="step_increment">25</property>
+ </object>
+ <object class="GtkFrame" id="frame_s">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkTable" id="spindle_table">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">3</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkButton" id="spindle_preset">
+ <property name="label" translatable="yes">S 1000</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="spindle_control">
+ <property name="label" translatable="yes">Start</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="spindle_increase">
+ <property name="label" translatable="yes">+</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="spindle_decrease">
+ <property name="label" translatable="yes">-</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="s_display_fwd">
+ <property name="label" translatable="yes">Fwd</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="active">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="s_display_rev">
+ <property name="label" translatable="yes">Rev</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="EMC_Action_Home" id="hal_action_home_y">
+ <property name="confirm_homed">True</property>
+ <property name="axis">1</property>
+ </object>
+ <object class="EMC_Action_Home" id="hal_action_home_z">
+ <property name="confirm_homed">True</property>
+ <property name="axis">2</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment_so">
+ <property name="value">100</property>
+ <property name="lower">50</property>
+ <property name="upper">200</property>
+ <property name="step_increment">1</property>
+ </object>
+</interface>
diff --git a/share/gscreen/skins/gaxis_no_plot/gaxis_no_plot_handler.py b/share/gscreen/skins/gaxis_no_plot/gaxis_no_plot_handler.py
new file mode 100644
index 000000000..072a5d459
--- /dev/null
+++ b/share/gscreen/skins/gaxis_no_plot/gaxis_no_plot_handler.py
@@ -0,0 +1,189 @@
+import hal
+import gtk
+_X = 0;_Y = 1;_Z = 2;_A = 3;_B = 4;_C = 5;_U = 6;_V = 7;_W = 8
+# This is a handler file for using Gscreen's infrastructure
+# to load a completely custom glade screen
+# The only things that really matters is that it's saved as a GTK builder project,
+# the toplevel window is caller window1 (The default name) and you connect a destroy
+# window signal else you can't close down linuxcnc
+class HandlerClass:
+
+ # This will be pretty standard to gain access to everything
+ # emc is for control and status of linuxcnc
+ # data is important data from gscreen and linuxcnc
+ # widgets is all the widgets from the glade files
+ # gscreen is for access to gscreens methods
+ def __init__(self, halcomp,builder,useropts,gscreen):
+ self.emc = gscreen.emc
+ self.data = gscreen.data
+ self.widgets = gscreen.widgets
+ self.gscreen = gscreen
+
+ def jog_x(self,widget,direction,state):
+ self.gscreen.do_key_jog(_X,direction,state)
+ def jog_y(self,widget,direction,state):
+ self.gscreen.do_key_jog(_Y,direction,state)
+ def jog_z(self,widget,direction,state):
+ self.gscreen.do_key_jog(_Z,direction,state)
+
+ def on_scale_jog_value_changed(self,widget):
+ self.gscreen.set_jog_rate(absolute=widget.get_value())
+
+ def on_scale_fo_value_changed(self,widget):
+ self.gscreen.set_feed_override((widget.get_value()/100),True)
+
+ def on_scale_so_value_changed(self,widget):
+ self.gscreen.set_spindle_override((widget.get_value()/100),True)
+
+ def on_scale_mv_value_changed(self,widget):
+ self.gscreen.set_velocity_override((widget.get_value()/100),True)
+
+ def on_jog_speed_changed(self,widget):
+ self.data.current_jogincr_index = widget.get_active()
+
+ def on_show_alarm_page(self,widget):
+ self.widgets.notebook_debug.set_show_tabs(self.widgets.menuitem5.get_active())
+ self.widgets.notebook_debug.set_current_page(0)
+
+
+
+ # erase the ready-to-home message on statusbar
+ def on_hal_status_all_homed(self,widget):
+ print "all-homed"
+ self.data.all_homed = True
+ self.widgets.statusbar1.remove_message(self.gscreen.statusbar_id,self.gscreen.homed_status_message)
+
+ # when run is pressed, destroy the restart dialog if it's showing
+ def on_toolbutton_run_toggled(self,widget):
+ if not self.data.restart_dialog == None:
+ self.data.restart_dialog.destroy()
+ self.data.restart_dialog = None
+
+ # This connects signals without using glade's autoconnect method
+ def connect_signals(self,handlers):
+ signal_list = [ ["window1","destroy", "on_window1_destroy"],
+ ["restart","clicked", "launch_restart_dialog"],
+ ["metric_select","clicked","on_metric_select_clicked"],
+ ["s_run","clicked","on_button_spindle_controls_clicked"],
+ ["spindle_control","clicked", "on_spindle_control_clicked"],
+ ["spindle_preset","clicked", "on_preset_spindle"],
+ ["spindle_increase","clicked", "on_spindle_speed_adjust"],
+ ["spindle_decrease","clicked", "on_spindle_speed_adjust"],
+ ["run_halshow","clicked", "on_halshow"],
+ ["run_calibration","clicked", "on_calibration"],
+ ["run_status","clicked", "on_status"],
+ ["run_halmeter","clicked", "on_halmeter"],
+ ["run_halscope","clicked", "on_halscope"],
+ ["run_ladder","clicked", "on_ladder"],
+ ]
+ for i in signal_list:
+ if len(i) == 3:
+ self.widgets[i[0]].connect(i[1], self.gscreen[i[2]])
+ elif len(i) == 4:
+ self.widgets[i[0]].connect(i[1], self.gscreen[i[2]],i[3])
+ self.widgets.toolbutton_run.connect("toggled",self.on_toolbutton_run_toggled)
+ self.widgets.scale_jog.connect("value_changed",self.on_scale_jog_value_changed)
+ self.widgets.scale_fo.connect("value_changed",self.on_scale_fo_value_changed)
+ self.widgets.scale_so.connect("value_changed",self.on_scale_so_value_changed)
+ self.widgets.scale_mv.connect("value_changed",self.on_scale_mv_value_changed)
+ self.widgets.menuitem5.connect("activate",self.on_show_alarm_page)
+ self.widgets.jog_speed.connect("changed",self.on_jog_speed_changed)
+ self.widgets.sneg.connect("clicked",lambda i:self.gscreen.spindle_adjustment(False,True))
+ self.widgets.spos.connect("clicked",lambda i:self.gscreen.spindle_adjustment(True,True))
+ for i in('x','y','z'):
+ self.widgets['touch_off'+i].connect("clicked", self.on_touch_off_clicked,i)
+ self.widgets[i+'neg'].connect("pressed", self['jog_'+i],0,True)
+ self.widgets[i+'neg'].connect("released", self['jog_'+i],0,False)
+ self.widgets[i+'pos'].connect("pressed", self['jog_'+i],1,True)
+ self.widgets[i+'pos'].connect("released", self['jog_'+i],1,False)
+
+ # We don't want Gscreen to initialize it's regular widgets because this custom
+ # screen doesn't have most of them. So we add this function call.
+ # Since this custom screen uses gladeVCP magic for its interaction with linuxcnc
+ # We don't add much to this function, but we do want to be able to change the theme so:
+ # We change the GTK theme to what's in gscreen's preference file.
+ # gscreen.change_theme() is a method in gscreen that changes the GTK theme of window1
+ # gscreen.data.theme_name is the name of the theme from the preference file
+ # To truely be friendly, we should add a way to change the theme directly in the custom screen.
+ # we also set up the statusbar and add a ready-to-home message
+ def initialize_widgets(self):
+ self.gscreen.init_show_windows()
+ self.gscreen.init_dynamic_tabs()
+ self.gscreen.init_embeded_terminal()
+ self.gscreen.change_theme(self.data.theme_name)
+ self.gscreen.statusbar_id = self.widgets.statusbar1.get_context_id("Statusbar1")
+ self.gscreen.homed_status_message = self.widgets.statusbar1.push(1,"Ready For Homing")
+ for num,i in enumerate(self.data.jog_increments):
+ print i
+ self.widgets.jog_speed.append_text(i)
+ if i == "continuous":
+ self.data.current_jogincr_index = num
+ self.widgets.jog_speed.set_active(num)
+# self.gscreen.set_dro_units(self.data.dro_units)
+ self.widgets.adjustment_mv.set_value(self.data.maxvelocity*100)
+ self.widgets.adjustment_jog.set_upper(self.data.jog_rate_max)
+ self.widgets.adjustment_jog.set_value(self.data.jog_rate)
+ self.widgets.adjustment_fo.set_upper(self.data.feed_override_max*100)
+ self.widgets.adjustment_fo.set_value(self.data.feed_override*100)
+ self.widgets.adjustment_so.set_upper(self.data.spindle_override_max*100)
+ self.widgets.adjustment_so.set_value(self.data.spindle_override*100)
+ self.widgets.notebook_debug.set_show_tabs(False)
+ self.gscreen.keylookup.add_conversion('F4','TEST2','on_keycall_POWER')
+ #self.gscreen.keylookup.add_binding('F4','TEST2')
+ #self.gscreen.keylookup.add_call('TEST2','on_keycall_POWER')
+ # If we need extra HAL pins here is where we do it.
+ # Note you must import hal at the top of this script to do it.
+ # For gaxis there is no extra pins but since we don't want gscreen to
+ # add it's default pins we added this function
+ def initialize_pins(self):
+ pass
+
+ # checks the current operating mode according to the UI
+ def check_mode(self):
+ string = []
+ if self.data.mode_order[0] == self.data._MAN and self.widgets.notebook_main.get_current_page() == 1:
+ string.append( self.data._MAN)
+ string.append(self.data._JOG)
+ return string
+
+ # keybinding calls
+ def on_keycall_ESTOP(self,state,SHIFT,CNTRL,ALT):
+ if state:
+ self.widgets.emc_toggle_estop.emit('activate')
+ def on_keycall_POWER(self,state,SHIFT,CNTRL,ALT):
+ if state:
+ self.widgets.emc_toggle_power.emit('activate')
+
+ def on_touch_off_clicked(self,widget,axis):
+ self.gscreen.launch_numerical_input("on_offset_origin_entry_return",axis,None,"Touch off %s"% axis.upper())
+
+ def on_offset_origin_entry_return(self,widget,result,calc,axis,userdata2):
+ value = calc.get_value()
+ if result == gtk.RESPONSE_ACCEPT:
+ if value == None:
+ return
+ if not axis == "s":
+ if axis in('a','b','c'):
+ pos = self.gscreen.get_qualified_input(value,switch=_DEGREE_INPUT)
+ else:
+ pos = self.gscreen.get_qualified_input(value)
+ self.gscreen.mdi_control.set_axis(axis,pos)
+ self.gscreen.reload_plot()
+ widget.destroy()
+ self.data.entry_dialog = None
+
+ # every 100 milli seconds this gets called
+ # add pass so gscreen doesn't try to update it's regular widgets or
+ # add the individual function names that you would like to call.
+ # In this case we wish to call Gscreen's default function for units button update
+ def periodic(self):
+ self.gscreen.update_units_button_label()
+
+ def __getitem__(self, item):
+ return getattr(self, item)
+ def __setitem__(self, item, value):
+ return setattr(self, item, value)
+
+# standard handler call
+def get_handlers(halcomp,builder,useropts,gscreen):
+ return [HandlerClass(halcomp,builder,useropts,gscreen)]