Форум — Development Есть ли русская документация или/и книги по GTK??? 0 0 Есть ли русская документация или/и книги по GTK??? Ссылка
У меня дома лежит книжка, что-то типа Разработка приложений на GTK с компактом. anonymous (09.08.04 14:22:58 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 09.08.04 14:22:58 MSK Подозреваю что книжка по GTK+-1, (что-то типа программирование переностимых интерфейсов на GTK+ ) интересно было бы по GTK+-2 Serik ★ (09.08.04 15:14:14 MSK) Показать ответ Ссылка
Ответ на: комментарий от Serik 09.08.04 15:14:14 MSK Да не так уж много изменилось с тех пор. GtkTreeView можно и без книжки освоить, а GObject такой же :) anonymous (09.08.04 17:23:27 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 09.08.04 17:23:27 MSK GtkTreeView - с этим виджетом все более менее ясно. А поменялось в принципе вроде и не много, но к примеру с сигналами, с писаниной своих виджетов - кое что изменилось. alphex_kaanoken ★★★ (09.08.04 18:00:52 MSK) Показать ответ Ссылка
Ответ на: комментарий от alphex_kaanoken 09.08.04 18:00:52 MSK Привет. Раз уж завели разговор про Gtk+, не покажет ли мне кто-нибудь приложение на чистом gdk (ну или с imlib), чтоб там прозрачность и все такое. Только не gkrellm. А то я вот чего написал (поковырявшись в qiv), но оно с memory fault вылетает в gtk_init_<чего-то там>. Может кто-нибудь подсобит. --- cpumeter.h #ifndef __CPUMETER_H__ #define __CPUMETER_H__ #include <gdk/gdk.h> #include <gdk/gdkx.h> #include <gtk/gtkwidget.h> #include <gdk_imlib.h> #define TEXT_FONT "-misc-fixed-medium-r-semicondensed--12-90-100-100-c-60- iso8859-1" struct mon_win { GdkWindow *win; GdkColor bgcolor; GdkColor grcolor; GdkColor text_bg; GdkFont *text_font; gint pos_x; gint pos_y; gint heigth; gint width; }; __BEGIN_DECLS gboolean color_alloc(const char *, GdkColor *); gint setup_win(struct mon_win *); void usage(void); __END_DECLS #endif /* __CPUMETER_H__ */ ---------------------------------------------------- --- cpumeter.c --- ... #include <gdk/gdk.h> #include <gdk/gdkx.h> #include <gtk/gtkwidget.h> #include <gdk_imlib.h> #include "cpumeter.h" ... /* global variables */ struct mon_win cpu_mon; GMainLoop *main_loop; GdkColormap *cmap; /* command line options */ char backgrcolor[8] = "#cccccc"; char graphcolor[8] = "#00ff00"; int istransp = 1; int refresh = 4; int use_nice = 1; int ngrid = 5; int main(int argc, char *argv[]) { int ch; memset(&cpu_mon, 0, sizeof (cpu_mon)); while ((ch = getopt(argc, argv, "b:g:G:h:nr:tw:x:y:")) != -1) { switch (ch) { .... } argc -= optind; argv += optind; gdk_init(&argc, &argv); gdk_imlib_init(); if (cpu_mon.heigth == 0) cpu_mon.heigth = 64; if (cpu_mon.width == 0) cpu_mon.width = 64; main_loop = g_main_new(TRUE); cmap = gdk_colormap_get_system(); cpu_mon.text_font = gdk_font_load(TEXT_FONT); cpu_mon.pos_x = 0; cpu_mon.pos_y = gdk_screen_height() - cpu_mon.heigth; gtk_widget_push_visual(gdk_imlib_get_visual()); gtk_widget_push_colormap(gdk_imlib_get_colormap()); color_alloc(backgrcolor, &cpu_mon.bgcolor); color_alloc(graphcolor, &cpu_mon.grcolor); setup_win(&cpu_mon); g_main_run(main_loop); return 0; } gboolean color_alloc(const char *name, GdkColor *color) { gboolean result; result = gdk_color_parse(name, color); if (!result) { fprintf(stderr, "qiv: can't parse color '%s'\n", name); name = "black"; } result = gdk_colormap_alloc_color(cmap, color, FALSE, TRUE); if (!result) { fprintf(stderr, "qiv: can't alloc color '%s'\n", name); color->pixel = 0; } return result; } gint setup_win(struct mon_win *m) { GdkWindowAttr attr; attr.window_type=GDK_WINDOW_TOPLEVEL; attr.wclass=GDK_INPUT_OUTPUT; attr.event_mask=GDK_ALL_EVENTS_MASK; attr.x = m->pos_x; attr.y = m->pos_y; attr.width = m->width; attr.height = m->heigth; m->win = gdk_window_new(NULL, &attr, GDK_WA_X|GDK_WA_Y); gdk_window_set_hints(m->win,m->pos_x, m->pos_y, m->width, m->heigth, m->width, m->heigth, GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE); gdk_window_resize(m->win, m->width, m->heigth); gdk_window_show(m->win); return (0); } ... ------------------------------------ Собираю примерно так (без единого варнинга): .... LIBS= `imlib-config --libs-gdk` CFLAGS+=-Wall -Werror -g CFLAGS+=`imlib-config --cflags-gdk` .... В итоге: % ./cpumeter Memory fault (core dumped) % gdb -c cpumeter.core cpumeter ... #0 0x5ccd2af in gdk_init_check () (gdb) where #0 0x5ccd2af in gdk_init_check () #1 0x5ccd4c1 in gdk_init () #2 0x1c001079 in main (argc=0, argv=0xcfbf02a0) at cpumeter.c:82 #3 0x1c000dc1 in ___start () #4 0x1c000d37 in _start () #5 0xcfbf03e8 in ?? () Кто что скажет? signal11 ★ (09.08.04 23:59:38 MSK) Показать ответ Ссылка
Ответ на: комментарий от signal11 09.08.04 23:59:38 MSK gdk_init(&argc, &argv); - на это обрати свое внимание! alphex_kaanoken ★★★ (10.08.04 15:09:14 MSK) Показать ответ Ссылка
Ответ на: комментарий от alphex_kaanoken 10.08.04 15:09:14 MSK > gdk_init(&argc, &argv); - на это обрати свое внимание! Здесь все нормально. Ошибка была по неосторожности -- не надо делать argv += optind, argc += optind. signal11 ★ (10.08.04 17:22:02 MSK) Показать ответ Ссылка
Ответ на: комментарий от signal11 10.08.04 17:22:02 MSK > Ошибка была по неосторожности Это я только что заметил. signal11 ★ (10.08.04 17:22:48 MSK) Ссылка