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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Помогите с GTK+  (Прочитано 1754 раз)

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

Оффлайн Riateche

  • Автор темы
  • Активист
  • *
  • Сообщений: 279
    • Просмотр профиля
    • Idzaaus
Помогите с GTK+
« : 23 Июня 2009, 03:22:01 »
Пытаюсь написать прогу на Си с использованием GTK+. На то, чтобы понять, как создать иконку в трее, ушло два часа. Итог:

#include <gtk/gtk.h>

int main(int argc, char **argv) {
   gtk_init(&argc,&argv);
   GtkStatusIcon *icon = gtk_status_icon_new_from_file ("icon.png");
   gtk_status_icon_set_visible(icon, 1);
   gtk_status_icon_set_tooltip(icon, "Icon");
   gtk_main();
   while(1);   
}

Слишком долго разбираться самостоятельно, нормальной инфы не так много. Поэтому прошу искушенных товарищей помочь:

- повесить выполнение моей функции на щелчок левой кнопкой по иконке;
- по щелчку правой кнопкой должно открываться меню с тремя элементами, при выборе каждого из них должна вызываться моя функция.

Желательно работающий код или ссылку на работающий пример. Нужные функции я и сам найду, проблема - скомпоновать их так, чтобы всё работало.

Оффлайн Shecspi

  • Активист
  • *
  • Сообщений: 386
  • Launch Hip-Hop
    • Просмотр профиля
    • PHP-GTK по-русски
Re: Помогите с GTK+
« Ответ #1 : 23 Июня 2009, 07:32:10 »
Я с сишным Gtk не знаком, поэтому обьясню на словах. При щелчке правой левой кнопкой мыши издаётся сигнал 'activate'. При щелчке правой - 'popup-menu'. При этом вызываете функцию, в которой создаёте GtkMenu, а к нему добавляете пункты - GtkMenuItem. Чтобы сделать меню контекстным вызовите функцию gtk_menu_popup().
« Последнее редактирование: 23 Июня 2009, 07:34:26 от Shecspi »

Оффлайн Sova777

  • Участник
  • *
  • Сообщений: 208
    • Просмотр профиля
    • Несколько слов о NetBeans C/C++ Pack'е
Re: Помогите с GTK+
« Ответ #2 : 23 Июня 2009, 11:03:10 »
Глянь туда: http://www.codeproject.com/KB/cross-platform/GTKTrayIcon.aspx
Вроде то что нужно, но проверить не могу (точнее лениво искать машину со свежим Linuxом или OpenSolaris'ом). На моей рабочей машине SLES 10 ( GTK+ 2.8 ), а твой код на API GTK+ 2.10 и новее.
Пользователь OpenSolaris 2008.11, Ubuntu 8.10, Windows XP. Mac OS X не нравится, стараюсь не использовать.

Оффлайн Riateche

  • Автор темы
  • Активист
  • *
  • Сообщений: 279
    • Просмотр профиля
    • Idzaaus
Re: Помогите с GTK+
« Ответ #3 : 23 Июня 2009, 15:39:38 »
Sova777
спасибо большое за ссылку, всё получилось

(Нажмите, чтобы показать/скрыть)

Оффлайн БТР

  • Заслуженный пользователь
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6293
    • Просмотр профиля
Re: Помогите с GTK+
« Ответ #4 : 23 Июня 2009, 15:44:29 »
Что хоть за прога-то, если не секрет?

Оффлайн Sova777

  • Участник
  • *
  • Сообщений: 208
    • Просмотр профиля
    • Несколько слов о NetBeans C/C++ Pack'е
Re: Помогите с GTK+
« Ответ #5 : 23 Июня 2009, 20:20:12 »
Дома проверил, работает в OpenSolaris. Но есть 2 замечания:
1) while(1);   не нужно.
2) exit(0) лучше заменить на gtk_main_quit();
Пользователь OpenSolaris 2008.11, Ubuntu 8.10, Windows XP. Mac OS X не нравится, стараюсь не использовать.

Оффлайн Riateche

  • Автор темы
  • Активист
  • *
  • Сообщений: 279
    • Просмотр профиля
    • Idzaaus
Re: Помогите с GTK+
« Ответ #6 : 23 Июня 2009, 22:08:13 »
Ня, хорошо. Подскажите еще, как сделать всплывающее у иконки сообщение? Копаю в сторону libnotify, но пока не работает.

Оффлайн Shecspi

  • Активист
  • *
  • Сообщений: 386
  • Launch Hip-Hop
    • Просмотр профиля
    • PHP-GTK по-русски
Re: Помогите с GTK+
« Ответ #7 : 23 Июня 2009, 22:17:17 »

Оффлайн Riateche

  • Автор темы
  • Активист
  • *
  • Сообщений: 279
    • Просмотр профиля
    • Idzaaus
Re: Помогите с GTK+
« Ответ #8 : 24 Июня 2009, 01:32:26 »
Нет, не всплывающую подсказку, а именно сообщение, с заголовком, текстом и картинкой, как при приеме нового сообщения, например.

БТР
нет, не секрет
« Последнее редактирование: 24 Июня 2009, 01:35:01 от Riateche »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Помогите с GTK+
« Ответ #9 : 24 Июня 2009, 09:29:23 »
Для автора темы.
Попробуйте Glade. Многие проблемы исчезнут.

Оффлайн Riateche

  • Автор темы
  • Активист
  • *
  • Сообщений: 279
    • Просмотр профиля
    • Idzaaus
Re: Помогите с GTK+
« Ответ #10 : 25 Июня 2009, 02:00:22 »
Не хочу Glade. Кроме того, что уже написано, и всплывающего сообщения, ничего нужно не будет.

 

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