Вопросы новичка по Glade + HAL

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
magrelo
Кандидат
Сообщения: 42
Зарегистрирован: 27 ноя 2015, 11:53
Репутация: 0
Настоящее имя: Andrey
Контактная информация:

Вопросы новичка по Glade + HAL

Сообщение magrelo »

Нарисовал панельку с элементом энкодера wheel-outvalue
в postgui.hal обозначил связь
net signal-value myblock.invalue gladevcp.wheel-outvalue
Все работает, и элемент gladevcp.wheel-outvalue в начале = 0
А хотелось бы значение по умолчанию 20 (минимальное для переменной invalue)
В Glade в свойствах объекта wheel не нашел ничего по поводу границ или значений при инициализации элемента.
Через HAL изменить не получается так как пин gladevcp.wheel-outvalue - OUT
Есть какое-нибудь решение? Как вообще правильно менять значение пинов в hal когда уже обозначена связка net?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение nkp »

мне кажется проще использовать ,например, компонент scale
http://linuxcnc.org/docs/2.7/html/man/man9/scale.9.html
для начального смещения

а так - только лезть в исходники ,
потому как настройки logwheel ограничены этим:

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

Direct program control 

 There a couple ways to directly control the widget using Python. 
Using gobject to set the above listed properties:
    [widget name].set_property("size",int(value))
    [widget name].set_property("cpr",int(value))
    [widget name].set_property("show_counts, True)
There are two python methods:
    [widget name].get_value()
    Will return the counts value as integer
    [widget name].set_label("string")
    Sets the label content with "string"
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение Serg »

nkp писал(а):а так - только лезть в исходники ,
потому как настройки logwheel ограничены этим:
Необязательно - можно проинитить виджет начальным значением при старте, но придётся написать ещё и код на питоне.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение nkp »

UAVpilot писал(а):еобязательно - можно проинитить виджет начальным значением при старте, но придётся написать ещё и код на питоне.
пробовал так
jogwheel в test.ui
переопределить пытался в файле test.py
прописывалось в ини так:

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

 EMBED_TAB_COMMAND=halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x {XID} -u test.py test.ui
не получается(у меня))
если можно примерчик готовый :wik:
-------------------------------------------------------
зы:
в исходнике (у меня файл /usr/share/pyshared/gladevcp/jogwheel.py)
(из под рута) меняем:
self._counts = 0
на
self._counts = 20
получаем при загрузке начальное значение 20
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение nkp »

по исходникам еще такой вариант:
прописываем counts как параметр ,и потом его уже изменяем внешним файлом как требуется:

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

#!/usr/bin/env python

# GladeVcp Widget 
# JogWheel widget, to simulate a real jogwheel
# mostly to be used in a sim config
#
#
# Copyright (c) 2013 Norbert Schechner
# based on the pyvcp jogwheel widget from Anders Wallin
#
#
# 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 gtk
import gobject
import math
import hal

# This is needed to make the hal pin, making them directly with hal, will
# not allow to use them in glade without linuxcnc beeing started
from hal_widgets import _HalJogWheelBase

