QL.túra

Kulturális smörgåsbord Esterházytól Wass Albertig, a gumicsizmától az iPad-ig, a Teletabiktól Sexpírig, a makrofágtól a mikrokontrollerig, miazmás...

Címkék

2000 (20) 2001 (6) 2002 (16) 2003 (164) 2004 (61) 2005 (40) 2006 (31) 2007 (28) 2008 (33) 2009 (175) 2010 (188) 2011 (201) 2012 (86) 2013 (40) 2014 (36) 2015 (26) 2016 (10) adáshiba (91) android (1) animáció (93) cygwin (3) film (410) gezarol (13) hájtek (159) hangoskönyv (32) ipad (17) klip (12) könyv (191) linux (29) színház (169) vers (17) windows (37) zene (111) Címkefelhő

+jegyzések

Most ...

... múlok .osan

bmi_tiny.png


... hallgatom
Szabó Magda: Régimódi történet
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSqTmZEqlCRFgojyt52Q2n_qiMTyVlt-zJu-DpbNKVY6OQbBh4u


... olvasom
Alexander Steele (szerk.): Kezdő írók kézikönyve


... (Kik ezek? Kik ezek az embek? Kik ezek?)
profile for TrueY on Stack Exchange, a network of free, community-driven Q&A sites
free counters

[Hájtek] GTK+ 2.0

2010.08.17. 12:00 | TrueY | Szólj hozzá!

Címkék: linux 2010 hájtek

Pontokat szeretnék rajzolni C-ben Debian-on, Gnome alatt. Lehetőleg úgy, hogy Cygwin-en is fusson. Némi keresgélés után a GTK+-ra találtam (GTK+ 2.0 tutorial, Reference manual).

Először is fel kell tenni a GTK+ csomagokat debian alá:

apt-get install libgtk2.0-dev

A fordítási környezet beállításához meg kell találni, hogy a csomagot hogyan is hívják:

pkg-config --list-allAz eredményből azt találtam, hogy "gtk+-2.0". Ez alapján be lehet állítani, hogy mi kell a fordításhoz:

ARG=" $(pkg-config --libs --cflags gtk+-2.0)"
g++ $ARG src_file.c

Akkor hogyan is néz ki a kód? A GTK+ callback függvényekkel operál és nem message-ekkel (illetve mégis, csak jól eldugja). Hosszú necc túrás után ezt a kódot sikerült összeeszkábálnom. Ez egy kék pontot tesz ki, ami a fordítás és a ./a.out beírása után megtekinthető!:

#include <gtk/gtk.h>
#include <stdlib.h>

gboolean expose_event_callback(GtkWidget *widget,
    GdkEventExpose *event, gpointer data)
{
    GdkDrawable *drawable = widget->window;
    GdkGC *gc = widget->style->fg_gc[gtk_widget_get_state (widget)];
    GdkColor col;

    col.pixel = 0x0000FF; // 0xRRGGBB
    gdk_draw_point (drawable, gc, 10, 10);

    return TRUE;
} /* End of expose_event_callback() */

void displayUI()
{
    GtkWidget* mainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size(GTK_WINDOW(mainWindow),
        400, 400);
    gtk_window_set_title(GTK_WINDOW(mainWindow),
        "GTK Simple Example");
    gtk_window_set_position(GTK_WINDOW(mainWindow),
        GTK_WIN_POS_CENTER_ALWAYS);

    gtk_signal_connect(GTK_OBJECT(mainWindow), "destroy",
        G_CALLBACK(gtk_main_quit), NULL);
    gtk_signal_connect(GTK_OBJECT(mainWindow), "expose_event",
        G_CALLBACK(expose_event_callback), NULL);

    gtk_widget_show_all(mainWindow);
} /* End of displayUI() */

int main(int argc, char *argv[])
{
    gtk_init(&argc, &argv);
    displayUI();
    gtk_main();

    return EXIT_SUCCESS;
}

A kód nagy részét gugliztam (mondjuk nem volt könnyű megfelelő infót összegereblyézni), amin a lehető legkevesebbet változtattam! Ezt már le lehet fordítani és csinál is valamit.

Cygwin alá szedjük le a libgtk2.0-devel and libgtk2.0_0 csomagokat. Ezekben megvan a gtk.h. Kell még a pkg-config csomag is a fordítás megkönyítése miatt. No meg a gcc-t (és g++-t) se felejtsük le, ha még nincs felrakva. Kell az xinit az X felület miatt. A fordítás egy kicsit másként megy (vajh miért???):

ARG=" $(pkg-config --libs --cflags gtk+-2.0)"
g++ source_file.c $ARG

Érdekelne, hogy miért kell előre írni a forrást? Így megy, különben meg nem és egy halom hiányzó referenciára panaszkodott! Nem tettem fel egy csomó mindent hozzá (GNOME engine), így az indulás után nincs az ablaknak fejléce. Pedig debian alatt meg van. Mindegy... Első nekifutásra így is jó!

Tegyünk ki egy pontot minden nap!

A bejegyzés trackback címe:

https://qltura.blog.hu/api/trackback/id/tr212173166

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása