GTK+ в примерах (создание главного меню приложения)

Модератор: Модераторы разделов

Аватара пользователя
Zeus
Сообщения: 694

Re: GTK+ в примерах

Сообщение Zeus »

Хгм.... значит у функций отклика на сигналы ещё и формат разный... :mellow:
Спасибо, за то что носом в самое, так сказать... :blush:

А в функции отклика на сигнал нельзя выбрасывать другой сигнал?
А то у меня теперь падает с сегментешином на генерации сигнала

Код: Выделить всё

gboolean
OscWindow::_scaleEvent_ (GtkAdjiustment* _adj)
{
 ::g_signal_emit_by_name (G_OBJECT(drawing_area), "expose_event");
 return true;
}


А если написать так:

Код: Выделить всё

gboolean
OscWindow::_scaleEvent_ (GtkAdjiustment* _adj)
{
 _clearArea_ (drawing_area);
 _drawGrid_ (drawing_area);
 return true;
}

То работает. И даже рисует.
Спасибо сказали:
CPU
Сообщения: 41
ОС: Fedora Core 6 x86_64

Re: GTK+ в примерах

Сообщение CPU »

Zeus писал(а):
10.07.2007 14:48

Код: Выделить всё

gboolean
OscWindow::_scaleEvent_ (GtkAdjiustment* _adj)
{
 ::g_signal_emit_by_name (G_OBJECT(drawing_area), "expose_event");
 return true;
}


Напиши так:

Код: Выделить всё

gboolean
OscWindow::_scaleEvent_ (GtkAdjiustment* _adj)
{
 gboolean result;
 ::g_signal_emit_by_name (G_OBJECT(drawing_area), "expose_event", NULL, &result);
 return result;
}


и будет работать.
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: GTK+ в примерах

Сообщение Zeus »

CPU писал(а):
11.07.2007 00:22
Zeus писал(а):
10.07.2007 14:48

Код: Выделить всё

gboolean
OscWindow::_scaleEvent_ (GtkAdjiustment* _adj)
{
 ::g_signal_emit_by_name (G_OBJECT(drawing_area), "expose_event");
 return true;
}


Напиши так:

Код: Выделить всё

gboolean
OscWindow::_scaleEvent_ (GtkAdjiustment* _adj)
{
 gboolean result;
 ::g_signal_emit_by_name (G_OBJECT(drawing_area), "expose_event", NULL, &result);
 return result;
}


и будет работать.

Спасибо. Попробую.
Дать сигнал перерисоваться логичнее, чем рисовать "самому".

Я сегодня чуть не поседел, нафиг, пока с этим GtkScale разбирался:
в примере, который идёт с gtk у scale значение изменяется скачками (1-2-3-4-5), даже если тащить его мышью, а у меня скачками только с клавиатуры, а мышью - плавно. Я уж даже adjustment взял из примера (мало ли там чего не понимаю с этими лимитами, да page_size'ами). Всё-равно скачками не получается.
И только незамыленный взгляд коллеги увидел разницу: у меня scale'у было запрещено показывать значение (цифирки), а в примере - разрешено.
Убрал запрет - заработало.
Это нормальное поведение gtk или я опять что-то не так делаю?
Спасибо сказали:
d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Re: GTK+ в примерах

Сообщение d_n_k »

вполне нормально :)

совет: не пользуй функции типа gtk_<widget_name>_new, потому что при этому создается виджет со свойствами проиниализированными по умолчанию, а они не всегда полезны.

удобнее использовать функцию gtk_object_new или g_object_new (если хочется ооп от glib :) )

пример для твоего "главного окна"

Код: Выделить всё

window = GTK_WINDOW( gtk_object_new (GTK_TYPE_WINDOW,
"title", "Осциллограф СКЦ",
"default-width", _width_,
"default-height", _height_,
"resizable", false,
"border-width", 1,
NULL
));

данная операция позволяет проинициализировать сразу все свойства, а так же чутка увеличивает скорость инициализации объектов.
все сказанное есть имхо...
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: GTK+ в примерах

Сообщение Zeus »

d_n_k писал(а):
11.07.2007 10:46
вполне нормально :)

Но не вполне очевидно.
Главное - непонятно зачем такая увязка сделана...

d_n_k писал(а):
11.07.2007 10:46
совет: не пользуй функции типа gtk_<widget_name>_new, потому что при этому создается виджет со свойствами проиниализированными по умолчанию, а они не всегда полезны.

удобнее использовать функцию gtk_object_new или g_object_new (если хочется ооп от glib :) )

пример для твоего "главного окна"

Код: Выделить всё

window = GTK_WINDOW( gtk_object_new (GTK_TYPE_WINDOW,
"title", "Осциллограф СКЦ",
"default-width", _width_,
"default-height", _height_,
"resizable", false,
"border-width", 1,
NULL
));

данная операция позволяет проинициализировать сразу все свойства, а так же чутка увеличивает скорость инициализации объектов.

Спасибо.
Вот "задышит" программа - буду оптимизировать, приводить к божескому виду.
Спасибо сказали:
CPU
Сообщения: 41
ОС: Fedora Core 6 x86_64

Re: GTK+ в примерах

Сообщение CPU »

Zeus писал(а):
11.07.2007 01:20
Спасибо. Попробую.
Дать сигнал перерисоваться логичнее, чем рисовать "самому".


Отпиши, получится или нет. Я практически методом тыка нашел это решение :)

[offtop]
хех.. интересная у людей работа.. :(
[offtop]
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: GTK+ в примерах

Сообщение Zeus »

CPU писал(а):
11.07.2007 21:05
Zeus писал(а):
11.07.2007 01:20
Спасибо. Попробую.
Дать сигнал перерисоваться логичнее, чем рисовать "самому".


Отпиши, получится или нет. Я практически методом тыка нашел это решение :)

Да, получилось. Спасибо.
А не тыком в Gtk можно?
Ну, есть какое-нибудь полноценное руководство программиста? Не куцые штатные доки, а может чей-то посторонний труд?

CPU писал(а):
11.07.2007 21:05
[offtop]
хех.. интересная у людей работа.. :(
[offtop]

Разная. Бывает занудство сплошное - конфиги сидеть править.
Но и разнообразие есть: часто приходится разбираться с чем-то новым.
Программёж разнообразный: от драйверов и железа до, вот, графики, CORBA, сети, логика управления объектами (АСУ ТП).
Графика, правда, первый раз - до этого под линухом графику не программил.
Спасибо сказали:
d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Re: GTK+ в примерах

Сообщение d_n_k »

самое полное руководство - это код проги
еще можно/нужно читать списки рассылки по gtk

иногда в сети появляются туториалы
все сказанное есть имхо...
Спасибо сказали: