Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Кнопка с иконкой (Vala)  (Прочитано 1124 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн S9

  • Автор темы
  • Участник
  • *
  • Сообщений: 163
  • Волшебник
    • Просмотр профиля
Кнопка с иконкой (Vala)
« : 20 Января 2015, 16:48:28 »
Всем добра! Решил сделать кнопку с иконкой. Точнее хочу сделать кнопку, при нажатии на которую пересчитываются и обновляются некоторые значения. Решение вижу в создании обычной кнопки, на которой иконка "повтор" от плеера, но код не компилится, ругается на
GUI.vala.c:586:13: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  _tmp100_ = (GtkButton*) gtk_button_new_from_icon_name ("format-text-bold-symbolic", GTK_ICON_SIZE_BUTTON);
             ^
/tmp/ccSQIqCf.o: In function `gui_layout_widgets_construct_create_gui':
GUI.vala.c:(.text+0x1d28): undefined reference to `gtk_button_new_from_icon_name'
collect2: error: ld returned 1 exit status
error: cc exited with status 256
Compilation failed: 1 error(s), 0 warning(s)
Compile failed

Код: (vala) [Выделить]
var update_data_button = new Gtk.Button.from_icon_name("media-playlist-repeat", Gtk.IconSize.BUTTON);
update_data_button.halign = Gtk.Align.END;
grid.attach(update_data_button, 2, 8, 1, 1);
кнопка без иконки отображается нормально

В чём может быть моя проблема, или что можете мне посоветовать?
Burning on the flame
Played the waiting game

Оффлайн kupamaan

  • Любитель
  • *
  • Сообщений: 52
    • Просмотр профиля
Re: Кнопка с иконкой (Vala)
« Ответ #1 : 20 Января 2015, 17:47:23 »
Попробуйте сначала создать кнопку а потом присвоить ей иконку.
Vala не знаю, но думаю, что нужо примерно так.
Код: (vala) [Выделить]
var button = new Gtk.Button();
button.icon = new Gdk.Pixbuf.FromFile("file_name.png");
button.icon или button.image ?
« Последнее редактирование: 20 Января 2015, 17:49:25 от kupamaan »

Оффлайн S9

  • Автор темы
  • Участник
  • *
  • Сообщений: 163
  • Волшебник
    • Просмотр профиля
Re: Кнопка с иконкой (Vala)
« Ответ #2 : 21 Января 2015, 09:41:26 »
kupamaan, спасибо, вы поддтолкнули меня на идею :)
Вообщем, проблема решена :)
Вот решение (если вдруг кому-нибудь понадобится)
Код: (vala) [Выделить]
var button = new Gtk.Button();
Gtk.Image image = new Gtk.Image.from_icon_name("reload", Gtk.IconSize.BUTTON);
button.set_image(image);
button.set_image_position(Gtk.PositionType.LEFT);
button.halign = Gtk.Align.END;
button.clicked.connect(() => { /** обработчик нажатия кнопки */ });
grid.attach(update_data_button, 2, 8, 1, 1);
какие есть иконки, смотрим тут /usr/share/icons/название_текущей_темы/размер(я брал 16x16)/actions
Burning on the flame
Played the waiting game

Оффлайн kupamaan

  • Любитель
  • *
  • Сообщений: 52
    • Просмотр профиля
Re: Кнопка с иконкой (Vala)
« Ответ #3 : 21 Января 2015, 13:57:30 »
Цитировать
какие есть иконки, смотрим тут /usr/share/icons/название_текущей_темы/размер(я брал 16x16)/actions

S9, иконки можно из стёка брать.
Как то так:
Код: (vala) [Выделить]
var button = new Gtk.Button.from_stock(Stock.add);
И будет иконка из текущей темы с именем 'Добавить' и с картинкой из темы.

Оффлайн S9

  • Автор темы
  • Участник
  • *
  • Сообщений: 163
  • Волшебник
    • Просмотр профиля
Re: Кнопка с иконкой (Vala)
« Ответ #4 : 22 Января 2015, 09:23:34 »
Цитировать
какие есть иконки, смотрим тут /usr/share/icons/название_текущей_темы/размер(я брал 16x16)/actions

S9, иконки можно из стёка брать.
Как то так:
Код: (vala) [Выделить]
var button = new Gtk.Button.from_stock(Stock.add);
И будет иконка из текущей темы с именем 'Добавить' и с картинкой из темы.

или лыжи не едут, или я тугой, но что-то не пойму.
в ValaDoc по поводу Gtk.Stock есть куча строк-констант, и запись вида
Код: (vala) [Выделить]
button = new Gtk.Button.from_stock(Gtk.Stock.REFRESH);приводит не к появлению иконки на кнопке, а появлении надписи.
Но думаю, что дело в методе add(). Как правильно его использовать? (не обязательно на примере Vala)

Пользователь решил продолжить мысль 22 Января 2015, 10:57:23:
как напрямую создать кнопку с иконкой так и не понял, хз что тут написать
Код: (vala) [Выделить]
var button = new Gtk.Button.from_stock(????)и сделал так
Код: (vala) [Выделить]
var button = new Gtk.Button();
Gtk.Image image = new Gtk.Image.from_stock(Gtk.Stock.REFRESH, Gtk.IconSize.BUTTON);
button.set_image(image);
button.set_image_position(Gtk.PositionType.LEFT);
button.halign = Gtk.Align.END;
button.clicked.connect(() =>
{
  /** бла-бла-бла */
});
« Последнее редактирование: 22 Января 2015, 10:57:23 от S9 »
Burning on the flame
Played the waiting game

Оффлайн kupamaan

  • Любитель
  • *
  • Сообщений: 52
    • Просмотр профиля
Re: Кнопка с иконкой (Vala)
« Ответ #5 : 22 Января 2015, 15:03:27 »
Вот этот код рабочий, опробован на моём компе.
Код: (vala) [Выделить]
using Gtk;


int main (string[] args) {
    Gtk.init (ref args);

    var window = new Window ();
    window.title = "First GTK+ Program";
    window.border_width = 10;
    window.window_position = WindowPosition.CENTER;
    window.set_default_size (350, 70);
    window.destroy.connect (Gtk.main_quit);

    var button = new Button.from_icon_name ("calculator",IconSize.BUTTON);
   
    button.clicked.connect (() => {
        button.label = "Thank you";
    });

    window.add (button);
    window.show_all ();

    Gtk.main ();
    return 0;
}

 

Страница сгенерирована за 0.017 секунд. Запросов: 22.