class JogWheel(gtk.DrawingArea, _HalJogWheelBase):
    '''
    The JogWheel Widget simulates a real jog wheel

    show counts = bool     , whether you want to display the counts in the widget or not 
    size        = interger , the size of the widget in pixel, 
                             allowed values are in the range from 100 to 500, 
                             default is 300
    cpr         = integer  , The counts per revolution, 
                             allowed values are in the range from 25 to 360, 
                             default is 40
    label       = string   , The label content to display in the upper part of the widget,
                             default is "" = empty string
    '''

    __gtype_name__ = 'JogWheel'
    __gproperties__ = {
        'show_counts' : ( gobject.TYPE_BOOLEAN, 'Display the counts in the widget', 'Display or not the counts value',
                          True, gobject.PARAM_READWRITE | gobject.PARAM_CONSTRUCT),
        'show_scaled_value' : ( gobject.TYPE_BOOLEAN, 'Display the scaled value in the widget', 'Display or not the scaled value',
                          False, gobject.PARAM_READWRITE | gobject.PARAM_CONSTRUCT),
        'size'  : ( gobject.TYPE_INT, 'The size of the widget in pixel', 'Set the size of the widget',
                    100, 500, 200, gobject.PARAM_READWRITE|gobject.PARAM_CONSTRUCT),
        'cpr'   : ( gobject.TYPE_INT, 'Counts per revolution', 'Set the value of counts per revolution',
                    25, 360, 40, gobject.PARAM_READWRITE|gobject.PARAM_CONSTRUCT),
        'label' : ( gobject.TYPE_STRING, 'label', 'Sets the string to be shown in the upper part of the widget',
                    "", gobject.PARAM_READWRITE | gobject.PARAM_CONSTRUCT),
        'counts': ( gobject.TYPE_INT, 'Counts init', 'Set the value of counts init',
                    0, 360, 40, gobject.PARAM_READWRITE|gobject.PARAM_CONSTRUCT),
                      }
    __gproperties = __gproperties__

    def __init__(self, size = 200, cpr = 40, counts = 33):
        super(JogWheel, self).__init__()

        # basic settings
        self._size = size
        self._cpr = cpr
        self._angle = 0

        self._counts = counts
        self._scaled_value = 0
        self._allow_motion = False
        self._show_counts = True
        self._show_scaled_value = False
        self._label = ""

        # connect our signals
        self.connect("destroy", gtk.main_quit)
        self.connect("expose-event", self.expose)
        self.connect("button_press_event", self._button_press)
        self.connect("button_release_event", self._button_release)
        self.connect("motion_notify_event", self._motion)
        self.connect("scroll_event", self._scroll)

        # To use the the events, we have to unmask them
        self.add_events(gtk.gdk.BUTTON_PRESS_MASK |
                        gtk.gdk.BUTTON_RELEASE_MASK |
                        gtk.gdk.POINTER_MOTION_MASK)

    # init the hal pin management
    def _hal_init(self):
        _HalJogWheelBase._hal_init(self)
        self.hal_pin_scale = self.hal.newpin(self.hal_name+".scale", hal.HAL_FLOAT, hal.HAL_IN)
        self.hal_pin_scale.set(1.0)

    # This function is called from hal_widgets.py
    # from hal_update
    def get_value(self):
        self._scaled_value = self._counts * self.hal_pin_scale.get()
        self.queue_draw()
        return self._counts

    def get_scaled_value(self):
        try:
            return self._scaled_value
        except:
            pass

    def set_label(self, labelcontent):
        self.set_property("label",labelcontent)

    # this draws our widget on the screen
    def expose(self, widget, event):

        # set the sizes according to the propertys
        self.set_size_request(self._size, self._size)
        self.radius = self._size / 2 - self._size / 60
        self.inner_radius = self.radius - self._size / 15
        self.dot_radius = self._size / 17
        self.dot_pitch_radius = self.inner_radius - self.dot_radius

        # create the cairo window
        # I do not know why this workes without importing cairo
        self.cr = widget.window.cairo_create()

        # the area of reactions
        self.cr.rectangle(event.area.x, event.area.x, event.area.width, event.area.height)
        self.cr.clip()

        # calculate the delta angle between the ticks
        # and set the angle not to be inbetween ticks
        self._delta_a = 2 * math.pi / self._cpr
        self._angle = int(self._angle / self._delta_a) * self._delta_a

        # call to paint the widget
        self._draw_frame()
        self._draw_dot()
        self._draw_arrow()

    # draws the frame, meaning the background
    def _draw_frame(self):
        w = self.allocation.width
        h = self.allocation.height

        # draw a black circle
        linewith = self._size / 75
        if linewith < 1:
            linewith = 1
        self.cr.set_line_width(linewith)
        self.cr.set_source_rgb(0.0, 0.0, 0.0)
        self.cr.translate(w/2, h/2)
        self.cr.arc(0, 0, self.radius, 0, 2*math.pi)
        self.cr.stroke()

        # fill the circle with white color
        self.cr.set_source_rgb(1.0, 1.0, 1.0)
        filldia = self.radius - linewith / 2
        self.cr.arc(0, 0, filldia, 0, 2*math.pi)
        self.cr.fill()

        # draw a smaler circle with a finer line
        linewith = self._size / 200
        if linewith < 1:
            linewith = 1
        self.cr.set_line_width(linewith)
        self.cr.set_source_rgb(0.0, 0.0, 0.0)
        self.cr.arc(0, 0, self.inner_radius, 0, 2*math.pi)
        self.cr.stroke()

        # fill the inner circle with lightgrey
        self.cr.set_source_rgb(0.8, 0.8, 0.8)
        filldia = self.inner_radius - linewith / 2
        self.cr.arc(0, 0, filldia, 0, 2*math.pi)
        self.cr.fill()

        # draw the lines for the tiks
        self.cr.set_source_rgb(0.0, 0.0, 0.0)
        for n in range(0, self._cpr):
            start_x = filldia * math.cos(n * self._delta_a)
            start_y = filldia * math.sin(n * self._delta_a)
            end_x = self.radius * math.cos(n * self._delta_a)
            end_y = self.radius * math.sin(n * self._delta_a)
            self.cr.move_to(start_x, start_y)
            self.cr.line_to(end_x, end_y)
            self.cr.stroke()

    # this draws the dot, moving around while jogging
    def _draw_dot(self):
        x = self.dot_pitch_radius * math.cos(self._angle)
        y = self.dot_pitch_radius * math.sin(self._angle)
        self.cr.set_source_rgb(0.0, 0.0, 0.0)
        self.cr.arc(x, y, self.dot_radius, 0, 2*math.pi)
        self.cr.fill()

    # This draws the small triangle pointing to the tiks
    def _draw_arrow(self):
        peak_x = (self.radius - self.dot_radius / 2) * math.cos(self._angle)
        peak_y = (self.radius - self.dot_radius / 2) * math.sin(self._angle)
        edge_x = (self.dot_pitch_radius + self.dot_radius) * math.cos(self._angle)
        edge_y = (self.dot_pitch_radius + self.dot_radius) * math.sin(self._angle)
        self.cr.move_to(peak_x, peak_y)
        delta_x = self.dot_radius / 1.5 * math.sin(self._angle)
        delta_y = self.dot_radius / 1.5 * math.cos(self._angle)
        self.cr.line_to(edge_x + delta_x, edge_y - delta_y)
        self.cr.line_to(edge_x - delta_x, edge_y + delta_y)
        self.cr.line_to(peak_x, peak_y)
        self.cr.fill()

        # Do we want to see the counts value? If so draw it
        if (self._show_counts and not self._show_scaled_value) :
            self.cr.set_font_size(self._size / 10)
            w,h = self.cr.text_extents(str(self._counts))[2:4]
            self.cr.move_to(0 - w / 2 , 0 + h / 2)
            self.cr.show_text(str(self._counts))
        elif self._show_scaled_value :
            self.cr.set_font_size(self._size / 10)
            w,h = self.cr.text_extents(str(self._scaled_value))[2:4]
            self.cr.move_to(0 - w / 2 , 0 + h / 2)
            self.cr.show_text(str(self._scaled_value))

        # and now we draw the label
        if self._label != "":
            self.cr.set_font_size(self._size / 10)
            w,h = self.cr.text_extents(self._label)[2:4]
            self.cr.move_to(0 - w / 2 , 0 - self._size / 10 - h / 2)
            self.cr.show_text(str(self._label))

    # If the mouse button has been pressed, we will allow "drag and drop"
    # we allow that only for the left mouse button
    def _button_press(self, widget, event):
        if event.button == 1 :
            self._allow_motion = True
            self._old_angle = self._angle

    # stop motion when button has been released
    def _button_release(self, widget, event):
        self._allow_motion = False

    # Jog when motion ocure and button has been pressed
    def _motion(self, widget, event):
        if self._allow_motion:
            x = event.x - widget.get_allocation().width / 2
            y = event.y - widget.get_allocation().height / 2
            self._angle = math.atan2(y , x)
            counts = int(self._angle / self._delta_a)
            delta = self._angle - self._old_angle
            if delta >= self._delta_a:
                self._counts += 1
                self._old_angle = self._angle
            if delta <= -self._delta_a:
                self._counts -= 1
                self._old_angle = self._angle
            self.queue_draw()

    # handle the scroll wheel of the mouse
    def _scroll(self, widget, event):
        if event.direction == gtk.gdk.SCROLL_UP:
            self._counts += 1
        if event.direction == gtk.gdk.SCROLL_DOWN:
            self._counts -= 1
        self._angle = self._counts * self._delta_a

        self.queue_draw()

    # Get propertys
    def do_get_property(self, property):
        name = property.name.replace('-', '_')
        if name in self.__gproperties.keys():
            return getattr(self, name)
        else:
            raise AttributeError('unknown property %s' % property.name)

    # Set propertys
    def do_set_property(self, property, value):
        try:
            name = property.name.replace('-', '_')
            if name in self.__gproperties.keys():
                setattr(self, name, value)
                if name == 'show_counts':
                    self._show_counts = value
                if name == 'show_scaled_value':
                    self._show_scaled_value = value
                if name == "size":
                    self._size = value
                    self.set_size_request(self._size, self._size)
                if name == "cpr":
                    self._cpr = value
                if name == "counts":
                    self._counts = value
                if name == "label":
                    if len(str(value)) > 12:
                        value = str(value)[:12]
                    self._label = str(value)
                self.queue_draw()
            else:
                raise AttributeError('unknown property %s' % property.name)
        except:
            pass

