Skip to content

Commit 77dd339

Browse files
committed
qtvcp/hal_glib: add gcode group changed signal and status label
Now you can sort changes be gcode group
1 parent a0af98f commit 77dd339

2 files changed

Lines changed: 271 additions & 0 deletions

File tree

lib/python/hal_glib.py

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,21 @@ class _GStat(GObject.GObject):
181181
's-code-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_FLOAT,)),
182182
'blend-code-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_FLOAT, GObject.TYPE_FLOAT)),
183183

184+
'gcode-group0-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_STRING,)),
185+
'gcode-group1-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_STRING,)),
186+
'gcode-group2-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_STRING,)),
187+
'gcode-group3-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_STRING,)),
188+
'gcode-group4-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_STRING,)),
189+
'gcode-group5-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_STRING,)),
190+
'gcode-group6-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_STRING,)),
191+
'gcode-group7-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_STRING,)),
192+
'gcode-group8-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_STRING,)),
193+
'gcode-group10-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_STRING,)),
194+
'gcode-group12-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_STRING,)),
195+
'gcode-group13-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_STRING,)),
196+
'gcode-group14-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_STRING,)),
197+
'gcode-group15-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_STRING,)),
198+
184199
'metric-mode-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_BOOLEAN,)),
185200
'user-system-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_STRING,)),
186201

@@ -252,6 +267,22 @@ class _GStat(GObject.GObject):
252267
STATE_ON = linuxcnc.STATE_ON
253268
STATE_OFF = linuxcnc.STATE_OFF
254269

270+
group0 = ('G4', 'G10','G28', 'G30', 'G52', 'G53', 'G92', 'G92.1', 'G92.2', 'G92.3')
271+
group1 = ('G0', 'G1', 'G2', 'G3', 'G33', 'G38.n', 'G73', 'G76', 'G80', 'G81',\
272+
'G82', 'G83', 'G84', 'G85', 'G86', 'G87', 'G88', 'G89')
273+
group2 = ('G17', 'G18', 'G19', 'G17.1', 'G18.1', 'G19.1')
274+
group3 = ('G90', 'G91')
275+
group4 = ('G90.1', 'G91.1')
276+
group5 = ('G93', 'G94', 'G95')
277+
group6 = ('G20', 'G21')
278+
group7 = ('G40', 'G41', 'G42', 'G41.1', 'G42.1')
279+
group8 = ('G43', 'G43.1', 'G49')
280+
group10 = ('G98', 'G99')
281+
group12 = ('G54', 'G55', 'G56', 'G57', 'G58', 'G59', 'G59.1', 'G59.2', 'G59.3')
282+
group13 = ('G61', 'G61.1', 'G64')
283+
group14 = ('G96', 'G97')
284+
group15 = ('G7', 'G8')
285+
255286
def __init__(self, stat = None):
256287
GObject.Object.__init__(self)
257288
self.stat = stat or linuxcnc.stat()
@@ -361,6 +392,9 @@ def merge(self):
361392
# extract specific G-code modes
362393
itime = fpm = fpr = css = rpm = metric = False
363394
radius = diameter = adm = idm = False
395+
group0 = group1 = group3 = group4 = group5 = group6 = group7 = ''
396+
group8 = group10 = group12 = group13 = group14 = group15 =''
397+
364398
for num,i in enumerate(active_gcodes):
365399
if i == 'G90': adm = True
366400
elif i == 'G91': idm = True
@@ -372,6 +406,37 @@ def merge(self):
372406
elif i == 'G21': metric = True
373407
elif i == 'G7': diameter = True
374408
elif i == 'G8': radius = True
409+
410+
if i in self.group0: group0 = i
411+
elif i in self.group1: group1 = i
412+
elif i in self.group2: group2 = i
413+
elif i in self.group3: group3 = i
414+
elif i in self.group4: group4 = i
415+
elif i in self.group5: group5 = i
416+
elif i in self.group6: group6 = i
417+
elif i in self.group7: group7 = i
418+
elif i in self.group8: group8 = i
419+
elif i in self.group10: group10 = i
420+
elif i in self.group12: group12 = i
421+
elif i in self.group13: group13 = i
422+
elif i in self.group14: group14 = i
423+
elif i in self.group15: group15 = i
424+
425+
self.old['group0'] = group0
426+
self.old['group1'] = group1
427+
self.old['group2'] = group2
428+
self.old['group3'] = group3
429+
self.old['group4'] = group4
430+
self.old['group5'] = group5
431+
self.old['group6'] = group6
432+
self.old['group7'] = group7
433+
self.old['group8'] = group8
434+
self.old['group10'] = group10
435+
self.old['group12'] = group12
436+
self.old['group13'] = group13
437+
self.old['group14'] = group14
438+
self.old['group15'] = group15
439+
375440
self.old['g90'] = adm
376441
self.old['g91'] = idm
377442
self.old['itime'] = itime
@@ -709,6 +774,17 @@ def update(self):
709774
diam_new = self.old['diameter']
710775
if diam_new != diam_old:
711776
self.emit('diameter-mode',diam_new)
777+
778+
####################################
779+
# G modal
780+
####################################
781+
for g in ('group0','group1','group2','group3','group4','group5',
782+
'group6','group7','group8','group10','group12','group13','group14','group15'):
783+
gold = old.get(g, None)
784+
gnew = self.old[g]
785+
if gold != gnew:
786+
self.emit('gcode-{}-changed'.format(g), gnew)
787+
712788
####################################
713789
# Mcodes
714790
####################################
@@ -848,6 +924,12 @@ def forced_update(self):
848924
# G-codes
849925
g_code_new = self.old['g-code']
850926
self.emit('g-code-changed',g_code_new)
927+
928+
for g in ('group0','group1','group2','group3','group4','group5',
929+
'group6','group7','group8','group10','group12','group13','group14','group15'):
930+
gnew = self.old[g]
931+
self.emit('gcode-{}-changed'.format(g), gnew)
932+
851933
# metric units G21
852934
metric_new = self.old['metric']
853935
self.emit('metric_mode_changed',metric_new)

