2011-09-19 4 views
0

Я использую envisage workbance, и я хочу получить сервис в Handler. В функции _tcp_send_changed как я могу получить услуги. В плагине есть self.application.get_service(....), но вот как я могу до них добраться?Получение услуг в обработчике


ОБНОВЛЕНО

Это мой взгляд

class MCLidarGUIView(HasTraits):   
    traits_ui_view = View( 
     VGroup( 
      HGroup( 
       Item('lidar_list', 
        show_label = False, 
        editor = TabularEditor( 
         show_titles = False, 
         selected = 'selected', 
         editable = False, 
         multi_select = True, 
         adapter = LidarAdapter()      
        ), 
       ), 
      ), 
      Item( 
       "lidars_command" 
      ), 
      HGroup( 
        Item('handler.tcp_send', 
         show_label = False, 
         editor = ButtonEditor(label = "TCP:Send")       
       ), 
      ) 
     ), 

     id = 'forwind.lidarapi.giuview', 
     resizable = True, 
     handler = MCLidarActions() 

    )  

    lidar_list = [LidarObject(lidar_name = "No Connected Lidar")] 
    lidars_command = '' 

и это мой обработчик:

class MCLidarActions(Handler): 

    tcp_send = Event 

    def object__updated_changed(self, info): 
     print info; 
     pass; 

    def _tcp_send_changed(self): 
     print(" info") 

ответ

1

класс MyHandler (Handler):

def __init__(self, application, **traits): 
    Handler.__init__(self, **traits) 
    self.application = application 

...

+0

Спасибо за помощь. Это то, что я искал. –

1

Я просто предполагаю, но из documentation швы как вы должны сначала зарегистрировать услугу. Возможно, покажите нам немного больше кода, чтобы мы могли лучше помочь.

+0

Да, это правда, есть документация, но вы можете получить доступ к приложению только тогда, когда класс наследуется от класса Plugin , –

+0

Разве это не часть вашего обработчика? – Glaslos

+0

Да, это часть моего приложения, но другой класс. –

Смежные вопросы