# for testing without glade editor:
# to show some behavior and setting options  

def main():
    window = gtk.Window()
    #size = 300
    #tiks = 10
#    jogwheel = JogWheel(size, tiks)
    jogwheel = JogWheel()
    jogwheel.set_property('cpr', 40)
    jogwheel.set_property('size', 200)
    jogwheel.set_property('label', "max. 12 Characters are used !")
    window.add(jogwheel)
    window.set_title("Jogwheel")
    window.set_position(gtk.WIN_POS_CENTER)
    window.show_all()

    gtk.main()

if __name__ == "__main__":
    main()
здесь добавлены(изменены) строки:

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

        'counts': ( gobject.TYPE_INT, 'Counts init', 'Set the value of counts init',
                    0, 360, 40, gobject.PARAM_READWRITE|gobject.PARAM_CONSTRUCT),

    def __init__(self, size = 200, cpr = 40, counts = 33):

        self._counts = counts

                if name == "counts":
                    self._counts = value
в test.py:

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

import hal
import glib


debug = 1

class HandlerClass:
    def __init__(self, halcomp,builder,useropts):

        self.halcomp = halcomp
        self.builder = builder
                
        self.jw = self.builder.get_object('jogwheel1')
        self.jw.set_property('label', "test")
        self.jw.set_property('counts', int(359))

