2016-05-22 16 views
1

Пытаюсь с:Как я могу получить значок или заголовок задачи Gdk.Window?

//valac *.gs --pkg gtk+-3.0 

init 
    Gtk.init(ref args) 
    var ventana= new win() 
    ventana.inicio() 

    Gtk.main() 


class win:Gtk.Window 


    def inicio() 

     var button= new Gtk.Button() 
     button.clicked.connect(resizer) 
     this.add(button) 
     this.show_all() 
    def resizer() 
     var a=Gdk.Screen.get_default().get_window_stack() 
     a.foreach(allwin) 

    def allwin (w:Gdk.Window) 
     var a=w.get_type_hint() 
     if a!= Gdk.WindowTypeHint.DESKTOP 

      w.resize(200,200) 
      var iconpix= w.get_icon() //don't exist // [changed] 
      var title= w.get_title() //don't exist // [changed] 
      print "window" 

Но эти методы не существует. Зачем? Я не знаю. Любые предложения? Я пробовал с Wnck, но я тоже получаю ошибки.

+0

Вы используете эти методы как члены 'TypeHint', который не имеет функций. 'Gdk.Window', вероятно, не то, что вы хотите, поскольку это только служит для рисования на' Gtk.Window', который обрабатывает сам значок и заголовок. Вы действительно хотите спросить свою основную «Gtk.Window» за ее значок и заголовок. – oldtechaa

+0

Этот вопрос может быть проблемой [XY] (http://meta.stackexchange.com/a/66378/212851). Какова фактическая проблема, которую вы пытаетесь решить? –

+0

К сожалению, это моя ошибка. Но, во всяком случае, я не нахожу способы получить значки или название. – txasatonga

ответ

1

Я думаю, что с Gdk невозможно. Я судимый (на больше времени) с библиотекой Wnck придающего C компилятором это «-DWNCK_I_KNOW_THIS_IS_UNSTABLE» и работает, но с предупреждением: Unhandled типа действия _OB_WM_ACTION_UNDECORATE

//valac *.gs --pkg gtk+-3.0 --pkg libwnck-3.0 -X '-DWNCK_I_KNOW_THIS_IS_UNSTABLE' 

init 
    Gtk.init(ref args) 
    var ventana= new win() 
    ventana.inicio() 
    ventana.resizer() 
    Gtk.main() 


class win:Gtk.Window 

    won:weak GLib.List of Wnck.Window 

    def inicio() 

     var button= new Gtk.Button() 
     button.clicked.connect(resizer) 
     this.add(button) 
     this.show_all() 

    def resizer() 
     won= Wnck.Screen.get_default().get_windows() 
     won.foreach(allwin) 

    def allwin(w:Wnck.Window) 
     if w.is_skip_tasklist() or w.is_skip_pager() 
      pass 
     else 
      print w.get_name() 
1

Вы исправите WNCK это путь , Gdk может видеть только окна, созданные вашей программой. Wnck предоставляет доступ ко всем окнам, управляемым диспетчером окон. Ваш подход должен работать, поскольку я сделал то же самое с dock, который я написал для Puppy Linux в Genie.