lib/python/qtvcp/widgets/status_label.py

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,20 @@ def __init__(self, parent=None):
6666
self.blendcode = False
6767
self.fcode = False
6868
self.gcodes = False
69+
self.gcode_group0 = False
70+
self.gcode_group1 = False
71+
self.gcode_group2 = False
72+
self.gcode_group3 = False
73+
self.gcode_group4 = False
74+
self.gcode_group5 = False
75+
self.gcode_group6 = False
76+
self.gcode_group7 = False
77+
self.gcode_group8 = False
78+
self.gcode_group10 = False
79+
self.gcode_group12 = False
80+
self.gcode_group13 = False
81+
self.gcode_group14 = False
82+
self.gcode_group15 = False
6983
self.mcodes = False
7084
self.tool_diameter = False
7185
self.tool_comment = False
@@ -83,6 +97,13 @@ def _hal_init(self):
8397
def _f(data):
8498
self._set_text(data)
8599

100+
for g in ('group0','group1','group2','group3','group4','group5',
101+
'group6','group7','group8','group10','group12','group13','group14','group15'):
102+
if self['gcode_{}'.format(g)]:
103+
STATUS.connect('gcode-{}-changed'.format(g), lambda w, data: _f(data))
104+
break
105+
return
106+
86107
if self.feed_override:
87108
STATUS.connect('feed-override-changed', lambda w, data: _f(data))
88109
elif self.rapid_override:
@@ -588,6 +609,146 @@ def get_gcodes(self):
588609
def reset_gcodes(self):
589610
self.gcodes = False
590611

