diff options
author | Chris Morley <chrisinnanaimo@hotmail.com> | 2013-03-19 17:31:25 -0700 |
---|---|---|
committer | Chris Morley <chrisinnanaimo@hotmail.com> | 2013-03-20 20:26:45 -0700 |
commit | 4385710e80ab060012fa18bc9c2fac6a175d3161 (patch) | |
tree | cb617552402eedb00d4044b486cfe3636e430438 | |
parent | 24f213d401637f542396449b3d0812b5b56cc8b6 (diff) | |
download | linuxcnc-4385710e80ab060012fa18bc9c2fac6a175d3161.tar.gz linuxcnc-4385710e80ab060012fa18bc9c2fac6a175d3161.zip |
Gmoccapy -add a new Gscreen based control screen
This is very different look build by Norbert Schechner.
It was inspired by Mocca a outside source screen programed in Pascal
This uses Gscreen's framework but highly modified with a handler file.
87 files changed, 9134 insertions, 0 deletions
diff --git a/configs/sim/gmoccapy/README b/configs/sim/gmoccapy/README new file mode 100644 index 000000000..32773e827 --- /dev/null +++ b/configs/sim/gmoccapy/README @@ -0,0 +1,15 @@ +This is a simulation of an XYZ axis mill. +with metric units + +The main purpose of this is to show the posibilities +offered by gscreen to design custom screens. + +This screen is based of the design of mocca, an GUI coded in FreePascal. + +gscreen and moccapy is using Python instead. + +Feel free to send any comment to + +gmoccapy@web.de + + diff --git a/configs/sim/gmoccapy/axis_manualtoolchange.hal b/configs/sim/gmoccapy/axis_manualtoolchange.hal new file mode 120000 index 000000000..b7c30109b --- /dev/null +++ b/configs/sim/gmoccapy/axis_manualtoolchange.hal @@ -0,0 +1 @@ +../axis_manualtoolchange.hal
\ No newline at end of file diff --git a/configs/sim/gmoccapy/core_sim.hal b/configs/sim/gmoccapy/core_sim.hal new file mode 120000 index 000000000..ead328270 --- /dev/null +++ b/configs/sim/gmoccapy/core_sim.hal @@ -0,0 +1 @@ +../core_sim.hal
\ No newline at end of file diff --git a/configs/sim/gmoccapy/dro.glade b/configs/sim/gmoccapy/dro.glade new file mode 100644 index 000000000..06d54598e --- /dev/null +++ b/configs/sim/gmoccapy/dro.glade @@ -0,0 +1,278 @@ +<?xml version="1.0"?> +<interface> + <!-- interface-requires gladevcp 0.0 --> + <requires lib="gtk+" version="2.16"/> + <!-- interface-naming-policy project-wide --> + <object class="GtkWindow" id="window1"> + <property name="width_request">200</property> + <property name="height_request">712</property> + <property name="resizable">False</property> + <property name="default_width">712</property> + <property name="default_height">200</property> + <property name="icon">icon/Logo.png</property> + <child> + <object class="GtkTable" id="table1"> + <property name="visible">True</property> + <property name="n_rows">4</property> + <property name="n_columns">4</property> + <child> + <object class="HAL_DRO" id="hal_dro4"> + <property name="visible">True</property> + <property name="label" translatable="yes">label</property> + <property name="joint_number">1</property> + <property name="display_units_mm">True</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="3.000000"/> + </attributes> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="HAL_DRO" id="hal_dro5"> + <property name="visible">True</property> + <property name="label" translatable="yes">label</property> + <property name="display_units_mm">True</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="3.000000"/> + </attributes> + </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> + </packing> + </child> + <child> + <object class="HAL_DRO" id="hal_dro7"> + <property name="visible">True</property> + <property name="label" translatable="yes">label</property> + <property name="joint_number">1</property> + <property name="display_units_mm">True</property> + <property name="reference_type">2</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="3.000000"/> + </attributes> + </object> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="HAL_DRO" id="hal_dro8"> + <property name="visible">True</property> + <property name="label" translatable="yes">label</property> + <property name="display_units_mm">True</property> + <property name="reference_type">2</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="3.000000"/> + </attributes> + </object> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <object class="HAL_DRO" id="hal_dro3"> + <property name="visible">True</property> + <property name="label" translatable="yes">label</property> + <property name="joint_number">1</property> + <property name="display_units_mm">True</property> + <property name="reference_type">1</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="3.000000"/> + </attributes> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="HAL_DRO" id="hal_dro2"> + <property name="visible">True</property> + <property name="label" translatable="yes">label</property> + <property name="display_units_mm">True</property> + <property name="reference_type">1</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="3.000000"/> + </attributes> + </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> + <child> + <object class="HAL_DRO" id="hal_dro6"> + <property name="visible">True</property> + <property name="label" translatable="yes">label</property> + <property name="joint_number">2</property> + <property name="display_units_mm">True</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="3.000000"/> + </attributes> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <object class="HAL_DRO" id="hal_dro1"> + <property name="visible">True</property> + <property name="label" translatable="yes">label</property> + <property name="joint_number">2</property> + <property name="display_units_mm">True</property> + <property name="reference_type">1</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="3.000000"/> + </attributes> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <object class="HAL_DRO" id="hal_dro9"> + <property name="visible">True</property> + <property name="label" translatable="yes">label</property> + <property name="joint_number">2</property> + <property name="display_units_mm">True</property> + <property name="reference_type">2</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="3.000000"/> + </attributes> + </object> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label1"> + <property name="visible">True</property> + </object> + </child> + <child> + <object class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="label" translatable="yes">ABS</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="label" translatable="yes">REL</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label4"> + <property name="visible">True</property> + <property name="label" translatable="yes">DTG</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label5"> + <property name="visible">True</property> + <property name="label" translatable="yes">X</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label6"> + <property name="visible">True</property> + <property name="label" translatable="yes">Y</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label7"> + <property name="visible">True</property> + <property name="label" translatable="yes">Z</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + </object> + </child> + </object> +</interface> diff --git a/configs/sim/gmoccapy/gmoccapy.glade b/configs/sim/gmoccapy/gmoccapy.glade new file mode 100644 index 000000000..3acf3850e --- /dev/null +++ b/configs/sim/gmoccapy/gmoccapy.glade @@ -0,0 +1,5101 @@ +<?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="title" translatable="yes">moccapy</property> + <property name="icon">icon/Logo.png</property> + <child> + <object class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <child> + <object class="GtkHBox" id="hbox1"> + <property name="visible">True</property> + <child> + <object class="GtkHBox" id="box_left"> + <property name="visible">True</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkNotebook" id="ntb_main"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="show_tabs">False</property> + <child> + <object class="GtkVBox" id="vbox2"> + <property name="visible">True</property> + <child> + <object class="GtkHBox" id="hbox2"> + <property name="visible">True</property> + <child> + <object class="GtkVBox" id="vbox14"> + <property name="visible">True</property> + <child> + <object class="GtkNotebook" id="ntb_preview"> + <property name="visible">True</property> + <property name="show_tabs">False</property> + <property name="homogeneous">True</property> + <child> + <object class="GtkVBox" id="vbox15"> + <property name="visible">True</property> + <child> + <object class="GtkEventBox" id="eventbox_gremlin"> + <property name="visible">True</property> + <child> + <object class="HAL_Gremlin" id="gremlin"> + <property name="visible">True</property> + <property name="double_buffered">False</property> + <property name="show_dtg">False</property> + <property name="enable_dro">False</property> + <property name="use_commanded">False</property> + </object> + </child> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkTable" id="tbl_gremlin_button"> + <property name="visible">True</property> + <property name="n_columns">9</property> + <property name="column_spacing">5</property> + <child> + <object class="GtkButton" id="btn_delete_view"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">clear plot</property> + <signal name="clicked" handler="on_btn_delete_view_clicked"/> + <child> + <object class="GtkImage" id="img_tool_clear"> + <property name="visible">True</property> + <property name="pixbuf">icon/clear.png</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">8</property> + <property name="right_attach">9</property> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_zoom_in"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">Zoom in</property> + <property name="image">img_zoom_in</property> + <signal name="clicked" handler="on_btn_zoom_in_clicked"/> + </object> + <packing> + <property name="left_attach">4</property> + <property name="right_attach">5</property> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_zoom_out"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">zoom out</property> + <property name="image">img_zoom_out</property> + <signal name="clicked" handler="on_btn_zoom_out_clicked"/> + </object> + <packing> + <property name="left_attach">5</property> + <property name="right_attach">6</property> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="rbt_view_P"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="tooltip_markup">view perspective</property> + <property name="active">True</property> + <property name="draw_indicator">False</property> + <signal name="toggled" handler="on_rbt_view_P_toggled"/> + <child> + <object class="GtkImage" id="img_view_p"> + <property name="visible">True</property> + <property name="pixbuf">icon/toolaxisp.png</property> + </object> + </child> + </object> + <packing> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="rbt_view_X"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="tooltip_markup">view along the X axis from positive to negative</property> + <property name="draw_indicator">False</property> + <property name="group">rbt_view_P</property> + <signal name="toggled" handler="on_rbt_view_X_toggled"/> + <child> + <object class="GtkImage" id="img_view_x"> + <property name="visible">True</property> + <property name="pixbuf">icon/toolaxisx.png</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="rbt_view_Y"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="tooltip_markup">view along the Y axis from positive to negative</property> + <property name="draw_indicator">False</property> + <property name="group">rbt_view_P</property> + <signal name="toggled" handler="on_rbt_view_Y_toggled"/> + <child> + <object class="GtkImage" id="img_view_y"> + <property name="visible">True</property> + <property name="pixbuf">icon/toolaxisy.png</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="rbt_view_Z"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="tooltip_markup">view along the Z axis from positive to negative</property> + <property name="xalign">0.44999998807907104</property> + <property name="draw_indicator">False</property> + <property name="group">rbt_view_P</property> + <signal name="toggled" handler="on_rbt_view_Z_toggled"/> + <child> + <object class="GtkImage" id="img_view_z"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/toolaxisz.png</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="tbtn_view_tool_path"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="toggled" handler="on_tbtn_view_tool_path_toggled"/> + <child> + <object class="GtkImage" id="imimg_toll_path"> + <property name="visible">True</property> + <property name="pixbuf">icon/toolpath.png</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">7</property> + <property name="right_attach">8</property> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="tbtn_view_dimension"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="toggled" handler="on_tbtn_view_dimension_toggled"/> + <child> + <object class="GtkImage" id="img_dimensions"> + <property name="visible">True</property> + <property name="pixbuf">icon/dimensions.png</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">6</property> + <property name="right_attach">7</property> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_preview"> + <property name="visible">True</property> + <property name="label" translatable="yes">Preview</property> + </object> + <packing> + <property name="tab_fill">False</property> + </packing> + </child> + </object> + <packing> + <property name="padding">5</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="vbx_jog"> + <property name="width_request">360</property> + <property name="visible">True</property> + <child> + <object class="GtkNotebook" id="ntb_jog"> + <property name="visible">True</property> + <property name="show_tabs">False</property> + <child> + <object class="GtkVBox" id="vbox4"> + <property name="visible">True</property> + <child> + <object class="GtkHBox" id="hbox3"> + <property name="height_request">50</property> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="lbl_jog_vel"> + <property name="width_request">75</property> + <property name="visible">True</property> + <property name="label" translatable="yes">Jog. Vel.</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="HAL_HScale" id="hal_scl_jog_vel"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip_markup">adjust the jogging speed</property> + <property name="adjustment">adj_jog_vel</property> + <property name="digits">0</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox4"> + <property name="visible">True</property> + <child> + <object class="GtkVBox" id="vbox5"> + <property name="width_request">240</property> + <property name="visible">True</property> + <child> + <object class="GtkFrame" id="frm_jog_button"> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> + <object class="GtkAlignment" id="alignment2"> + <property name="visible">True</property> + <property name="top_padding">5</property> + <property name="bottom_padding">5</property> + <property name="left_padding">5</property> + <property name="right_padding">5</property> + <child> + <object class="GtkTable" id="tbl_jog_button"> + <property name="visible">True</property> + <property name="border_width">5</property> + <property name="n_rows">3</property> + <property name="n_columns">4</property> + <property name="column_spacing">3</property> + <property name="row_spacing">3</property> + <property name="homogeneous">True</property> + <child> + <object class="HAL_Button" id="hal_btn_X_minus"> + <property name="label" translatable="yes">X-</property> + <property name="width_request">50</property> + <property name="height_request">50</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">jog X axis minus</property> + <signal name="pressed" handler="on_hal_btn_jog_pressed"/> + <signal name="released" handler="on_hal_btn_jog_released"/> + </object> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + <child> + <object class="HAL_Button" id="hal_btn_X_plus"> + <property name="label" translatable="yes">X+</property> + <property name="width_request">50</property> + <property name="height_request">50</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">jog X axis plus</property> + <signal name="pressed" handler="on_hal_btn_jog_pressed"/> + <signal name="released" handler="on_hal_btn_jog_released"/> + </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> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + <child> + <object class="HAL_Button" id="hal_btn_Y_plus"> + <property name="label" translatable="yes">Y+</property> + <property name="width_request">50</property> + <property name="height_request">50</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">jog Y axis plus</property> + <signal name="pressed" handler="on_hal_btn_jog_pressed"/> + <signal name="released" handler="on_hal_btn_jog_released"/> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + <child> + <object class="HAL_Button" id="hal_btn_Y_minus"> + <property name="label" translatable="yes">Y-</property> + <property name="width_request">50</property> + <property name="height_request">50</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">jog Y axis minus</property> + <signal name="pressed" handler="on_hal_btn_jog_pressed"/> + <signal name="released" handler="on_hal_btn_jog_released"/> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + <child> + <object class="HAL_Button" id="hal_btn_Z_plus"> + <property name="label" translatable="yes">Z+</property> + <property name="width_request">50</property> + <property name="height_request">50</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">jog Z axis plus</property> + <signal name="pressed" handler="on_hal_btn_jog_pressed"/> + <signal name="released" handler="on_hal_btn_jog_released"/> + </object> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + <child> + <object class="HAL_Button" id="hal_btn_Z_minus"> + <property name="label" translatable="yes">Z-</property> + <property name="width_request">50</property> + <property name="height_request">50</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">jog Z axis minus</property> + <signal name="pressed" handler="on_hal_btn_jog_pressed"/> + <signal name="released" handler="on_hal_btn_jog_released"/> + </object> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="lbl_jogging"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Jogging</b></property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> + <property name="padding">5</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="chk_ignore_limits"> + <property name="label" translatable="yes">ignore limits</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="tooltip_markup">ignore limits / turn on this if you need to move an axis witch is in contact with the end switch</property> + <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_chk_ignore_limits_toggled"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">5</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frm_steps"> + <property name="width_request">120</property> + <property name="visible">True</property> + <property name="tooltip_markup">select jog distance</property> + <property name="label_xalign">0.5</property> + <child> + <object class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="top_padding">5</property> + <property name="bottom_padding">5</property> + <property name="left_padding">5</property> + <property name="right_padding">5</property> + <child> + <object class="GtkVButtonBox" id="vbuttonbox2"> + <property name="width_request">50</property> + <property name="visible">True</property> + <property name="spacing">3</property> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="lbl_steps"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>jog rates</b></property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="padding">3</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + <child type="tab"> + <object class="GtkLabel" id="label4"> + <property name="visible">True</property> + <property name="label" translatable="yes">Manuell</property> + </object> + <packing> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="EMC_MDIHistory" id="hal_mdihistory"> + <property name="visible">True</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label5"> + <property name="visible">True</property> + <property name="label" translatable="yes">MDI</property> + </object> + <packing> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + <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="hal_sourceview"> + <property name="visible">True</property> + <property name="can_focus">True</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">3</property> + <property name="auto_indent">True</property> + <property name="insert_spaces_instead_of_tabs">True</property> + <property name="highlight_current_line">True</property> + </object> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label6"> + <property name="visible">True</property> + <property name="label" translatable="yes">Auto</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="GtkTable" id="tbl_dro"> + <property name="visible">True</property> + <property name="border_width">5</property> + <property name="n_rows">3</property> + <property name="n_columns">3</property> + <child> + <object class="GtkToggleButton" id="tbtn_dtg"> + <property name="label" translatable="yes">DTG</property> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">show distance to go in preview window</property> + <property name="xalign">0.43000000715255737</property> + <signal name="toggled" handler="on_tbtn_dtg_toggled"/> + </object> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + <child> + <object class="GtkEventBox" id="eventbox_X"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="lbl_X"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="label" translatable="yes">X</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="3.000000"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options"></property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEventBox" id="eventbox_Y"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="lbl_Y"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="label" translatable="yes">Y</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="3.000000"/> + </attributes> + </object> + </child> + </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"></property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEventBox" id="eventbox_Z"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="lbl_Z"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="label" translatable="yes">Z</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="3.000000"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options"></property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEventBox" id="eventbox_dro_X"> + <property name="visible">True</property> + <child> + <object class="HAL_DRO" id="hal_dro_X"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="yalign">0.47999998927116394</property> + <property name="label" translatable="yes">label</property> + <property name="display_units_mm">True</property> + <property name="reference_type">1</property> + <property name="actual">False</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="foreground" value="#ffff00000000"/> + <attribute name="background" value="#000000000000"/> + <attribute name="scale" value="3.000000"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + </packing> + </child> + <child> + <object class="GtkEventBox" id="eventbox_dro_Y"> + <property name="visible">True</property> + <child> + <object class="HAL_DRO" id="hal_dro_Y"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">label</property> + <property name="joint_number">1</property> + <property name="display_units_mm">True</property> + <property name="reference_type">1</property> + <property name="actual">False</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="foreground" value="#ffff00000000"/> + <attribute name="background" value="#000000000000"/> + <attribute name="scale" value="3.000000"/> + </attributes> + </object> + </child> + </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> + <child> + <object class="GtkEventBox" id="eventbox_dro_Z"> + <property name="visible">True</property> + <child> + <object class="HAL_DRO" id="hal_dro_Z"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">label</property> + <property name="joint_number">2</property> + <property name="display_units_mm">True</property> + <property name="reference_type">1</property> + <property name="actual">False</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="foreground" value="#ffff00000000"/> + <attribute name="background" value="#000000000000"/> + <attribute name="scale" value="3.000000"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="tbtn_rel"> + <property name="label" translatable="yes">Rel.</property> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">toogle between metric and imperial units</property> + <signal name="toggled" handler="on_tbtn_rel_toggled"/> + </object> + <packing> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="tbtn_units"> + <property name="label" translatable="yes">mm</property> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">toggle between metric and d imperial units</property> + <signal name="toggled" handler="on_tbtn_units_toggled"/> + </object> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="padding">5</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="box_info"> + <property name="height_request">250</property> + <property name="visible">True</property> + <child> + <object class="GtkNotebook" id="ntb_info"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="show_tabs">False</property> + <signal name="switch_page" handler="on_ntb_info_switch_page"/> + <child> + <object class="GtkHBox" id="hbox7"> + <property name="height_request">200</property> + <property name="visible">True</property> + <child> + <object class="GtkVBox" id="vbox11"> + <property name="visible">True</property> + <child> + <object class="GtkFrame" id="frm_tool_info"> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> + <object class="GtkAlignment" id="alignment8"> + <property name="visible">True</property> + <property name="top_padding">5</property> + <property name="bottom_padding">5</property> + <property name="left_padding">5</property> + <property name="right_padding">5</property> + <child> + <object class="GtkVBox" id="vbox12"> + <property name="visible">True</property> + <child> + <object class="GtkHBox" id="hbox11"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="lbl_tool"> + <property name="visible">True</property> + <property name="label" translatable="yes">tool no.</property> + <property name="width_chars">8</property> + <attributes> + <attribute name="style" value="normal"/> + </attributes> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_diameter"> + <property name="visible">True</property> + <property name="label" translatable="yes">diameter</property> + <property name="width_chars">8</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_offset_Z"> + <property name="visible">True</property> + <property name="label" translatable="yes">offset Z</property> + <property name="width_chars">8</property> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox12"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="lbl_tool_no"> + <property name="visible">True</property> + <property name="xpad">6</property> + <property name="label" translatable="yes">0 </property> + <property name="width_chars">8</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_tool_dia"> + <property name="visible">True</property> + <property name="label" translatable="yes">0</property> + <property name="width_chars">8</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_tool_offset_Z"> + <property name="visible">True</property> + <property name="label" translatable="yes">0</property> + <property name="width_chars">8</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_tool_name"> + <property name="visible">True</property> + <property name="label" translatable="yes">No tool discription aviable</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="lbl_tool_frame"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Tool information</b></property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frm_gcode"> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> + <object class="GtkAlignment" id="alignment9"> + <property name="visible">True</property> + <property name="top_padding">5</property> + <property name="bottom_padding">5</property> + <property name="left_padding">5</property> + <property name="right_padding">5</property> + <child> + <object class="GtkVBox" id="vbox13"> + <property name="visible">True</property> + <child> + <object class="GtkHBox" id="hbox5"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="active_mcodes_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">active_mcodes_label</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_feed"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">F </property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="active_feed_label"> + <property name="width_request">50</property> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="label" translatable="yes">10000</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox10"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="active_gcodes_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">active_gcodes_label</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_speed"> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="ypad">3</property> + <property name="label" translatable="yes">S </property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="active_speed_label"> + <property name="width_request">50</property> + <property name="visible">True</property> + <property name="xalign">1</property> + <property name="ypad">3</property> + <property name="label" translatable="yes">10000</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="lbl_frame_code"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>G-Code</b></property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frm_program"> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> + <object class="GtkAlignment" id="alignment10"> + <property name="visible">True</property> + <property name="top_padding">5</property> + <property name="bottom_padding">5</property> + <property name="left_padding">5</property> + <property name="right_padding">5</property> + <child> + <object class="GtkLabel" id="lbl_program"> + <property name="visible">True</property> + <property name="label" translatable="yes">No Programm loaded</property> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="lbl_frame_program"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>program</b></property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="vbox7"> + <property name="width_request">200</property> + <property name="visible">True</property> + <child> + <object class="GtkFrame" id="frm_max_vel"> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> + <object class="GtkAlignment" id="alignment6"> + <property name="visible">True</property> + <property name="top_padding">5</property> + <property name="bottom_padding">5</property> + <property name="left_padding">5</property> + <property name="right_padding">5</property> + <child> + <object class="GtkVBox" id="vbox10"> + <property name="visible">True</property> + <child> + <object class="GtkHBox" id="hbox9"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="lbl_vel"> + <property name="visible">True</property> + <property name="label" translatable="yes">Vel.</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="1.500000"/> + </attributes> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_current_vel"> + <property name="visible">True</property> + <property name="xpad">5</property> + <property name="ypad">5</property> + <property name="label" translatable="yes">10000</property> + <property name="justify">center</property> + <attributes> + <attribute name="style" value="normal"/> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="1.500000"/> + </attributes> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHScale" id="scl_max_vel"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="adjustment">adj_max_vel</property> + <property name="show_fill_level">True</property> + <property name="digits">0</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="lbl_frame_max_speed"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>max. velocity [mm/min]</b></property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frm_feed_overide"> + <property name="width_request">200</property> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> + <object class="GtkAlignment" id="alignment5"> + <property name="visible">True</property> + <property name="top_padding">5</property> + <property name="bottom_padding">5</property> + <property name="left_padding">5</property> + <property name="right_padding">5</property> + <child> + <object class="GtkVBox" id="vbox9"> + <property name="visible">True</property> + <child> + <object class="GtkHBox" id="hbox8"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="lbl_feed_act"> + <property name="visible">True</property> + <property name="label" translatable="yes">F 275</property> + <attributes> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="1.500000"/> + </attributes> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_feed_100"> + <property name="label" translatable="yes">100%</property> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_feed_100_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHScale" id="scl_feed"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="adjustment">adj_feed</property> + <property name="lower_stepper_sensitivity">on</property> + <property name="upper_stepper_sensitivity">on</property> + <property name="show_fill_level">True</property> + <property name="restrict_to_fill_level">False</property> + <property name="digits">0</property> + <signal name="value_changed" handler="on_scl_feed_value_changed"/> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="lbl_feed_overide"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>feed overide [%]</b></property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="pack_type">end</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frm_cooling"> + <property name="width_request">125</property> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> + <object class="GtkAlignment" id="alignment3"> + <property name="visible">True</property> + <property name="xscale">0.5</property> + <property name="yscale">0</property> + <property name="top_padding">5</property> + <property name="bottom_padding">5</property> + <property name="left_padding">5</property> + <property name="right_padding">5</property> + <child> + <object class="GtkTable" id="tbl_cooling"> + <property name="visible">True</property> + <property name="n_rows">2</property> + <property name="column_spacing">10</property> + <property name="homogeneous">True</property> + <child> + <object class="GtkToggleButton" id="tbtn_flood"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="image">img_coolant_off</property> + <signal name="toggled" handler="on_tbtn_flood_toggled"/> + </object> + <packing> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + <property name="y_padding">5</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="tbtn_mist"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="image">img_mist_off</property> + <signal name="toggled" handler="on_tbtn_mist_toggled"/> + </object> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_SHRINK</property> + <property name="y_options">GTK_SHRINK</property> + <property name="y_padding">5</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="lbl_frame_coolant"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>cooling</b></property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frm_spindle"> + <property name="width_request">200</property> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> + <object class="GtkAlignment" id="alignment4"> + <property name="visible">True</property> + <property name="top_padding">5</property> + <property name="bottom_padding">5</property> + <property name="left_padding">5</property> + <property name="right_padding">5</property> + <child> + <object class="GtkVBox" id="vbox8"> + <property name="visible">True</property> + <child> + <object class="GtkVBox" id="vbox16"> + <property name="visible">True</property> + <child> + <object class="GtkHBox" id="hbox6"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="lbl_spindle_act"> + <property name="visible">True</property> + <property name="label" translatable="yes">S 3500</property> + <attributes> + <attribute name="weight" value="bold"/> + <attribute name="scale" value="1.500000"/> + </attributes> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_actual_spindle_speed"> + <property name="visible">True</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_spindle_100"> + <property name="label" translatable="yes">100%</property> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_spindle_100_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHScale" id="scl_spindle"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="adjustment">adj_spindle</property> + <property name="digits">0</property> + <signal name="value_changed" handler="on_scl_spindle_value_changed"/> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="vbox6"> + <property name="visible">True</property> + <child> + <object class="GtkTable" id="table5"> + <property name="visible">True</property> + <property name="n_columns">3</property> + <child> + <object class="GtkRadioButton" id="rbt_reverse"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">False</property> + <property name="group">rbt_stop</property> + <signal name="clicked" handler="on_rbt_reverse_clicked"/> + <child> + <object class="GtkImage" id="img_reverse"> + <property name="visible">True</property> + <property name="pixbuf">icon/reverse.png</property> + </object> + </child> + </object> + </child> + <child> + <object class="GtkRadioButton" id="rbt_forward"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">False</property> + <property name="group">rbt_stop</property> + <signal name="clicked" handler="on_rbt_forward_clicked"/> + <child> + <object class="GtkImage" id="img_spindle_forward"> + <property name="visible">True</property> + <property name="pixbuf">icon/forward.png</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="rbt_stop"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="active">True</property> + <property name="draw_indicator">False</property> + <signal name="clicked" handler="on_rbt_stop_clicked"/> + <child> + <object class="GtkImage" id="img_spindle_stop"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/stop.gif</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + </packing> + </child> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox13"> + <property name="visible">True</property> + <child> + <object class="HAL_HBar" id="hal_hbar_spindle_feedback"> + <property name="visible">True</property> + <property name="z1_border">0.80000001192092896</property> + <property name="z0_color">#0000ffff0000</property> + <property name="max">6000</property> + <property name="text_template">%i</property> + <property name="target_color">#a0a02020f0f0</property> + <property name="bg_color">#bebebebebebe</property> + <property name="z1_color">#ffffffff0000</property> + <property name="z2_color">#ffff00000000</property> + <property name="z0_border">0.40000000596046448</property> + <signal name="hal_pin_changed" handler="on_hal_hbar_spindle_feedback_hal_pin_changed"/> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="HAL_LED" id="hal_led_spindle_at_speed"> + <property name="visible">True</property> + <property name="on_color">green</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="label17"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>spindel [rpm]</b></property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + </object> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_ntb_info_info"> + <property name="visible">True</property> + <property name="label" translatable="yes">info</property> + </object> + <packing> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkTable" id="tbl_keypad"> + <property name="visible">True</property> + <property name="n_rows">5</property> + <property name="n_columns">12</property> + <property name="column_spacing">5</property> + <property name="row_spacing">5</property> + <child> + <object class="GtkButton" id="btn_spc"> + <property name="label" translatable="yes">SPC</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">6</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_8"> + <property name="label" translatable="yes">8</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked" object="btn_8"/> + </object> + <packing> + <property name="left_attach">7</property> + <property name="right_attach">8</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_9"> + <property name="label" translatable="yes">9</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked" object="btn_9"/> + </object> + <packing> + <property name="left_attach">8</property> + <property name="right_attach">9</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_7"> + <property name="label" translatable="yes">7</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked" object="btn_7"/> + </object> + <packing> + <property name="left_attach">6</property> + <property name="right_attach">7</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_6"> + <property name="label" translatable="yes">6</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked" object="btn_6"/> + </object> + <packing> + <property name="left_attach">5</property> + <property name="right_attach">6</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_0"> + <property name="label" translatable="yes">0</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked" object="btn_0"/> + </object> + <packing> + <property name="left_attach">9</property> + <property name="right_attach">10</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_5"> + <property name="label" translatable="yes">5</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked" object="btn_5"/> + </object> + <packing> + <property name="left_attach">4</property> + <property name="right_attach">5</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_4"> + <property name="label" translatable="yes">4</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked" object="btn_4"/> + </object> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_3"> + <property name="label" translatable="yes">3</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked" object="btn_3"/> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_F"> + <property name="label" translatable="yes">F</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked" object="btn_F"/> + </object> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_2"> + <property name="label" translatable="yes">2</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked" object="btn_2"/> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_1"> + <property name="label" translatable="yes">1</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked" object="btn_1"/> + </object> + </child> + <child> + <object class="GtkButton" id="btn_Q"> + <property name="label" translatable="yes">Q</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_S"> + <property name="label" translatable="yes">S</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_G"> + <property name="label" translatable="yes">G</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">4</property> + <property name="right_attach">5</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_Z"> + <property name="label" translatable="yes">Z</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">5</property> + <property name="right_attach">6</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_P"> + <property name="label" translatable="yes">P</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked" object="btn_P"/> + </object> + <packing> + <property name="left_attach">9</property> + <property name="right_attach">10</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_I"> + <property name="label" translatable="yes">I</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">7</property> + <property name="right_attach">8</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_J"> + <property name="label" translatable="yes">J</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">6</property> + <property name="right_attach">7</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_K"> + <property name="label" translatable="yes">K</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">7</property> + <property name="right_attach">8</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_Y"> + <property name="label" translatable="yes">Y</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_X"> + <property name="label" translatable="yes">X</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_T"> + <property name="label" translatable="yes">T</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">4</property> + <property name="right_attach">5</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_M"> + <property name="label" translatable="yes">M</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">6</property> + <property name="right_attach">7</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_W"> + <property name="label" translatable="yes">W</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </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> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_E"> + <property name="label" translatable="yes">E</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </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> + <child> + <object class="GtkButton" id="btn_R"> + <property name="label" translatable="yes">R</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_U"> + <property name="label" translatable="yes">U</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">6</property> + <property name="right_attach">7</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_O"> + <property name="label" translatable="yes">O</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">8</property> + <property name="right_attach">9</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_A"> + <property name="label" translatable="yes">A</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_D"> + <property name="label" translatable="yes">D</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_H"> + <property name="label" translatable="yes">H</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">5</property> + <property name="right_attach">6</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_L"> + <property name="label" translatable="yes">L</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">8</property> + <property name="right_attach">9</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_C"> + <property name="label" translatable="yes">C</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_V"> + <property name="label" translatable="yes">V</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_B"> + <property name="label" translatable="yes">B</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">4</property> + <property name="right_attach">5</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_N"> + <property name="label" translatable="yes">N</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">5</property> + <property name="right_attach">6</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_dot"> + <property name="label" translatable="yes">,</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">7</property> + <property name="right_attach">8</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_bs"> + <property name="label" translatable="yes"><--</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_bs_clicked"/> + </object> + <packing> + <property name="left_attach">10</property> + <property name="right_attach">12</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_ok"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="image">img_mdi_ok</property> + <signal name="clicked" handler="on_btn_ok_clicked"/> + </object> + <packing> + <property name="left_attach">10</property> + <property name="right_attach">12</property> + <property name="top_attach">3</property> + <property name="bottom_attach">5</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_raute"> + <property name="label" translatable="yes">#</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">9</property> + <property name="right_attach">10</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_eka"> + <property name="label" translatable="yes">[</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">6</property> + <property name="right_attach">7</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_ekz"> + <property name="label" translatable="yes">]</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">7</property> + <property name="right_attach">8</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_minus"> + <property name="label" translatable="yes">-</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">8</property> + <property name="right_attach">9</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_+"> + <property name="label" translatable="yes">+</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">9</property> + <property name="right_attach">10</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_<"> + <property name="label" translatable="yes"><</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">8</property> + <property name="right_attach">9</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_>"> + <property name="label" translatable="yes">></property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_MDI_key_clicked"/> + </object> + <packing> + <property name="left_attach">9</property> + <property name="right_attach">10</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_left"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_arrow_clicked"/> + <child> + <object class="GtkImage" id="img_left"> + <property name="visible">True</property> + <property name="stock">gtk-go-back</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">10</property> + <property name="right_attach">11</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_right"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_arrow_clicked"/> + <child> + <object class="GtkImage" id="img_right"> + <property name="visible">True</property> + <property name="stock">gtk-go-forward</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">11</property> + <property name="right_attach">12</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_up"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_arrow_clicked"/> + <child> + <object class="GtkImage" id="img_up"> + <property name="visible">True</property> + <property name="stock">gtk-go-up</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">10</property> + <property name="right_attach">11</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_down"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_arrow_clicked"/> + <child> + <object class="GtkImage" id="img_down"> + <property name="visible">True</property> + <property name="stock">gtk-go-down</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">11</property> + <property name="right_attach">12</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="tbtn_shift"> + <property name="label" translatable="yes">SHIFT</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="toggled" handler="on_tbtn_shift_toggled"/> + </object> + <packing> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_keyboard"> + <property name="visible">True</property> + <property name="label" translatable="yes">keyboard</property> + </object> + <packing> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frm_message"> + <property name="height_request">50</property> + <property name="visible">True</property> + <property name="label_xalign">0.5</property> + <child> + <object class="GtkStatusbar" id="statusbar1"> + <property name="visible">True</property> + <property name="spacing">2</property> + <property name="has_resize_grip">False</property> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="lbl_frame_information"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>messages</b></property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_ntb_main_main"> + <property name="visible">True</property> + <property name="label" translatable="yes">main</property> + </object> + <packing> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkNotebook" id="ntb_setup"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <child> + <object class="GtkScrolledWindow" id="terminal_window"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <property name="shadow_type">out</property> + <child> + <placeholder/> + </child> + </object> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_ntb_setup_debug"> + <property name="visible">True</property> + <property name="label" translatable="yes">Debug</property> + </object> + <packing> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkTable" id="tbl_setup_page"> + <property name="visible">True</property> + <property name="n_columns">3</property> + <child> + <object class="GtkTable" id="table9"> + <property name="visible">True</property> + <property name="n_rows">9</property> + <property name="n_columns">2</property> + <child> + <object class="GtkComboBox" id="theme_choice"> + <property name="visible">True</property> + <property name="model">lstst_themes</property> + <signal name="changed" handler="on_theme_choice_changed"/> + <child> + <object class="GtkCellRendererText" id="cellrenderertext1"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options"></property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label11"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Themes</property> + </object> + <packing> + <property name="x_options"></property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkColorButton" id="rel_colorbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="color">#000000000000</property> + <signal name="color_set" handler="on_rel_colorbutton_color_set"/> + </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> + </packing> + </child> + <child> + <object class="GtkLabel" id="label13"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Relative Text Color</property> + </object> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label19"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Absolute Text Color</property> + </object> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkColorButton" id="abs_colorbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="color">#000000000000</property> + <signal name="color_set" handler="on_abs_colorbutton_color_set"/> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + </packing> + </child> + <child> + <object class="GtkColorButton" id="dtg_colorbutton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="color">#000000000000</property> + <signal name="color_set" handler="on_dtg_colorbutton_color_set"/> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label21"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">DTG Text Color</property> + </object> + <packing> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <object class="GtkFileChooserButton" id="audio_error_chooser"> + <property name="visible">True</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label25"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Warning Audio</property> + </object> + <packing> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label27"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Alert Audio</property> + </object> + <packing> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> + </packing> + </child> + <child> + <object class="GtkFileChooserButton" id="audio_alert_chooser"> + <property name="visible">True</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Grid Size</property> + </object> + <packing> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + </packing> + </child> + <child> + <object class="GtkSpinButton" id="grid_size"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">●</property> + <property name="adjustment">adj_grid_size</property> + <property name="digits">3</property> + <signal name="value_changed" handler="on_grid_size_value_changed"/> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label29"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Starting RPM</property> + </object> + <packing> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> + </packing> + </child> + <child> + <object class="GtkSpinButton" id="sbtn_spindle_start_rpm"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip_markup">this is to set the spindle startup velocity in rpm</property> + <property name="invisible_char">●</property> + <property name="activates_default">True</property> + <property name="xalign">1</property> + <property name="shadow_type">etched-in</property> + <property name="adjustment">adj_start_spindle_RPM</property> + <property name="climb_rate">1</property> + <property name="numeric">True</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> + </packing> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkTable" id="tbl_settings_button"> + <property name="visible">True</property> + <property name="n_rows">6</property> + <property name="n_columns">2</property> + <property name="homogeneous">True</property> + <child> + <object class="GtkToggleButton" id="btn_dro_units"> + <property name="label" translatable="yes">Metric +</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_not_implemented_clicked"/> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="btn_use_screen2"> + <property name="label" translatable="yes"> Display +Aux Screen</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_not_implemented_clicked"/> + </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> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="btn_fullscreen1"> + <property name="label" translatable="yes"> Gscreen +Fullscreen</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="toggled" handler="on_btn_fullscreen1_toggled"/> + </object> + </child> + <child> + <object class="GtkToggleButton" id="hide_cursor"> + <property name="label" translatable="yes">Hide Pointer</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="toggled" handler="on_hide_cursor_toggled"/> + </object> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="show_offsets"> + <property name="label" translatable="yes"> Show +Offsets</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="toggled" handler="on_show_offsets_toggled"/> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_shut_down"> + <property name="label">gtk-quit</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + <signal name="clicked" handler="on_btn_exit_clicked"/> + </object> + <packing> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="tbtn_show_dtg"> + <property name="label" translatable="yes">Show + DTG</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="toggled" handler="on_tbtn_show_dtg_toggled"/> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + </object> + <packing> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space1"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + </object> + <packing> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space2"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space3"> + <property name="visible">True</property> + <property name="label" translatable="yes"> </property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="tbtn_show_dro"> + <property name="label" translatable="yes">Gremlin + DRO</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="toggled" handler="on_tbtn_show_dro_toggled"/> + </object> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + </object> + <packing> + <property name="x_options">GTK_EXPAND</property> + <property name="y_options">GTK_EXPAND</property> + </packing> + </child> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_ntb_setup_settings"> + <property name="visible">True</property> + <property name="label" translatable="yes">settings</property> + </object> + <packing> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="scw_alarm_history"> + <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="cursor_visible">False</property> + <property name="buffer">alarm_buffer</property> + </object> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_ntb_setup_alarm_history"> + <property name="visible">True</property> + <property name="label" translatable="yes">Alarm History</property> + </object> + <packing> + <property name="position">2</property> + <property name="tab_fill">False</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_ntb_main_settings"> + <property name="visible">True</property> + <property name="label" translatable="yes">settings</property> + </object> + <packing> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="ToolEdit" id="tooledit1"> + <property name="visible">True</property> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_ntb_main_tool_edit"> + <property name="visible">True</property> + <property name="label" translatable="yes">Tool Editor</property> + </object> + <packing> + <property name="position">2</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkNotebook" id="ntb_user_tabs"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <child> + <object class="GtkEventBox" id="eventbox1"> + <property name="visible">True</property> + <child> + <placeholder/> + </child> + </object> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_ntb_user_tab"> + <property name="visible">True</property> + <property name="label" translatable="yes">User Tab 1</property> + </object> + <packing> + <property name="tab_fill">False</property> + </packing> + </child> + </object> + <packing> + <property name="position">3</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_user_tabs"> + <property name="visible">True</property> + <property name="label" translatable="yes">user tabs</property> + </object> + <packing> + <property name="position">3</property> + <property name="tab_fill">False</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="box_right"> + <property name="visible">True</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkVButtonBox" id="vbtb_main"> + <property name="width_request">100</property> + <property name="visible">True</property> + <property name="spacing">3</property> + <property name="homogeneous">True</property> + <property name="layout_style">spread</property> + <child> + <object class="HAL_ToggleButton" id="hal_tbtn_notaus"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="related_action">hal_toggleaction_estop</property> + <property name="active">True</property> + <signal name="toggled" handler="on_hal_tbtn_notaus_toggled"/> + <child> + <object class="GtkImage" id="img_emergency"> + <property name="visible">True</property> + <property name="tooltip_markup">toggle emergency exit</property> + <property name="pixbuf">icon/exit.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="HAL_ToggleButton" id="hal_tbtn_on"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="related_action">hal_toggleaction_power</property> + <signal name="toggled" handler="on_hal_tbtn_on_toggled"/> + <child> + <object class="GtkImage" id="img_machine_off"> + <property name="visible">True</property> + <property name="tooltip_markup">switch on the machine</property> + <property name="pixbuf">icon/machineonoff.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="rbt_manual"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="has_default">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">enter manual mode to jog axis by hand or touch off</property> + <property name="use_action_appearance">True</property> + <property name="image">img_manual</property> + <property name="draw_indicator">False</property> + <property name="group">rbt_auto</property> + <signal name="clicked" handler="on_rbt_manual_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="rbt_mdi"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="tooltip_markup">enter MDI mode to launch g-code commands</property> + <property name="image">img_mdi</property> + <property name="draw_indicator">False</property> + <property name="group">rbt_auto</property> + <signal name="clicked" handler="on_rbt_mdi_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="rbt_auto"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="image">img_auto</property> + <property name="active">True</property> + <property name="draw_indicator">False</property> + <signal name="clicked" handler="on_rbt_auto_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">4</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="rbt_setup"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="tooltip_markup">Enter the setup page to adjust program options</property> + <property name="draw_indicator">False</property> + <property name="group">rbt_auto</property> + <signal name="pressed" handler="on_rbt_setup_pressed"/> + <child> + <object class="GtkImage" id="img_settings"> + <property name="visible">True</property> + <property name="pixbuf">icon/configure-2.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">5</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="tbtn_user_tabs"> + <property name="label" translatable="yes">tabs</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <signal name="toggled" handler="on_tbtn_user_tabs_toggled"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">6</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">3</property> + </packing> + </child> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkNotebook" id="ntb_button"> + <property name="visible">True</property> + <property name="show_tabs">False</property> + <property name="show_border">False</property> + <signal name="switch_page" handler="on_ntb_button_switch_page"/> + <child> + <object class="GtkHButtonBox" id="hbtb_main"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <child> + <object class="GtkButton" id="btn_homing"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">open homing button list</property> + <property name="image">img_ref</property> + <signal name="clicked" handler="on_btn_homing_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_touch"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">open touch off button list</property> + <property name="image">img_touch_off</property> + <signal name="clicked" handler="on_btn_touch_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_2"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_tool"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">Open the tooleditor page</property> + <property name="image_position">top</property> + <signal name="clicked" handler="on_btn_tool_clicked"/> + <child> + <object class="GtkImage" id="img_tools"> + <property name="visible">True</property> + <property name="pixbuf">icon/tools.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_21"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">4</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_7"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">5</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_9"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">6</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="tbtn_fullsize_preview"> + <property name="label" translatable="yes"> fullsize +preview</property> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="toggled" handler="on_tbtn_fullsize_preview_toggled"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">7</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_3"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">8</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_exit"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">Close moccapy / leave the program</property> + <property name="image">img_close</property> + <signal name="clicked" handler="on_btn_exit_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">9</property> + </packing> + </child> + </object> + <packing> + <property name="tab_fill">False</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_ntb_button_manuel"> + <property name="visible">True</property> + <property name="label" translatable="yes">manuel button list</property> + </object> + <packing> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkHButtonBox" id="hbtb_MDI"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <object class="GtkButton" id="btn_show_kbd"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">This button will show or hide the Keyboard</property> + <property name="xalign">0.51999998092651367</property> + <signal name="clicked" handler="on_btn_show_kbd_clicked"/> + <child> + <object class="GtkImage" id="img_keyboard"> + <property name="visible">True</property> + <property name="pixbuf">icon/keyboard.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">9</property> + <property name="secondary">True</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_ntb_button_mdi"> + <property name="visible">True</property> + <property name="label" translatable="yes">MDI button list</property> + </object> + <packing> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkHButtonBox" id="hbtb_auto"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <child> + <object class="GtkButton" id="btn_run"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">run the loaded programm</property> + <property name="related_action">hal_action_run</property> + <property name="image">img_run</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="btn_stop"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">stop the running program</property> + <property name="related_action">hal_action_stop</property> + <property name="image">img_stop</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_step"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">run the programm step by step</property> + <property name="related_action">hal_action_step</property> + <property name="image">img_step</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="tbtn_pause"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="related_action">hal_toggleaction_pause</property> + <signal name="toggled" handler="on_tbtn_pause_toggled"/> + <child> + <object class="GtkImage" id="img_pause"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="tooltip_markup">pause the running program</property> + <property name="pixbuf">icon/pause.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_from_line"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">run from line</property> + <property name="image">img_run_from</property> + <signal name="clicked" handler="on_btn_from_line_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">4</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="tbtn_optional_stops"> + <property name="label" translatable="yes">M1</property> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">ignore optional stops? Pushed meen ignore all M1 commands!</property> + <property name="tooltip_text" translatable="yes">Ignore or not the optional stopps. A pushed button will result in ignoring all M1 commands. The button will indicate a yellow background.</property> + <signal name="toggled" handler="on_tbtn_optional_stops_toggled"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">5</property> + </packing> + </child> + <child> + <object class="GtkToggleButton" id="tbtn_optional_blocks"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">If the button is pushed, optional blocks will not be machined.</property> + <property name="tooltip_text" translatable="yes">Machine or not the optional blocks of the program. If the button is pressed, the optional blocks will not be machined. The button will indicate this by a yellow background.</property> + <signal name="toggled" handler="on_tbtn_optional_blocks_toggled"/> + <child> + <object class="GtkImage" id="img_optional_blocks"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/tool_blockdelete.gif</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">6</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_reload"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">reload the program, you need to do that after editing</property> + <property name="related_action">hal_action_reload</property> + <property name="image">img_reload</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">7</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_load"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">load a program</property> + <property name="related_action">hal_action_open</property> + <property name="image">img_open</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">8</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_edit"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">edit the program</property> + <property name="image">img_editor</property> + <signal name="clicked" handler="on_btn_edit_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">9</property> + </packing> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_ntb_button_auto"> + <property name="visible">True</property> + <property name="label" translatable="yes">Auto button list</property> + </object> + <packing> + <property name="position">2</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkHButtonBox" id="hbtb_ref"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <child> + <object class="GtkLabel" id="lbl_space_8"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">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="btn_home_all"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">home all axis</property> + <signal name="clicked" handler="on_btn_home_all_clicked"/> + <child> + <object class="GtkImage" id="img_home_all"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/refall.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_4"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_home_X"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">home X axis</property> + <signal name="clicked" handler="on_btn_home_selected_clicked"/> + <child> + <object class="GtkImage" id="img_home_x"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/refx.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_home_Y"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">home Y axis</property> + <signal name="clicked" handler="on_btn_home_selected_clicked"/> + <child> + <object class="GtkImage" id="img_home_y"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/refy.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_home_Z"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">home Z axis</property> + <signal name="clicked" handler="on_btn_home_selected_clicked"/> + <child> + <object class="GtkImage" id="img_home_z"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/refz.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">5</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_5"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">6</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_unhome_all"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">unhome all axis</property> + <signal name="clicked" handler="on_btn_unhome_all_clicked"/> + <child> + <object class="GtkImage" id="img_unhome_all"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/unhome.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">7</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_6"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">8</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_back_ref"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">go back to main button list</property> + <property name="image">img_back_ref</property> + <signal name="clicked" handler="on_btn_back_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">9</property> + </packing> + </child> + </object> + <packing> + <property name="position">3</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_btn_homing"> + <property name="label">homing button</property> + </object> + <packing> + <property name="position">3</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkHButtonBox" id="hbtb_touch_off"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <child> + <object class="GtkLabel" id="lbl_space_11"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">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="btn_cero_X"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">ttouch off X / set X to 0</property> + <signal name="clicked" handler="on_btn_cero_X_clicked"/> + <child> + <object class="GtkImage" id="img_cero_x"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/touchoffx.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_cero_Y"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">touch off Y / set Y to 0</property> + <signal name="clicked" handler="on_btn_cero_Y_clicked"/> + <child> + <object class="GtkImage" id="img_cero_Y"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/touchoffy.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_cero_Z"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">touch off Z / set to 0</property> + <signal name="clicked" handler="on_btn_cero_Z_clicked"/> + <child> + <object class="GtkImage" id="img_cero_Z"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="tooltip_markup">touch off Z / set Z to 0</property> + <property name="pixbuf">icon/touchoffz.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_13"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_set_value_X"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">touch off X / set X to an desired value</property> + <signal name="clicked" handler="on_btn_set_value_clicked"/> + <child> + <object class="GtkImage" id="img_set_value_X"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/touchoffx_value.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">5</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_set_value_Y"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">touch off Y / set Y to an desired value</property> + <signal name="clicked" handler="on_btn_set_value_clicked"/> + <child> + <object class="GtkImage" id="img_set_value_Z"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/touchoffy_value.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">6</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_set_value_Z"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">touch off Z / set Z to an desired value</property> + <signal name="clicked" handler="on_btn_set_value_clicked"/> + <child> + <object class="GtkImage" id="img_cero_x3"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/touchoffz_value.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">7</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_16"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">8</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_back_cero"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">go back to main button list</property> + <property name="image">img_back_cero</property> + <signal name="clicked" handler="on_btn_back_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">9</property> + </packing> + </child> + </object> + <packing> + <property name="position">4</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_btn_touch_off"> + <property name="visible">True</property> + <property name="label" translatable="yes">touch_off button</property> + </object> + <packing> + <property name="position">4</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkHButtonBox" id="hbtb_setup"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <child> + <object class="GtkButton" id="btn_delete"> + <property name="label" translatable="yes">delete MDI</property> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">delete MDI history</property> + <signal name="clicked" handler="on_btn_delete_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_17"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_1"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_15"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_14"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_hal_scope"> + <property name="label" translatable="yes">Hal-Scope</property> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">launch hal scope</property> + <signal name="clicked" handler="on_btn_hal_scope_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">5</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_status"> + <property name="label" translatable="yes">Status</property> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">launch linuxcnc status window</property> + <signal name="clicked" handler="on_btn_status_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">6</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_hal_meter"> + <property name="label" translatable="yes">Hal Meter</property> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">launch hal meter</property> + <property name="xalign">0.51999998092651367</property> + <signal name="clicked" handler="on_btn_hal_meter_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">7</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_calibration"> + <property name="label" translatable="yes">Calibration</property> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">launch calibration window</property> + <signal name="clicked" handler="on_btn_calibration_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">8</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_show_hal"> + <property name="label" translatable="yes">Halshow</property> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">opens the show hal tool</property> + <signal name="clicked" handler="on_btn_show_hal_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">9</property> + </packing> + </child> + </object> + <packing> + <property name="position">5</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_ntb_button_setup"> + <property name="visible">True</property> + <property name="label" translatable="yes">setup button list</property> + </object> + <packing> + <property name="position">5</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkHButtonBox" id="hbtb_edit"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <child> + <object class="GtkLabel" id="lbl_space_19"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">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="btn_save"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">save the file with the original name</property> + <property name="related_action">hal_action_save</property> + <property name="image_position">right</property> + <child> + <object class="GtkImage" id="img_save"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="stock">gtk-save</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_save_as"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">save the file with a new name</property> + <property name="related_action">hal_action_saveas</property> + <child> + <object class="GtkImage" id="img_save_as"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="stock">gtk-save-as</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_save_and_run"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">save the programm, reload it and run the program</property> + <property name="tooltip_text" translatable="yes"> </property> + <signal name="clicked" handler="on_btn_save_and_run_clicked"/> + <child> + <object class="GtkImage" id="img_save_and_run"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="stock">gtk-media-play</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_23"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_new"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">clear the edit field and make a new file</property> + <signal name="clicked" handler="on_btn_new_clicked"/> + <child> + <object class="GtkImage" id="img_new"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="stock">gtk-new</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">5</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_open"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">open a file to edit</property> + <property name="related_action">hal_action_open</property> + <child> + <object class="GtkImage" id="img_open_edit"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="stock">gtk-open</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">6</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_close"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_markup">close the editor without saving any changes</property> + <signal name="clicked" handler="on_btn_close_clicked"/> + <child> + <object class="GtkImage" id="img_clos"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="stock">gtk-close</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">7</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_keyb"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_show_kbd_clicked"/> + <child> + <object class="GtkImage" id="img_keyboard2"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/keyboard.png</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">8</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_back_edit"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="image">img_back_cero1</property> + <signal name="clicked" handler="on_btn_back_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">9</property> + </packing> + </child> + </object> + <packing> + <property name="position">6</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_ntb_button_edit"> + <property name="visible">True</property> + <property name="label" translatable="yes">edit buttons</property> + </object> + <packing> + <property name="position">6</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkHButtonBox" id="hbuttonbox1"> + <property name="visible">True</property> + <child> + <object class="GtkButton" id="btn_delete_tool"> + <property name="label" translatable="yes">Delete</property> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_delete_tool_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_add_tool"> + <property name="label" translatable="yes">Add</property> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_add_tool_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_reload_tooltable"> + <property name="label" translatable="yes">Reload</property> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_text" translatable="yes"> </property> + <signal name="clicked" handler="on_btn_reload_tooltable_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_apply_tool_changes"> + <property name="label" translatable="yes">Apply</property> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_apply_tool_changes_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_18"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_index_tool"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_btn_selected_tool_clicked"/> + <child> + <object class="GtkImage" id="img_index_tool"> + <property name="visible">True</property> + <property name="pixbuf">icon/index_tool.svg</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">5</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_change_tool"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="image">img_toolchange</property> + <signal name="clicked" handler="on_btn_selected_tool_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">6</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_20"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">7</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lbl_space_22"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">8</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btn_back_tool"> + <property name="width_request">56</property> + <property name="height_request">56</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="image">img_back_tool</property> + <signal name="clicked" handler="on_btn_back_clicked"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">9</property> + </packing> + </child> + </object> + <packing> + <property name="position">7</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="lbl_ntb_button_tool"> + <property name="visible">True</property> + <property name="label" translatable="yes">tool</property> + </object> + <packing> + <property name="position">7</property> + <property name="tab_fill">False</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + <object class="GtkAdjustment" id="adj_jog_vel"> + <property name="value">1500</property> + <property name="upper">10500</property> + <property name="step_increment">50</property> + <property name="page_increment">500</property> + <property name="page_size">500</property> + <signal name="value_changed" handler="on_adj_jog_vel_value_changed"/> + </object> + <object class="GtkActionGroup" id="actiongroup1"/> + <object class="GtkImage" id="img_emergency_off"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/E-Stop.gif</property> + </object> + <object class="GtkAdjustment" id="adj_spindle"> + <property name="value">100</property> + <property name="upper">6000</property> + <property name="step_increment">1</property> + <property name="page_increment">1</property> + <property name="page_size">1</property> + </object> + <object class="GtkAdjustment" id="adj_feed"> + <property name="value">100</property> + <property name="lower">10</property> + <property name="upper">160</property> + <property name="step_increment">10</property> + <property name="page_increment">10</property> + <property name="page_size">10</property> + </object> + <object class="GtkAdjustment" id="adj_max_vel"> + <property name="value">1800</property> + <property name="lower">100</property> + <property name="upper">8500</property> + <property name="step_increment">100</property> + <property name="page_increment">50</property> + <property name="page_size">50</property> + </object> + <object class="GtkImage" id="img_machine_on"> + <property name="visible">True</property> + <property name="pixbuf">icon/machineonoff.png</property> + </object> + <object class="GtkImage" id="img_ref"> + <property name="visible">True</property> + <property name="pixbuf">icon/refall.png</property> + </object> + <object class="EMC_ToggleAction_ESTOP" id="hal_toggleaction_estop"/> + <object class="EMC_ToggleAction_Power" id="hal_toggleaction_power"/> + <object class="EMC_Action_Run" id="hal_action_run"/> + <object class="EMC_Action_Step" id="hal_action_step"/> + <object class="EMC_Action_Stop" id="hal_action_stop"/> + <object class="EMC_ToggleAction_Pause" id="hal_toggleaction_pause"/> + <object class="EMC_Action_Open" id="hal_action_open"/> + <object class="EMC_Action_Reload" id="hal_action_reload"/> + <object class="GtkImage" id="img_unhome"> + <property name="visible">True</property> + <property name="pixbuf">icon/unhome.png</property> + </object> + <object class="GtkImage" id="img_forward"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/forward.png</property> + </object> + <object class="GtkImage" id="img_forward_on"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/forward_on.gif</property> + </object> + <object class="GtkImage" id="img_reverse_on"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/reverse_on.gif</property> + </object> + <object class="GtkImage" id="img_sstop"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/stop_on.gif</property> + </object> + <object class="GtkImage" id="img_stop_on"> + <property name="width_request">48</property> + <property name="height_request">48</property> + <property name="visible">True</property> + <property name="pixbuf">icon/stop.gif</property> + </object> + <object class="GtkImage" id="img_close"> + <property name="visible">True</property> + <property name="pixbuf">icon/exit_application.png</property> + </object> + <object class="GtkImage" id="img_run"> + <property name="visible">True</property> + <property name="pixbuf">icon/start.png</property> + </object> + <object class="GtkImage" id="img_stop"> + <property name="visible">True</property> + <property name="pixbuf">icon/stop.png</property> + </object> + <object class="GtkImage" id="img_step"> + <property name="visible">True</property> + <property name="pixbuf">icon/step.png</property> + </object> + <object class="GtkImage" id="img_run_from"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="pixbuf">icon/runfrom.png</property> + </object> + <object class="GtkImage" id="img_reload"> + <property name="visible">True</property> + <property name="pixbuf">icon/reload.png</property> + </object> + <object class="GtkImage" id="img_open"> + <property name="visible">True</property> + <property name="stock">gtk-open</property> + </object> + <object class="GtkImage" id="img_editor"> + <property name="visible">True</property> + <property name="pixbuf">icon/editor.png</property> + </object> + <object class="GtkImage" id="img_back_ref"> + <property name="visible">True</property> + <property name="icon_name">edit-undo</property> + </object> + <object class="GtkImage" id="img_back_cero"> + <property name="visible">True</property> + <property name="icon_name">edit-undo</property> + </object> + <object class="GtkTextBuffer" id="alarm_buffer"/> + <object class="GtkImage" id="img_touch_off"> + <property name="visible">True</property> + <property name="pixbuf">icon/touchoffwz.png</property> + </object> + <object class="GtkListStore" id="lstst_themes"> + <columns> + <!-- column-name text --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">test</col> + </row> + <row> + <col id="0" translatable="yes">test2</col> + </row> + </data> + </object> + <object class="GtkAdjustment" id="adj_grid_size"> + <property name="upper">100</property> + <property name="step_increment">0.25</property> + </object> + <object class="GtkAdjustment" id="adj_start_spindle_RPM"> + <property name="value">300</property> + <property name="lower">50</property> + <property name="upper">10000</property> + <property name="step_increment">25</property> + <signal name="value_changed" handler="on_adj_start_spindle_RPM_value_changed"/> + </object> + <object class="EMC_Action_Unhome" id="hal_action_unhome_all"> + <property name="tooltip">This will unhome all axis</property> + </object> + <object class="EMC_Stat" id="hal_status"> + <signal name="state_off" handler="on_hal_status_state_off"/> + <signal name="interp_run" handler="on_hal_status_interp_run"/> + <signal name="state_estop_reset" handler="on_hal_status_state_estop_reset"/> + <signal name="mode_auto" handler="on_hal_status_mode_auto"/> + <signal name="mode_manual" handler="on_hal_status_mode_manual"/> + <signal name="not_all_homed" handler="on_hal_status_not_all_homed"/> + <signal name="mode_mdi" handler="on_hal_status_mode_mdi"/> + <signal name="state_on" handler="on_hal_status_state_on"/> + <signal name="file_loaded" handler="on_hal_status_file_loaded"/> + <signal name="all_homed" handler="on_hal_status_all_homed"/> + <signal name="interp_idle" handler="on_hal_status_interp_idle"/> + <signal name="state_estop" handler="on_hal_status_state_estop"/> + </object> + <object class="GtkDialog" id="dialog_from_line"> + <property name="border_width">5</property> + <property name="type">popup</property> + <property name="title" translatable="yes">Run from line</property> + <property name="window_position">center</property> + <property name="destroy_with_parent">True</property> + <property name="type_hint">toolbar</property> + <child internal-child="vbox"> + <object class="GtkVBox" id="dialog-vbox5"> + <property name="visible">True</property> + <property name="spacing">2</property> + <child> + <object class="GtkVBox" id="vbox17"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="lbl_dialog_from_line"> + <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="hbox14"> + <property name="visible">True</property> + <child> + <object class="GtkButton" id="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> + <signal name="clicked" handler="on_line_up_clicked"/> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkSpinButton" id="line_input"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">●</property> + <property name="adjustment">adj_restart</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="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> + <signal name="clicked" handler="on_line_down_clicked"/> + </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_area5"> + <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> + <signal name="clicked" handler="on_restart_ok_clicked"/> + </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> + <signal name="clicked" handler="on_restart_cancel_clicked"/> + </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="GtkAdjustment" id="adj_restart"> + <property name="upper">9999</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + <property name="page_size">10</property> + <signal name="value_changed" handler="on_adj_restart_value_changed"/> + </object> + <object class="GtkImage" id="img_back_cero1"> + <property name="visible">True</property> + <property name="ypad">3</property> + <property name="icon_name">edit-undo</property> + </object> + <object class="GtkImage" id="img_mdi_ok"> + <property name="visible">True</property> + <property name="pixbuf">icon/enter.png</property> + </object> + <object class="EMC_Action_Save" id="hal_action_save"> + <property name="stock_id">gtk-save</property> + <property name="textview">hal_sourceview</property> + </object> + <object class="EMC_Action_SaveAs" id="hal_action_saveas"> + <property name="stock_id">gtk-save-as</property> + <property name="icon_name">document-save</property> + <property name="textview">hal_sourceview</property> + </object> + <object class="GtkImage" id="img_coolant_on"> + <property name="visible">True</property> + <property name="pixbuf">icon/coolant_on.gif</property> + </object> + <object class="GtkImage" id="img_mist_on"> + <property name="visible">True</property> + <property name="pixbuf">icon/mist_on.gif</property> + </object> + <object class="GtkImage" id="img_toolchange"> + <property name="visible">True</property> + <property name="pixbuf">icon/toolchange.png</property> + </object> + <object class="GtkImage" id="img_back_tool"> + <property name="visible">True</property> + <property name="icon_name">edit-undo</property> + </object> + <object class="GtkImage" id="img_coolant_off"> + <property name="visible">True</property> + <property name="pixbuf">icon/coolant_off.png</property> + </object> + <object class="GtkImage" id="img_mist_off"> + <property name="visible">True</property> + <property name="pixbuf">icon/mist_off.png</property> + </object> + <object class="GtkImage" id="img_brake_macro"> + <property name="visible">True</property> + <property name="pixbuf">icon/stop.png</property> + </object> + <object class="GtkImage" id="img_manual"> + <property name="visible">True</property> + <property name="pixbuf">icon/jog.png</property> + </object> + <object class="GtkImage" id="img_mdi"> + <property name="visible">True</property> + <property name="pixbuf">icon/mdi.png</property> + </object> + <object class="GtkImage" id="img_auto"> + <property name="visible">True</property> + <property name="pixbuf">icon/run.png</property> + </object> + <object class="GtkImage" id="img_touch_off1"> + <property name="visible">True</property> + <property name="pixbuf">icon/touchoffwz.png</property> + </object> + <object class="GtkImage" id="img_zoom_in"> + <property name="visible">True</property> + <property name="pixbuf">icon/zoom-in.png</property> + </object> + <object class="GtkImage" id="img_zoom_out"> + <property name="visible">True</property> + <property name="pixbuf">icon/zoom-out.png</property> + </object> +</interface> diff --git a/configs/sim/gmoccapy/gmoccapy.ini b/configs/sim/gmoccapy/gmoccapy.ini new file mode 100644 index 000000000..ab4b4d80b --- /dev/null +++ b/configs/sim/gmoccapy/gmoccapy.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 = $Revision$ +MACHINE = gmoccapy +#DEBUG = 0x7FFFFFFF +DEBUG = 0 + +# for details see nc_files/subroutines/maco_instructions.txt +[MACROS] +MACRO = i_am_lost +MACRO = halo_world +MACRO = jog_around +MACRO = increment xinc yinc +MACRO = go_to_position X-pos Y-pos Z-pos + +# Sections for display options ------------------------------------------------ +[DISPLAY] +DISPLAY = gscreen -c gmoccapy -d +PREFERENCE_FILE_PATH = ~/.gmoccapy_preferences + +#EMBED_TAB_NAME = right_side_panel +#EMBED_TAB_LOCATION = box_right +#EMBED_TAB_COMMAND = gladevcp -x {XID} v_buttonlist.glade + +#EMBED_TAB_NAME = camera +#EMBED_TAB_LOCATION = ntb_user_tabs +#EMBED_TAB_COMMAND = camview-emc -w {XID} + +#EMBED_TAB_NAME = Tab 2 +#EMBED_TAB_LOCATION = ntb_user_tabs +#EMBED_TAB_COMMAND = gladevcp -x {XID} vcp_box.glade + +#EMBED_TAB_NAME = left_side_panel +#EMBED_TAB_LOCATION = box_left +#EMBED_TAB_COMMAND = gladevcp -x {XID} vcp_box.glade + +# uncomment the following three lines to show the buttonlist +# dont forget to uncomment also the button lines in gmoccapy_postgui.hal +#EMBED_TAB_NAME = h_buttonlist +#EMBED_TAB_LOCATION = ntb_setup +#EMBED_TAB_COMMAND = gladevcp h_buttonlist.glade + +#EMBED_TAB_NAME = v_buttonlist +#EMBED_TAB_LOCATION = ntb_setup +#EMBED_TAB_COMMAND = gladevcp v_buttonlist.glade + +# Cycle time, in milliseconds, that display will sleep between polls +CYCLE_TIME = 100 + +# Highest value that will be allowed for feed override, 1.0 = 100% +MAX_FEED_OVERRIDE = 1.5 +MAX_SPINDLE_OVERRIDE = 1.2 +MIN_SPINDLE_OVERRIDE = .5 + +# Max and default jog speeds in units per second +MAX_LINEAR_VELOCITY = 166 +DEFAULT_LINEAR_VELOCITY = 5 +MAX_ANGULAR_VELOCITY = 234 + +# Prefix to be used +PROGRAM_PREFIX = nc_files/ + +# Introductory graphic +INTRO_GRAPHIC = linuxcnc.gif +INTRO_TIME = 5 + +# list of selectable jog increments +INCREMENTS = 1mm, 0.1mm, 0.01mm, 0.001mm, 10mm, 1.2345in + +[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] +TASK = milltask +CYCLE_TIME = 0.001 + +# Part program interpreter section -------------------------------------------- +[RS274NGC] +RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.005 G80 G90 G94 G97 M5 M9 +PARAMETER_FILE = sim.var +SUBROUTINE_PATH = nc_files/subroutines + +# Motion control section ------------------------------------------------------ +[EMCMOT] +EMCMOT = motmod +COMM_TIMEOUT = 1.0 +COMM_WAIT = 0.010 +BASE_PERIOD = 0 +SERVO_PERIOD = 1000000 + +# Hardware Abstraction Layer section -------------------------------------------------- +[HAL] +HALFILE = core_sim.hal +HALFILE = sim_spindle_encoder.hal +HALFILE = axis_manualtoolchange.hal +HALFILE = simulated_home.hal + +# Single file that is executed after the GUI has started. +POSTGUI_HALFILE = gmoccapy_postgui.hal + +HALUI = halui + +# Trajectory planner section -------------------------------------------------- +[TRAJ] +AXES = 3 +COORDINATES = X Y Z +HOME = 0 0 0 +LINEAR_UNITS = mm +ANGULAR_UNITS = degree +CYCLE_TIME = 0.010 +DEFAULT_VELOCITY = 9.0 +MAX_VELOCITY = 234 +POSITION_FILE = position.txt + +# First axis +[AXIS_0] +TYPE = LINEAR +HOME = 0.000 +MAX_VELOCITY = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 400.0 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 0.0 +HOME_SEARCH_VEL = 200.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 = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 400.0 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 0.0 +HOME_SEARCH_VEL = 200.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 = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 0.001 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 1.0 +HOME_SEARCH_VEL = 200.0 +HOME_LATCH_VEL = 20.0 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 0 +HOME_IS_SHARED = 1 + +# Only needed for gmoccapy to set min and max values for the spindle bar +[SPINDLE] +MIN_REV = 0 +MAX_REV = 6000 + +# section for main IO controller parameters ----------------------------------- +[EMCIO] +EMCIO = io +CYCLE_TIME = 0.100 + +# tool table file +TOOL_TABLE = tool.tbl +TOOL_CHANGE_POSITION = 100 100 -10 +TOOL_CHANGE_QUILL_UP = 1 diff --git a/configs/sim/gmoccapy/gmoccapy_handler.py b/configs/sim/gmoccapy/gmoccapy_handler.py new file mode 100644 index 000000000..d8c54effa --- /dev/null +++ b/configs/sim/gmoccapy/gmoccapy_handler.py @@ -0,0 +1,1594 @@ +#!/usr/bin/env python +# -*- coding:UTF-8 -*- +''' + A try of a new GUI for LinuxCNC based on gladevcp and Python + Based on the design of moccagui from Tom + and based on gscreen from Chris Morley + and with the help from Michael Haberler + and Chris Morley + + Copyright 2011 Norbert Schechner + nieson@web.de + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +''' +import hal +import hal_glib # needed to make our own hal pins +import gtk +import os +import pango +import gladevcp.makepins # needed for the dialog's calulator widget + +# standard handler call +def get_handlers(halcomp,builder,useropts,gscreen): + return [HandlerClass(halcomp,builder,useropts,gscreen)] + +# this is for hiding the pointer when using a touch screen +pixmap = gtk.gdk.Pixmap(None, 1, 1, 1) +color = gtk.gdk.Color() +INVISABLE = gtk.gdk.Cursor(pixmap, pixmap, color, color, 0, 0) + +# constants +_RELEASE = "0.8.5" +_MM = 1 # Metric units are used +_IMPERIAL = 0 # Imperial Units are used +_MANUAL = 1 # Check for the mode Manual +_AUTO = 2 # Check for the mode Auto +_MDI = 3 # Check for the mode MDI +_RUN = 1 # needed to check if the interpreter is running +_IDLE = 0 # needed to check if the interpreter is idle + +# 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 + self.distance = 0 # This global will hold the jog distance + self.tool = 0 # we use this global to check if tool in spindle has changed + self.X_homed = 0 # only if this change, we will update the colors + self.Y_homed = 0 # only if this change, we will update the colors + self.Z_homed = 0 # only if this change, we will update the colors + self.interpreter = _IDLE # This hold the interpreter state, so we could check if actios are allowed + self.wait_tool_change = False # this is needed to get back to manual mode after a tool change + self.macrobuttons =[] # The list of all macrios defined in the INI file + self.log = True # Should all button clicks be loged? This will be later be + # set through the setings page + + def initialize_preferences(self): + self.data.theme_name = 'Follow System Theme' + #self.gscreen.init_dro_pref() + #self.gscreen.init_theme_pref() + self.gscreen.init_window_geometry_pref() + self.gscreen.init_general_pref() + + # 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): + # These are gscreen widgets included in this screen + self.gscreen.init_statusbar() + self.gscreen.init_tooleditor() + self.gscreen.init_gremlin() + self.gscreen.init_embeded_terminal() +# self.data.theme_name = self.gscreen.prefs.getpref('gtk_theme', 'Follow System Theme', str) +# print(self.data.theme_name) + self.gscreen.init_themes() + self.gscreen.init_hide_cursor() + self.gscreen.init_audio() + + # and now our own ones + self.widgets.adj_jog_vel.configure(self.data.jog_rate, 0, self.gscreen.data.jog_rate_max + 1, 1, 1, 1) + self.widgets.adj_spindle.configure(100, 0, self.data.spindle_override_max * 100 + 1, 1, 1, 1) + self.widgets.adj_feed.configure(100, 0, self.data.feed_override_max * 100 + 1, 1, 1, 1) + self.widgets.adj_max_vel.configure(self.data._maxvelocity*60, self.data._maxvelocity * 0.1, self.data._maxvelocity * 60 + 1, 1, 1, 1) + self.widgets.window1.set_title("Gscreen-gmoccapy for linuxcnc %s"%_RELEASE) + self.min_spindle_rev = self.gscreen.inifile.find("SPINDLE", "MIN_REV") + self.max_spindle_rev = self.gscreen.inifile.find("SPINDLE", "MAX_REV") + if not self.min_spindle_rev: + self.min_spindle_rev = 0 + print(_("Minimum Spindle Speed not found in INI File\nMin has been set to 0 rpm")) + self.gscreen.add_alarm_entry(_("Minimum Spindle Speed not found in INI File\nMin has been set to 0 rpm")) + self.widgets.statusbar1.push(1,_("Minimum Spindle Speed not found in INI File\nMin has been set to 0 rpm")) + self.widgets.hal_hbar_spindle_feedback.set_property("min",float(self.min_spindle_rev)) + if not self.max_spindle_rev: + self.max_spindle_rev = 6000 + print(_("Maximum Spindle Speed not found in INI File\nMax has been set to 6000 rpm")) + self.gscreen.add_alarm_entry(_("Maximum Spindle Speed not found in INI File\nMax has been set to 6000 rpm")) + self.widgets.statusbar1.push(1,_("Maximum Spindle Speed not found in INI File\nMax has been set to 6000 rpm")) + self.widgets.hal_hbar_spindle_feedback.set_property("max",float(self.max_spindle_rev)) + + # this sets the background colors of several buttons + # the colors are different for the states of the button + self.widgets.hal_tbtn_on.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#FF0000")) + self.widgets.hal_tbtn_on.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#00FF00")) + self.widgets.hal_tbtn_notaus.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FF0000")) + self.widgets.hal_tbtn_notaus.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#00FF00")) + self.widgets.lbl_X.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#FF0000")) + self.widgets.lbl_Y.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#FF0000")) + self.widgets.lbl_Z.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#FF0000")) + self.widgets.rbt_manual.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FFFF00")) + self.widgets.rbt_mdi.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FFFF00")) + self.widgets.rbt_auto.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FFFF00")) + self.widgets.rbt_setup.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FFFF00")) + self.widgets.rbt_forward.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#00FF00")) + self.widgets.rbt_reverse.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#00FF00")) + self.widgets.rbt_stop.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FFFF00")) + self.widgets.rbt_view_P.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FFFF00")) + self.widgets.rbt_view_X.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FFFF00")) + self.widgets.rbt_view_Y.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FFFF00")) + self.widgets.rbt_view_Z.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FFFF00")) + self.widgets.tbtn_flood.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#00FF00")) + self.widgets.tbtn_mist.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#00FF00")) + self.widgets.tbtn_rel.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FFFF00")) + self.widgets.tbtn_dtg.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FFFF00")) + self.widgets.tbtn_units.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FFFF00")) + self.widgets.tbtn_view_dimension.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FFFF00")) + self.widgets.tbtn_view_tool_path.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FFFF00")) + self.widgets.tbtn_optional_blocks.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FFFF00")) + self.widgets.tbtn_optional_stops.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#FFFF00")) + +# ToDo The colors are to heavy, there should be a color choise +# to distingish the button groups like numbers, axis and others +# Suggestions welcome + self.widgets.btn_bs.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#B5731F")) + self.widgets.btn_F.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#B5731F")) + self.widgets.btn_G.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#B5731F")) + self.widgets.btn_I.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#B5731F")) + self.widgets.btn_J.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#B5731F")) + self.widgets.btn_K.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#B5731F")) + self.widgets.btn_M.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#B5731F")) + self.widgets.btn_P.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#B5731F")) + self.widgets.btn_Q.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#B5731F")) + self.widgets.btn_S.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#B5731F")) + self.widgets.btn_T.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#B5731F")) + self.widgets.btn_X.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#28D0D9")) + self.widgets.btn_Y.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#28D0D9")) + self.widgets.btn_Z.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#28D0D9")) +# Todo End + + # Now we will build the option buttons to select the Jog-rates + # We do this dinamecely, because users are able to set them in INI File + # because of space on the screen only 10 items are alowed + Anzahl = len(self.data.jog_increments) + if Anzahl > 10: + print(_("To many increments given in INI File for this screen")) + print(_("Only the first 10 will be reachable through this screen")) + Anzahl = 10 + # The first radio button is created to get a radio button group + # The group is called according the name off the first button + # We use the pressed signal, not the toggled, otherwise two signals will be emited + # One from the released button and one from the pressed button + rbt0 = gtk.RadioButton(None, "Continuous") + rbt0.connect("pressed", self.on_increment_changed,"Continuous") + self.widgets.vbuttonbox2.pack_start(rbt0,True,True,0) + rbt0.set_property("draw_indicator",False) + rbt0.show() + # the rest of the buttons are now added to the group + for increment in range(1,Anzahl): + rbt = "rbt%d"%(increment) + rbt = gtk.RadioButton(rbt0, self.data.jog_increments[increment]) + rbt.connect("pressed", self.on_increment_changed,self.data.jog_increments[increment]) + self.widgets.vbuttonbox2.pack_start(rbt,True,True,0) + rbt.set_property("draw_indicator",False) + rbt.show() + + self.set_property_dro("reference_type", 1) + self.set_property_dro("display_units_mm", True) + + # This is needed only because we connect all the horizontal button + # to hal pins, so the user can conect them to hardware buttons + self.h_tabs = [] + tab_main = [(0,"btn_homing"), (1,"btn_touch"),(3,"btn_tool"), (7,"tbtn_fullsize_preview"), (9,"btn_exit")] + self.h_tabs.append(tab_main) + tab_mdi = [(9,"btn_show_kbd")] + self.h_tabs.append(tab_mdi) + tab_auto = [(0,"btn_run"),(1,"btn_stop"),(2,"btn_step"),(3,"tbtn_pause"),(4,"btn_from_line"),(5,"tbtn_optional_stops"),(6,"tbtn_optional_blocks"),(7,"btn_reload"),(8,"btn_load"),(9,"btn_edit")] + self.h_tabs.append(tab_auto) + tab_ref = [(1,"btn_home_all"),(3,"btn_home_X"),(4,"btn_home_Y"),(5,"btn_home_Z"),(7,"btn_unhome_all"),(9,"btn_back_ref")] + self.h_tabs.append(tab_ref) + tab_touch = [(1,"btn_cero_X"),(2,"btn_cero_Y"),(3,"btn_cero_Z"),(5,"btn_set_value_X"),(6,"btn_set_value_Y"),(7,"btn_set_value_Z"),(9,"btn_back_cero")] + self.h_tabs.append(tab_touch) + tab_setup = [(0,"btn_delete"),(5,"btn_hal_scope"),(6,"btn_status"),(7,"btn_hal_meter"),(8,"btn_calibration"),(9,"btn_show_hal")] + self.h_tabs.append(tab_setup) + tab_edit = [(1,"btn_save"),(2,"btn_save_as"),(3,"btn_save_and_run"),(5,"btn_new"),(6,"btn_open_edit"),(7,"btn_close"),(8,"btn_keyb"),(9,"btn_back_edit")] + self.h_tabs.append(tab_edit) + tab_tool = [(0,"btn_delete_tool"),(1,"btn_add_tool"),(2,"btn_reload_tooltable"),(3,"btn_apply_tool_changes"),(5,"btn_index_tool"),(6,"btn_change_tool"),(9,"btn_back_tool")] + self.h_tabs.append(tab_tool) + + self.v_tabs = [(0,"hal_tbtn_notaus"),(1,"hal_tbtn_on"),(2,"rbt_manual"),(3,"rbt_mdi"),(4,"rbt_auto"),(5,"rbt_setup"),(6,"tbtn_user_tabs")] + + # call the function to change the button status + # so every think is ready to start + widgetlist = ["rbt_manual", "rbt_mdi", "rbt_auto", "btn_homing", "btn_touch", "btn_tool", + "ntb_jog", "scl_feed", "btn_feed_100", "rbt_forward", "btn_index_tool", + "rbt_reverse", "rbt_stop", "tbtn_flood", "tbtn_mist", "btn_change_tool", + "btn_spindle_100", "scl_max_vel", "scl_spindle", "rbt_manual" + ] + self.gscreen.sensitize_widgets(widgetlist,False) + self.widgets.rbt_manual.set_active(True) + self.widgets.ntb_jog.set_current_page(0) + self.widgets.tbtn_optional_blocks.set_active(self.gscreen.prefs.getpref('blockdel', False)) + self.widgets.tbtn_optional_stops.set_active(not self.gscreen.prefs.getpref('opstop', False)) + self.widgets.tbtn_show_dro.set_active(self.gscreen.prefs.getpref('enable_dro', False)) + self.widgets.show_offsets.set_active(self.gscreen.prefs.getpref('show_offsets', False)) + self.widgets.tbtn_show_dtg.set_active(self.gscreen.prefs.getpref('show_dtg', False)) + self.unlock_code = self.gscreen.prefs.getpref('unlock_code', '123', str) # get unlock code + + # This is only needed, because otherwise gmoccapy will use the standard DRO colors from + # gscreen, witch will not fit well the design from gmoccapy. You could get red text on red background + # we set everythink default to black background, after the first change of colors the colors are stored + # correctly, because then self.use_standard_dro_colors has been set to true. + self.use_standard_dro_colors = self.gscreen.prefs.getpref('use_standard_dro_colors', 'True', bool) + if self.use_standard_dro_colors: + self.data.abs_textcolor = "#000000000000" + self.data.rel_textcolor = "#000000000000" + self.data.dtg_textcolor = "#000000000000" + self.widgets.abs_colorbutton.set_color(gtk.gdk.color_parse(self.data.abs_textcolor)) + self.gscreen.set_abs_color() + self.widgets.rel_colorbutton.set_color(gtk.gdk.color_parse(self.data.rel_textcolor)) + self.gscreen.set_rel_color() + self.widgets.dtg_colorbutton.set_color(gtk.gdk.color_parse(self.data.dtg_textcolor)) + self.gscreen.set_dtg_color() + self.gscreen.prefs.putpref('use_standard_dro_colors', False, bool) + else: + self.data.abs_textcolor = self.gscreen.prefs.getpref('abs_textcolor', '#000000000000', str) + self.data.rel_textcolor = self.gscreen.prefs.getpref('rel_textcolor', '#000000000000', str) + self.data.dtg_textcolor = self.gscreen.prefs.getpref('dtg_textcolor', '#000000000000', str) + self.gscreen.init_dro_colors() + if self.data.fullscreen1 == True: + self.widgets.btn_fullscreen1.set_active(True) + self.widgets.adj_start_spindle_RPM.set_value(self.data.spindle_start_rpm) + self.widgets.hal_sourceview.set_sensitive(False) + self.tooledit_btn_delete_tool = self.widgets.tooledit1.wTree.get_object("delete") + self.tooledit_btn_add_tool = self.widgets.tooledit1.wTree.get_object("add") + self.tooledit_btn_reload_tool = self.widgets.tooledit1.wTree.get_object("reload") + self.tooledit_btn_apply_tool = self.widgets.tooledit1.wTree.get_object("apply") + self.widgets.tooledit1.hide_buttonbox(True) + for axis in self.data.axis_list: + self._update_homed(axis.upper()) + self.widgets.ntb_user_tabs.remove_page(0) + self.add_macro_button() + self.widgets.hal_tbtn_notaus.set_active(True) + self.units = self.gscreen.inifile.find("TRAJ", "LINEAR_UNITS") + if self.units == "inch": + self.widgets.tbtn_units.set_active(True) + print(self.gscreen.inifile.find("DISPLAY", "EMBED_TAB_COMMAND")) + if not self.gscreen.inifile.find("DISPLAY", "EMBED_TAB_COMMAND"): + self.widgets.tbtn_user_tabs.set_sensitive(False) + + def add_macro_button(self): + macros = self.gscreen.inifile.findall("MACROS", "MACRO") + num_macros = len(macros) + if num_macros > 9: + self.gscreen.add_alarm_entry(_("more than 9 macros not allowed, only the first 9 ones will be used")) + print(_("more than 9 macros not allowed, only the first 9 ones will be used")) + num_macros = 9 + for increment in range(0,num_macros): + name = macros[increment] + if len(name) > 11: + lbl = name[0:10] + else: + lbl = macros[increment] + btn = gtk.Button(lbl,None,False) + btn.connect("pressed", self.on_btn_macro_pressed,name) + btn.position = increment + self.macrobuttons.append(btn) + self.widgets.hbtb_MDI.pack_start(btn,True,True,0) + btn.show() + if num_macros < 9: + for label_space in range(num_macros,9): + lbl = "lbl_sp_%s"%label_space + lbl = gtk.Label(lbl) + lbl.position = label_space + lbl.set_text("") + self.widgets.hbtb_MDI.pack_start(lbl,True,True,0) + lbl.show() + self.widgets.hbtb_MDI.non_homogeneous = False + + def on_btn_macro_pressed(self, widget = None, data = None): + o_codes = data.split() + command = str("O<" + o_codes[0] + "> call") + for code in o_codes[1:]: + parameter = self.entry_dialog(data = None, header = _("Enter value:"), label=_("Set parameter %s to:")%code ) + print(parameter) + if parameter == False: + print(_("conversion error")) + self.gscreen.add_alarm_entry(_("Conversion error because off wrong entry for macro %s")%o_codes[0]) + self.gscreen.warning_dialog(_("Conversion error !"), True, _("Please enter only numerical values\nValues have not been applied")) + return + if parameter != False or parameter == 0: + self.gscreen.add_alarm_entry(_("macro %s , parameter %s set to %f"%(o_codes[0],code,parameter))) + command = command + " [" + str(parameter) + "] " + self.gscreen.mdi_control.user_command(command) + for btn in self.macrobuttons: + btn.set_sensitive(False) + # we change the widget_image and use the button to interupt running macros + self.widgets.btn_show_kbd.set_image(self.widgets.img_brake_macro) + self.widgets.ntb_info.set_current_page(0) + + def on_hide_cursor_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("hide_cursor_toggled") + if self.widgets.hide_cursor.get_active(): + self.gscreen.prefs.putpref('hide_cursor', True) + self.data.hide_cursor = True + self.widgets.window1.window.set_cursor(INVISABLE) + else: + self.gscreen.prefs.putpref('hide_cursor', False) + self.data.hide_cursor = False + self.widgets.window1.window.set_cursor(None) + + # toggle emergency button + def on_hal_tbtn_notaus_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("hal_tbtn_notaus_clicked") + if self.widgets.hal_tbtn_notaus.get_active(): + self.widgets.hal_tbtn_notaus.set_image(self.widgets.img_emergency) + self.widgets.hal_tbtn_on.set_image(self.widgets.img_machine_off) + else: + self.widgets.hal_tbtn_notaus.set_image(self.widgets.img_emergency_off) + + # toggle machine on / off button + def on_hal_tbtn_on_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("hal_tgbt_on_clicked") + if self.widgets.hal_tbtn_on.get_active(): + self.widgets.hal_tbtn_on.set_image(self.widgets.img_machine_on) + # need to do that, because otherwise the tool_index_button will stay unsensitized + self._update_homed("X") # The axis to check doesn't matter + else: + self.widgets.hal_tbtn_on.set_image(self.widgets.img_machine_off) + + # The mode buttons + def on_rbt_manual_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("rbt_manual_clicked") + self.gscreen.emc.set_manual_mode() + self.widgets.ntb_main.set_current_page(0) + self.widgets.ntb_button.set_current_page(0) + + def on_rbt_mdi_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("rbt_mdi_clicked") + self.emc.set_mdi_mode() + self.widgets.ntb_main.set_current_page(0) + self.widgets.ntb_button.set_current_page(1) + + def on_rbt_auto_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("rbt_auto_clicked") + self.emc.set_auto_mode() + self.widgets.ntb_main.set_current_page(0) + self.widgets.ntb_button.set_current_page(2) + + def on_rbt_setup_pressed(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("rbt_setup_pressed") + if self.system_dialog(): + self.widgets.rbt_setup.set_active(True) + self.widgets.ntb_main.set_current_page(1) + self.widgets.ntb_setup.set_current_page(1) + self.widgets.ntb_button.set_current_page(5) + else: + self.gscreen.warning_dialog(_("Just to warn you"), True,_("wrong code entered, Access denied")) + self.gscreen.add_alarm_entry(_("wrong code entered, Access denied")) + self.widgets.statusbar1.push(1,_("wrong code entered, Access denied")) + self.widgets.rbt_manual.emit("clicked") + + def on_tbtn_user_tabs_toggled(self, widget, data=None): + if self.widgets.tbtn_user_tabs.get_active(): + self.widgets.ntb_main.set_current_page(3) + else: + self.widgets.ntb_main.set_current_page(0) + + # This dialog is for unlocking the system tab + # The unlock code number is defined at the top of the page + def system_dialog(self): + dialog = gtk.Dialog(_("Enter System Unlock Code"), + self.widgets.window1, + gtk.DIALOG_DESTROY_WITH_PARENT, + (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, + gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) + label = gtk.Label(_("Enter System Unlock Code")) + label.modify_font(pango.FontDescription("sans 20")) + calc = gladevcp.Calculator() + dialog.vbox.pack_start(label) + dialog.vbox.add(calc) + calc.set_value("") + calc.set_property("font","sans 20") + dialog.parse_geometry("400x400") + dialog.set_decorated(True) + dialog.show_all() + response = dialog.run() + code = calc.get_value() + dialog.destroy() + if response == gtk.RESPONSE_ACCEPT: + if code == int(self.unlock_code): + return True + return False + + # The homing functions + def on_btn_homing_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_homing_clicked") + self.widgets.ntb_button.set_current_page(3) + + def _dro_label_color_change(self, widget, bgcolor, fgcolor): + attr = pango.AttrList() + color = bgcolor + bg_color = pango.AttrBackground(color[0],color[1],color[2], 0, -1) + attr.insert(bg_color) + size = pango.AttrSize(30000, 0, -1) + attr.insert(size) + weight = pango.AttrWeight(600, 0, -1) + attr.insert(weight) + color = fgcolor + fg_color = pango.AttrForeground(color[0],color[1],color[2], 0, 11) + attr.insert(fg_color) + self.widgets[widget].set_attributes(attr) + + def _update_homed(self, axis): + if self.widgets.tbtn_rel.get_active(): # abs dro requested + bg_color = self.data.abs_textcolor + bgcolor = self.data.abs_color + else: # rel dro requested + bg_color = self.data.rel_textcolor + bgcolor = self.data.rel_color + if self.widgets.tbtn_dtg.get_active(): # dtg dro requested + bg_color = self.data.dtg_textcolor + bgcolor = self.data.dtg_color + if self.data["%s_is_homed"%axis.lower()]: + fg_color = "#00FF00" + fgcolor = (0,65535,0) + else: + fg_color = "#FF0000" + fgcolor = (65000,0,0) + self._dro_label_color_change("hal_dro_%s"%axis.upper(),bgcolor,fgcolor) + self._dro_label_color_change("lbl_%s"%axis.upper(),bgcolor,fgcolor) + + widgetname = "eventbox_" + axis.upper() + self.widgets[widgetname].modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(bg_color)) + widgetname ="eventbox_dro_" + axis.upper() + self.widgets[widgetname].modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(bg_color)) + + self.gscreen.add_alarm_entry("%s_homed"%axis + " = " + str(self.data["%s_is_homed"%axis.lower()])) + if axis == "X": + self.X_homed = self.data["%s_is_homed"%axis.lower()] + if axis == "Y": + self.Y_homed = self.data["%s_is_homed"%axis.lower()] + if axis == "Z": + self.Z_homed = self.data["%s_is_homed"%axis.lower()] + if self.X_homed and self.Y_homed and self.Z_homed: + widgetlist = ["rbt_mdi", "rbt_auto", "btn_index_tool", "btn_change_tool"] + self.gscreen.sensitize_widgets(widgetlist,True) + else: + widgetlist = ["rbt_mdi", "rbt_auto", "btn_index_tool", "btn_change_tool"] + self.gscreen.sensitize_widgets(widgetlist,False) + + def on_btn_home_all_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("button ref all clicked") + self.emc.home_all(1) + + def on_btn_unhome_all_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("button unhome all clicked") + self.emc.unhome_all(1) + +#ToDo: What happen when there are more axis, + # will have to mak ethis dynamecely + def on_btn_home_selected_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("button home selected clicked") + if widget == self.widgets.btn_home_X: + axis = 0 + elif widget == self.widgets.btn_home_Y: + axis = 1 + elif widget == self.widgets.btn_home_Z: + axis = 2 + self.emc.home_selected(axis) +# ToDo: End + + def on_chk_ignore_limits_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("chk_ignore_limits_toggled %s"%widget.get_active()) + self.emc.override_limits(self.widgets.chk_ignore_limits.get_active()) + +# ToDo: This is not working, and I don't know why +# The Gremlin DRO is shown, and hideen, but it should not be hideen if +# on the settings page the button Show DRO is active, in this case +# self.gscreen.prefs.getpref('enable_dro') should return True. +# The error I get is "'bool' object has no attribute 'lower'" + def on_tbtn_fullsize_preview_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("Fullsize Preview set to %s"%widget.get_active()) + print(self.gscreen.prefs.getpref('enable_dro',"False")) + if widget.get_active(): + self.widgets.box_info.hide() + self.widgets.vbx_jog.hide() + self.widgets.gremlin.set_property('metric_units',not self.widgets.tbtn_units.get_active()) + self.widgets.gremlin.set_property('enable_dro',True) + else: + self.widgets.box_info.show() + self.widgets.vbx_jog.show() + if self.gscreen.prefs.getpref('enable_dro', "False") == False: + self.widgets.gremlin.set_property('enable_dro',False) +#ToDo: End + + # If button exit is klickt, press emergency button bevor closing the application + def on_btn_exit_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_exit_clicked") + self.widgets.hal_tbtn_notaus.set_active(1) + self.widgets.window1.destroy() + + # this are hal-tools through gsreen function + def on_btn_show_hal_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_show_hal_clicked") + self.gscreen.on_halshow(None) + + def on_btn_calibration_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_calibration_clicked") + self.gscreen.on_calibration(None) + + def on_btn_hal_meter_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_hal_meter_clicked") + self.gscreen.on_halmeter(None) + + def on_btn_status_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("hal_btn_status_clicked") + self.gscreen.on_status(None) + + def on_btn_hal_scope_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("hal_btn_hal_scope_clicked") + self.gscreen.on_halscope(None) + + # spindle stuff + def _set_spindle(self, widget, data=None): + rpm = abs(float(self.widgets.active_speed_label.get_text())) + if rpm == 0: + rpm = self.data.spindle_start_rpm + mode = self.gscreen.emcstat.task_mode # get the mode we are, so we can change back, + # because the following command sets automaticaly manual mode + if widget == self.widgets.rbt_forward: + self.emc.spindle_forward(1,rpm) + elif widget == self.widgets.rbt_reverse: + self.emc.spindle_reverse(1,rpm) + elif widget == self.widgets.rbt_stop: + self.emc.spindle_off(1) + else: + self.gscreen.add_alarm_entry(_("Something went wrong, we got an unknow widget")) + if mode == _MANUAL: # we are in manual mode + self.emc.set_manual_mode() + elif mode == _AUTO: # we are in auto mode + self.emc.set_auto_mode() + elif mode == _MDI: # we are in mdi mode + self.emc.set_mdi_mode() + else: + self.gscreen.add_alarm_entry(_("Something went wrong, we are in non defined mode")) + if self.log: self.gscreen.add_alarm_entry("Spindle set to %i rpm, mode is %s"%(rpm,mode)) + + def on_rbt_forward_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("rbt_forward_clicked") + if self.widgets.rbt_forward.get_active(): + self.widgets.rbt_forward.set_image(self.widgets.img_forward_on) + self._set_spindle(widget) + else: + self.widgets.rbt_forward.set_image(self.widgets.img_forward) + + def on_rbt_reverse_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("rbt_reverse_clicked") + if self.widgets.rbt_reverse.get_active(): + self.widgets.rbt_reverse.set_image(self.widgets.img_reverse_on) + self.widgets.hal_hbar_spindle_feedback.set_property("min",float(self.min_spindle_rev)*-1) + self.widgets.hal_hbar_spindle_feedback.set_property("max",float(self.max_spindle_rev)*-1) + self._set_spindle(widget) + else: + self.widgets.rbt_reverse.set_image(self.widgets.img_reverse) + self.widgets.hal_hbar_spindle_feedback.set_property("min",float(self.min_spindle_rev)) + self.widgets.hal_hbar_spindle_feedback.set_property("max",float(self.max_spindle_rev)) + + def on_rbt_stop_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("rbt_stop_clicked") + if self.widgets.rbt_stop.get_active(): + self.widgets.rbt_stop.set_image(self.widgets.img_stop_on) + self._set_spindle(widget) + else: + self.widgets.rbt_stop.set_image(self.widgets.img_sstop) + + def on_hal_hbar_spindle_feedback_hal_pin_changed(self, widget, data=None): + self.widgets.lbl_spindle_act.set_text("S %s"%int(self.widgets.hal_hbar_spindle_feedback.value)) + + def on_btn_spindle_100_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_spindle_100_clicked") + self.widgets.adj_spindle.set_value(100) + + def on_scl_spindle_value_changed(self, widget, data = None): + spindle_override = self.widgets.scl_spindle.get_value() / 100 + real_spindle_speed = round(int(self.widgets.active_speed_label.get_text()) * spindle_override) + self.widgets.lbl_spindle_act.set_text("S %d" %real_spindle_speed) + self.emc.spindle_override(spindle_override) + + def on_adj_start_spindle_RPM_value_changed(self, widget, data = None): + if self.log: self.gscreen.add_alarm_entry("sbtn_spindle_start_rpm_clicked") + self.data.spindle_start_rpm = widget.get_value() + self.gscreen.prefs.putpref('spindle_start_rpm', widget.get_value(),float) + + def _update_spindle_btn(self): + if self.gscreen.emcstat.task_mode == _AUTO and self.interpreter == _RUN: + return + if self.data.spindle_dir > 0: + self.widgets.rbt_forward.set_active(True) + elif self.data.spindle_dir < 0: + self.widgets.rbt_reverse.set_active(True) + elif not self.widgets.rbt_stop.get_active(): + self.widgets.rbt_stop.set_active(True) + + # Coolant an mist coolant button + def on_tbtn_flood_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("tbtn_flood_clicked") + if self.data.flood and self.widgets.tbtn_flood.get_active(): + return + elif not self.data.flood and not self.widgets.tbtn_flood.get_active(): + return + elif self.widgets.tbtn_flood.get_active(): + self.widgets.tbtn_flood.set_image(self.widgets.img_coolant_on) + self.emc.flood_on(1) + else: + self.widgets.tbtn_flood.set_image(self.widgets.img_coolant_off) + self.emc.flood_off(1) + + def on_tbtn_mist_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("tbtn_mist_clicked") + if self.data.mist and self.widgets.tbtn_mist.get_active(): + return + elif not self.data.mist and not self.widgets.tbtn_mist.get_active(): + return + elif self.widgets.tbtn_mist.get_active(): + self.widgets.tbtn_mist.set_image(self.widgets.img_mist_on) + self.emc.mist_on(1) + else: + self.widgets.tbtn_mist.set_image(self.widgets.img_mist_off) + self.emc.mist_off(1) + + def _update_coolant(self): + if self.gscreen.emcstat.task_mode == _AUTO and self.interpreter == _RUN: + return + if self.data.flood: + if not self.widgets.tbtn_flood.get_active(): + self.widgets.tbtn_flood.set_active(True) + else: + self.widgets.tbtn_flood.set_active(False) + if self.data.mist: + if not self.widgets.tbtn_mist.get_active(): + self.widgets.tbtn_mist.set_active(True) + else: + self.widgets.tbtn_mist.set_active(False) + +#ToDo: Make Hal Pins to be able to connect a MPG whell to the scale + # feed stuff + def on_scl_feed_value_changed(self, widget, data=None): + feed_override = self.widgets.scl_feed.get_value() / 100 + real_feed = round(int(self.widgets.active_feed_label.get_text()) * feed_override) + self.widgets.lbl_feed_act.set_text("F %d" %real_feed) + self.emc.feed_override(feed_override) +#ToDo: End + + def on_btn_feed_100_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_feed_100_clicked") + self.widgets.adj_feed.set_value(100) + + # Update the velocity label + def _update_vel(self): + self.widgets.lbl_current_vel.set_text("%d" %self.data.velocity) + + # This is the jogging part + def on_increment_changed(self, widget = None, data = None): + if self.log: self.gscreen.add_alarm_entry("increment_changed %s"%data) + if data != "Continuous": + self.distance = self.gscreen.parse_increment(data) + else: + self.distance = 0 +#ToDo: Make Hal Pins to be able to connect a MPG whell to the scale + def on_adj_jog_vel_value_changed(self, widget, data = None): + self.emc.continuous_jog_velocity(widget.get_value()) +#ToDo: End + +#ToDo: Make this able to reakt to more axis + def on_hal_btn_jog_pressed(self, widget, data = None): + if widget == self.widgets.hal_btn_X_plus: + axis = 0 + direction = 1 + elif widget == self.widgets.hal_btn_X_minus: + axis = 0 + direction = -1 + elif widget == self.widgets.hal_btn_Y_plus: + axis = 1 + direction = 1 + elif widget == self.widgets.hal_btn_Y_minus: + axis = 1 + direction = -1 + elif widget == self.widgets.hal_btn_Z_plus: + axis = 2 + direction = 1 + elif widget == self.widgets.hal_btn_Z_minus: + axis = 2 + direction = -1 + else: + print(_("unknow axis clicked")) + self.gscreen.add_alarm_entry("hal_btn_jog_%i_%i"%(axis,direction)) + + if self.distance <> 0: # incremental jogging + # DOKU : emc.incremental_jog(<axis number>,<direction>,<distance to jog>) + self.gscreen.emc.incremental_jog(axis,direction,self.distance) + else: # continuous jogging + self.gscreen.emc.continuous_jog(axis,direction) + + def on_hal_btn_jog_released(self, widget, data = None): + if widget == self.widgets.hal_btn_X_plus: + axis = 0 + elif widget == self.widgets.hal_btn_X_minus: + axis = 0 + elif widget == self.widgets.hal_btn_Y_plus: + axis = 1 + elif widget == self.widgets.hal_btn_Y_minus: + axis = 1 + elif widget == self.widgets.hal_btn_Z_plus: + axis = 2 + elif widget == self.widgets.hal_btn_Z_minus: + axis = 2 + else: + print(_("unknow axis clicked")) + + if self.distance <>0: + pass + else: + self.gscreen.emc.continuous_jog(axis,0) +#ToDo: End + + # this are the MDI thinks we need + def on_btn_delete_clicked(self, widget, data=None): + message = _("Do you realy want to delete the mdi history?\n") + message += _("this will not delete the MDI History file, but will\n") + message += _("delete the listbox entries for this session") + result = self.yesno_dialog(header=_("Attention!!"), label = message) + if result: + self.widgets.hal_mdihistory.model.clear() + if self.log: self.gscreen.add_alarm_entry("delete_MDI with result %s"%result) + + def yesno_dialog(self, header=_("Question") ,label=_("Please decide:")): + dialog = gtk.MessageDialog(self.widgets.window1, + gtk.DIALOG_DESTROY_WITH_PARENT, + gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO,header) + label = gtk.Label(label) + dialog.vbox.pack_start(label) + dialog.set_decorated(True) + dialog.show_all() + response = dialog.run() + dialog.destroy() + if response == gtk.RESPONSE_YES: + return True + return False + +# ToDo +# Should be deleted when moccapy is finished + def on_btn_not_implemented_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("%s_clicked"%widget) + message = _("This button has not been implemented jet!") + self.gscreen.warning_dialog(_("Just to inform you"), True, message) +# ToDo end + + # The MDI button section + def on_btn_MDI_key_clicked(self, widget, data=None): + key = str(widget.get_label()) + if self.log: self.gscreen.add_alarm_entry("btn_MDI_key_%s_clicked"%key) + if key == ",": + key = "." + if key == "SPC": + key = " " + if self.widgets.ntb_button.get_current_page() == 6: # edit mode + self.widgets.hal_sourceview.buf.insert_at_cursor(key) + else: + Text = self.widgets.hal_mdihistory.entry.get_text() + Text = Text + key + self.widgets.hal_mdihistory.entry.set_text(Text) + + def on_btn_bs_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_bs_clicked") + if self.widgets.ntb_button.get_current_page() == 6: # edit mode + # find the actaual position + cursor = self.widgets.hal_sourceview.buf.get_insert() + # get the iter from current pos + iter = self.widgets.hal_sourceview.buf.get_iter_at_mark(cursor) + # delete the caracter left of cursor position + # first True = interaktive (caused by user) + # second = default editable + self.widgets.hal_sourceview.buf.backspace(iter,True,True) + else: + MDI = self.widgets.hal_mdihistory.entry.get_text() + NewLength = int(len(MDI)) - 1 + MDI = MDI[:NewLength] + self.widgets.hal_mdihistory.entry.set_text(MDI) + + def on_tbtn_shift_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_shift_clicked") + widgetlist = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S", + "T","U","V","W","X","Y","Z"] + if widget.get_active(): + self.widgets.btn_eka.set_label("(") + self.widgets.btn_ekz.set_label(")") + self.widgets.btn_dot.set_label(";") + for letter in widgetlist: + self.widgets["btn_%s"%letter].set_label(letter.lower()) + else: + self.widgets.btn_eka.set_label("[") + self.widgets.btn_ekz.set_label("]") + self.widgets.btn_dot.set_label(",") + for letter in widgetlist: + self.widgets["btn_%s"%letter].set_label(letter.upper()) + + def on_btn_ok_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_ok_clicked") + if self.widgets.ntb_button.get_current_page() == 6: # edit mode + # in this case we just want a new line + self.widgets.hal_sourceview.buf.insert_at_cursor("\n") + else: + self.widgets.hal_mdihistory.submit() + self.widgets.hal_mdihistory.entry.set_text("") + + def on_btn_arrow_clicked(self, widget, data=None): + if self.widgets.ntb_button.get_current_page() == 6: # edit mode + self.widgets.hal_sourceview.grab_focus() # Otherwise the cursor will desapear + # find the actaual position + cursor = self.widgets.hal_sourceview.buf.get_insert() + # get the iter from current pos + iter = self.widgets.hal_sourceview.buf.get_iter_at_mark(cursor) + if widget == self.widgets.btn_left: + iter.backward_char() + elif widget == self.widgets.btn_right: + iter.forward_char() + elif widget == self.widgets.btn_up: + line = iter.get_line() + pos_in_line = iter.get_line_offset() + iter.backward_line() + if iter.get_chars_in_line() != 1: + if iter.get_chars_in_line() < pos_in_line: + pos_in_line = iter.get_chars_in_line()-1 + iter.forward_cursor_positions(pos_in_line) + elif widget == self.widgets.btn_down: + line = iter.get_line() + pos_in_line = iter.get_line_offset() + iter.forward_line() + if iter.get_chars_in_line() != 1: + if iter.get_chars_in_line() < pos_in_line: + pos_in_line = iter.get_chars_in_line()-1 + iter.forward_cursor_positions(pos_in_line) + else: + print(_("Big problem, because you could not get here")) + self.widgets.hal_sourceview.buf.place_cursor(iter) + self.widgets.hal_sourceview.scroll_to_iter(iter,0,False) + else: + self.widgets.hal_mdihistory.grab_focus() + self.gscreen.audio.set_sound(self.data.alert_sound) + selection = self.widgets.hal_mdihistory.tv.get_selection() + model, treeiter = selection.get_selected() + if widget == self.widgets.btn_left: + return + elif widget == self.widgets.btn_right: + return + elif widget == self.widgets.btn_up: + pos = int(model.get_string_from_iter(treeiter)) + first = int(model.get_string_from_iter(model.get_iter_first())) + pos = pos - 1 + if pos < first: + pos = first + self.gscreen.audio.run() + newtreeiter = model.get_iter_from_string(str(pos)) + elif widget == self.widgets.btn_down: + newtreeiter = model.iter_next(treeiter) + else: + print(_("Big problem, because you could not get here")) + try: + selection.select_iter(newtreeiter) + except: + newtreeiter = treeiter + self.gscreen.audio.run() + self.widgets.hal_mdihistory.entry.set_text(model[newtreeiter][0]) + path = model.get_path(newtreeiter) + self.widgets.hal_mdihistory.tv.scroll_to_cell(path,None,False) + + def on_btn_show_kbd_clicked(self, widget, data=None): + # if the image is img_brake macro, we want to interupt the running macro + if self.widgets.btn_show_kbd.get_image() == self.widgets.img_brake_macro: + if self.log: self.gscreen.add_alarm_entry("btn_brake macro_clicked") + self.gscreen.emc.abort() + self.widgets.btn_show_kbd.set_image(self.widgets.img_keyboard) + if self.widgets.ntb_info.get_current_page() == 1: + if self.log: self.gscreen.add_alarm_entry("btn_keyboard_clicked") + self.widgets.ntb_info.set_current_page(0) + else: + self.widgets.ntb_info.set_current_page(1) + + def on_ntb_info_switch_page(self, page, page_num, data=None): + self.widgets.btn_left.set_sensitive(not self.widgets.rbt_mdi.get_active()) + self.widgets.btn_right.set_sensitive(not self.widgets.rbt_mdi.get_active()) + + # Three back buttons to be able to leave notebook pages + # All use the same callback + def on_btn_back_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_back_clicked") + if self.widgets.ntb_button.get_current_page() == 6: # edit mode, go back to auto_buttons + self.widgets.ntb_button.set_current_page(2) + else: # else we go to main button on manual + self.widgets.ntb_button.set_current_page(0) + self.widgets.ntb_main.set_current_page(0) + + # The offset settings, set to cero + def on_btn_touch_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_touch_clicked") + self.widgets.ntb_button.set_current_page(4) + +#ToDo: what to do when there are more axis? + def on_btn_cero_X_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_cero_X_clicked") + self.gscreen.emc.set_mdi_mode() + self.gscreen.mdi_control.set_axis("X",0) + self.widgets.btn_reload.emit("clicked") + self.gscreen.emc.set_manual_mode() + + def on_btn_cero_Y_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_cero_Y_clicked") + self.gscreen.emc.set_mdi_mode() + self.gscreen.mdi_control.set_axis("Y",0) + self.widgets.btn_reload.emit("clicked") + self.gscreen.emc.set_manual_mode() + + def on_btn_cero_Z_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_cero_Z_clicked") + self.gscreen.emc.set_mdi_mode() + self.gscreen.mdi_control.set_axis("Z",0) + self.widgets.btn_reload.emit("clicked") + self.gscreen.emc.set_manual_mode() + + def on_btn_set_value_clicked(self, widget, data=None): + if widget == self.widgets.btn_set_value_X: + axis = "X" + elif widget == self.widgets.btn_set_value_Y: + axis = "Y" + elif widget == self.widgets.btn_set_value_Z: + axis = "Z" + else: + axis = "Unknown" + self.gscreen.add_alarm_entry(_("Offset %s could not be set, because off unnown axis")%axis) + return + self.gscreen.add_alarm_entry("btn_set_value_%s_clicked"%axis) + preset = self.gscreen.prefs.getpref("offset_axis_%s"%axis.lower(), 0, float) + offset = self.entry_dialog(data = preset, header = _("Enter value for axis %s")%axis, label=_("Set axis %s to:")%axis ) + if offset != False or offset == 0: + self.gscreen.add_alarm_entry(_("offset %s set to %f")%(axis,offset)) + self.gscreen.emc.set_mdi_mode() + self.gscreen.mdi_control.set_axis(axis,offset) + self.widgets.btn_reload.emit("clicked") + self.gscreen.emc.set_manual_mode() + self.gscreen.prefs.putpref("offset_axis_%s"%axis.lower(), offset, float) + else: + print(_("conversion error")) + self.gscreen.add_alarm_entry(_("Offset conversion errorbecause off wrong entry")) + self.gscreen.warning_dialog(_("Conversion error !"), True, _("Please enter only numerical values\nValues have not been applied")) +#ToDo:End + + def entry_dialog(self, data=None, header=_("Enter value") ,label=_("Enter the value to set")): + dialog = gtk.Dialog(header, + self.widgets.window1, + gtk.DIALOG_DESTROY_WITH_PARENT, + (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, + gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) + label = gtk.Label(label) + label.modify_font(pango.FontDescription("sans 20")) + calc = gladevcp.Calculator() + dialog.vbox.pack_start(label) + dialog.vbox.add(calc) + if data != None: + calc.set_value(data) + else: + calc.set_value("") + calc.set_property("font","sans 20") + dialog.parse_geometry("400x400") + dialog.set_decorated(True) + dialog.show_all() + response = dialog.run() + value = calc.get_value() + dialog.destroy() + if response == gtk.RESPONSE_ACCEPT: + if value!= None: + return float(value) + return False + + # DRO changes and related thinks + def on_tbtn_rel_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_rel_toggled") + if self.widgets.tbtn_dtg.get_active(): + self.widgets.tbtn_dtg.set_active(False) + if self.widgets.tbtn_rel.get_active(): + self.widgets.tbtn_rel.set_label("Abs.") + self.widgets.gremlin.set_property('use_relative',False) + self.set_property_dro("reference_type", 0) + else: + self.widgets.tbtn_rel.set_label("Rel.") + self.widgets.gremlin.set_property('use_relative',True) + self.set_property_dro("reference_type", 1) + for axis in self.data.axis_list: + self._update_homed(axis) + + def on_tbtn_dtg_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("tbtn_dtg_toggled") + if self.widgets.tbtn_dtg.get_active(): + self.widgets.tbtn_dtg.set_label("GTD.") + self.widgets.gremlin.set_property('show_dtg',True) + self.set_property_dro("reference_type", 2) + else: + self.widgets.tbtn_dtg.set_label("DTG.") + self.widgets.gremlin.set_property('show_dtg',False) + if self.widgets.tbtn_rel.get_active(): + self.set_property_dro("reference_type", 0) + else: + self.set_property_dro("reference_type", 1) + for axis in self.data.axis_list: + self._update_homed(axis) + + def on_tbtn_units_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("tbtn_units_toggled") + if self.widgets.tbtn_units.get_active(): + self.widgets.tbtn_units.set_label("Inch") + self.set_property_dro("display_units_mm", False) + self.widgets.gremlin.set_property('metric_units',False) + self.data.dro_units = _IMPERIAL # 0 = _IMPERIAL ; 1 = _MM + else: + self.widgets.tbtn_units.set_label("mm") + self.set_property_dro("display_units_mm", True) + self.widgets.gremlin.set_property('metric_units',True) + self.data.dro_units = _MM # 0 = _IMPERIAL ; 1 = _MM + + def set_property_dro(self, property, status): + for axis in self.data.axis_list: + self.widgets["hal_dro_%s"%axis.upper()].set_property(property,status) + + # choose a theme to aply + def on_theme_choice_changed(self, widget): + if self.log: self.gscreen.add_alarm_entry("theme changed to %s"%widget.get_active_text()) + self.gscreen.change_theme(widget.get_active_text()) + + # True is fullscreen + def on_btn_fullscreen1_toggled(self, widget): + if self.log: self.gscreen.add_alarm_entry("btn_fullscreen1_toggled") + if widget.get_active(): + self.widgets.window1.fullscreen() + self.gscreen.prefs.putpref('fullscreen1', True, bool) + else: + self.widgets.window1.unfullscreen() + self.gscreen.prefs.putpref('fullscreen1', False, bool) + + def on_rel_colorbutton_color_set(self, widget): + if self.log: self.gscreen.add_alarm_entry("on_rel_colorbutton_color_set") + self.gscreen.set_rel_color() + for axis in self.data.axis_list: + self._update_homed(axis.upper()) + + def on_abs_colorbutton_color_set(self, widget): + if self.log: self.gscreen.add_alarm_entry("on_abs_colorbutton_color_set") + self.gscreen.set_abs_color() + for axis in self.data.axis_list: + self._update_homed(axis.upper()) + + def on_dtg_colorbutton_color_set(self, widget): + if self.log: self.gscreen.add_alarm_entry("on_dtg_colorbutton_color_set") + self.gscreen.set_dtg_color() + for axis in self.data.axis_list: + self._update_homed(axis.upper()) + + def on_grid_size_value_changed(self, widget, data=None): + self.gscreen.set_grid_size(widget) + + def on_tbtn_show_dro_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("show_gremlin_DRO = %s"%widget.get_active()) + self.widgets.gremlin.set_property('metric_units',not self.widgets.tbtn_units.get_active()) + self.widgets.gremlin.set_property('enable_dro',widget.get_active()) + self.gscreen.prefs.putpref('enable_dro', widget.get_active(), bool) + + def on_tbtn_show_dtg_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("show_gremlin_DTG = %s"%widget.get_active()) + self.widgets.gremlin.set_property('show_dtg', widget.get_active()) + self.gscreen.prefs.putpref('show_dtg', widget.get_active(), bool) + + def on_show_offsets_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("show_offset_button_toggled to %s"%widget.get_active()) + self.gscreen.set_show_offsets(widget.get_active()) + self.gscreen.prefs.putpref('show_offsets', widget.get_active(), bool) + + # tool stuff + def on_btn_tool_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_tool_clicked") + self.widgets.ntb_main.set_current_page(2) + self.widgets.ntb_button.set_current_page(7) + + def update_toolinfo(self, tool): + toolinfo = self.widgets.tooledit1.get_toolinfo(tool) + if toolinfo: + # Doku + # toolinfo[0] = cell toggle + # toolinfo[1] = tool number + # toolinfo[2] = pocket number + # toolinfo[3] = X offset + # toolinfo[4] = Y offset + # toolinfo[5] = Z offset + # toolinfo[6] = A offset + # toolinfo[7] = B offset + # toolinfo[8] = C offset + # toolinfo[9] = U offset + # toolinfo[10] = V offset + # toolinfo[11] = W offset + # toolinfo[12] = tool diameter + # toolinfo[13] = frontangle + # toolinfo[14] = backangle + # toolinfo[15] = tool orientation + # toolinfo[16] = tool info + self.widgets.lbl_tool_offset_Z.set_text(toolinfo[5]) + self.widgets.lbl_tool_dia.set_text(toolinfo[12]) + self.widgets.lbl_tool_name.set_text(toolinfo[16]) + if tool == 0: + self.widgets.lbl_tool_offset_Z.set_text("0") + self.widgets.lbl_tool_dia.set_text("0") + self.widgets.lbl_tool_name.set_text("No tool in spindle") + + def on_btn_delete_tool_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("on_btn_delete_tool_clicked") + self.tooledit_btn_delete_tool.emit("clicked") + + def on_btn_add_tool_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("on_btn_add_tool_clicked") + self.tooledit_btn_add_tool.emit("clicked") + + def on_btn_reload_tooltable_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("on_btn_reload_tooltable_clicked") + self.tooledit_btn_reload_tool.emit("clicked") + + def on_btn_apply_tool_changes_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("on_btn_apply_tool_changes_clicked") + self.tooledit_btn_apply_tool.emit("clicked") + + # set tool with M61 Q? or with T? M6 + def on_btn_selected_tool_clicked(self, widget, data=None): + tool = self._get_selected_tool() + if tool == self.gscreen.data.tool_in_spindle: + message = _("Selected tool is allready in spindle, no change needed.") + self.gscreen.warning_dialog(_("Important Warning!"), True, message) + self.gscreen.add_alarm_entry(message) + return + if self.log: self.gscreen.add_alarm_entry("set_tool_with M61 Q%s"%tool) + if tool: + tool = int(tool) + self.emc.set_mdi_mode() + if widget == self.widgets.btn_change_tool: + self.gscreen.mdi_control.user_command("T%s M6"%tool) + else: + self.gscreen.mdi_control.user_command("M61 Q%s"%tool) + self.update_toolinfo(tool) + self.widgets.ntb_main.set_current_page(0) + self.widgets.ntb_button.set_current_page(0) + self.wait_tool_change = True + else: + self.widgets.statusbar1.push(1,_("Could not understand entered tool number. Will not change anything")) + + def _get_selected_tool(self): + if self.log: self.gscreen.add_alarm_entry("get_selected reached") + liststore = self.widgets.tooledit1.model + def match_value_cb(model, path, iter, pathlist): + if model.get_value(iter, 0) == 1 : + pathlist.append(path) + return False # keep the foreach going + pathlist = [] + liststore.foreach(match_value_cb, pathlist) + # foreach works in a depth first fashion + if len(pathlist) > 1: + message = _("you selected more than one tool, to change a tool, the toolnumber must be unic") + self.gscreen.warning_dialog(_("Important Warning!"), True, message) + self.gscreen.add_alarm_entry(message) + return None + elif len(pathlist) == 0: + message = _("you must select the tool to be changed\nWill not change anything") + self.gscreen.warning_dialog(_("Important Warning!"), True, message) + self.gscreen.add_alarm_entry(message) + return None + else: + return(liststore.get_value(liststore.get_iter(pathlist[0]),1)) + + # gremlin relevant calls + def on_rbt_view_P_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("rbt_view_P_toggled") + if self.widgets.rbt_view_P.get_active(): + self.widgets.gremlin.set_property('view','p') + + def on_rbt_view_X_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("rbt_view_X_toggled") + if self.widgets.rbt_view_X.get_active(): + self.widgets.gremlin.set_property('view','x') + + def on_rbt_view_Y_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("rbt_view_Y_toggled") + if self.widgets.rbt_view_Y.get_active(): + self.widgets.gremlin.set_property('view','y') + + def on_rbt_view_Z_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("rbt_view_Z_toggled") + if self.widgets.rbt_view_Z.get_active(): + self.widgets.gremlin.set_property('view','z') + + def on_btn_zoom_in_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_zoom_in_clicked") + self.widgets.gremlin.zoom_in() + + def on_btn_zoom_out_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_zoom_out_clicked") + self.widgets.gremlin.zoom_out() + + def on_btn_delete_view_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_delete_view_clicked") + self.widgets.gremlin.clear_live_plotter() + + def on_tbtn_view_dimension_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_view_dimensions_clicked") + self.widgets.gremlin.set_property('show_extents_option', widget.get_active()) + + def on_tbtn_view_tool_path_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_view_tool_path_clicked") + self.widgets.gremlin.set_property('show_live_plot', widget.get_active()) + + # edit a program or make a new one + def on_btn_edit_clicked(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("btn_edit_clicked") + self.widgets.ntb_button.set_current_page(6) + self.widgets.ntb_preview.hide() + self.widgets.tbl_dro.hide() + w1 , h1 = self.widgets.window1.get_size_request() + w2 , h2 = self.widgets.vbtb_main.get_size_request() + self.widgets.vbx_jog.set_size_request(w1 - w2 , -1) + self.widgets.hal_sourceview.set_sensitive(1) + + # if we leave the edit mode, we will have to show all widgets again + def on_ntb_button_switch_page(self, *args): + if self.log: self.gscreen.add_alarm_entry("ntb_button_page changed to %s"%self.widgets.ntb_button.get_current_page()) + if self.widgets.ntb_button.get_current_page() == 6: + self.widgets.ntb_preview.show() + self.widgets.tbl_dro.show() + self.widgets.vbx_jog.set_size_request(360 , -1) + self.widgets.hal_sourceview.set_sensitive(0) + self.widgets.btn_save.set_sensitive(True) + self.widgets.btn_reload.emit("clicked") + self.widgets.ntb_info.set_current_page(0) + + # Save all changes and run the program + def on_btn_save_and_run_clicked(self, widget, data=None): + if self.widgets.lbl_program.get_label() == "": + self.widgets.btn_save_as.emit("clicked") + else: + self.widgets.btn_save.emit("clicked") + self.widgets.btn_reload.emit("clicked") + self.widgets.ntb_button.set_current_page(2) + self.widgets.btn_run.emit("clicked") + +# ToDo find out how to make a nes file + # make a new file + def on_btn_new_clicked(self, widget, data=None): + self.widgets.btn_save.set_sensitive(False) + self.widgets.hal_sourceview.buf.set_text("") + self.widgets.lbl_program.set_label("") +# ToDo end + + # just go back to auto button and discharge all changes made + def on_btn_close_clicked(self, widget, data=None): + self.on_ntb_button_switch_page() + self.widgets.ntb_button.set_current_page(2) + self.widgets.btn_reload.emit("clicked") + + def on_tbtn_optional_blocks_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("on_tbtn_optional_blocks_toggled " + str(self.widgets.tbtn_optional_blocks.get_active())) + self.emc.blockdel(widget.get_active()) + self.gscreen.prefs.putpref('blockdel', widget.get_active()) + self.widgets.btn_reload.emit("clicked") + + def on_tbtn_optional_stops_toggled(self, widget, data=None): + if self.log: self.gscreen.add_alarm_entry("on_tbtn_optional_stops_toggled " + str(self.widgets.tbtn_optional_stops.get_active())) + self.emc.opstop(not widget.get_active()) + self.gscreen.prefs.putpref('opstop', not widget.get_active()) + + # use the hal_status widget to control buttons and + # actions allowed by the user and sensitive widgets + def on_hal_status_all_homed(self,widget): + self.gscreen.add_alarm_entry("all_homed") + self.widgets.statusbar1.push(1,"") + self.widgets.ntb_button.set_current_page(0) + widgetlist = ["rbt_mdi", "rbt_auto", "btn_index_tool", "btn_change_tool"] + self.gscreen.sensitize_widgets(widgetlist,True) + + def on_hal_status_file_loaded(self, widget, data=None): + self.gscreen.add_alarm_entry("file_loaded_%s"%data) + if len(data) > 50: + data = data[0:10] + "..." + data[len(data)-39:len(data)] + self.widgets.lbl_program.set_text(data) + + def on_hal_status_not_all_homed(self,*args): + self.gscreen.add_alarm_entry("not_all_homed") + widgetlist = ["rbt_mdi", "rbt_auto", "btn_index_tool", "btn_change_tool"] + self.gscreen.sensitize_widgets(widgetlist,False) + + def on_hal_status_interp_idle(self,widget): + self.gscreen.add_alarm_entry("idle") + widgetlist = ["rbt_manual", "rbt_mdi", "rbt_auto", "rbt_setup", "btn_step", + "ntb_jog", "btn_from_line", "btn_reload", "tbtn_flood", "tbtn_mist", + "rbt_forward", "rbt_reverse", "rbt_stop", "btn_load", "btn_edit","tbtn_optional_blocks" + ] + self.gscreen.sensitize_widgets(widgetlist,1) + for btn in self.macrobuttons: + btn.set_sensitive(True) + self.widgets.btn_show_kbd.set_image(self.widgets.img_keyboard) + self.widgets.btn_run.set_sensitive(True) + self._update_homed("X") + if self.wait_tool_change == True: + self.emc.set_manual_mode() + self.wait_tool_change = False + self.interpreter = _IDLE + + # this can not be done with the status widget, + # because it will not emit a RESUME signal + def on_tbtn_pause_toggled(self, widget, data=None): + self.gscreen.add_alarm_entry("pause_toggled") + widgetlist = ["btn_step", "tbtn_flood", "tbtn_mist", + "rbt_forward", "rbt_reverse", "rbt_stop" + ] + self.gscreen.sensitize_widgets(widgetlist,widget.get_active()) + + def on_hal_status_interp_run(self,widget): + self.gscreen.add_alarm_entry("run") + widgetlist = ["rbt_manual", "rbt_mdi", "rbt_auto", "rbt_setup", "btn_step", + "ntb_jog", "btn_from_line", "btn_reload", "tbtn_flood", "tbtn_mist", + "rbt_forward", "rbt_reverse", "rbt_stop", "btn_load", "btn_edit", "tbtn_optional_blocks" + ] + self.gscreen.sensitize_widgets(widgetlist,0) + self.widgets.btn_run.set_sensitive(False) + self.interpreter = _RUN + +# ToDo +# This should go easier for the user, +# hope to find a better solution + def on_btn_from_line_clicked(self, widget, data=None): + self.gscreen.add_alarm_entry("Restart program from line clicked") + self.widgets.dialog_from_line.show() + + def on_line_down_clicked(self, widget, data=None): + self.widgets.adj_restart.set_value(self.widgets.adj_restart.get_value()-1) + + def on_line_up_clicked(self, widget, data=None): + self.widgets.adj_restart.set_value(self.widgets.adj_restart.get_value()+1) + + def on_adj_restart_value_changed(self, widget, data=None): + self.widgets.hal_sourceview.set_line_number(self.widgets.adj_restart.get_value()) + + def on_restart_ok_clicked(self, widget, data=None): + self.emc.re_start(self.widgets.adj_restart.get_value()) + self.gscreen.add_alarm_entry("Restart program from line %d"%self.widgets.adj_restart.get_value()) + self.widgets.dialog_from_line.destroy() + + def on_restart_cancel_clicked(self, widget, data=None): + self.widgets.dialog_from_line.destroy() +# ToDo end + + def on_hal_status_mode_auto(self,widget): + self.gscreen.add_alarm_entry("mode_auto") + self.widgets.ntb_main.set_current_page(0) + self.widgets.ntb_jog.set_current_page(2) + self.widgets.ntb_button.set_current_page(2) + self.widgets.ntb_preview.set_current_page(0) + self.widgets.ntb_info.set_current_page(0) + + def on_hal_status_mode_manual(self,widget): + self.gscreen.add_alarm_entry("mode_manual") + self.widgets.ntb_main.set_current_page(0) + self.widgets.ntb_jog.set_current_page(0) + self.widgets.ntb_button.set_current_page(0) + self.widgets.ntb_preview.set_current_page(0) + self.widgets.ntb_info.set_current_page(0) + + def on_hal_status_mode_mdi(self,widget): + self.gscreen.add_alarm_entry("mode_mdi") + self.widgets.ntb_main.set_current_page(0) + self.widgets.ntb_jog.set_current_page(1) + self.widgets.ntb_button.set_current_page(1) + self.widgets.ntb_info.set_current_page(1) + + def on_hal_status_state_estop(self,widget): + self.gscreen.add_alarm_entry("estop") + widgetlist = ["rbt_manual", "rbt_mdi", "rbt_auto", "btn_homing", "btn_touch", "btn_tool", + "ntb_jog", "scl_feed", "btn_feed_100", "rbt_forward", "btn_index_tool", + "rbt_reverse", "rbt_stop", "tbtn_flood", "tbtn_mist", "btn_change_tool", + "btn_spindle_100", "scl_max_vel", "scl_spindle", "rbt_manual" + ] + self.gscreen.sensitize_widgets(widgetlist,False) + self.widgets.rbt_manual.set_active(1) + + def on_hal_status_state_estop_reset(self,widget): + self.gscreen.add_alarm_entry("estop_reset") + self.widgets.hal_tbtn_on.set_sensitive(True) + + def on_hal_status_state_off(self,widget): + self.gscreen.add_alarm_entry("state_off") + widgetlist = ["rbt_manual", "rbt_mdi", "rbt_auto", "btn_homing", "btn_touch", "btn_tool", + "ntb_jog", "scl_feed", "btn_feed_100", "rbt_forward", "btn_index_tool", + "rbt_reverse", "rbt_stop", "tbtn_flood", "tbtn_mist", "btn_change_tool", + "btn_spindle_100", "scl_max_vel", "scl_spindle" + ] + self.gscreen.sensitize_widgets(widgetlist,False) + self.widgets.rbt_manual.set_active(True) + + def on_hal_status_state_on(self,widget): + self.gscreen.add_alarm_entry("state_on") + widgetlist = ["rbt_manual", "btn_homing", "btn_touch", "btn_tool", + "ntb_jog", "scl_feed", "btn_feed_100", "rbt_forward", + "rbt_reverse", "rbt_stop", "tbtn_flood", "tbtn_mist", + "btn_spindle_100", "scl_max_vel", "scl_spindle" + ] + self.gscreen.sensitize_widgets(widgetlist,True) + self.widgets.rbt_manual.set_active(True) + self._update_homed("X") + + def change_sound(self,widget,sound): + file = widget.get_filename() + if file: + self.data[sound+"_sound"] = file + temp = "audio_"+ sound + self.gscreen.prefs.putpref(temp, file, str) + + # This connects siganals without using glade's autoconnect method + # in this case to destroy the window + # it calls the method in gscreen: gscreen.on_window_destroy() + # and run-at-line dialog + def connect_signals(self,handlers): + signal_list = [ ["window1","destroy", "on_window1_destroy"], + ["audio_error_chooser","selection_changed","change_sound","error"], + ["audio_alert_chooser","selection_changed","change_sound","alert"], + ] + for i in signal_list: + if len(i) == 3: + self.gscreen.widgets[i[0]].connect(i[1], self.gscreen[i[2]]) + elif len(i) == 4: + self.gscreen.widgets[i[0]].connect(i[1], self.gscreen[i[2]],i[3]) + + # 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_active_gcodes() + self.gscreen.update_active_mcodes() + self._update_vel() + self._update_coolant() + self._update_spindle_btn() + self.widgets.active_feed_label.set_label(self.gscreen.data.active_feed_command) + self.widgets.active_speed_label.set_label(self.gscreen.data.active_spindle_command) + self.on_scl_feed_value_changed(self.gscreen.data.active_feed_command) + if self.tool != self.gscreen.data.tool_in_spindle: + self.tool = self.gscreen.data.tool_in_spindle + self.widgets.lbl_tool_no.set_label(str(self.tool)) + self.update_toolinfo(self.tool) + if self.X_homed != self.data.x_is_homed: + self._update_homed("X") + if self.Y_homed != self.data.y_is_homed: + self._update_homed("Y") + if self.Z_homed != self.data.z_is_homed: + self._update_homed("Z") + + # 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 + # we make pins for the hardware buttons witch can be placed around the + # screen to activate the coresponding buttons on the GUI + def initialize_pins(self): + for h_button in range(0,10): + signal = str("h_button_%s"%h_button) + self.signal = hal_glib.GPin(self.gscreen.halcomp.newpin("h_button_%s"%h_button, hal.HAL_BIT, hal.HAL_IN)) + self.signal.connect("value_changed", self._on_h_button_changed) + + for v_button in range(0,7): + signal = str("v_button_%s"%v_button) + self.signal = hal_glib.GPin(self.gscreen.halcomp.newpin("v_button_%s"%v_button, hal.HAL_BIT, hal.HAL_IN)) + self.signal.connect("value_changed", self._on_v_button_changed) + + # The actions of the buttons + def _on_h_button_changed(self,pin): + self.gscreen.add_alarm_entry("got h_button_signal %s"%pin.name) + # we check if the button is pressed ore release, + # otehrwise a signal will be emitted, wenn the button is released and + # the signal drob down to cero + if not pin.get(): + return + # lets see on witch button_box we are + page = self.widgets.ntb_button.get_current_page() + # witch button has been pressed + btn = str(pin.name) + # from the list we declared under __init__ we get the button number + nr = int(btn[-1]) + tab = self.h_tabs[page] # see in the __init__ section for the declaration of self.tabs + button = None + # we check if there is a buuton or the user pressed a hardware button under + # a non existing software button + for index in tab: + if int(index[0]) == nr: + # this is the name of the button + button = index[1] + if button: + print("Button ",button," is ",self.widgets[button].get_sensitive()) + # only emit a signal if the button is sensitive, otherwise + # running actions may be interupted + if self.widgets[button].get_sensitive() == False: + print("%s not_sensitive"%button) + self.gscreen.add_alarm_entry("%s not_sensitive"%button) + return + self.widgets[button].emit("clicked") + else: + # as we are generating the macro buttons dynamecely, we can't use the same + # method as above, here is how we do it + if page == 1: # macro page + # does the user press a valid hardware button? + if nr < len(self.macrobuttons): + button = self.macrobuttons[nr] # This list is generated in add_macros_buttons(self) + # is the button sensitive? + if button.get_sensitive() == False: + print("%s not_sensitive"%button) + return + button.emit("pressed") + else: + print("No function on this button") + self.gscreen.add_alarm_entry("%s not_sensitive"%button) + else: + print("No function on this button") + + def _on_v_button_changed(self,pin): + self.gscreen.add_alarm_entry("got v_button_signal %s"%pin.name) + if not pin.get(): + return + btn = str(pin.name) + nr = int(btn[-1]) + tab = self.v_tabs # see in the __init__ section for the declaration of self.tabs + button = None + for index in tab: + if int(index[0]) == nr: + # this is the name of the button + button = index[1] + if button: + # only emit a signal if the button is sensitive, otherwise + # running actions may be interupted + if self.widgets[button].get_sensitive() == False: + print("%s not_sensitive"%button) + self.gscreen.add_alarm_entry("%s not_sensitive"%button) + return + self.widgets[button].emit("clicked") + else: + print("No button found in v_tabs from %s"%pin.name) + self.gscreen.add_alarm_entry("No button found in v_tabs from %s"%pin.name) diff --git a/configs/sim/gmoccapy/gmoccapy_hw_btn_postgui.hal b/configs/sim/gmoccapy/gmoccapy_hw_btn_postgui.hal new file mode 100644 index 000000000..2546ceaf9 --- /dev/null +++ b/configs/sim/gmoccapy/gmoccapy_hw_btn_postgui.hal @@ -0,0 +1,36 @@ +################################################################### +# moccapy_postgui.hal file from Norbert Schechner # +################################################################### + +net spindle-speed-limited gscreen.hal_hbar_spindle_feedback +net spindle-at-speed gscreen.hal_led_spindle_at_speed + +unlinkp iocontrol.0.tool-change +unlinkp iocontrol.0.tool-changed +unlinkp hal_manualtoolchange.change +unlinkp hal_manualtoolchange.changed +unlinkp hal_manualtoolchange.number + +net tool-change gscreen.change-tool iocontrol.0.tool-change +net tool-changed gscreen.tool-changed iocontrol.0.tool-changed +net tool-prep-number gscreen.tool-number iocontrol.0.tool-prep-number + +net h_hardware_button_0 h_buttonlist.h_button_0 => gscreen.h_button_0 +net h_hardware_button_1 h_buttonlist.h_button_1 => gscreen.h_button_1 +net h_hardware_button_2 h_buttonlist.h_button_2 => gscreen.h_button_2 +net h_hardware_button_3 h_buttonlist.h_button_3 => gscreen.h_button_3 +net h_hardware_button_4 h_buttonlist.h_button_4 => gscreen.h_button_4 +net h_hardware_button_5 h_buttonlist.h_button_5 => gscreen.h_button_5 +net h_hardware_button_6 h_buttonlist.h_button_6 => gscreen.h_button_6 +net h_hardware_button_7 h_buttonlist.h_button_7 => gscreen.h_button_7 +net h_hardware_button_8 h_buttonlist.h_button_8 => gscreen.h_button_8 +net h_hardware_button_9 h_buttonlist.h_button_9 => gscreen.h_button_9 + +net v_hardware_button_0 v_buttonlist.v_button_0 => gscreen.v_button_0 +net v_hardware_button_1 v_buttonlist.v_button_1 => gscreen.v_button_1 +net v_hardware_button_2 v_buttonlist.v_button_2 => gscreen.v_button_2 +net v_hardware_button_3 v_buttonlist.v_button_3 => gscreen.v_button_3 +net v_hardware_button_4 v_buttonlist.v_button_4 => gscreen.v_button_4 +net v_hardware_button_5 v_buttonlist.v_button_5 => gscreen.v_button_5 +net v_hardware_button_6 v_buttonlist.v_button_6 => gscreen.v_button_6 + diff --git a/configs/sim/gmoccapy/gmoccapy_left_panel.ini b/configs/sim/gmoccapy/gmoccapy_left_panel.ini new file mode 100644 index 000000000..1f1877a4b --- /dev/null +++ b/configs/sim/gmoccapy/gmoccapy_left_panel.ini @@ -0,0 +1,201 @@ +# 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 = $Revision$ +MACHINE = gmoccapy +#DEBUG = 0x7FFFFFFF +DEBUG = 0 + +# for details see nc_files/subroutines/maco_instructions.txt +[MACROS] +MACRO = i_am_lost +MACRO = halo_world +MACRO = jog_around +MACRO = increment xinc yinc +MACRO = go_to_position X-pos Y-pos Z-pos + +# Sections for display options ------------------------------------------------ +[DISPLAY] +DISPLAY = gscreen -c gmoccapy -d +PREFERENCE_FILE_PATH = ~/.gmoccapy_preferences + +#EMBED_TAB_NAME = right_side_panel +#EMBED_TAB_LOCATION = box_right +#EMBED_TAB_COMMAND = gladevcp -x {XID} v_buttonlist.glade + +EMBED_TAB_NAME = left_side_panel +EMBED_TAB_LOCATION = box_left +EMBED_TAB_COMMAND = gladevcp -x {XID} vcp_box.glade + +#EMBED_TAB_NAME = camera +#EMBED_TAB_LOCATION = ntb_user_tabs +#EMBED_TAB_COMMAND = camview-emc -w {XID} + +#EMBED_TAB_NAME = Tab 2 +#EMBED_TAB_LOCATION = ntb_user_tabs +#EMBED_TAB_COMMAND = gladevcp -x {XID} vcp_box.glade + + +# uncomment the following three lines to show the buttonlist +# dont forget to uncomment also the button lines in gmoccapy_postgui.hal +#EMBED_TAB_NAME = h_buttonlist +#EMBED_TAB_LOCATION = ntb_setup +#EMBED_TAB_COMMAND = gladevcp h_buttonlist.glade + +#EMBED_TAB_NAME = v_buttonlist +#EMBED_TAB_LOCATION = ntb_setup +#EMBED_TAB_COMMAND = gladevcp v_buttonlist.glade + +# Cycle time, in milliseconds, that display will sleep between polls +CYCLE_TIME = 100 + +# Highest value that will be allowed for feed override, 1.0 = 100% +MAX_FEED_OVERRIDE = 1.5 +MAX_SPINDLE_OVERRIDE = 1.2 +MIN_SPINDLE_OVERRIDE = .5 + +# Max and default jog speeds in units per second +MAX_LINEAR_VELOCITY = 166 +DEFAULT_LINEAR_VELOCITY = 5 +MAX_ANGULAR_VELOCITY = 234 + +# Prefix to be used +PROGRAM_PREFIX = nc_files/ + +# Introductory graphic +INTRO_GRAPHIC = linuxcnc.gif +INTRO_TIME = 5 + +# list of selectable jog increments +INCREMENTS = 1mm, 0.1mm, 0.01mm, 0.001mm, 10mm, 1.2345in + +[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] +TASK = milltask +CYCLE_TIME = 0.001 + +# Part program interpreter section -------------------------------------------- +[RS274NGC] +RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.005 G80 G90 G94 G97 M5 M9 +PARAMETER_FILE = sim.var +SUBROUTINE_PATH = nc_files/subroutines + +# Motion control section ------------------------------------------------------ +[EMCMOT] +EMCMOT = motmod +COMM_TIMEOUT = 1.0 +COMM_WAIT = 0.010 +BASE_PERIOD = 0 +SERVO_PERIOD = 1000000 + +# Hardware Abstraction Layer section -------------------------------------------------- +[HAL] +HALFILE = core_sim.hal +HALFILE = sim_spindle_encoder.hal +HALFILE = axis_manualtoolchange.hal +HALFILE = simulated_home.hal + +# Single file that is executed after the GUI has started. +POSTGUI_HALFILE = gmoccapy_postgui.hal + +HALUI = halui + +# Trajectory planner section -------------------------------------------------- +[TRAJ] +AXES = 3 +COORDINATES = X Y Z +HOME = 0 0 0 +LINEAR_UNITS = mm +ANGULAR_UNITS = degree +CYCLE_TIME = 0.010 +DEFAULT_VELOCITY = 9.0 +MAX_VELOCITY = 234 +POSITION_FILE = position.txt + +# First axis +[AXIS_0] +TYPE = LINEAR +HOME = 0.000 +MAX_VELOCITY = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 400.0 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 0.0 +HOME_SEARCH_VEL = 200.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 = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 400.0 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 0.0 +HOME_SEARCH_VEL = 200.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 = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 0.001 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 1.0 +HOME_SEARCH_VEL = 200.0 +HOME_LATCH_VEL = 20.0 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 0 +HOME_IS_SHARED = 1 + +# Only needed for gmoccapy to set min and max values for the spindle bar +[SPINDLE] +MIN_REV = 0 +MAX_REV = 6000 + +# section for main IO controller parameters ----------------------------------- +[EMCIO] +EMCIO = io +CYCLE_TIME = 0.100 + +# tool table file +TOOL_TABLE = tool.tbl +TOOL_CHANGE_POSITION = 100 100 -10 +TOOL_CHANGE_QUILL_UP = 1 diff --git a/configs/sim/gmoccapy/gmoccapy_postgui.hal b/configs/sim/gmoccapy/gmoccapy_postgui.hal new file mode 100644 index 000000000..9df0e0df3 --- /dev/null +++ b/configs/sim/gmoccapy/gmoccapy_postgui.hal @@ -0,0 +1,36 @@ +################################################################### +# moccapy_postgui.hal file from Norbert Schechner # +################################################################### + +net spindle-speed-limited gscreen.hal_hbar_spindle_feedback +net spindle-at-speed gscreen.hal_led_spindle_at_speed + +unlinkp iocontrol.0.tool-change +unlinkp iocontrol.0.tool-changed +unlinkp hal_manualtoolchange.change +unlinkp hal_manualtoolchange.changed +unlinkp hal_manualtoolchange.number + +net tool-change gscreen.change-tool iocontrol.0.tool-change +net tool-changed gscreen.tool-changed iocontrol.0.tool-changed +net tool-prep-number gscreen.tool-number iocontrol.0.tool-prep-number + +#net h_hardware_button_0 h_buttonlist.h_button_0 => gscreen.h_button_0 +#net h_hardware_button_1 h_buttonlist.h_button_1 => gscreen.h_button_1 +#net h_hardware_button_2 h_buttonlist.h_button_2 => gscreen.h_button_2 +#net h_hardware_button_3 h_buttonlist.h_button_3 => gscreen.h_button_3 +#net h_hardware_button_4 h_buttonlist.h_button_4 => gscreen.h_button_4 +#net h_hardware_button_5 h_buttonlist.h_button_5 => gscreen.h_button_5 +#net h_hardware_button_6 h_buttonlist.h_button_6 => gscreen.h_button_6 +#net h_hardware_button_7 h_buttonlist.h_button_7 => gscreen.h_button_7 +#net h_hardware_button_8 h_buttonlist.h_button_8 => gscreen.h_button_8 +#net h_hardware_button_9 h_buttonlist.h_button_9 => gscreen.h_button_9 + +#net v_hardware_button_0 v_buttonlist.v_button_0 => gscreen.v_button_0 +#net v_hardware_button_1 v_buttonlist.v_button_1 => gscreen.v_button_1 +#net v_hardware_button_2 v_buttonlist.v_button_2 => gscreen.v_button_2 +#net v_hardware_button_3 v_buttonlist.v_button_3 => gscreen.v_button_3 +#net v_hardware_button_4 v_buttonlist.v_button_4 => gscreen.v_button_4 +#net v_hardware_button_5 v_buttonlist.v_button_5 => gscreen.v_button_5 +#net v_hardware_button_6 v_buttonlist.v_button_6 => gscreen.v_button_6 + diff --git a/configs/sim/gmoccapy/gmoccapy_right_panel.ini b/configs/sim/gmoccapy/gmoccapy_right_panel.ini new file mode 100644 index 000000000..d4fe78672 --- /dev/null +++ b/configs/sim/gmoccapy/gmoccapy_right_panel.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 = $Revision$ +MACHINE = gmoccapy +#DEBUG = 0x7FFFFFFF +DEBUG = 0 + +# for details see nc_files/subroutines/maco_instructions.txt +[MACROS] +MACRO = i_am_lost +MACRO = halo_world +MACRO = jog_around +MACRO = increment xinc yinc +MACRO = go_to_position X-pos Y-pos Z-pos + +# Sections for display options ------------------------------------------------ +[DISPLAY] +DISPLAY = gscreen -c gmoccapy -d +PREFERENCE_FILE_PATH = ~/.gmoccapy_preferences + +EMBED_TAB_NAME = right_side_panel +EMBED_TAB_LOCATION = box_right +EMBED_TAB_COMMAND = gladevcp -x {XID} v_buttonlist.glade + +#EMBED_TAB_NAME = camera +#EMBED_TAB_LOCATION = ntb_user_tabs +#EMBED_TAB_COMMAND = camview-emc -w {XID} + +#EMBED_TAB_NAME = Tab 2 +#EMBED_TAB_LOCATION = ntb_user_tabs +#EMBED_TAB_COMMAND = gladevcp -x {XID} vcp_box.glade + +#EMBED_TAB_NAME = left_side_panel +#EMBED_TAB_LOCATION = box_left +#EMBED_TAB_COMMAND = gladevcp -x {XID} vcp_box.glade + +# uncomment the following three lines to show the buttonlist +# dont forget to uncomment also the button lines in gmoccapy_postgui.hal +#EMBED_TAB_NAME = h_buttonlist +#EMBED_TAB_LOCATION = ntb_setup +#EMBED_TAB_COMMAND = gladevcp h_buttonlist.glade + +#EMBED_TAB_NAME = v_buttonlist +#EMBED_TAB_LOCATION = ntb_setup +#EMBED_TAB_COMMAND = gladevcp v_buttonlist.glade + +# Cycle time, in milliseconds, that display will sleep between polls +CYCLE_TIME = 100 + +# Highest value that will be allowed for feed override, 1.0 = 100% +MAX_FEED_OVERRIDE = 1.5 +MAX_SPINDLE_OVERRIDE = 1.2 +MIN_SPINDLE_OVERRIDE = .5 + +# Max and default jog speeds in units per second +MAX_LINEAR_VELOCITY = 166 +DEFAULT_LINEAR_VELOCITY = 5 +MAX_ANGULAR_VELOCITY = 234 + +# Prefix to be used +PROGRAM_PREFIX = nc_files/ + +# Introductory graphic +INTRO_GRAPHIC = linuxcnc.gif +INTRO_TIME = 5 + +# list of selectable jog increments +INCREMENTS = 1mm, 0.1mm, 0.01mm, 0.001mm, 10mm, 1.2345in + +[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] +TASK = milltask +CYCLE_TIME = 0.001 + +# Part program interpreter section -------------------------------------------- +[RS274NGC] +RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.005 G80 G90 G94 G97 M5 M9 +PARAMETER_FILE = sim.var +SUBROUTINE_PATH = nc_files/subroutines + +# Motion control section ------------------------------------------------------ +[EMCMOT] +EMCMOT = motmod +COMM_TIMEOUT = 1.0 +COMM_WAIT = 0.010 +BASE_PERIOD = 0 +SERVO_PERIOD = 1000000 + +# Hardware Abstraction Layer section -------------------------------------------------- +[HAL] +HALFILE = core_sim.hal +HALFILE = sim_spindle_encoder.hal +HALFILE = axis_manualtoolchange.hal +HALFILE = simulated_home.hal + +# Single file that is executed after the GUI has started. +POSTGUI_HALFILE = gmoccapy_postgui.hal + +HALUI = halui + +# Trajectory planner section -------------------------------------------------- +[TRAJ] +AXES = 3 +COORDINATES = X Y Z +HOME = 0 0 0 +LINEAR_UNITS = mm +ANGULAR_UNITS = degree +CYCLE_TIME = 0.010 +DEFAULT_VELOCITY = 9.0 +MAX_VELOCITY = 234 +POSITION_FILE = position.txt + +# First axis +[AXIS_0] +TYPE = LINEAR +HOME = 0.000 +MAX_VELOCITY = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 400.0 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 0.0 +HOME_SEARCH_VEL = 200.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 = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 400.0 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 0.0 +HOME_SEARCH_VEL = 200.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 = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 0.001 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 1.0 +HOME_SEARCH_VEL = 200.0 +HOME_LATCH_VEL = 20.0 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 0 +HOME_IS_SHARED = 1 + +# Only needed for gmoccapy to set min and max values for the spindle bar +[SPINDLE] +MIN_REV = 0 +MAX_REV = 6000 + +# section for main IO controller parameters ----------------------------------- +[EMCIO] +EMCIO = io +CYCLE_TIME = 0.100 + +# tool table file +TOOL_TABLE = tool.tbl +TOOL_CHANGE_POSITION = 100 100 -10 +TOOL_CHANGE_QUILL_UP = 1 diff --git a/configs/sim/gmoccapy/gmoccapy_with_simulated_hardware_buttons.ini b/configs/sim/gmoccapy/gmoccapy_with_simulated_hardware_buttons.ini new file mode 100644 index 000000000..82f5df081 --- /dev/null +++ b/configs/sim/gmoccapy/gmoccapy_with_simulated_hardware_buttons.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 = $Revision$ +MACHINE = gmoccapy +#DEBUG = 0x7FFFFFFF +DEBUG = 0 + +# for details see nc_files/subroutines/maco_instructions.txt +[MACROS] +MACRO = i_am_lost +MACRO = halo_world +MACRO = jog_around +MACRO = increment xinc yinc +MACRO = go_to_position X-pos Y-pos Z-pos + +# Sections for display options ------------------------------------------------ +[DISPLAY] +DISPLAY = gscreen -c gmoccapy -d +PREFERENCE_FILE_PATH = ~/.gmoccapy_preferences + +#EMBED_TAB_NAME = right_side_panel +#EMBED_TAB_LOCATION = box_right +#EMBED_TAB_COMMAND = gladevcp -x {XID} v_buttonlist.glade + +#EMBED_TAB_NAME = left_side_panel +#EMBED_TAB_LOCATION = box_left +#EMBED_TAB_COMMAND = gladevcp -x {XID} vcp_box.glade + +#EMBED_TAB_NAME = camera +#EMBED_TAB_LOCATION = ntb_user_tabs +#EMBED_TAB_COMMAND = camview-emc -w {XID} + +#EMBED_TAB_NAME = Tab 2 +#EMBED_TAB_LOCATION = ntb_user_tabs +#EMBED_TAB_COMMAND = gladevcp -x {XID} vcp_box.glade + +# uncomment the following three lines to show the buttonlist +# dont forget to uncomment also the button lines in gmoccapy_postgui.hal +EMBED_TAB_NAME = h_buttonlist +EMBED_TAB_LOCATION = ntb_setup +EMBED_TAB_COMMAND = gladevcp h_buttonlist.glade + +EMBED_TAB_NAME = v_buttonlist +EMBED_TAB_LOCATION = ntb_setup +EMBED_TAB_COMMAND = gladevcp v_buttonlist.glade + +# Cycle time, in milliseconds, that display will sleep between polls +CYCLE_TIME = 100 + +# Highest value that will be allowed for feed override, 1.0 = 100% +MAX_FEED_OVERRIDE = 1.5 +MAX_SPINDLE_OVERRIDE = 1.2 +MIN_SPINDLE_OVERRIDE = .5 + +# Max and default jog speeds in units per second +MAX_LINEAR_VELOCITY = 166 +DEFAULT_LINEAR_VELOCITY = 5 +MAX_ANGULAR_VELOCITY = 234 + +# Prefix to be used +PROGRAM_PREFIX = nc_files/ + +# Introductory graphic +INTRO_GRAPHIC = linuxcnc.gif +INTRO_TIME = 5 + +# list of selectable jog increments +INCREMENTS = 1mm, 0.1mm, 0.01mm, 0.001mm, 10mm, 1.2345in + +[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] +TASK = milltask +CYCLE_TIME = 0.001 + +# Part program interpreter section -------------------------------------------- +[RS274NGC] +RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.005 G80 G90 G94 G97 M5 M9 +PARAMETER_FILE = sim.var +SUBROUTINE_PATH = nc_files/subroutines + +# Motion control section ------------------------------------------------------ +[EMCMOT] +EMCMOT = motmod +COMM_TIMEOUT = 1.0 +COMM_WAIT = 0.010 +BASE_PERIOD = 0 +SERVO_PERIOD = 1000000 + +# Hardware Abstraction Layer section -------------------------------------------------- +[HAL] +HALFILE = core_sim.hal +HALFILE = sim_spindle_encoder.hal +HALFILE = axis_manualtoolchange.hal +HALFILE = simulated_home.hal + +# Single file that is executed after the GUI has started. +POSTGUI_HALFILE = gmoccapy_hw_btn_postgui.hal + +HALUI = halui + +# Trajectory planner section -------------------------------------------------- +[TRAJ] +AXES = 3 +COORDINATES = X Y Z +HOME = 0 0 0 +LINEAR_UNITS = mm +ANGULAR_UNITS = degree +CYCLE_TIME = 0.010 +DEFAULT_VELOCITY = 9.0 +MAX_VELOCITY = 234 +POSITION_FILE = position.txt + +# First axis +[AXIS_0] +TYPE = LINEAR +HOME = 0.000 +MAX_VELOCITY = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 400.0 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 0.0 +HOME_SEARCH_VEL = 200.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 = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 400.0 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 0.0 +HOME_SEARCH_VEL = 200.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 = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 0.001 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 1.0 +HOME_SEARCH_VEL = 200.0 +HOME_LATCH_VEL = 20.0 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 0 +HOME_IS_SHARED = 1 + +# Only needed for gmoccapy to set min and max values for the spindle bar +[SPINDLE] +MIN_REV = 0 +MAX_REV = 6000 + +# section for main IO controller parameters ----------------------------------- +[EMCIO] +EMCIO = io +CYCLE_TIME = 0.100 + +# tool table file +TOOL_TABLE = tool.tbl +TOOL_CHANGE_POSITION = 100 100 -10 +TOOL_CHANGE_QUILL_UP = 1 diff --git a/configs/sim/gmoccapy/gmoccapy_with_user_tabs.ini b/configs/sim/gmoccapy/gmoccapy_with_user_tabs.ini new file mode 100644 index 000000000..3a10ee640 --- /dev/null +++ b/configs/sim/gmoccapy/gmoccapy_with_user_tabs.ini @@ -0,0 +1,201 @@ +# 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 = $Revision$ +MACHINE = gmoccapy +#DEBUG = 0x7FFFFFFF +DEBUG = 0 + +# for details see nc_files/subroutines/maco_instructions.txt +[MACROS] +MACRO = i_am_lost +MACRO = halo_world +MACRO = jog_around +MACRO = increment xinc yinc +MACRO = go_to_position X-pos Y-pos Z-pos + +# Sections for display options ------------------------------------------------ +[DISPLAY] +DISPLAY = gscreen -c gmoccapy -d +PREFERENCE_FILE_PATH = ~/.gmoccapy_preferences + +#EMBED_TAB_NAME = right_side_panel +#EMBED_TAB_LOCATION = box_right +#EMBED_TAB_COMMAND = gladevcp -x {XID} v_buttonlist.glade + +#EMBED_TAB_NAME = left_side_panel +#EMBED_TAB_LOCATION = box_left +#EMBED_TAB_COMMAND = gladevcp -x {XID} vcp_box.glade + +EMBED_TAB_NAME = DRO +EMBED_TAB_LOCATION = ntb_user_tabs +EMBED_TAB_COMMAND = gladevcp -x {XID} dro.glade + +EMBED_TAB_NAME = Tab 2 +EMBED_TAB_LOCATION = ntb_user_tabs +EMBED_TAB_COMMAND = gladevcp -x {XID} vcp_box.glade + + +# uncomment the following three lines to show the buttonlist +# dont forget to uncomment also the button lines in gmoccapy_postgui.hal +#EMBED_TAB_NAME = h_buttonlist +#EMBED_TAB_LOCATION = ntb_setup +#EMBED_TAB_COMMAND = gladevcp h_buttonlist.glade + +#EMBED_TAB_NAME = v_buttonlist +#EMBED_TAB_LOCATION = ntb_setup +#EMBED_TAB_COMMAND = gladevcp v_buttonlist.glade + +# Cycle time, in milliseconds, that display will sleep between polls +CYCLE_TIME = 100 + +# Highest value that will be allowed for feed override, 1.0 = 100% +MAX_FEED_OVERRIDE = 1.5 +MAX_SPINDLE_OVERRIDE = 1.2 +MIN_SPINDLE_OVERRIDE = .5 + +# Max and default jog speeds in units per second +MAX_LINEAR_VELOCITY = 166 +DEFAULT_LINEAR_VELOCITY = 5 +MAX_ANGULAR_VELOCITY = 234 + +# Prefix to be used +PROGRAM_PREFIX = nc_files/ + +# Introductory graphic +INTRO_GRAPHIC = linuxcnc.gif +INTRO_TIME = 5 + +# list of selectable jog increments +INCREMENTS = 1mm, 0.1mm, 0.01mm, 0.001mm, 10mm, 1.2345in + +[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] +TASK = milltask +CYCLE_TIME = 0.001 + +# Part program interpreter section -------------------------------------------- +[RS274NGC] +RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.005 G80 G90 G94 G97 M5 M9 +PARAMETER_FILE = sim.var +SUBROUTINE_PATH = nc_files/subroutines + +# Motion control section ------------------------------------------------------ +[EMCMOT] +EMCMOT = motmod +COMM_TIMEOUT = 1.0 +COMM_WAIT = 0.010 +BASE_PERIOD = 0 +SERVO_PERIOD = 1000000 + +# Hardware Abstraction Layer section -------------------------------------------------- +[HAL] +HALFILE = core_sim.hal +HALFILE = sim_spindle_encoder.hal +HALFILE = axis_manualtoolchange.hal +HALFILE = simulated_home.hal + +# Single file that is executed after the GUI has started. +POSTGUI_HALFILE = gmoccapy_postgui.hal + +HALUI = halui + +# Trajectory planner section -------------------------------------------------- +[TRAJ] +AXES = 3 +COORDINATES = X Y Z +HOME = 0 0 0 +LINEAR_UNITS = mm +ANGULAR_UNITS = degree +CYCLE_TIME = 0.010 +DEFAULT_VELOCITY = 9.0 +MAX_VELOCITY = 234 +POSITION_FILE = position.txt + +# First axis +[AXIS_0] +TYPE = LINEAR +HOME = 0.000 +MAX_VELOCITY = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 400.0 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 0.0 +HOME_SEARCH_VEL = 200.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 = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 400.0 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 0.0 +HOME_SEARCH_VEL = 200.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 = 166 +MAX_ACCELERATION = 1500.0 +BACKLASH = 0.000 +INPUT_SCALE = 4000 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -400.0 +MAX_LIMIT = 0.001 +FERROR = 0.050 +MIN_FERROR = 0.010 +HOME_OFFSET = 1.0 +HOME_SEARCH_VEL = 200.0 +HOME_LATCH_VEL = 20.0 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 0 +HOME_IS_SHARED = 1 + +# Only needed for gmoccapy to set min and max values for the spindle bar +[SPINDLE] +MIN_REV = 0 +MAX_REV = 6000 + +# section for main IO controller parameters ----------------------------------- +[EMCIO] +EMCIO = io +CYCLE_TIME = 0.100 + +# tool table file +TOOL_TABLE = tool.tbl +TOOL_CHANGE_POSITION = 100 100 -10 +TOOL_CHANGE_QUILL_UP = 1 diff --git a/configs/sim/gmoccapy/h_buttonlist.glade b/configs/sim/gmoccapy/h_buttonlist.glade new file mode 100644 index 000000000..beb4b0e2a --- /dev/null +++ b/configs/sim/gmoccapy/h_buttonlist.glade @@ -0,0 +1,169 @@ +<?xml version="1.0"?> +<interface> + <!-- interface-requires gtk+ 2.8 --> + <!-- interface-requires gladevcp 0.0 --> + <!-- interface-naming-policy project-wide --> + <object class="GtkWindow" id="window1"> + <property name="width_request">1024</property> + <property name="height_request">64</property> + <child> + <object class="GtkHButtonBox" id="hbuttonbox1"> + <property name="width_request">1024</property> + <property name="height_request">64</property> + <property name="visible">True</property> + <property name="spacing">5</property> + <property name="homogeneous">True</property> + <child> + <object class="HAL_Button" id="h_button_0"> + <property name="label" translatable="yes">h_button_0</property> + <property name="width_request">56</property> + <property name="height_request">56</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="HAL_Button" id="h_button_1"> + <property name="label" translatable="yes">h_button_1</property> + <property name="width_request">56</property> + <property name="height_request">56</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> + <child> + <object class="HAL_Button" id="h_button_2"> + <property name="label" translatable="yes">h_button_2</property> + <property name="width_request">56</property> + <property name="height_request">56</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">2</property> + </packing> + </child> + <child> + <object class="HAL_Button" id="h_button_3"> + <property name="label" translatable="yes">h_button_3</property> + <property name="width_request">56</property> + <property name="height_request">56</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">3</property> + </packing> + </child> + <child> + <object class="HAL_Button" id="h_button_4"> + <property name="label" translatable="yes">h_button_4</property> + <property name="width_request">56</property> + <property name="height_request">56</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">4</property> + </packing> + </child> + <child> + <object class="HAL_Button" id="h_button_5"> + <property name="label" translatable="yes">h_button_5</property> + <property name="width_request">56</property> + <property name="height_request">56</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">5</property> + </packing> + </child> + <child> + <object class="HAL_Button" id="h_button_6"> + <property name="label" translatable="yes">h_button_6</property> + <property name="width_request">56</property> + <property name="height_request">56</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">6</property> + </packing> + </child> + <child> + <object class="HAL_Button" id="h_button_7"> + <property name="label" translatable="yes">h_button_7</property> + <property name="width_request">56</property> + <property name="height_request">56</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">7</property> + </packing> + </child> + <child> + <object class="HAL_Button" id="h_button_8"> + <property name="label" translatable="yes">h_button_8</property> + <property name="width_request">56</property> + <property name="height_request">56</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">8</property> + </packing> + </child> + <child> + <object class="HAL_Button" id="h_button_9"> + <property name="label" translatable="yes">h_button_9</property> + <property name="width_request">56</property> + <property name="height_request">56</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">9</property> + </packing> + </child> + </object> + </child> + </object> +</interface> diff --git a/configs/sim/gmoccapy/icon/Auto.gif b/configs/sim/gmoccapy/icon/Auto.gif Binary files differnew file mode 100644 index 000000000..30c64ba4e --- /dev/null +++ b/configs/sim/gmoccapy/icon/Auto.gif diff --git a/configs/sim/gmoccapy/icon/E-Stop.gif b/configs/sim/gmoccapy/icon/E-Stop.gif Binary files differnew file mode 100644 index 000000000..b4b6d7835 --- /dev/null +++ b/configs/sim/gmoccapy/icon/E-Stop.gif diff --git a/configs/sim/gmoccapy/icon/Logo.png b/configs/sim/gmoccapy/icon/Logo.png Binary files differnew file mode 100755 index 000000000..a26f0c730 --- /dev/null +++ b/configs/sim/gmoccapy/icon/Logo.png diff --git a/configs/sim/gmoccapy/icon/clear.png b/configs/sim/gmoccapy/icon/clear.png Binary files differnew file mode 100755 index 000000000..59255ad54 --- /dev/null +++ b/configs/sim/gmoccapy/icon/clear.png diff --git a/configs/sim/gmoccapy/icon/configure-2.png b/configs/sim/gmoccapy/icon/configure-2.png Binary files differnew file mode 100755 index 000000000..87fbb4bb6 --- /dev/null +++ b/configs/sim/gmoccapy/icon/configure-2.png diff --git a/configs/sim/gmoccapy/icon/coolant_off.png b/configs/sim/gmoccapy/icon/coolant_off.png Binary files differnew file mode 100644 index 000000000..219fca165 --- /dev/null +++ b/configs/sim/gmoccapy/icon/coolant_off.png diff --git a/configs/sim/gmoccapy/icon/coolant_on.gif b/configs/sim/gmoccapy/icon/coolant_on.gif Binary files differnew file mode 100644 index 000000000..8262f344c --- /dev/null +++ b/configs/sim/gmoccapy/icon/coolant_on.gif diff --git a/configs/sim/gmoccapy/icon/dimensions.png b/configs/sim/gmoccapy/icon/dimensions.png Binary files differnew file mode 100755 index 000000000..025648dda --- /dev/null +++ b/configs/sim/gmoccapy/icon/dimensions.png diff --git a/configs/sim/gmoccapy/icon/editor.png b/configs/sim/gmoccapy/icon/editor.png Binary files differnew file mode 100644 index 000000000..0c114054d --- /dev/null +++ b/configs/sim/gmoccapy/icon/editor.png diff --git a/configs/sim/gmoccapy/icon/enter.png b/configs/sim/gmoccapy/icon/enter.png Binary files differnew file mode 100755 index 000000000..b1c72d0aa --- /dev/null +++ b/configs/sim/gmoccapy/icon/enter.png diff --git a/configs/sim/gmoccapy/icon/estopred.png b/configs/sim/gmoccapy/icon/estopred.png Binary files differnew file mode 100644 index 000000000..15741143b --- /dev/null +++ b/configs/sim/gmoccapy/icon/estopred.png diff --git a/configs/sim/gmoccapy/icon/exit.png b/configs/sim/gmoccapy/icon/exit.png Binary files differnew file mode 100644 index 000000000..f23e43c0f --- /dev/null +++ b/configs/sim/gmoccapy/icon/exit.png diff --git a/configs/sim/gmoccapy/icon/exit_application.png b/configs/sim/gmoccapy/icon/exit_application.png Binary files differnew file mode 100755 index 000000000..805ddfc67 --- /dev/null +++ b/configs/sim/gmoccapy/icon/exit_application.png diff --git a/configs/sim/gmoccapy/icon/forward.png b/configs/sim/gmoccapy/icon/forward.png Binary files differnew file mode 100644 index 000000000..ae1aa4bef --- /dev/null +++ b/configs/sim/gmoccapy/icon/forward.png diff --git a/configs/sim/gmoccapy/icon/forward_on.gif b/configs/sim/gmoccapy/icon/forward_on.gif Binary files differnew file mode 100644 index 000000000..f0ec9bf96 --- /dev/null +++ b/configs/sim/gmoccapy/icon/forward_on.gif diff --git a/configs/sim/gmoccapy/icon/from where are the icons.txt b/configs/sim/gmoccapy/icon/from where are the icons.txt new file mode 100644 index 000000000..de696c016 --- /dev/null +++ b/configs/sim/gmoccapy/icon/from where are the icons.txt @@ -0,0 +1,73 @@ +This is just a list showing the origin from the icons + +the following icons are from moccagui projekt: +http://code.google.com/p/moccagui/ +with the friendly permission from the owner +info@jetsport.de + +auto.gif +coolant_off.png +coolant_on.png (modified by nieson@web.de) +editor.png +E-Stop.gif +estopred.png +forward.png +forward_on.png (modified by nieson@web.de) +jog.png +machineoff.png +mdi.png +mist_off.png +mist_on.png (modified by nieson@web.de) +pause.png +refall.png +refx.png +refy.png +refz.png +reverse.png +reverse_on.png (modified by nieson@web.de) +run.png +runfrom.png +start.png +step.png +stop.gif +stop.png +stop_on.png +toolchange.png +tools.png +touchoffwz.png +touchoffx.png +touchoffy.png +touchoffz.png +touchoffx_value.png (modified by nieson@web.de) +touchoffy_value.png (modified by nieson@web.de) +touchoffz_value.png (modified by nieson@web.de) +unhome.png + +the following icons are created by nieson@web.de under free license +Logo.png +index_tool.png + +the following Icons are from linuxcnc +toolaxisp.png +toolaxisx.png +toolaxisy.png +toolaxisz.png +tool_blockdelete.gif +tool_rotate.gif + +and this icons are from openiconlibrary.sourceforge.net +clear.png +configure-2.png +dimensions.png +enter.png +exit.png +exit_application.png +keyboard.png +reload.png +save.png +saveas.png +toolpath.png +zoom-in.png +zoom-out.png + + diff --git a/configs/sim/gmoccapy/icon/index_tool.svg b/configs/sim/gmoccapy/icon/index_tool.svg new file mode 100644 index 000000000..7c1c2cd92 --- /dev/null +++ b/configs/sim/gmoccapy/icon/index_tool.svg @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg2" + version="1.1" + inkscape:version="0.47 r22583" + width="46" + height="48" + sodipodi:docname="tools.png"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective10" /> + </defs> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="845" + inkscape:window-height="661" + id="namedview4" + showgrid="false" + inkscape:zoom="4.9166667" + inkscape:cx="23" + inkscape:cy="24" + inkscape:window-x="0" + inkscape:window-y="25" + inkscape:window-maximized="0" + inkscape:current-layer="svg2" /> + <image + xlink:href="file:///home/emcmesa/linuxcnc-dev/configs/sim/gscreen_mocca/tools.png" + width="46" + height="48" + id="image12" + x="0" + y="0" /> + <text + xml:space="preserve" + style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Bold" + x="22.983051" + y="18.305086" + id="text2826" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan2828" + x="22.983051" + y="18.305086">M61</tspan><tspan + sodipodi:role="line" + x="22.983051" + y="40.805088" + id="tspan2830">Q ?</tspan></text> +</svg> diff --git a/configs/sim/gmoccapy/icon/jog.png b/configs/sim/gmoccapy/icon/jog.png Binary files differnew file mode 100644 index 000000000..989d79c8f --- /dev/null +++ b/configs/sim/gmoccapy/icon/jog.png diff --git a/configs/sim/gmoccapy/icon/keyboard.png b/configs/sim/gmoccapy/icon/keyboard.png Binary files differnew file mode 100755 index 000000000..796a2aa92 --- /dev/null +++ b/configs/sim/gmoccapy/icon/keyboard.png diff --git a/configs/sim/gmoccapy/icon/machineonoff.png b/configs/sim/gmoccapy/icon/machineonoff.png Binary files differnew file mode 100644 index 000000000..99117cb26 --- /dev/null +++ b/configs/sim/gmoccapy/icon/machineonoff.png diff --git a/configs/sim/gmoccapy/icon/mdi.png b/configs/sim/gmoccapy/icon/mdi.png Binary files differnew file mode 100644 index 000000000..175c80a21 --- /dev/null +++ b/configs/sim/gmoccapy/icon/mdi.png diff --git a/configs/sim/gmoccapy/icon/mist_off.png b/configs/sim/gmoccapy/icon/mist_off.png Binary files differnew file mode 100644 index 000000000..d6f68c01b --- /dev/null +++ b/configs/sim/gmoccapy/icon/mist_off.png diff --git a/configs/sim/gmoccapy/icon/mist_on.gif b/configs/sim/gmoccapy/icon/mist_on.gif Binary files differnew file mode 100644 index 000000000..0055c0a76 --- /dev/null +++ b/configs/sim/gmoccapy/icon/mist_on.gif diff --git a/configs/sim/gmoccapy/icon/pause.png b/configs/sim/gmoccapy/icon/pause.png Binary files differnew file mode 100644 index 000000000..5544c6f24 --- /dev/null +++ b/configs/sim/gmoccapy/icon/pause.png diff --git a/configs/sim/gmoccapy/icon/refall.png b/configs/sim/gmoccapy/icon/refall.png Binary files differnew file mode 100644 index 000000000..48d5295fe --- /dev/null +++ b/configs/sim/gmoccapy/icon/refall.png diff --git a/configs/sim/gmoccapy/icon/refx.png b/configs/sim/gmoccapy/icon/refx.png Binary files differnew file mode 100644 index 000000000..1d5f24ce2 --- /dev/null +++ b/configs/sim/gmoccapy/icon/refx.png diff --git a/configs/sim/gmoccapy/icon/refy.png b/configs/sim/gmoccapy/icon/refy.png Binary files differnew file mode 100644 index 000000000..790da9d3d --- /dev/null +++ b/configs/sim/gmoccapy/icon/refy.png diff --git a/configs/sim/gmoccapy/icon/refz.png b/configs/sim/gmoccapy/icon/refz.png Binary files differnew file mode 100644 index 000000000..8316bebd9 --- /dev/null +++ b/configs/sim/gmoccapy/icon/refz.png diff --git a/configs/sim/gmoccapy/icon/reload.png b/configs/sim/gmoccapy/icon/reload.png Binary files differnew file mode 100755 index 000000000..fb6768e72 --- /dev/null +++ b/configs/sim/gmoccapy/icon/reload.png diff --git a/configs/sim/gmoccapy/icon/reverse.png b/configs/sim/gmoccapy/icon/reverse.png Binary files differnew file mode 100644 index 000000000..e2618c1f3 --- /dev/null +++ b/configs/sim/gmoccapy/icon/reverse.png diff --git a/configs/sim/gmoccapy/icon/reverse_on.gif b/configs/sim/gmoccapy/icon/reverse_on.gif Binary files differnew file mode 100644 index 000000000..0d8fa98f4 --- /dev/null +++ b/configs/sim/gmoccapy/icon/reverse_on.gif diff --git a/configs/sim/gmoccapy/icon/run.png b/configs/sim/gmoccapy/icon/run.png Binary files differnew file mode 100644 index 000000000..e78ff6e4f --- /dev/null +++ b/configs/sim/gmoccapy/icon/run.png diff --git a/configs/sim/gmoccapy/icon/runfrom.png b/configs/sim/gmoccapy/icon/runfrom.png Binary files differnew file mode 100644 index 000000000..171e63fe8 --- /dev/null +++ b/configs/sim/gmoccapy/icon/runfrom.png diff --git a/configs/sim/gmoccapy/icon/save-as.png b/configs/sim/gmoccapy/icon/save-as.png Binary files differnew file mode 100755 index 000000000..1e034410a --- /dev/null +++ b/configs/sim/gmoccapy/icon/save-as.png diff --git a/configs/sim/gmoccapy/icon/save.png b/configs/sim/gmoccapy/icon/save.png Binary files differnew file mode 100755 index 000000000..1f13724ea --- /dev/null +++ b/configs/sim/gmoccapy/icon/save.png diff --git a/configs/sim/gmoccapy/icon/start.png b/configs/sim/gmoccapy/icon/start.png Binary files differnew file mode 100644 index 000000000..4883c73d8 --- /dev/null +++ b/configs/sim/gmoccapy/icon/start.png diff --git a/configs/sim/gmoccapy/icon/step.png b/configs/sim/gmoccapy/icon/step.png Binary files differnew file mode 100644 index 000000000..9278ec3e5 --- /dev/null +++ b/configs/sim/gmoccapy/icon/step.png diff --git a/configs/sim/gmoccapy/icon/stop.gif b/configs/sim/gmoccapy/icon/stop.gif Binary files differnew file mode 100644 index 000000000..dcd0fd0c3 --- /dev/null +++ b/configs/sim/gmoccapy/icon/stop.gif diff --git a/configs/sim/gmoccapy/icon/stop.png b/configs/sim/gmoccapy/icon/stop.png Binary files differnew file mode 100644 index 000000000..ce73ad864 --- /dev/null +++ b/configs/sim/gmoccapy/icon/stop.png diff --git a/configs/sim/gmoccapy/icon/stop_on.gif b/configs/sim/gmoccapy/icon/stop_on.gif Binary files differnew file mode 100644 index 000000000..15fc71b00 --- /dev/null +++ b/configs/sim/gmoccapy/icon/stop_on.gif diff --git a/configs/sim/gmoccapy/icon/tool_blockdelete.gif b/configs/sim/gmoccapy/icon/tool_blockdelete.gif Binary files differnew file mode 100644 index 000000000..3253e8a0d --- /dev/null +++ b/configs/sim/gmoccapy/icon/tool_blockdelete.gif diff --git a/configs/sim/gmoccapy/icon/tool_rotate.gif b/configs/sim/gmoccapy/icon/tool_rotate.gif Binary files differnew file mode 100644 index 000000000..329d902a4 --- /dev/null +++ b/configs/sim/gmoccapy/icon/tool_rotate.gif diff --git a/configs/sim/gmoccapy/icon/toolaxisp.png b/configs/sim/gmoccapy/icon/toolaxisp.png Binary files differnew file mode 100644 index 000000000..ce0fc982b --- /dev/null +++ b/configs/sim/gmoccapy/icon/toolaxisp.png diff --git a/configs/sim/gmoccapy/icon/toolaxisx.png b/configs/sim/gmoccapy/icon/toolaxisx.png Binary files differnew file mode 100644 index 000000000..57c4bdcec --- /dev/null +++ b/configs/sim/gmoccapy/icon/toolaxisx.png diff --git a/configs/sim/gmoccapy/icon/toolaxisy.png b/configs/sim/gmoccapy/icon/toolaxisy.png Binary files differnew file mode 100644 index 000000000..33768e339 --- /dev/null +++ b/configs/sim/gmoccapy/icon/toolaxisy.png diff --git a/configs/sim/gmoccapy/icon/toolaxisz.png b/configs/sim/gmoccapy/icon/toolaxisz.png Binary files differnew file mode 100644 index 000000000..3cf539813 --- /dev/null +++ b/configs/sim/gmoccapy/icon/toolaxisz.png diff --git a/configs/sim/gmoccapy/icon/toolchange.png b/configs/sim/gmoccapy/icon/toolchange.png Binary files differnew file mode 100755 index 000000000..da18dc405 --- /dev/null +++ b/configs/sim/gmoccapy/icon/toolchange.png diff --git a/configs/sim/gmoccapy/icon/toolpath.png b/configs/sim/gmoccapy/icon/toolpath.png Binary files differnew file mode 100644 index 000000000..a94bad73d --- /dev/null +++ b/configs/sim/gmoccapy/icon/toolpath.png diff --git a/configs/sim/gmoccapy/icon/tools.png b/configs/sim/gmoccapy/icon/tools.png Binary files differnew file mode 100644 index 000000000..d0d4f16f6 --- /dev/null +++ b/configs/sim/gmoccapy/icon/tools.png diff --git a/configs/sim/gmoccapy/icon/touchoffwz.png b/configs/sim/gmoccapy/icon/touchoffwz.png Binary files differnew file mode 100644 index 000000000..14baa38eb --- /dev/null +++ b/configs/sim/gmoccapy/icon/touchoffwz.png diff --git a/configs/sim/gmoccapy/icon/touchoffx.png b/configs/sim/gmoccapy/icon/touchoffx.png Binary files differnew file mode 100644 index 000000000..27647f1a3 --- /dev/null +++ b/configs/sim/gmoccapy/icon/touchoffx.png diff --git a/configs/sim/gmoccapy/icon/touchoffx_value.png b/configs/sim/gmoccapy/icon/touchoffx_value.png Binary files differnew file mode 100644 index 000000000..1dec2ada4 --- /dev/null +++ b/configs/sim/gmoccapy/icon/touchoffx_value.png diff --git a/configs/sim/gmoccapy/icon/touchoffy.png b/configs/sim/gmoccapy/icon/touchoffy.png Binary files differnew file mode 100644 index 000000000..0938878bb --- /dev/null +++ b/configs/sim/gmoccapy/icon/touchoffy.png diff --git a/configs/sim/gmoccapy/icon/touchoffy_value.png b/configs/sim/gmoccapy/icon/touchoffy_value.png Binary files differnew file mode 100644 index 000000000..c0ac95984 --- /dev/null +++ b/configs/sim/gmoccapy/icon/touchoffy_value.png diff --git a/configs/sim/gmoccapy/icon/touchoffz.png b/configs/sim/gmoccapy/icon/touchoffz.png Binary files differnew file mode 100644 index 000000000..9290cb28c --- /dev/null +++ b/configs/sim/gmoccapy/icon/touchoffz.png diff --git a/configs/sim/gmoccapy/icon/touchoffz_value.png b/configs/sim/gmoccapy/icon/touchoffz_value.png Binary files differnew file mode 100644 index 000000000..e9de41374 --- /dev/null +++ b/configs/sim/gmoccapy/icon/touchoffz_value.png diff --git a/configs/sim/gmoccapy/icon/unhome.png b/configs/sim/gmoccapy/icon/unhome.png Binary files differnew file mode 100644 index 000000000..cec72ebaa --- /dev/null +++ b/configs/sim/gmoccapy/icon/unhome.png diff --git a/configs/sim/gmoccapy/icon/zoom-in.png b/configs/sim/gmoccapy/icon/zoom-in.png Binary files differnew file mode 100755 index 000000000..714f1f606 --- /dev/null +++ b/configs/sim/gmoccapy/icon/zoom-in.png diff --git a/configs/sim/gmoccapy/icon/zoom-out.png b/configs/sim/gmoccapy/icon/zoom-out.png Binary files differnew file mode 100755 index 000000000..05ddf0f51 --- /dev/null +++ b/configs/sim/gmoccapy/icon/zoom-out.png diff --git a/configs/sim/gmoccapy/nc_files/Gmoccapy_2_tools_with compensation.ngc b/configs/sim/gmoccapy/nc_files/Gmoccapy_2_tools_with compensation.ngc new file mode 100644 index 000000000..3d51347a1 --- /dev/null +++ b/configs/sim/gmoccapy/nc_files/Gmoccapy_2_tools_with compensation.ngc @@ -0,0 +1,95 @@ +; Gmoccapy_2_tools_with_compensation.ngc +; testprogram to mill two circles with cutter radius compansation +; and two different tools + +; set the basic settings, this should be +; on every program the beginning +G17 +G21 +G54 +G61 +G40 +G49 +G80 +G90 + +; get the first tool +T3 M6 +G43 +G0 Z30 + +; go to center of the workpiece +G0 Y50 +G0 X50 + +; turn on spindle clockwise +S3000 +M3 + +; coolant on +M7 + +G0 Z10 +F250 +G1 Z0 + +; tool radius compansation +; go in circle with lower feed rate +G41 +G3 X70 Y 50 Z-1 I10 J0 + +; make first circle with normal feed +F2000 +G3 I -20 + +; out of the workpiece +G3 X50 Y 50 Z1 I-10 J0 +G0 Z 30 + +; coolant off +M9 +; turn off cutter radius compensation, otherwise no tool change is possible +G40 +T1 M6 +G43 +G0Z 10 + +; optional stop for testing +(MSG, optional stop, i.e. for cleaning the workpiece, or other thinks) +M1 + +; go again to the center of the workpiece +G0 Y50 +G0 X50 + +; turn on spindle clockwise +S6000 +M3 + +; coolant on +M9 + +G0 Z10 +F400 +G1 Z1 + +; Werkzeugradienkompensation ein +; Anfahrradius mit Eintauchgeschwindigkeit +G41 +G3 X65 Y 50 Z-1 I7.5 J0 + +; 2. Kreis mit Vorschubgeschwindigkeit fräsen +F1000 +G3 I -15 + +; Aus dem Werkstück +G3 X50 Y 50 Z1 I-7.5 J0 +G0 Z 30 + +G0 Z 30 +G0 Y 50 +G0 X 50 + +M9 ; coolant off +M5 ; spindle off +M2 ; program end diff --git a/configs/sim/gmoccapy/nc_files/diferent speeds.ngc b/configs/sim/gmoccapy/nc_files/diferent speeds.ngc new file mode 100644 index 000000000..4e19b4c5c --- /dev/null +++ b/configs/sim/gmoccapy/nc_files/diferent speeds.ngc @@ -0,0 +1,36 @@ +; different_speeds.ngc +; basic settings + +G17 +G21 +G54 +G61 +G40 +G49 +G80 +G90 + +; get tool +T3 M6 +G43 +S2500 +M3 + +G42 +F5000 +G01 X-10 Y-10 Z30 + +G00 X0 Y0 Z0 +G01 X100 F500 +G01 Y100 F400 +/G01 X0 F300 +/G01 Y0 F250 + +G0 Z 30 +G0 Y 50 +G0 X 50 + +G40 +G49 +M5 +M2 diff --git a/configs/sim/gmoccapy/nc_files/subroutines/go_to_position.ngc b/configs/sim/gmoccapy/nc_files/subroutines/go_to_position.ngc new file mode 100644 index 000000000..d5ed9637c --- /dev/null +++ b/configs/sim/gmoccapy/nc_files/subroutines/go_to_position.ngc @@ -0,0 +1,24 @@ +; Testfile go to position +; will jog the machine to a position to give + +O<go_to_position> sub + +G17 +G21 +G54 +G61 +G40 +G49 +G80 +G90 + +;#1 = <X-Pos> +;#2 = <Y-Pos> +;#3 = <Z-Pos> + +(DBG, Will now move machine to X = #1 , Y = #2 , Z = #3) +G0 X #1 Y #2 Z #3 + +O<go_to_position> endsub + +M2 diff --git a/configs/sim/gmoccapy/nc_files/subroutines/halo_world.ngc b/configs/sim/gmoccapy/nc_files/subroutines/halo_world.ngc new file mode 100644 index 000000000..f93f36dde --- /dev/null +++ b/configs/sim/gmoccapy/nc_files/subroutines/halo_world.ngc @@ -0,0 +1,26 @@ +; Testfile I am Lost +; will just give messages + +O<halo_world> sub + +G17 +G21 +G54 +G61 +G40 +G49 +G80 +G90 + +G0 X10 + +(MSG, Hallo Welt) +(MSG, halo world) +(MSG, why does this apeera as an error?) + +G0X-10 + +O<halo_world> endsub + +M2 + diff --git a/configs/sim/gmoccapy/nc_files/subroutines/i_am_lost.ngc b/configs/sim/gmoccapy/nc_files/subroutines/i_am_lost.ngc new file mode 100644 index 000000000..cd971d425 --- /dev/null +++ b/configs/sim/gmoccapy/nc_files/subroutines/i_am_lost.ngc @@ -0,0 +1,24 @@ +; Testfile I am Lost +; will jog to machine cero and set all axis to cero + +O<i_am_lost> sub + +G17 +G21 +G54 +G61 +G40 +G49 +G80 +G90 + +(MSG, Will now move to machine cero) +G53 G0 X0 Y0 Z0 +(MSG, will now set all axis to cero) +G10 L20 P0 X0 Y0 Z0 +(MSG, all done) + + +O<i_am_lost> endsub + +M2 diff --git a/configs/sim/gmoccapy/nc_files/subroutines/increment.ngc b/configs/sim/gmoccapy/nc_files/subroutines/increment.ngc new file mode 100644 index 000000000..870e5f200 --- /dev/null +++ b/configs/sim/gmoccapy/nc_files/subroutines/increment.ngc @@ -0,0 +1,22 @@ +; Testfile I am Lost +; will jog to machine cero and set all axis to cero + +O<increment> sub + +G17 +G21 +G54 +G61 +G40 +G49 +G80 +G90 + +G91 G0 X#1 Y#2 +G90 + +(DEBUG, X was [#1] and Y was [#2]) + +O<increment> endsub + +M2 diff --git a/configs/sim/gmoccapy/nc_files/subroutines/jog_around.ngc b/configs/sim/gmoccapy/nc_files/subroutines/jog_around.ngc new file mode 100644 index 000000000..070dd65af --- /dev/null +++ b/configs/sim/gmoccapy/nc_files/subroutines/jog_around.ngc @@ -0,0 +1,29 @@ +; Testfile I am Lost +; will just jog a litle bit around + +O<jog_around> sub + +G17 +G21 +G54 +G61 +G40 +G49 +G80 +G90 + +G91 G0 X 25 +Y-25 +Z-25 +Y25 +X-25 +Z25 +F250 +G2 I 25 + +(MSG, It is done!) + +O<jog_around> endsub + +M2 + diff --git a/configs/sim/gmoccapy/nc_files/subroutines/macro_Instructions.txt b/configs/sim/gmoccapy/nc_files/subroutines/macro_Instructions.txt new file mode 100644 index 000000000..d751c87ed --- /dev/null +++ b/configs/sim/gmoccapy/nc_files/subroutines/macro_Instructions.txt @@ -0,0 +1,44 @@ +This is a smal instruction to include macros in gmoccapy. + +In your INI File you need to introduce a section called [MACROS] +and for every macro you wan't to include one line like so: + +MACRO = jog_around +or +MACRO = increment xinc yinc + +where xinc and yinc are place holders + +During excecution of the macro, you will be asked to enter the values. + +You are allowed to introduce 9 macros! +If you enter more macros, only the first 9 will apear with button in gmoccapy. + +In the [RS274NGC] section you may want to give a path to your macros like so: + +[RS274NGC] +SUBROUTINE_PATH = nc_files/subroutines + +or you place your macros in the nc_files folder. + +Each macro mus have its own file in one of the mentioned folders and are normal subroutines, so the must begin with: + +O<jog_around> sub + +and end with + +O<jog_around> endsub +M2 + +The name of the file must be jog_around.ngc. +And an macro must contain at least one movement of one axis. + +macro name in INI file have to be the same as the file name and the sub must have also the same name! + +BE CARFULL: +At this development step, the macros can only be interupted by pressing the machine off button or the emergency exit button! I will check how to make this more secure! + +Hope this helps. + +Norbert + diff --git a/configs/sim/gmoccapy/release_notes.txt b/configs/sim/gmoccapy/release_notes.txt new file mode 100755 index 000000000..76b19c95d --- /dev/null +++ b/configs/sim/gmoccapy/release_notes.txt @@ -0,0 +1,228 @@ +ver. 0.8.5 +- included a button to toggle gremlin fullview + but getting out of the fullscreen mode will hide the DRO not + taking care of preferences, I do not not why +- implemented a function to set gremlin grid + Grid is set in INCH, not taking care of the preferences file + +ver. 0.8.4 +- thanks to Chris the software starts now on a new installation with + "Follow System Theme" theme +- Keyboard now with upper and lower letters (SHIFT Key included) + +ver. 0.8.3 +- there was still a problem with DTG and DRO switching, + now everythink is working like it should +- now not the gscreen colors are used, on first start every color + is set to black, after that the colors are handled as they are + in gscreen. +- Delete MDI is working, but until now only for the running session +- I deleted some lines of code in 0.7.05, resulting in demage of the working of + the tool editor, fixed this +- reorganized the order from buttons to be modified during INIT, now they + are in alphabetic order +- made several INI Files to show teh behavior with side panels and user tabs + and simulated hardware button +- included following buttuns in settings page + - enable gremlin DRO + - Show gremlin DTG + - show gremlin offsets +- check if tool in spindle == tool to change, then give message and return + +ver. 0.8.2 +- solved the error related to the DTG Button +- clearing the code +- added a SPINDLE section to INI to get the min and max spindle speed +- change the spindle bar propertys by code to show also negative revolutions +- spindle speed label shows also negativ values if spindle runs reverse +- solved a bug in macro excecution, when wrong values has been given + +ver. 0.8.1 +- clearing the code +- unlock code now in the hiddeen preference file, but I still need + to include an change function in the settings page +- emergency exit is now default on start +- there is still an error changing from DTG to GTD in ABS and REL changing + +ver. 0.8.0 +- colorselection for the diferent dro states now works, but there is + still a small error, after changing a color, it will not show the + eventboxes in propper color. After a new start of gmoccapy it works + like it should. I searched allready three days for a solution, but I + couldn't find any. +- removed some unused print() commands +- gmoccapy.glade is now able to add side panels, + on the left and right +- user tabs are working, I need to make some dokumentation + +ver. 0.7.09 +- changed tool change dialog from axis dialog to gscreen dialog, + you can switch back if you like by comenting the tool change lines in + postgui.hal file. +- btn not implemented clicked now logs the button + +ver. 0.7.08 +- merged with /origin/master instead of mah/master +- using now hide_buttonbox from tooledit Widget instedt of hiding the box by an own method +- solved a problem reported by Chris, blinking coolant button. The behavior was caused + from _update_coolant() +- renamed tbtn_coolant to tbtn_flood +- bugfix on macro goto position caused from self.on_btn_macro_pressed() +- finshed the hal connections also for the vertical buttons + to test with simulated buttons, you have to uncomment the coresponing lines in INI and postgui.hal + then two buttonlist will aperear +- There was a problem excecuting the macros with the hardwarebutton, user where able to start a second macro + while the first was still running, solved that +- Running macros can be aborted, the show_keyboard button will change it's image and get an other function + +ver. 0.7.07 +- solved a problem of switchung main button list, wait on tool change has not + been reseted properly +- now I hide the hbuttonbox of tooledit widget instead of every button, + this saved 6 lines of code :-) + +ver. 0.7.06 +- finshed the h_button hardware pin connection +- macros can be run by hardware button + + to test the features, just uncomment 3 lines in INI File DISPLAY section, see comments there + and uncomment the connections made in gmoccapy_postgui.hal + I need someone to test this with real hardware, as with gladevcp buttons there seems to be + a problem with the mode settings, change a tool with M61 will not bring you back in manual mode + using the software keys, due to gladevcp in my opinion. + +ver. 0.7.05 +- made the tooledit Button work on my layout +- all bottom button have there own hal pins, witch can be connected to hardwre + button so no touch screen is needed. v_button still to do and macros not working jet. +- added an icon for tool-change + +ver. 0.7.04 +- added preference file path to INIU file +- added the release notes file +- hide the button of tooledit widget +- all tool change thinks are now done with the tool_edit_widget + by selecting the tool from the list + +ver. 0.7.03 +- added Release Number to title bar, + so it is easer for users to see if they got + the latest release + +ver. 0.7.02 +- added the capability to launch macros with variable parameters +- MDI and Auto mode can now only be reached if state all_homed = True +- added sample macros + +ver. 0.7.01 +- changed teh foldername to use only lower letters +- cleared the directory gmoccapy, all hal files are now again + symbolic links +- renamed the scripts folder to subroutines and moved it in the + nc_files folder +- icons folder not touched at the moment +- changed INI File to use other paths and renamed SCRIPTS to nacros, next it will be + changed to be the same as in touchy + +ver. 0.7.00 +- finished the keyboard, it does now scroll in EditMode + as well as in MDI Mode +- Solved a problem with the index tool button, it stays unsensitive after + an machine off, now it is working like it should +- smaler changes in the Icon folder + +ver. 0.6.09 +- some more new icon +- merged with maste +- added some new icon +- changed the position from the right button +- in emergency state the button to close gmoccapy was disabled, + so it wasn't possible to close the application in fullscreen mode. + +ver. 0.6.08 +- Virtual Keyboard included and working on MDI and AUTO Mode + unfortunately the coresponding windows will not scroll as they should +- Bug found in setting G54 origin, solved! + +ver. 0.6.07 +- I finished the keyboard, in editing mode it is working fine + in MDI mode I have to find out, how to move the selected row in the + hal_mdi_history using the cursor buttons! + +ver. 0.6.06 +- Edit program works +- make new programs works too +- new keyboard with nearly all keys +- Attention: On editing a program the keyboard need some more + fine polishing, to allow editing text in the middle and I have to + include cursor keys + +ver. 0.6.05 +- begin to include the edit mode for g-code programs + not working jet, still work to do + The grafics part is finished, just the ICOn are not very nice + +ver 0.6.04 +- changed hal pin vonnections to control homing to gscreen matter + so nearly all conections to postgui hal are not needed any more +- all messages prepared to get translated _(message) +- Run from line is now included, but at the moment without control + of previos lines, this is still to do. +- settings page begin to work + + fullscreen is included + + hide cursor is working + + sounds are selectable + + spindle start rpm is working + +ver. 0.6.03 +- optional blocks now working +- optional stops working too +- added missing button in MDI Keypad (I missed I ; J ; K ) +- cooling and spindle buttons react to emc stat, so setting an M7 will + toggle the corresponding button, so will an M3 or an M5 + This is not working in AUTO MODE with interpreter running to avoid error + messages. +- changed the test files to have optional blocks and stops. + +ver 0.6.02 +- all icons moved to icon folder +- implemented get toolinfo, tool frame now shows + correct data +- implemented user mdi command through gscreen, so there is no need + any more to import linuxcnc +- added some more icon + +ver. 0.6.01 +- solved the problme that widgets don't get sensitized after a pause + and a later resume. +- there will apera an error if in Pause you push coolant or spindle button + because the command mode will be changed, the programm will run later as usual + +ver. 0.6.00 +- mostly I changed the name to Gmoccapy as invented by Chris +- some minor changes in code + +ver. 0.5.08 +- program label at start up was wrong +- after pushing manual button staying in settings, main button list was not changed back to manual +- max velocity now again in units per minute, seems Chris changed it back + +ver 0.5.07 +- axis setting to an value with preferences is working fine +- DRO labels changing colors like they should +- Added a button to set tool with M61 Q? +- Commented a little bit more the code +- prepared INI File for scripts execution +- Fullscreen is included now +- HalScope Button added +- Prepared to execute MDI commands, + will later read them also from the INI File as HALUI_COMMAND + +ver. 0.5.06 +- added hal scope +- cleared the code a little bit more +- removed unused jog-increment-out pin + +ver. 0.5.05 +-cleaned up and solved merge conflicts + This is a version for first tests by users! diff --git a/configs/sim/gmoccapy/sim_spindle_encoder.hal b/configs/sim/gmoccapy/sim_spindle_encoder.hal new file mode 120000 index 000000000..1dac03e59 --- /dev/null +++ b/configs/sim/gmoccapy/sim_spindle_encoder.hal @@ -0,0 +1 @@ +../sim_spindle_encoder.hal
\ No newline at end of file diff --git a/configs/sim/gmoccapy/simulated_home.hal b/configs/sim/gmoccapy/simulated_home.hal new file mode 120000 index 000000000..291b8a6ca --- /dev/null +++ b/configs/sim/gmoccapy/simulated_home.hal @@ -0,0 +1 @@ +../simulated_home.hal
\ No newline at end of file diff --git a/configs/sim/gmoccapy/tool.tbl b/configs/sim/gmoccapy/tool.tbl new file mode 100755 index 000000000..063860d5b --- /dev/null +++ b/configs/sim/gmoccapy/tool.tbl @@ -0,0 +1,24 @@ +T1 P1 X0.0 Y0.0 Z-100.125 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D4.5 I0.0 J0.0 Q0.0 ;4.5 mm 3 flute cutter +T2 P2 X0.0 Y0.0 Z-124.214 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D25.0 I0.0 J0.0 Q0.0 ;25 mm cutter +T3 P3 X0.0 Y0.0 Z-125.125 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D7.5 I0.0 J0.0 Q0.0 ;7.5 mm 3 flute cutter +T4 P4 X0.0 Y0.0 Z-104.256 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D4.0 I0.0 J0.0 Q0.0 ;4 mm Drill +T5 P5 X0.0 Y0.0 Z-104.254 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D5.0 I0.0 J0.0 Q0.0 ;5 mm Drill +T6 P6 X0.0 Y0.0 Z-110.12 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D6.0 I0.0 J0.0 Q0.0 ;6 mm Carbide burr +T7 P7 X0.0 Y0.0 Z-142.589 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D6.5 I0.0 J0.0 Q0.0 ;6.5 mm HSS burr +T8 P8 X0.0 Y0.0 Z-142.458 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D12.0 I0.0 J0.0 Q0.0 ;Cutter with 2 faces +T9 P9 X0.0 Y0.0 Z-142.254 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D16.0 I0.0 J0.0 Q0.0 ;Cutter with 3 faces +T10 P10 X0.0 Y0.0 Z-120.112 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D165.0 I0.0 J0.0 Q0.0 ;Facer with carbide inserts +T11 P11 X0.0 Y0.0 Z-142.258 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D10.0 I0.0 J0.0 Q0.0 ;Centering drill +T12 P12 X0.0 Y0.0 Z138.214 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D4.0 I0.0 J0.0 Q0.0 ;3d taster elektronisch +T13 P13 X0.0 Y0.0 Z-141.388 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D13.0 I0.0 J0.0 Q0.0 ;3-Schneider Schaftfräser +T14 P14 X0.0 Y0.0 Z-125.256 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D10.0 I0.0 J0.0 Q0.0 ;3 Schneiden Stufenbohrer 5.5 auf 10 +T15 P15 X0.0 Y0.0 Z-143.888 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D10.0 I0.0 J0.0 Q0.0 ;Bohrer TiN beschichtet +T16 P16 X0.0 Y0.0 Z-143.583 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D12.5 I0.0 J0.0 Q0.0 ;Stufenbohrer 6.8 auf 12.5 - 3 Schneiden +T17 P17 X0.0 Y0.0 Z-145.254 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D6.5 I0.0 J0.0 Q0.0 ;Stufenbohrer 4.2 auf 6.5 mit 45 Grad Übergang +T18 P18 X0.0 Y0.0 Z-169.595 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D4.0 I0.0 J0.0 Q0.0 ;Schaftfräser 4 Schneider +T19 P19 X0.0 Y0.0 Z-153.235 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D11.0 I0.0 J0.0 Q0.0 ;Bohrer +T20 P20 X0.0 Y0.0 Z-169.235 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D50.1 I0.0 J0.0 Q0.0 ;Messerkopf 4 Platten +T21 P21 X0.0 Y0.0 Z-143.587 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D7.8 I0.0 J0.0 Q0.0 ;Bohrer poliert +T22 P22 X0.0 Y0.0 Z-187.253 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D16.15 I0.0 J0.0 Q0.0 ;Messerkopf Zweischneider +T23 P23 X0.0 Y0.0 Z-145.254 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D3.3 I0.0 J0.0 Q0.0 ;Bohrer poliert +T24 P24 X0.0 Y0.0 Z-140.256 A0.0 B0.0 C0.0 U0.0 V0.0 W0.0 D12.02 I0.0 J0.0 Q0.0 ;Fräser nachgeschliffen, nicht beschichtet diff --git a/configs/sim/gmoccapy/v_buttonlist.glade b/configs/sim/gmoccapy/v_buttonlist.glade new file mode 100644 index 000000000..b4525636b --- /dev/null +++ b/configs/sim/gmoccapy/v_buttonlist.glade @@ -0,0 +1,122 @@ +<?xml version="1.0"?> +<interface> + <!-- interface-requires gladevcp 0.0 --> + <requires lib="gtk+" version="2.16"/> + <!-- interface-naming-policy project-wide --> + <object class="GtkWindow" id="window1"> + <property name="default_width">64</property> + <property name="default_height">724</property> + <child> + <object class="GtkVButtonBox" id="vbuttonbox1"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <property name="layout_style">spread</property> + <child> + <object class="HAL_Button" id="v_button_0"> + <property name="label" translatable="yes">v_button_0</property> + <property name="width_request">56</property> + <property name="height_request">56</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="HAL_Button" id="v_button_1"> + <property name="label" translatable="yes">v_button_1</property> + <property name="width_request">56</property> + <property name="height_request">56</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> + <child> + <object class="HAL_Button" id="v_button_2"> + <property name="label" translatable="yes">v_button_2</property> + <property name="width_request">56</property> + <property name="height_request">56</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">2</property> + </packing> + </child> + <child> + <object class="HAL_Button" id="v_button_3"> + <property name="label" translatable="yes">v_button_3</property> + <property name="width_request">56</property> + <property name="height_request">56</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">3</property> + </packing> + </child> + <child> + <object class="HAL_Button" id="v_button_4"> + <property name="label" translatable="yes">v_button_4</property> + <property name="width_request">56</property> + <property name="height_request">56</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">4</property> + </packing> + </child> + <child> + <object class="HAL_Button" id="v_button_5"> + <property name="label" translatable="yes">v_button_5</property> + <property name="width_request">56</property> + <property name="height_request">56</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">5</property> + </packing> + </child> + <child> + <object class="HAL_Button" id="v_button_6"> + <property name="label" translatable="yes">v_button_6</property> + <property name="width_request">56</property> + <property name="height_request">56</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">6</property> + </packing> + </child> + </object> + </child> + </object> +</interface> diff --git a/configs/sim/gmoccapy/vcp_box.glade b/configs/sim/gmoccapy/vcp_box.glade new file mode 100644 index 000000000..85ed19b46 --- /dev/null +++ b/configs/sim/gmoccapy/vcp_box.glade @@ -0,0 +1,69 @@ +<?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"> + <child> + <object class="GtkTable" id="table1"> + <property name="width_request">300</property> + <property name="visible">True</property> + <property name="n_rows">2</property> + <property name="n_columns">2</property> + <child> + <object class="HAL_Meter" id="hal_meter1"> + <property name="visible">True</property> + <property name="bg_color">#ffffffffffff</property> + <property name="minorscale">100</property> + <property name="z0_color">#0000ffff0000</property> + <property name="label">RPM</property> + <property name="z1_color">#ffffffff0000</property> + <property name="z2_color">#ffff00000000</property> + <property name="majorscale">500</property> + <property name="max">3000</property> + </object> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <object class="GtkHBox" id="hbox1"> + <property name="visible">True</property> + <child> + <object class="HAL_LED" id="hal_led1"> + <property name="visible">True</property> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="HAL_LED" id="hal_led3"> + <property name="visible">True</property> + <property name="pick_color_off">#f6e0ebe201e9</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="HAL_LED" id="hal_led2"> + <property name="visible">True</property> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> + </child> + </object> + </child> + </object> +</interface> |