Страница 1 из 1

подсветка строки gcode

Добавлено: 11 фев 2020, 12:10
nkp
когда в жкоде встречается подпрограмма,
то в емс начинает подсвечиваться как бы номер строки из этой подпрограммы...
как то раньше это не мешало ,но вот пришлось на это обратить внимание))
разрабы вроде давно поднимали этот вопрос,но что то в 2.7.15 все прыгает по прежнему
такая ситуация и в Axis , и в hal_sourceview.py (хотя на Gmoccapy не проверял)
"ноги растут" из current_line из linuxcnc.stat(),
потому как текущая строка(ее номер) в GUI передается именно отсюда (так еще два параметра идентичных есть)
----------------
багрепорт написал
пока решится сделал костыль - чтоб хотя бы не "откидывало" назад по коду

для hal_sourceview.py

Код: Выделить всё

def set_line_number(self,linenum):
        self.offset = linenum
        self.check_offset()
        self.highlight_line(self.gstat, self.offset)
        if linenum == 0:   #nkp
            self.line_mem  = 0  



    def highlight_line(self, w, l):
        if l > self.line_mem :  #nkp
            self.line_mem  = l  
        else:
            return
	....
	....
для Axis

Код: Выделить всё

--- /home/nkp//axis
+++ /home/nkp/linuxcnc/configs/jog/axis
@@ -664,7 +664,8 @@
         self.notifications_clear = False
         self.notifications_clear_info = False
         self.notifications_clear_error = False
-
+        self.current_line_mem = 0
+        
     def start(self):
         if self.running.get(): return
         if not os.path.exists(linuxcnc.nmlfile):
@@ -734,14 +735,16 @@
                 root_window.tk.eval(pane_top + ".tabs raise manual")
             if (self.current_task_mode == linuxcnc.MODE_MDI):
                 root_window.tk.eval(pane_top + ".tabs raise mdi")
-            if (self.current_task_mode == linuxcnc.MODE_AUTO):
+            if (self.current_task_mode != linuxcnc.MODE_AUTO):
                 # not sure if anything needs to be done for this
                 pass
+                self.current_line_mem = 0 
 
         self.after = self.win.after(update_ms, self.update)
-
-        self.win.set_current_line(self.stat.id or self.stat.motion_line)
-
+        if (self.stat.id or self.stat.motion_line) > self.current_line_mem :
+            self.win.set_current_line(self.stat.id or self.stat.motion_line)
+            self.current_line_mem = (self.stat.id or self.stat.motion_line)
+            
         speed = self.stat.current_vel
 
         limits = soft_limits()

Re: подсветка строки gcode

Добавлено: 11 фев 2020, 12:14
nkp
то есть - сравниваем номер следующей строки с текущей
и подсвечиваем если только нарастание...
казалось бы ,что должно сработать из hal_glib:

Код: Выделить всё

line_old = old.get('line', None)
        line_new = self.old['line']
        if line_new > line_old:
            self.emit('line-changed', line_new)
но почему то так не работает (долго не заморачивался)

Re: подсветка строки gcode

Добавлено: 11 фев 2020, 12:18
Сергей Саныч
Да, проблема давно перезрела.

Re: подсветка строки gcode

Добавлено: 11 фев 2020, 12:26
nkp
Сергей Саныч писал(а):Да, проблема давно перезрела.
решение ее как бы и на поверхности - у нас уже есть флаг,который активен ,когда обрабатываем подпрограмму(remap)
вот по этому флагу и нужно смотреть - менять вывод в stat или оставить текущее значение...
можно даже попробовать(я про себя :) )