Plug-Socket funktioniert unter Win32 nicht

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
PyGtk-Novice
User
Beiträge: 4
Registriert: Dienstag 25. April 2006, 13:54

Freitag 14. Dezember 2007, 11:55

Hallo,

vielleicht weiß einer Rat.
Ich habe mir ein Fenster über Glade gezeichnet. In einem freien Container habe ich dann im Python-Skript ein gtk.Socket erzeugt.
Mit einem anderen Python-Skript erzeuge ich ein gtk.Plug und verwende die übergebene Socket-Id. (siehe Code unten)
Soweit funktioniert es mit einem aktuellen GTK (2.12) und entsprechendem PyGtk noch, aber nun kommt's. Erstens hat das Plug einen Rahmen (Dekoration) und wenn ich das Plug schließe sollte in der ersten Anwendung (die mit dem Socket) das Signal "plug-removed" ankommen und es sollte möglich sein erneut ein Plug mit dem Socket zu verbinden. All das funktioniert unter Linux gut, jedoch unter Win32 nicht.
Ist das ein bekannter Bug, oder ist unter Win32 etwas spezielles zu beachten?
Kann mir da jemand weiterhelfen?

Grüsse

Server:

Code: Alles auswählen

class Myserver:
  socket_id = None
  
  def __init__( self ): # Konstruktor
    xml = gtk.glade.XML( 'server.glade' )
    xml.get_widget(MAIN')
    socketArea = xml.get_widget('socket')
    self.image = xml.get_widget( 'plugged' )
    self.image.set_from_file( path+'unplugged-icon.bmp' )
    self.socket = gtk.Socket()
    socketArea.add( self.socket )
    self.socket_id = self.socket.get_id()
    self.socket.connect( 'plug-added', self.plugged )
    self.socket.connect( 'plug-removed', self.unplugged )
    xml.get_widget('MAIN').connect("destroy", lambda w: gtk.main_quit())
    xml.get_widget('MAIN').show_all()
    
  def plugged( self, widget ):
    self.image.set_from_file( path+'plugged-icon.bmp' )
    self.socket.show()
    
  def unplugged( self, widget ):
    self.image.set_from_file( path+'unplugged-icon.bmp' )
    self.socket.show()
    return True

  def GetSocketId( self ):
    return self.socket_id
Client:

Code: Alles auswählen

class Myplug:
  def __init__( self, socket_id ): # Konstruktor
    xml = gtk.glade.XML( 'client.glade', root='plug1' )
    xml.get_widget('plug1')
    xml.signal_autoconnect( self )
    self.plug = gtk.Plug( socket_id )
    self.plug.connect( 'embedded', self.embedded )
    self.plug.connect("destroy", lambda w: gtk.main_quit())
    self.plug.add( xml.get_widget( 'plug1' ) )
    self.plug.show_all()
    
  def embedded( self, widget ):
    print '...embedded...'

  def on_quit( self, widget ):
    self.plug.destroy()
Antworten