612+
# gcode_group0 status
613+
def set_gcode_group0(self, data):
614+
self.gcode_group0 = data
615+
if data:
616+
self._toggle_properties('gcode_group0')
617+
def get_gcode_group0(self):
618+
return self.gcode_group0
619+
def reset_gcode_group0(self):
620+
self.gcode_group0 = False
621+
622+
# gcode_group1 status
623+
def set_gcode_group1(self, data):
624+
self.gcode_group1 = data
625+
if data:
626+
self._toggle_properties('gcode_group1')
627+
def get_gcode_group1(self):
628+
return self.gcode_group1
629+
def reset_gcode_group1(self):
630+
self.gcode_group1 = False
631+
632+
# gcode_group2 status
633+
def set_gcode_group2(self, data):
634+
self.gcode_group2 = data
635+
if data:
636+
self._toggle_properties('gcode_group2')
637+
def get_gcode_group2(self):
638+
return self.gcode_group2
639+
def reset_gcode_group2(self):
640+
self.gcode_group2 = False
641+
642+
# gcode_group3 status
643+
def set_gcode_group3(self, data):
644+
self.gcode_group3 = data
645+
if data:
646+
self._toggle_properties('gcode_group3')
647+
def get_gcode_group3(self):
648+
return self.gcode_group3
649+
def reset_gcode_group3(self):
650+
self.gcode_group3 = False
651+
652+
# gcode_group4 status
653+
def set_gcode_group4(self, data):
654+
self.gcode_group4 = data
655+
if data:
656+
self._toggle_properties('gcode_group4')
657+
def get_gcode_group4(self):
658+
return self.gcode_group4
659+
def reset_gcode_group4(self):
660+
self.gcode_group4 = False
661+
662+
# gcode_group5 status
663+
def set_gcode_group5(self, data):
664+
self.gcode_group5 = data
665+
if data:
666+
self._toggle_properties('gcode_group5')
667+
def get_gcode_group5(self):
668+
return self.gcode_group5
669+
def reset_gcode_group5(self):
670+
self.gcode_group5 = False
671+
672+
# gcode_group6 status
673+
def set_gcode_group6(self, data):
674+
self.gcode_group6 = data
675+
if data:
676+
self._toggle_properties('gcode_group6')
677+
def get_gcode_group6(self):
678+
return self.gcode_group6
679+
def reset_gcode_group6(self):
680+
self.gcode_group6 = False
681+
682+
# gcode_group7 status
683+
def set_gcode_group7(self, data):
684+
self.gcode_group7 = data
685+
if data:
686+
self._toggle_properties('gcode_group7')
687+
def get_gcode_group7(self):
688+
return self.gcode_group7
689+
def reset_gcode_group7(self):
690+
self.gcode_group7 = False
691+
692+
# gcode_group8 status
693+
def set_gcode_group8(self, data):
694+
self.gcode_group8 = data
695+
if data:
696+
self._toggle_properties('gcode_group8')
697+
def get_gcode_group8(self):
698+
return self.gcode_group8
699+
def reset_gcode_group8(self):
700+
self.gcode_group8 = False
701+
702+
# gcode_group10 status
703+
def set_gcode_group10(self, data):
704+
self.gcode_group10 = data
705+
if data:
706+
self._toggle_properties('gcode_group10')
707+
def get_gcode_group10(self):
708+
return self.gcode_group10
709+
def reset_gcode_group10(self):
710+
self.gcode_group10 = False
711+
712+
# gcode_group12 status
713+
def set_gcode_group12(self, data):
714+
self.gcode_group12 = data
715+
if data:
716+
self._toggle_properties('gcode_group12')
717+
def get_gcode_group12(self):
718+
return self.gcode_group12
719+
def reset_gcode_group12(self):
720+
self.gcode_group12 = False
721+
722+
# gcode_group13 status
723+
def set_gcode_group13(self, data):
724+
self.gcode_group13 = data
725+
if data:
726+
self._toggle_properties('gcode_group13')
727+
def get_gcode_group13(self):
728+
return self.gcode_group13
729+
def reset_gcode_group13(self):
730+
self.gcode_group13 = False
731+
732+
# gcode_group14 status
733+
def set_gcode_group14(self, data):
734+
self.gcode_group14 = data
735+
if data:
736+
self._toggle_properties('gcode_group14')
737+
def get_gcode_group14(self):
738+
return self.gcode_group14
739+
def reset_gcode_group14(self):
740+
self.gcode_group14 = False
741+
742+
# gcode_group15 status
743+
def set_gcode_group15(self, data):
744+
self.gcode_group15 = data
745+
if data:
746+
self._toggle_properties('gcode_group15')
747+
def get_gcode_group15(self):
748+
return self.gcode_group15
749+
def reset_gcode_group15(self):
750+
self.gcode_group15 = False
751+
591752
# mcodes status
592753
def set_mcodes(self, data):
593754
self.mcodes = data
@@ -753,6 +914,34 @@ def reset_halpin_name(self):
753914
blendcode_status = QtCore.pyqtProperty(bool, get_blendcode, set_blendcode, reset_blendcode)
754915
fcode_status = QtCore.pyqtProperty(bool, get_fcode, set_fcode, reset_fcode)
755916
gcodes_status = QtCore.pyqtProperty(bool, get_gcodes, set_gcodes, reset_gcodes)
917+
gcode_group0_status = QtCore.pyqtProperty(bool, get_gcode_group0,
918+
set_gcode_group0, reset_gcode_group0)
919+
gcode_group1_status = QtCore.pyqtProperty(bool, get_gcode_group1,
920+
set_gcode_group1, reset_gcode_group1)
921+
gcode_group2_status = QtCore.pyqtProperty(bool, get_gcode_group2,
922+
set_gcode_group2, reset_gcode_group2)
923+
gcode_group3_status = QtCore.pyqtProperty(bool, get_gcode_group3,
924+
set_gcode_group3, reset_gcode_group3)
925+
gcode_group4_status = QtCore.pyqtProperty(bool, get_gcode_group4,
926+
set_gcode_group4, reset_gcode_group4)
927+
gcode_group5_status = QtCore.pyqtProperty(bool, get_gcode_group5,
928+
set_gcode_group5, reset_gcode_group5)
929+
gcode_group6_status = QtCore.pyqtProperty(bool, get_gcode_group6,
930+
set_gcode_group6, reset_gcode_group6)
931+
gcode_group7_status = QtCore.pyqtProperty(bool, get_gcode_group7,
932+
set_gcode_group7, reset_gcode_group7)
933+
gcode_group8_status = QtCore.pyqtProperty(bool, get_gcode_group8,
934+
set_gcode_group8, reset_gcode_group8)
935+
gcode_group10_status = QtCore.pyqtProperty(bool, get_gcode_group10,
936+
set_gcode_group10, reset_gcode_group10)
937+
gcode_group12_status = QtCore.pyqtProperty(bool, get_gcode_group12,
938+
set_gcode_group12, reset_gcode_group12)
939+
gcode_group13_status = QtCore.pyqtProperty(bool, get_gcode_group13,
940+
set_gcode_group13, reset_gcode_group13)
941+
gcode_group14_status = QtCore.pyqtProperty(bool, get_gcode_group14,
942+
set_gcode_group14, reset_gcode_group14)
943+
gcode_group15_status = QtCore.pyqtProperty(bool, get_gcode_group15,
944+
set_gcode_group15, reset_gcode_group15)
756945
mcodes_status = QtCore.pyqtProperty(bool, get_mcodes, set_mcodes, reset_mcodes)
757946
tool_diameter_status = QtCore.pyqtProperty(bool, get_tool_diameter, set_tool_diameter, reset_tool_diameter)
758947
tool_comment_status = QtCore.pyqtProperty(bool, get_tool_comment, set_tool_comment, reset_tool_comment)

0 commit comments

Comments
 (0)