E wyk11 id 827343 Nieznany

background image

GTK - tworzenie okienek w C

Budowanie wielomodułowych programów

Przykład u˙zycia kontrolek

Kurs C z elementami C++

Marek Piotrów - Wykład 11

GTK - graficzny interfejs u˙zytkownika w C oraz

skrypty dla make

18 grudnia 2007

Uwaga: w załacznikach do tego pliku znajduj ˛

a si ˛e teksty

prezentowanych przykładów (do łatwiejszego kopiowania).

Marek Piotrów - Wykład 11

Kurs C z elementami C++

background image

GTK - tworzenie okienek w C

Budowanie wielomodułowych programów

Przykład u˙zycia kontrolek

Bibioteka GTK+

GTK+ jest darmow ˛

a bibliotek ˛

a przeznaczon ˛

a do tworzenia

graficznego interfejsu u˙zytkownika.

Została napisana w C na potrzeby programu GIMP (st ˛

ad

nazwa Gimp ToolKid), ale ma struktur ˛e obiektow ˛

a.

Mozna z niej korzysta´c w wielu j ˛ezykach programowania
(C, C++, C#, Ada, Perl, itd.).

Programy napisane z u˙zyciem tej biblioteki s ˛

a przeno´sne

pomiedzy ró˙znymi systemami operacyjnymi.

GTK+ korzysta z bibliotek: GLib, Pango i ATK (trzeba je
zainstalowa´c, aby mo˙zna było kompilowa´c programy
u˙zywaj ˛

ace GTK).

Marek Piotrów - Wykład 11

Kurs C z elementami C++

background image

GTK - tworzenie okienek w C

Budowanie wielomodułowych programów

Przykład u˙zycia kontrolek

GTK-test: obsługa zdarze ´n

#include <gtk/gtk.h>

static void test_nacisniecia( GtkWidget *widget, gpointer

data )

{

g_print ("GTK-test - %s zastal nacisniety\n", (gchar *) data);

}

static gboolean wyjscie_sys( GtkWidget *widget,

GdkEvent

*event,

gpointer

data )

{

gtk_main_quit ();

return FALSE;

}

static void wyjscie_prz( GtkWidget *widget, gpointer

data )

{

gtk_main_quit ();

return ;

}

static void wprowadzony_tekst( GtkWidget *widget, GtkWidget *text )
{

const gchar *wejscie;
wejscie = gtk_entry_get_text (GTK_ENTRY (text));

g_print ("GTK-test wprowadzono: %s\n", wejscie);

}

Marek Piotrów - Wykład 11

Kurs C z elementami C++

background image

GTK - tworzenie okienek w C

Budowanie wielomodułowych programów

Przykład u˙zycia kontrolek

GTK-test - funkcja main

int main( int

argc,char *argv[] )

{

GtkWidget *window;
GtkWidget *box1, *box2;
GtkWidget *button;
GtkWidget *text;
gint

tmp_pos;

gtk_init (&argc, &argv);

window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

gtk_window_set_title (GTK_WINDOW (window), "GTK - test");

g_signal_connect (G_OBJECT (window), "delete_event",

G_CALLBACK (wyjscie_sys), NULL);

gtk_container_set_border_width (GTK_CONTAINER (window), 10);

Marek Piotrów - Wykład 11

Kurs C z elementami C++

background image

GTK - tworzenie okienek w C

Budowanie wielomodułowych programów

Przykład u˙zycia kontrolek

GTK-test pojemnik i przycisk

box1 = gtk_vbox_new (FALSE, 0);

gtk_container_add (GTK_CONTAINER (window), box1);

button = gtk_button_new_with_label ("Kliknij tu");

g_signal_connect (G_OBJECT (button), "clicked",

G_CALLBACK (test_nacisniecia), (gpointer) "Przycisk");

gtk_box_pack_start (GTK_BOX(box1), button, TRUE, TRUE, 0);

gtk_widget_show (button);

text = gtk_entry_new ();

gtk_entry_set_max_length (GTK_ENTRY (text), 50);

g_signal_connect (G_OBJECT (text), "activate",

G_CALLBACK (wprowadzony_tekst),

(gpointer) text);

gtk_entry_set_text (GTK_ENTRY (text), "Wprowadz");

tmp_pos = GTK_ENTRY (text)->text_length;

gtk_editable_insert_text (GTK_EDITABLE (text), " jakis tekst", -1, &tmp_pos);

gtk_editable_select_region (GTK_EDITABLE (text),

0, GTK_ENTRY (text)->text_length);

gtk_box_pack_start (GTK_BOX (box1), text, TRUE, TRUE, 0);

gtk_widget_show (text);

Marek Piotrów - Wykład 11

Kurs C z elementami C++

background image

GTK - tworzenie okienek w C

Budowanie wielomodułowych programów

Przykład u˙zycia kontrolek

GTK-test: przycisk ko ´ncz ˛

acy

box2 = gtk_hbox_new (FALSE, 0);

button = gtk_button_new_with_label ("Koniec");

g_signal_connect (G_OBJECT (button), "clicked",

G_CALLBACK (wyjscie_prz), NULL);

gtk_box_pack_start(GTK_BOX (box2), button, TRUE, FALSE, 0);

gtk_box_pack_start(GTK_BOX (box1), box2, TRUE, TRUE, 0);

gtk_widget_show (button);

gtk_widget_show (box2);

gtk_widget_show (box1);

gtk_widget_show (window);

gtk_main ();

return 0;

}

Marek Piotrów - Wykład 11

Kurs C z elementami C++

background image

GTK - tworzenie okienek w C

Budowanie wielomodułowych programów

Przykład u˙zycia kontrolek

Uzyskany efekt

Marek Piotrów - Wykład 11

Kurs C z elementami C++

background image

GTK - tworzenie okienek w C

Budowanie wielomodułowych programów

Proste skrypty buduj ˛

ace

Zło˙zony skrypt buduj ˛

acy

Zło˙zony skrypt buduj ˛

acy - c.d.

Narz ˛edzia do budowanie - make i makefile

kalkulator: oblicz2.c stos.c znak.c

gcc stos.c oblicz2.c znak.c -o kalkulator

Marek Piotrów - Wykład 11

Kurs C z elementami C++

background image

GTK - tworzenie okienek w C

Budowanie wielomodułowych programów

Proste skrypty buduj ˛

ace

Zło˙zony skrypt buduj ˛

acy

Zło˙zony skrypt buduj ˛

acy - c.d.

Najprostszy makefile

# najprostszy makefile dla programu kalkulator

kalkulator: oblicz2.o stos.o znak.o

gcc stos.o oblicz2.o znak.o -o kalkulator

znak.o: znak.c

gcc -c znak.c -o znak.o

stos.o: stos.c

gcc -c stos.c -o stos.o

oblicz2.o: oblicz2.c

gcc -c oblicz2.c -o oblicz2.o

Marek Piotrów - Wykład 11

Kurs C z elementami C++

background image

GTK - tworzenie okienek w C

Budowanie wielomodułowych programów

Proste skrypty buduj ˛

ace

Zło˙zony skrypt buduj ˛

acy

Zło˙zony skrypt buduj ˛

acy - c.d.

Prosty makefile

# prosty makefile dla programu: kalkulator

CFLAGS= -std=c99 -pedantic

# ogolne flagi kompilacji

NAME = kalkulator

$(NAME): oblicz2.o stos.o znak.o

gcc $(CFLAGS) stos.o oblicz2.o znak.o -o $(NAME)

znak.o: znak.c

gcc -c $(CFLAGS) znak.c -o znak.o

stos.o: stos.c

gcc -c $(CFLAGS) stos.c -o stos.o

oblicz2.o: oblicz2.c

gcc -c $(CFLAGS) oblicz2.c -o oblicz2.o

Marek Piotrów - Wykład 11

Kurs C z elementami C++

background image

GTK - tworzenie okienek w C

Budowanie wielomodułowych programów

Proste skrypty buduj ˛

ace

Zło˙zony skrypt buduj ˛

acy

Zło˙zony skrypt buduj ˛

acy - c.d.

Typowy makefile

# prosty makefile dla programu: kalkulator

CFLAGS = -std=c99 -pedantic

# ogolne flagi kompilacji dla modulow

LFLAGS = -lm

# ogolne flagi konsolidacji programu

NAME = kalkulator

# nazwa programu wynikowego

SRC = oblicz2.c stos.c znak.c

# nazwy wszystkich plikow zrodlowych

OBJS = oblicz2.o stos.o znak.o

# nazwy wszystkich modulow

YOU : $(SRC) $(NAME)

$(NAME): $(OBJS)

gcc $(CFLAGS) $(OBJS) -o $(NAME) $(LFLAGS)

znak.o: znak.c

gcc -c $(CFLAGS) znak.c -o znak.o

stos.o: stos.c

gcc -c $(CFLAGS) stos.c -o stos.o

oblicz2.o: oblicz2.c

gcc -c $(CFLAGS) oblicz2.c -o oblicz2.o

Marek Piotrów - Wykład 11

Kurs C z elementami C++

background image

GTK - tworzenie okienek w C

Budowanie wielomodułowych programów

Proste skrypty buduj ˛

ace

Zło˙zony skrypt buduj ˛

acy

Zło˙zony skrypt buduj ˛

acy - c.d.

Makefile dla Borland’a bcc

# prosty makefile dla programu: kalkulator

CFLAGS =

# ogolne flagi kompilacji dla modulow

LFLAGS =

# ogolne flagi konsolidacji programu

NAME = kalkulator

# nazwa programu wynikowego

SRC = oblicz2.c stos.c znak.c

# nazwy wszystkich plikow zrodlowych

OBJS = oblicz2.obj stos.obj znak.obj

# nazwy wszystkich modulow

YOU : $(SRC) $(NAME)

$(NAME): $(OBJS)

bcc $(CFLAGS) -e$(NAME) $(OBJS) $(LFLAGS)

znak.obj: znak.c

bcc -c $(CFLAGS) -oznak.obj znak.c

stos.obj: stos.c

bcc -c $(CFLAGS) -ostos.obj stos.c

oblicz2.obj: oblicz2.c

bcc -c $(CFLAGS) -ooblicz2.obj oblicz2.c

Marek Piotrów - Wykład 11

Kurs C z elementami C++

background image

GTK - tworzenie okienek w C

Budowanie wielomodułowych programów

Proste skrypty buduj ˛

ace

Zło˙zony skrypt buduj ˛

acy

Zło˙zony skrypt buduj ˛

acy - c.d.

Profesjonalny makefile dla Unix

# A bit primitive makefile for Unices

OPTIONS = -DNDEBUG

# OPTIONS = -DPOOR_LIBS -DNDEBUG

# Use the above line if you have problems with compilation due to

# missing declarations. This enables including of "fixes.h", where you

# can place or include what is missing.

# when finished, uncomment -DNDEBUG to remove debugging code

CFLAGS = -s -funsigned-char -O2 # -fno-exceptions

# when finished, add -O2 to CFLAGS

# -fno-exceptions is for gcc 2.8.x

# (I don’t use exceptions -> executable will be smaller)

LFLAGS = -lm # -lstdc++

SRC = euphoria.l euphoria.y symtab.cc symtab.h fixes.h init.cc code.h code.cc \

errors.h seq.cc seq.h

OBJS = symtab.o init.o code.o euphoria.o seq.o

NAME = euphoria

YOU : $(SRC) $(NAME)

Marek Piotrów - Wykład 11

Kurs C z elementami C++

background image

GTK - tworzenie okienek w C

Budowanie wielomodułowych programów

Proste skrypty buduj ˛

ace

Zło˙zony skrypt buduj ˛

acy

Zło˙zony skrypt buduj ˛

acy - c.d.

Profesjonalny makefile dla Unix

$(NAME) : $(OBJS)

gcc $(CFLAGS) $(OPTIONS) -o $(NAME) $(OBJS) $(LFLAGS)

lex.yy.c : euphoria.l

flex -s euphoria.l

euphoria.tab.c : euphoria.y

bison euphoria.y

euphoria.o : euphoria.tab.c lex.yy.c

gcc -c $(CFLAGS) $(OPTIONS) -x c++ $< -o $@

%.o : %.cc

gcc -c $(CFLAGS) $(OPTIONS) $< -o $@

clean:

rm -f $(OBJS) $(NAME)

Marek Piotrów - Wykład 11

Kurs C z elementami C++


Document Outline


Wyszukiwarka

Podobne podstrony:
materialy wykladowe wyk11 d id Nieznany
Abolicja podatkowa id 50334 Nieznany (2)
4 LIDER MENEDZER id 37733 Nieznany (2)
katechezy MB id 233498 Nieznany
metro sciaga id 296943 Nieznany
perf id 354744 Nieznany
interbase id 92028 Nieznany
Mbaku id 289860 Nieznany
Probiotyki antybiotyki id 66316 Nieznany
miedziowanie cz 2 id 113259 Nieznany
LTC1729 id 273494 Nieznany
D11B7AOver0400 id 130434 Nieznany
analiza ryzyka bio id 61320 Nieznany
pedagogika ogolna id 353595 Nieznany
Misc3 id 302777 Nieznany
cw med 5 id 122239 Nieznany

więcej podobnych podstron