def get_handlers(halcomp,builder,useropts):
    return [HandlerClass(halcomp,builder,useropts)]
Выделение_052.jpg (5310 просмотров) <a class='original' href='./download/file.php?id=124230&mode=view' target=_blank>Загрузить оригинал (153.98 КБ)</a>
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение Serg »

nkp писал(а):если можно примерчик готовый :wik:
Примерчик пока не покажу - быстро не вспомнил где это было, а искать пока некогда. Помнится я для этого изучал класс IniFile, который сохраняет значения атрибутов в ini файле...
Это конечно в некотором роде хак, но зато без правки исходников.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
magrelo
Кандидат
Сообщения: 42
Зарегистрирован: 27 ноя 2015, 11:53
Репутация: 0
Настоящее имя: Andrey
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение magrelo »

А как с помощью GLADE ввести параметр с плавающей точкой? Добавляю элемент Edit и никаких готовых пинов в HAL не вижу. Надо событие обработчика на py добавлять или где? Что то пока не нашел вразумительного примера по работе с EditBox (((
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение nkp »

magrelo писал(а): Добавляю элемент Edit
tooledit ??
может это не "hal_элемент" ?
magrelo
Кандидат
Сообщения: 42
Зарегистрирован: 27 ноя 2015, 11:53
Репутация: 0
Настоящее имя: Andrey
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение magrelo »

Да. Я понял, нужно брать элементы которые в Glade находятся в закладке HAL Python. Там правда нет Edit. Только SpinButton имеет тип float и похож на то что надо. Пока не пойму как ему присвоить данные... Они вводятся в поле но не присваиваются пину. Я так понял надо определить функцию on_spinbutton-X_change_value в glade, а тело дописать в handlers.py
Но в документации есть примеры кнопок всяких, а как присвоить данные в spinbutton пока не найду (((

def on_spinbutton-P_change_value(self, hal_pin, data = ???):
...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение Serg »

magrelo писал(а):Пока не пойму как ему присвоить данные... Они вводятся в поле но не присваиваются пину.
Присваиваются, если после ввода нажать Enter. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
magrelo
Кандидат
Сообщения: 42
Зарегистрирован: 27 ноя 2015, 11:53
Репутация: 0
Настоящее имя: Andrey
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение magrelo »

При нажатии Enter введенное число становится 0.0
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение Serg »

magrelo писал(а):При нажатии Enter введенное число становится 0.0
Это происходит от нечтения документации. :)
Для SpinBox надо ещё создать объект, в котором будут хранится его параметры, такие как минимум, максимум, шаг и т.п. См. второе поле свойств самого SpinBox'а.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
magrelo
Кандидат
Сообщения: 42
Зарегистрирован: 27 ноя 2015, 11:53
Репутация: 0
Настоящее имя: Andrey
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение magrelo »

Да, я нашел ветку про Glade для новичков и в ней про второе поле выравнивания/adjustment без которого ни spinbox ни scale не работает. Но документацию честно пытался найти ))). Где оно описано?
В Меню->CNC->Documentation описываются общие принципы Glade.
Из Glade помошь отсылает к сайтам https://developer.gnome.org/gladeui/3.8/ а куда там дальше не понятно
В http://linuxcnc.org/docs/2.7/html/gui/g ... spinbutton тоже все очень кратко
Понять бы в какой документации копаться надо )))
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение Serg »

