1 / 16

GTK+ 프로그래밍 (2)

This tutorial provides a step-by-step guide for creating and initializing a GTK+ program, creating widgets, setting their properties, registering callback routines, defining widget hierarchy, displaying widgets, handling signal events, and exiting the program. Includes code examples.

janetpalmer
Download Presentation

GTK+ 프로그래밍 (2)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. GTK+ 프로그래밍 (2) SNSLAB 발표 : 문동규

  2. GTK+ Programming • 기본적 GTK+ 프로그램의 7 단계 • 환경 초기화 • 위젯 생성과 속성 설정 • 콜백 루틴 등록 • 인스턴트 계층 정의 • 위젯을 보임 • 시그널 이벤트 처리 • 종료

  3. 환경 초기화 • argc_addr : 명령행의 항목 개수를 가지는 argc주소 • argv_addr :명령행의 항목값을 가지는 argv 주소 /* 예제 */ #include <gtk/gtk.h> Int main(int argc, char *argv[]) { /*환경을 초기화 한다 */ gtk_init(&argc, &argv); /* ….. */ } void gtk_init(int *argc_addr,char ***argv_addr)

  4. 환경초기화 • initializes the library for use • sets up default signal handlers • checks the arguments • --gtk-module • --g-fatal-warnings • --gtk-debug • --gtk-no-debug • --gdk-debug • --gdk-no-debug • --display • --sync • --name • --class

  5. 윈도우 widget 예제 #include <gtk/gtk.h> int main( int argc, char *argv[] ) { GtkWidget *window; gtk_init (&argc, &argv); /*위젯을 생성한다. */ window= gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_show (window); /* 위젯을 보임 */ gtk_main (); return 0; }

  6. 초기화, 위젯 생성 int main( int argc, char *argv[] ) { /* GtkWidget is the storage type for widgets */ GtkWidget *window; GtkWidget *button; /* This is called in all GTK applications. Arguments are parsed * from the command line and are returned to the application. */ gtk_init (&argc, &argv); /* create a new window */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

  7. 속성 설정 & 콜백 루틴 등록 /* 속성 설정 */ gtk_container_set_border_width (GTK_CONTAINER (window), 10); button = gtk_button_new_with_label ("Hello World"); /* Callback routine 등록 */ g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (delete_event), NULL); g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy), NULL); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (hello), NULL); g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (gtk_widget_destroy), G_OBJECT (window));

  8. GtkButton 시그널 클래스 트리

  9. 콜백 루틴 / * Hello World 출력 */ static void hello( GtkWidget *widget, gpointer data ) { g_print ("Hello World\n"); } /* delete_event */ static gboolean delete_event( GtkWidget *widget, GdkEvent *event, gpointer data ) { g_print ("delete event occurred\n"); return TRUE; } /* destroy */ static void destroy( GtkWidget *widget, gpointer data ) { gtk_main_quit (); }

  10. 인스턴트 계층 & 위젯 /* 인스턴트 계층을 정의 */ gtk_container_add (GTK_CONTAINER (window), button); /* 위젯을 보이게 한다 */ gtk_widget_show (button); gtk_widget_show (window);

  11. 시그널과 이벤트 처리 시그널 Gtk_main() 시그널이 처리되기를 기다린다. 제어권이 Gtk_main()으로 돌아간다. 시그널 핸들러를 호출한다. /* 루프를 처리 */ gtk_main (); return 0; 시그널 핸들러 시그널 핸들러 종료

  12. 예제 실행화면

  13. YOPY Navigator의 구성도 프로그램 실행 Main.c Widget 호출 제어신호 연결 제어권을 gtk_main()으로 넘김 Callback.c Interface.c 이벤트 처리 시그널 신호 전달

  14. YOPY Navigator window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_object_set_data (GTK_OBJECT (window1), "window1", window1); gtk_window_set_title (GTK_WINDOW (window1), "SNS-Client"); gtk_window_set_default_size (GTK_WINDOW (window1), 240, 270); gtk_window_set_policy (GTK_WINDOW (window1), TRUE, TRUE, TRUE);

  15. YOPY Navigator 클릭

  16. YOPY Navigator Clist Scroll

More Related