GtkListbox не реализован в текущем пакете Julia Gtk.jl? - PullRequest
2 голосов
/ 29 сентября 2019

Я использую Glade для добавления списка в окно, а затем загружаю графический интерфейс в Julia с помощью GtkBuilder из Gtk.jl.При загрузке списка, Юлия считает его виджетом GtkContainer, а не списком (кажется, что список не существует в исходном коде пакета Julia, за исключением одного или двух комментариев).Я искал исходный код Gtk.jl и просто не могу ничего найти (или не понимаю достаточно того, на что смотрю).

Несколько сигналов Listbox работают, но самый важный ("строка активирована") не.Мне действительно нужен этот сигнал для излучения ... Это не реализовано?Есть ли ошибка?Я делаю что-то неправильно?Мне просто нужно использовать более сложный GtkTreeView?

Закомментированные строки кода julia - это сигналы, которые не срабатывают (меня это тоже не волнует).Согласно документации Gtk, сигнал «активировать» предназначен для GtkListboxRow, и это «активируемый строкой» сигнал, который должен использовать пользователь, но я не могу заставить его излучать ...

"списокExample.glade ":

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
  <requires lib="gtk+" version="3.20"/>
  <object class="GtkWindow" id="win">
    <property name="can_focus">False</property>
    <child>
      <placeholder/>
    </child>
    <child>
      <object class="GtkListBox" id="lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <child>
          <object class="GtkListBoxRow">
            <property name="width_request">100</property>
            <property name="height_request">80</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <child>
              <object class="GtkLabel">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="label" translatable="yes">label1</property>
              </object>
            </child>
          </object>
        </child>
        <child>
          <object class="GtkListBoxRow">
            <property name="width_request">100</property>
            <property name="height_request">80</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <child>
              <object class="GtkLabel">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="label" translatable="yes">label2</property>
              </object>
            </child>
          </object>
        </child>
        <child>
          <object class="GtkListBoxRow">
            <property name="width_request">100</property>
            <property name="height_request">80</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <child>
              <object class="GtkLabel">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="label" translatable="yes">label3</property>
              </object>
            </child>
          </object>
        </child>
      </object>
    </child>
  </object>
</interface>
using Gtk

app = GtkBuilder(filename = "listbox Example.glade")

win = app["win"]

lb = app["lb"]

showall(win)

# id1 = signal_connect(lb, "activate-cursor-row") do widget
#     println("activate-cursor-row")
# end

# id2 = signal_connect(lb, "move-cursor") do widget
#     println("move-cursor")
# end

id3 = signal_connect(lb, "row-activated") do widget
    println("row-activated")
end

id4 = signal_connect(lb, "row-selected") do widget
    println("row-selected")
end

id5 = signal_connect(lb, "select-all") do widget
    println("select-all")
end

id6 = signal_connect(lb, "selected-rows-changed") do widget
    println("selected-rows-change")
end

# id7 = signal_connect(lb, "toggle-cursor-row") do widget
#     println("toggle-cursor-row")
# end

id8 = signal_connect(lb, "unselect-all") do widget
    println("unselect-all")
end

# id9 = signal_connect(lb, "activate") do widget
#     println("activate")
# end
julia> typeof(lb)
Gtk.GtkContainerLeaf

1 Ответ

1 голос
/ 29 сентября 2019

Каждый сигнал имеет свой набор аргументов.Например, у «selected-row-Changed» есть только виджет, а у «Activated row» есть виджет и строка.

https://developer.gnome.org/gtk3/stable/GtkListBox.html#GtkListBox-selected-rows-changed https://developer.gnome.org/gtk3/stable/GtkListBox.html#GtkListBox-row-activated

Вы должны изменить:

id3 = signal_connect(lb, "row-activated") do widget
    println("row-activated")
end

до:

id3 = signal_connect(lb, "row-activated") do widget, row
    println("row-activated")
end
...