Доки надо читать про GTK+.
https://www.google.ru/search?q=gtk+widgets
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
magrelo
Кандидат
Сообщения: 42
Зарегистрирован: 27 ноя 2015, 11:53
Репутация: 0
Настоящее имя: Andrey
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение magrelo »

Описал функцию обработки нажатия кнопки Glade в файле mypanel.py и она работает
class HandlerClass:
def on_laser_start_pressed(self, widget, data = None):
b = os.system("halcmd getp bitslice.0.out-00")
print b
if b:
os.system("halcmd setp laserbms.temperature1_on false")
else:
os.system("halcmd setp laserbms.temperature1_on true")

bitslice.0.out-00 - побитовая расшифровка слова состояния лазера (00 - генерация)

print b пишет в терминале во время нажатия TRUE или FALSE в зависимости от состояния bitslice.0.out-00
однако if всегда срабатывает как b=0 (((
пробовал if b==True: тоже самое
пробовал if b==TRUE: ругается что не знает что такое TRUE (хотя print пишет :)
Python версия 2.7
Что может быть не так, ведь print верные значения пишет? Что то с типом данных может?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение nkp »

magrelo писал(а):однако if всегда срабатывает как b=0
в b у тебя будет возвращаемый статус самой функции os.system,
а планировалость наверно получить результат bitslice.0.out-00
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение Serg »

magrelo писал(а):b = os.system("halcmd getp bitslice.0.out-00")
magrelo писал(а):однако if всегда срабатывает как b=0 (((
Тут тоже придётся читать книжки, но уже про python. :)

P.S. Всё работает правильно. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
plotik
Мастер
Сообщения: 428
Зарегистрирован: 10 май 2012, 15:30
Репутация: 33
Настоящее имя: Евгений
Откуда: Rostov-on-Don
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение plotik »

Виджеты HAL отсутствуют в glade
Система

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

uname -a
Linux debian 4.9.0-5-rt-686-pae #1 SMP PREEMPT RT Debian 4.9.65-3+deb9u2 (2018-01-04) i686 GNU/Linux
При запуске

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

cnc@debian:~$ glade -v
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/gladevcp/__init__.py", line 1, in <module>
    from hal_pythonplugin import *
  File "/usr/lib/python2.7/dist-packages/gladevcp/hal_pythonplugin.py", line 1, in <module>
    from hal_widgets import HAL_HideTable
  File "/usr/lib/python2.7/dist-packages/gladevcp/hal_widgets.py", line 120, in <module>
    class HAL_HBox(gtk.HBox, _HalSensitiveBase):
  File "/usr/lib/python2.7/dist-packages/gi/__init__.py", line 64, in __getattr__
    raise AttributeError(_static_binding_error)
AttributeError: When using gi.repository you must not import static modules like "gobject". Please change all occurrences of "import gobject" to "from gi.repository import GObject". See: https://bugzilla.gnome.org/show_bug.cgi?id=709183
GladeUI-Message: 1 missing displayable value for GtkWidget::events
GladeUI-Message: No displayable values for property GtkMenu::anchor-hints
GladeUI-Message: 1 missing displayable value for GtkAboutDialog::license-type

(glade:12712): GladeUI-WARNING **: We could not find the symbol "h_al__hide_table_get_type"

(glade:12712): GladeUI-WARNING **: Could not get the type from "HAL_HideTable"
import gobject менял во всех файлах таже фигня.
"Ты не дрыгайся! Показывай свою гравицаппу. Если фирменная вещь — возьмём!"
"А этот паца́к все время говорит на языках, продолжения которых не знает!"
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение Serg »

LinuxCNC откуда?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
plotik
Мастер
Сообщения: 428
Зарегистрирован: 10 май 2012, 15:30
Репутация: 33
Настоящее имя: Евгений
Откуда: Rostov-on-Don
Контактная информация:

Re: Вопросы новичка по Glade + HAL

Сообщение plotik »

UAVpilot писал(а):LinuxCNC откуда?
отсюда http://www.linuxcnc.org/testing-stretch-rtpreempt/
"Ты не дрыгайся! Показывай свою гравицаппу. Если фирменная вещь — возьмём!"
"А этот паца́к все время говорит на языках, продолжения которых не знает!"
Ответить

Вернуться в «LinuxCNC»