Files
linuxcncAllWasm/lib/python/qtvcp/widgets/status_label.py
2026-08-20 06:17:39 +08:00

986 lines
37 KiB
Python

#!/usr/bin/env python3
# QTVcp Widget
#
# Copyright (c) 2017 Chris Morley
#
# 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.
###############################################################################
import time
import os
from qtpy import QtCore
from qtvcp import logger
from qtvcp.widgets.simple_widgets import ScaledLabel
from qtvcp.widgets.widget_baseclass import _HalWidgetBase
from qtvcp.core import Status, Info, Tool
# Instantiate the libraries with global reference
# STATUS gives us status messages from linuxcnc
# INFO is INI file details
# LOG is for running code logging
STATUS = Status()
INFO = Info()
TOOL = Tool()
LOG = logger.getLogger(__name__)
class StatusLabel(ScaledLabel, _HalWidgetBase):
def __init__(self, parent=None):
super(StatusLabel, self).__init__(parent)
self.display_units_mm = False
self._textTemplate = '%s'
self._alt_textTemplate = '%s'
self._actual_RPM = 0
self._diameter = 1
self._index = 0
self._tool_dia = 0
self._tool_offset = 0
self._state_label_list = ['Estopped','Running','Stopped','Paused','Waiting','Reading']
self._motion_label_list = ['None','Rapid','Feed','Arc','Tool Change','Probe','Rotaty Index']
self._halpin_name = 'remapStat.tool'
self.feed_override = False
self.rapid_override = False
self.max_velocity_override = False
self.spindle_override = False
self.jograte = False
self.jograte_angular = False
self.jogincr = False
self.jogincr_angular = False
self.tool_number = False
self.current_feedrate = False
self.current_feedunit = False
self.requested_spindle_speed = False
self.actual_spindle_speed = False
self.actual_surface_speed = False
self.user_system = False
self.blendcode = False
self.fcode = False
self.gcodes = False
self.gcode_group0 = False
self.gcode_group1 = False
self.gcode_group2 = False
self.gcode_group3 = False
self.gcode_group4 = False
self.gcode_group5 = False
self.gcode_group6 = False
self.gcode_group7 = False
self.gcode_group8 = False
self.gcode_group10 = False
self.gcode_group12 = False
self.gcode_group13 = False
self.gcode_group14 = False
self.gcode_group15 = False
self.mcodes = False
self.tool_diameter = False
self.tool_comment = False
self.filename = False
self.filepath = False
self.machine_state = False
self.motion_type = False
self.time_stamp = False
self.tool_offset = False
self.gcode_selected = False
self.halpin = False
def _hal_init(self):
super(StatusLabel, self)._hal_init()
def _f(data):
self._set_text(data)
for g in ('group0','group1','group2','group3','group4','group5',
'group6','group7','group8','group10','group12','group13','group14','group15'):
if self['gcode_{}'.format(g)]:
STATUS.connect('gcode-{}-changed'.format(g), lambda w, data: _f(data))
break
return
if self.feed_override:
STATUS.connect('feed-override-changed', lambda w, data: _f(data))
elif self.rapid_override:
STATUS.connect('rapid-override-changed', lambda w, data: _f(data))
elif self.max_velocity_override:
STATUS.connect('max-velocity-override-changed', lambda w, data: self._set_max_velocity(data))
STATUS.connect('metric-mode-changed', self._switch_max_velocity_units)
elif self.spindle_override:
STATUS.connect('spindle-override-changed', lambda w, data: _f(data))
elif self.jograte:
STATUS.connect('jograte-changed', lambda w, data: self._set_jograte(data))
STATUS.connect('metric-mode-changed', self._switch_jog_units)
elif self.jograte_angular:
STATUS.connect('jograte-angular-changed', lambda w, data: _f(data))
elif self.jogincr:
STATUS.connect('jogincrement-changed', lambda w, data, text: _f(text))
elif self.jogincr_angular:
STATUS.connect('jogincrement-angular-changed', lambda w, data, text: _f(text))
elif self.tool_number:
STATUS.connect('tool-in-spindle-changed', lambda w, data: _f(data))
elif self.current_feedrate:
STATUS.connect('current-feed-rate', self._set_feedrate_text)
STATUS.connect('metric-mode-changed', self._switch_units)
elif self.current_feedunit:
STATUS.connect('current-feed-rate', self._set_feedunit_text)
STATUS.connect('metric-mode-changed', self._switch_units)
STATUS.connect('actual-spindle-speed-changed', self._set_actual_rpm)
elif self.requested_spindle_speed:
STATUS.connect('requested-spindle-speed-changed', lambda w, data: _f(data))
elif self.actual_spindle_speed:
STATUS.connect('actual-spindle-speed-changed', lambda w, data: _f(data))
elif self.user_system:
STATUS.connect('user-system-changed', self._set_user_system_text)
elif self.blendcode:
STATUS.connect('blend-code-changed', lambda w, blend, cam: self._set_blend_text(blend, cam))
elif self.fcode:
STATUS.connect('f-code-changed', lambda w, data: self._set_fcode_text(data))
elif self.gcodes:
STATUS.connect('g-code-changed', lambda w, data: _f(data))
elif self.mcodes:
STATUS.connect('m-code-changed', lambda w, data: _f(data))
elif self.tool_diameter:
STATUS.connect('tool-info-changed', lambda w, data: self._tool_info(data, 'diameter'))
STATUS.connect('metric-mode-changed', lambda w, data: self._switch_tool_diam_units(data))
elif self.tool_comment:
STATUS.connect('tool-info-changed', lambda w, data: self._tool_file_info(data, TOOL.COMMENTS))
elif self.actual_surface_speed:
if INFO.MACHINE_IS_LATHE:
STATUS.connect('current-x-rel-position', lambda w, data: self._set_work_diameter(data*2))
else:
STATUS.connect('tool-info-changed', lambda w, data: self._ss_tool_diam(data))
STATUS.connect('actual-spindle-speed-changed', lambda w, data: self._ss_spindle_speed(data))
STATUS.connect('metric-mode-changed', self._switch_units)
STATUS.connect('metric-mode-changed', lambda o, state: self._set_surface_speed())
elif self.filename or self.filepath:
STATUS.connect('file-loaded', self._file_loaded)
elif self.machine_state:
STATUS.connect('state-estop', lambda w: self._machine_state(self._state_label_list[0]))
STATUS.connect('interp-run', lambda w: self._machine_state(self._state_label_list[1]))
STATUS.connect('interp-idle', lambda w: self._machine_state(self._state_label_list[2]))
STATUS.connect('interp-paused', lambda w: self._machine_state(self._state_label_list[3]))
STATUS.connect('interp-waiting', lambda w: self._machine_state(self._state_label_list[4]))
STATUS.connect('interp-reading', lambda w: self._machine_state(self._state_label_list[5]))
elif self.motion_type:
STATUS.connect('motion-type-changed', lambda w, data: self._set_motion_type(data))
elif self.time_stamp:
STATUS.connect('periodic', self._set_timestamp)
elif self.tool_offset:
STATUS.connect('current-tool-offset', self._set_tool_offset_text)
STATUS.connect('metric-mode-changed', lambda w, data: self._switch_tool_offsets_units(data))
elif self.gcode_selected:
STATUS.connect('gcode-line-selected', lambda w, line: _f(int(line)+1))
elif self.halpin:
STATUS.connect('periodic', lambda w: self._set_halpin_text())
else:
LOG.debug('{} : no option recognised'.format(self.HAL_NAME_))
def _set_text(self, data):
tmpl = lambda s: str(self._textTemplate) % s
self.setText(tmpl(data))
def _set_alt_text(self, data):
tmpl = lambda s: str(self._alt_textTemplate) % s
self.setText(tmpl(data))
def _set_blend_text(self, blend, cam):
tmpl = lambda s: str(self._textTemplate) % s
alttmpl = lambda s: str(self._alt_textTemplate) % s
self.setText(tmpl(blend) + alttmpl(cam))
def _set_fcode_text(self, data):
self._set_text(data)
def _set_feedrate_text(self, widget, data):
if self.display_units_mm != INFO.MACHINE_IS_METRIC:
data = INFO.convert_units(data)
if self.display_units_mm:
self._set_alt_text(data)
else:
self._set_text(data)
def _set_feedunit_text(self, widget, data):
if self.display_units_mm != INFO.MACHINE_IS_METRIC:
data = INFO.convert_units(data)
try:
data = abs(data/self._actual_RPM)
if self.display_units_mm:
self._set_alt_text(data)
else:
self._set_text(data)
except:
self.setText('')
return
def _set_actual_rpm(self, w, rpm):
self._actual_RPM = rpm
def _set_user_system_text(self, widgets, data):
convert = { 1:"54", 2:"55", 3:"56", 4:"57", 5:"58", 6:"59", 7:"59.1", 8:"59.2", 9:"59.3"}
self._set_text(convert[int(data)])
def _set_machine_units(self, u, c):
self.machine_units_mm = u
self.unit_convert = c
def _switch_units(self, widget, data):
self.display_units_mm = data
def _switch_jog_units(self, widget, data):
self.display_units_mm = data
self._set_jograte(STATUS.get_jograte())
def _switch_tool_diam_units(self, units):
self.display_units_mm = units
data = self.conversion(self._tool_dia)
if self.display_units_mm:
self._set_alt_text(data)
else:
self._set_text(data)
def _switch_tool_offsets_units(self, units):
self.display_units_mm = units
data = self.conversion(self._tool_offset)
if self.display_units_mm:
self._set_alt_text(data)
else:
self._set_text(data)
def _switch_max_velocity_units(self, widget, data):
self.display_units_mm = data
self._set_max_velocity(STATUS.get_max_velocity())
def _tool_info(self, data, field):
if data.id != -1:
if field == 'diameter':
data = self.conversion(data.diameter)
self._tool_dia = data
if self.display_units_mm:
self._set_alt_text(data)
else:
self._set_text(data)
return
self._set_text(0)
# [0] = cell toggle
# [1] = tool number
# [2] = pocket number
# [3] = X offset
# [4] = Y offset
# [5] = Z offset
# [6] = A offset
# [7] = B offset
# [8] = C offset
# [9] = U offset
# [10] = V offset
# [11] = W offset
# [12] = tool diameter
# [13] = frontangle
# [14] = backangle
# [15] = tool orientation
# [16] = tool comment
def _tool_file_info(self, tool_entry, index):
toolnum = tool_entry[0]
tool_table_line = TOOL.GET_TOOL_INFO(toolnum)
try:
self._set_text(str(tool_table_line[index]))
except:
LOG.warning('Problem with tool file info')
self._set_text('')
def _set_tool_offset_text(self, w, offsets):
data = self.conversion(offsets[self._index])
self._tool_offset = offsets[self._index]
if self.display_units_mm:
self._set_alt_text(data)
else:
self._set_text(data)
def _ss_tool_diam(self, data):
if data.id != -1:
self._diameter = data.diameter
else:
self._diameter = 1
self. _set_surface_speed()
def _set_work_diameter(self, dia):
self._diameter = dia
self._set_surface_speed()
def _ss_spindle_speed(self, rpm):
self._actual_RPM = rpm
self._set_surface_speed()
def _set_surface_speed(self):
diam = self.conversion(self._diameter)
circ = abs(3.14 * self._actual_RPM * diam)
if self.display_units_mm:
self._set_alt_text(circ/1000) # meters per minute
else:
self._set_text(circ/12) # feet per minute
# This does the conversion units
# data must always be in machine units
def conversion(self, data):
if self.display_units_mm :
return INFO.convert_machine_to_metric(data)
else:
return INFO.convert_machine_to_imperial(data)
def _file_loaded(self, w, name):
if self.filename:
name = os.path.basename(name)
self._set_text(name)
def _machine_state(self, text):
self._set_text(text)
def _set_timestamp(self, w):
self.setText(time.strftime(self._textTemplate))
def _set_jograte(self, data):
rate = self.conversion(data)
if self.display_units_mm:
self._set_alt_text(rate)
else:
self._set_text(rate)
def _set_max_velocity(self, data):
rate = self.conversion(data)
if self.display_units_mm:
self._set_alt_text(rate)
else:
self._set_text(rate)
def _set_halpin_text(self):
try:
rate = self.HAL_GCOMP_.hal.get_value(self._halpin_name)
except Exception as e:
return
if self.display_units_mm:
self._set_alt_text(rate)
else:
self._set_text(rate)
def _set_motion_type(self, data):
self._set_text(self._motion_label_list[data])
#########################################################################
# This is how designer can interact with our widget properties.
# designer will show the Property properties in the editor
# it will use the get set and reset calls to do those actions
#
# _toggle_properties makes it so we can only select one option
########################################################################
def _toggle_properties(self, picked):
data = ('feed_override', 'rapid_override', 'spindle_override', 'jograte',
'jograte_angular', 'jogincr', 'jogincr_angular', 'tool_number',
'current_feedrate', 'current_FPU',
'requested_spindle_speed', 'actual_spindle_speed',
'user_system', 'gcodes', 'mcodes', 'tool_diameter',
'tool_comment', 'actual_surface_speed', 'filename', 'filepath',
'machine_state', 'motion_type', 'time_stamp', 'max_velocity_override', 'tool_offset',
'gcode_selected', 'fcode', 'blendcode', 'halpin')
for i in data:
if not i == picked:
self[i + '_status'] = False
def set_textTemplate(self, data):
self._textTemplate = data
try:
self._set_text(100.0)
except ValueError:
try:
self.setText(time.strftime(self._textTemplate))
except:
raise
except TypeError:
try:
self.setText(data)
except ValueError:
raise
except Exception as e:
LOG.error("textTemplate: {}, Data: {}".format(self._textTemplate, data), exc_info=e)
self.setText('Error')
def get_textTemplate(self):
return self._textTemplate
def reset_textTemplate(self):
self._textTemplate = '%s'
def set_alt_textTemplate(self, data):
self._alt_textTemplate = data
try:
self._set_text(200.0)
except TypeError:
try:
self.setText(data)
except ValueError:
raise
except Exception as e:
LOG.error("altTextTemplate: {}, Data: {}".format(self._textTemplate, data), exc_info=e)
self.setText('Error 2')
def get_alt_textTemplate(self):
return self._alt_textTemplate
def reset_alt_textTemplate(self):
self._alt_textTemplate = '%s'
# index for tool offset
def set_index(self, data):
if data < 0: data = 0
self._index = data
def get_index(self):
return self._index
def reset_index(self):
self._index = 0
# feed override status
def set_feed_override(self, data):
self.feed_override = data
if data:
self._toggle_properties('feed_override')
def get_feed_override(self):
return self.feed_override
def reset_feed_override(self):
self.feed_override = False
# rapid override status
def set_rapid_override(self, data):
self.rapid_override = data
if data:
self._toggle_properties('rapid_override')
def get_rapid_override(self):
return self.rapid_override
def reset_rapid_override(self):
self.rapid_override = False
# max_velocity override status
def set_max_velocity_override(self, data):
self.max_velocity_override = data
if data:
self._toggle_properties('max_velocity_override')
def get_max_velocity_override(self):
return self.max_velocity_override
def reset_max_velocity_override(self):
self.max_velocity_override = False
# spindle override status
def set_spindle_override(self, data):
self.spindle_override = data
if data:
self._toggle_properties('spindle_override')
def get_spindle_override(self):
return self.spindle_override
def reset_spindle_override(self):
self.spindle_override = False
# jograte status
def set_jograte(self, data):
self.jograte = data
if data:
self._toggle_properties('jograte')
def get_jograte(self):
return self.jograte
def reset_jograte(self):
self.jograte = False
# jograte_angular status
def set_jograte_angular(self, data):
self.jograte_angular = data
if data:
self._toggle_properties('jograte_angular')
def get_jograte_angular(self):
return self.jograte_angular
def reset_jograte_angular(self):
self.jograte_angular = False
# jogincr status
def set_jogincr(self, data):
self.jogincr = data
if data:
self._toggle_properties('jogincr')
def get_jogincr(self):
return self.jogincr
def reset_jogincr(self):
self.jogincr = False
# jogincr_angular status
def set_jogincr_angular(self, data):
self.jogincr_angular = data
if data:
self._toggle_properties('jogincr_angular')
def get_jogincr_angular(self):
return self.jogincr_angular
def reset_jogincr_angular(self):
self.jogincr_angular = False
# tool number status
def set_tool_number(self, data):
self.tool_number = data
if data:
self._toggle_properties('tool_number')
def get_tool_number(self):
return self.tool_number
def reset_tool_number(self):
self.tool_number = False
# current feedrate status
def set_current_feedrate(self, data):
self.current_feedrate = data
if data:
self._toggle_properties('current_feedrate')
def get_current_feedrate(self):
return self.current_feedrate
def reset_current_feedrate(self):
self.current_feedrate = False
# current feedunit status
def set_current_feedunit(self, data):
self.current_feedunit = data
if data:
self._toggle_properties('current_FPU')
def get_current_feedunit(self):
return self.current_feedunit
def reset_current_feedunit(self):
self.current_feedunit = False
# spindle speed status
def set_requested_spindle_speed(self, data):
self.requested_spindle_speed = data
if data:
self._toggle_properties('requested_spindle_speed')
def get_requested_spindle_speed(self):
return self.requested_spindle_speed
def reset_requested_spindle_speed(self):
self.requested_spindle_speed = False
# spindle speed status
def set_actual_spindle_speed(self, data):
self.actual_spindle_speed = data
if data:
self._toggle_properties('actual_spindle_speed')
def get_actual_spindle_speed(self):
return self.actual_spindle_speed
def reset_actual_spindle_speed(self):
self.actual_spindle_speed = False
# user_system status
def set_user_system(self, data):
self.user_system = data
if data:
self._toggle_properties('user_system')
def get_user_system(self):
return self.user_system
def reset_user_system(self):
self.user_system = False
# fcode status
def set_fcode(self, data):
self.fcode = data
if data:
self._toggle_properties('fcode')
def get_fcode(self):
return self.fcode
def reset_fcode(self):
self.fcode = False
# blendcode status
def set_blendcode(self, data):
self.blendcode = data
if data:
self._toggle_properties('blendcode')
def get_blendcode(self):
return self.blendcode
def reset_blendcode(self):
self.blendcode = False
# gcodes status
def set_gcodes(self, data):
self.gcodes = data
if data:
self._toggle_properties('gcodes')
def get_gcodes(self):
return self.gcodes
def reset_gcodes(self):
self.gcodes = False
# gcode_group0 status
def set_gcode_group0(self, data):
self.gcode_group0 = data
if data:
self._toggle_properties('gcode_group0')
def get_gcode_group0(self):
return self.gcode_group0
def reset_gcode_group0(self):
self.gcode_group0 = False
# gcode_group1 status
def set_gcode_group1(self, data):
self.gcode_group1 = data
if data:
self._toggle_properties('gcode_group1')
def get_gcode_group1(self):
return self.gcode_group1
def reset_gcode_group1(self):
self.gcode_group1 = False
# gcode_group2 status
def set_gcode_group2(self, data):
self.gcode_group2 = data
if data:
self._toggle_properties('gcode_group2')
def get_gcode_group2(self):
return self.gcode_group2
def reset_gcode_group2(self):
self.gcode_group2 = False
# gcode_group3 status
def set_gcode_group3(self, data):
self.gcode_group3 = data
if data:
self._toggle_properties('gcode_group3')
def get_gcode_group3(self):
return self.gcode_group3
def reset_gcode_group3(self):
self.gcode_group3 = False
# gcode_group4 status
def set_gcode_group4(self, data):
self.gcode_group4 = data
if data:
self._toggle_properties('gcode_group4')
def get_gcode_group4(self):
return self.gcode_group4
def reset_gcode_group4(self):
self.gcode_group4 = False
# gcode_group5 status
def set_gcode_group5(self, data):
self.gcode_group5 = data
if data:
self._toggle_properties('gcode_group5')
def get_gcode_group5(self):
return self.gcode_group5
def reset_gcode_group5(self):
self.gcode_group5 = False
# gcode_group6 status
def set_gcode_group6(self, data):
self.gcode_group6 = data
if data:
self._toggle_properties('gcode_group6')
def get_gcode_group6(self):
return self.gcode_group6
def reset_gcode_group6(self):
self.gcode_group6 = False
# gcode_group7 status
def set_gcode_group7(self, data):
self.gcode_group7 = data
if data:
self._toggle_properties('gcode_group7')
def get_gcode_group7(self):
return self.gcode_group7
def reset_gcode_group7(self):
self.gcode_group7 = False
# gcode_group8 status
def set_gcode_group8(self, data):
self.gcode_group8 = data
if data:
self._toggle_properties('gcode_group8')
def get_gcode_group8(self):
return self.gcode_group8
def reset_gcode_group8(self):
self.gcode_group8 = False
# gcode_group10 status
def set_gcode_group10(self, data):
self.gcode_group10 = data
if data:
self._toggle_properties('gcode_group10')
def get_gcode_group10(self):
return self.gcode_group10
def reset_gcode_group10(self):
self.gcode_group10 = False
# gcode_group12 status
def set_gcode_group12(self, data):
self.gcode_group12 = data
if data:
self._toggle_properties('gcode_group12')
def get_gcode_group12(self):
return self.gcode_group12
def reset_gcode_group12(self):
self.gcode_group12 = False
# gcode_group13 status
def set_gcode_group13(self, data):
self.gcode_group13 = data
if data:
self._toggle_properties('gcode_group13')
def get_gcode_group13(self):
return self.gcode_group13
def reset_gcode_group13(self):
self.gcode_group13 = False
# gcode_group14 status
def set_gcode_group14(self, data):
self.gcode_group14 = data
if data:
self._toggle_properties('gcode_group14')
def get_gcode_group14(self):
return self.gcode_group14
def reset_gcode_group14(self):
self.gcode_group14 = False
# gcode_group15 status
def set_gcode_group15(self, data):
self.gcode_group15 = data
if data:
self._toggle_properties('gcode_group15')
def get_gcode_group15(self):
return self.gcode_group15
def reset_gcode_group15(self):
self.gcode_group15 = False
# mcodes status
def set_mcodes(self, data):
self.mcodes = data
if data:
self._toggle_properties('mcodes')
def get_mcodes(self):
return self.mcodes
def reset_mcodes(self):
self.mcodes = False
# tool_diameter status
def set_tool_diameter(self, data):
self.tool_diameter = data
if data:
self._toggle_properties('tool_diameter')
def get_tool_diameter(self):
return self.tool_diameter
def reset_tool_diameter(self):
self.tool_diameter = False
# tool_comment status
def set_tool_comment(self, data):
self.tool_comment = data
if data:
self._toggle_properties('tool_comment')
def get_tool_comment(self):
return self.tool_comment
def reset_tool_comment(self):
self.tool_comment = False
# actual_surface_speed status
def set_actual_surface_speed(self, data):
self.actual_surface_speed = data
if data:
self._toggle_properties('actual_surface_speed')
def get_actual_surface_speed(self):
return self.actual_surface_speed
def reset_actual_surface_speed(self):
self.actual_surface_speed = False
# filename status
def set_filename(self, data):
self.filename = data
if data:
self._toggle_properties('filename')
def get_filename(self):
return self.filename
def reset_filename(self):
self.filename = False
# filepath status
def set_filepath(self, data):
self.filepath = data
if data:
self._toggle_properties('filepath')
def get_filepath(self):
return self.filepath
def reset_filepath(self):
self.filepath = False
# machine_state status
def set_machine_state(self, data):
self.machine_state = data
if data:
self._toggle_properties('machine_state')
def get_machine_state(self):
return self.machine_state
def reset_machine_state(self):
self.machine_state = False
# motion_type status
def set_motion_type(self, data):
self.motion_type = data
if data:
self._toggle_properties('motion_type')
def get_motion_type(self):
return self.motion_type
def reset_motion_type(self):
self.motion_type = False
# time_stamp status
def set_time_stamp(self, data):
self.time_stamp = data
if data:
self._toggle_properties('time_stamp')
def get_time_stamp(self):
return self.time_stamp
def reset_time_stamp(self):
self.time_stamp = False
# tool_offset status
def set_tool_offset(self, data):
self.tool_offset = data
if data:
self._toggle_properties('tool_offset')
def get_tool_offset(self):
return self.tool_offset
def reset_tool_offset(self):
self.tool_offset = False
def set_state_label_l(self, data):
self._state_label_list = data
def get_state_label_l(self):
return self._state_label_list
def reset_state_label_l(self):
self._state_label_list = ['Estopped','Running','Stopped','Paused','Waiting','Reading']
def set_motion_label_l(self, data):
self._motion_label_list = data
def get_motion_label_l(self):
return self._motion_label_list
def reset_motion_label_l(self):
self._motion_label_list = ['None','Rapid','Feed','Arc','Tool Change','Probe','Rotaty Index']
# gcode line selected
def set_gcode_selected(self, data):
self.gcode_selected = data
if data:
self._toggle_properties('gcode_selected')
def get_gcode_selected(self):
return self.gcode_selected
def reset_gcode_selected(self):
self.gcode_selected = False
# gcode line selected
def set_halpin(self, data):
self.halpin = data
if data:
self._toggle_properties('halpin')
def get_halpin(self):
return self.halpin
def reset_halpin(self):
self.halpin = False
def set_halpin_name(self, data):
self._halpin_name = data
def get_halpin_name(self):
return self._halpin_name
def reset_halpin_name(self):
self._halpin_name = ''
textTemplate = QtCore.Property(str, get_textTemplate, set_textTemplate, reset_textTemplate)
alt_textTemplate = QtCore.Property(str, get_alt_textTemplate, set_alt_textTemplate, reset_alt_textTemplate)
index_number = QtCore.Property(int, get_index, set_index, reset_index)
feed_override_status = QtCore.Property(bool, get_feed_override, set_feed_override, reset_feed_override)
rapid_override_status = QtCore.Property(bool, get_rapid_override, set_rapid_override, reset_rapid_override)
max_velocity_override_status = QtCore.Property(bool, get_max_velocity_override, set_max_velocity_override, reset_max_velocity_override)
spindle_override_status = QtCore.Property(bool, get_spindle_override, set_spindle_override,
reset_spindle_override)
jograte_status = QtCore.Property(bool, get_jograte, set_jograte, reset_jograte)
jograte_angular_status = QtCore.Property(bool, get_jograte_angular, set_jograte_angular, reset_jograte_angular)
jogincr_status = QtCore.Property(bool, get_jogincr, set_jogincr, reset_jogincr)
jogincr_angular_status = QtCore.Property(bool, get_jogincr_angular, set_jogincr_angular, reset_jogincr_angular)
current_feedrate_status = QtCore.Property(bool, get_current_feedrate, set_current_feedrate,
reset_current_feedrate)
current_FPU_status = QtCore.Property(bool, get_current_feedunit, set_current_feedunit, reset_current_feedunit)
requested_spindle_speed_status = QtCore.Property(bool, get_requested_spindle_speed,
set_requested_spindle_speed, reset_requested_spindle_speed)
actual_spindle_speed_status = QtCore.Property(bool, get_actual_spindle_speed, set_actual_spindle_speed,
reset_actual_spindle_speed)
user_system_status = QtCore.Property(bool, get_user_system, set_user_system, reset_user_system)
blendcode_status = QtCore.Property(bool, get_blendcode, set_blendcode, reset_blendcode)
fcode_status = QtCore.Property(bool, get_fcode, set_fcode, reset_fcode)
gcodes_status = QtCore.Property(bool, get_gcodes, set_gcodes, reset_gcodes)
gcode_group0_status = QtCore.Property(bool, get_gcode_group0,
set_gcode_group0, reset_gcode_group0)
gcode_group1_status = QtCore.Property(bool, get_gcode_group1,
set_gcode_group1, reset_gcode_group1)
gcode_group2_status = QtCore.Property(bool, get_gcode_group2,
set_gcode_group2, reset_gcode_group2)
gcode_group3_status = QtCore.Property(bool, get_gcode_group3,
set_gcode_group3, reset_gcode_group3)
gcode_group4_status = QtCore.Property(bool, get_gcode_group4,
set_gcode_group4, reset_gcode_group4)
gcode_group5_status = QtCore.Property(bool, get_gcode_group5,
set_gcode_group5, reset_gcode_group5)
gcode_group6_status = QtCore.Property(bool, get_gcode_group6,
set_gcode_group6, reset_gcode_group6)
gcode_group7_status = QtCore.Property(bool, get_gcode_group7,
set_gcode_group7, reset_gcode_group7)
gcode_group8_status = QtCore.Property(bool, get_gcode_group8,
set_gcode_group8, reset_gcode_group8)
gcode_group10_status = QtCore.Property(bool, get_gcode_group10,
set_gcode_group10, reset_gcode_group10)
gcode_group12_status = QtCore.Property(bool, get_gcode_group12,
set_gcode_group12, reset_gcode_group12)
gcode_group13_status = QtCore.Property(bool, get_gcode_group13,
set_gcode_group13, reset_gcode_group13)
gcode_group14_status = QtCore.Property(bool, get_gcode_group14,
set_gcode_group14, reset_gcode_group14)
gcode_group15_status = QtCore.Property(bool, get_gcode_group15,
set_gcode_group15, reset_gcode_group15)
mcodes_status = QtCore.Property(bool, get_mcodes, set_mcodes, reset_mcodes)
tool_diameter_status = QtCore.Property(bool, get_tool_diameter, set_tool_diameter, reset_tool_diameter)
tool_comment_status = QtCore.Property(bool, get_tool_comment, set_tool_comment, reset_tool_comment)
tool_number_status = QtCore.Property(bool, get_tool_number, set_tool_number, reset_tool_number)
tool_offset_status = QtCore.Property(bool, get_tool_offset, set_tool_offset, reset_tool_offset)
gcode_selected_status = QtCore.Property(bool, get_gcode_selected, set_gcode_selected, reset_gcode_selected)
actual_surface_speed_status = QtCore.Property(bool, get_actual_surface_speed, set_actual_surface_speed,
reset_actual_surface_speed)
filename_status = QtCore.Property(bool, get_filename, set_filename,
reset_filename)
filepath_status = QtCore.Property(bool, get_filepath, set_filepath,
reset_filepath)
machine_state_status = QtCore.Property(bool, get_machine_state, set_machine_state,
reset_machine_state)
motion_type_status = QtCore.Property(bool, get_motion_type, set_motion_type,
reset_motion_type)
time_stamp_status = QtCore.Property(bool, get_time_stamp, set_time_stamp,
reset_time_stamp)
halpin_status = QtCore.Property(bool, get_halpin, set_halpin, reset_halpin)
state_label_list = QtCore.Property('QStringList', get_state_label_l, set_state_label_l, reset_state_label_l)
motion_type_list = QtCore.Property('QStringList', get_motion_label_l, set_motion_label_l, reset_motion_label_l)
halpin_name = QtCore.Property(str, get_halpin_name, set_halpin_name, reset_halpin_name)
# boilder code
def __getitem__(self, item):
return getattr(self, item)
def __setitem__(self, item, value):
return setattr(self, item, value)
if __name__ == "__main__":
from qtpy.QtWidgets import *
from qtpy.QtCore import *
from qtpy.QtGui import *
import sys
app = QApplication(sys.argv)
label = StatusLabel()
label.setProperty('motion_type_status',True)
label._hal_init()
label.show()
sys.exit(app.exec())