EasyGTK를 이용한 GUI 프로그래밍

GUI 툴킷 최대로 활용하기

developerWorks
문서 옵션
수평출력으로 설정

이 페이지 출력

이 페이지를 이메일로 보내기

이 페이지를 이메일로 보내기


제안 및 의견
피드백

난이도 : 초급

Patrick Lambert IT 컨설턴트/프리랜서 작가

2002 년 1 월 01 일

Gimp Toolkit (GTK+)은 사용자 인터페이스를 만드는데 사용되는 무료 툴킷이다. EasyGTK는 호출을 GTK+로 변환하는 래퍼 라이브러리이다. GTK+를 마스터하는데 필요한 시간과 노력을 줄일 수 있다. EasyGTK 코드를 분석하여 간단한 애플리케이션을 만드는 방법을 설명한다. Gimp Toolkit (GTK+)의 사용 방법도 설명한다.

Graphical User Interface (GUI) 툴킷은 오랫동안 리눅스에 존재했었다. Xlib, XT, Motif를 통해서, 훌륭한 그래픽 툴을 리눅스상에서 더욱 쉽게 만들 수 있었다. 라이브러리를 사용하여 프로그램을 만드는 방법을 설명해 놓은 문서가 포함되어 있다. 최근에 탄생한 새로운 라이브러리인 GTK+는 리눅스 라이브러리 세계에 '반향'을 일으켰다. Gimp Toolkit (GTK+)으로 매우 훌륭한 프로그램을 만들 수 있고 게다가 공짜이다. 리눅스 개발자들 사이에서는 유명하다. 단점이라면 라이브러리의 사용방법을 익혀 프로그램을 만들기까지 오랜 시간이 걸린다는 점이다. EasyGTK로 들어가보자.

GUI의 새로운 시작

이 라이브러리는 기술적으로는 래퍼 라이브러리(wrapper library)이다. 이는 개발자가 소프트웨어를 만들기 위해서는 EasyGTK C API를 사용하고, 호출한 것을 GTK+ 라이브러리로 변환한다는 것을 의미한다. 전형적인 EasyGTK 명령어는 5개 에서 10개 정도의 GTK+ 함수들이 하는 것을 수행한다. EasyGTK 호출을 사용하여 프로그램을 만드는 것은 쉽고도 빠르다는 의미도 된다.




위로


EasyGTK 실행하기

이 라이브러리를 사용하여 실행하는 기본적인 명령어를 살펴보자. EasyGTK는 다른 리눅스 프로그램 처럼 컴파일 되고 설치되어야 한다. 이것은 표준 리눅스 배포판상에서 작동한다. 일단 설치되면, 다른 라이브러리와 마찬가지로 프로그램을 컴파일 할 정적 라이브러리를 사용한다. EasyGTK를 이용한 프로그램 컴파일에 대해서는 문서화가 되었으며 사용할 수 있는 명령어 리스트도 있다. 라이브러리에 대한 이야기를 계속 진행하기 전에 다음의 간단한 프로그램 소스 코드를 보자:


코드 샘플
#include "easygtk.h"GtkWidget *win, *box, *text, *button; void main(int argc, char *argv[]){ gtk_init(&argc, &argv); win e_window_create("Hello World", 400, 200, 100, 100, exit); box e_box_create(win, E_VERTICAL, 2); text e_text_create(box, FALSE, "Hello World!", E_NO_FUNC); button e_button_create(box, "Close", exit); gtk_main();}       



윈도우
The window



위로


샘플 코드 분석

EasyGTK의 작은 프로그램은 순수한 GTK+ 코딩으로 30줄이다. 코드들이 어떤 역할을 수행하는지 라인 별로 살펴보겠다. 첫 번째 라인은 컴파일러에게 라이브러리에 있는 easygtk.h 파일을 포함(include)하라고 명령하고, 모든 EasyGTK 명령어의 정의를 포함시킨다.

다음 라인은 프로그램에서 사용 될 위젯의 선언이다. 위젯은 윈도우, 버튼, 텍스트 레이블, 설치 박스 같은 그래픽 컴포넌트를 나타내는 변수이다. main 함수에서, 우선 GTK+ 엔진을 초기화하고, 그런다음 위젯을 만든다. EasyGTK의 모든 명령어들은 "e"로 시작한다. 첫 번째 EasyGTK 명령어는 윈도우를 만든다. 모든 EasyGTK 함수들 중 어떤 매개변수를 사용할 지 결정하려면 라이브러리 문서를 참고한다. 예를 들어, e_window_create() 함수는 100x100 위치에 "Hello World"와 함께 400x200 픽셀의 윈도우를 만든다. 사용자가 윈도우를 닫으면 exit() 함수가 호출될 것이다.

이 라이브러리를 사용할 때 가장 중요한 점은 위젯 또는 컴포넌트를 윈도우 상에 어떻게 위치시킬 것인가이다. 일단 윈도우를 만들면 그 안에 박스를 놓아야 한다. 두 가지 박스 유형이 있다: 수직(vertical)과 수평(horizontal). 텍스트 레이블과 버튼을 다른 것의 상단에 놓으려면 수직 박스(vertical box)를 놓고 레이블과 버튼을 그 박스에 추가한다. 그러면 여러분이 원하는 방식으로 나타나게 된다. 윈도우의 상단에 레이블을 놓고 윈도우의 밑에 두 개의 버튼을 옆으로 하여 만들고 싶다면? 우선 수직 박스를 사용하고 그 다음 수평 박스(horizontal box)를 사용한다. 일단 박스를 추가하면 거기에 어떤 위젯이라도 추가할 수 있다. 다른 박스에도 추가할 수 있다.

다음 두 개의 명령어는 텍스트 지역(area)과 윈도우를 종료하는 버튼을 만든다. 애플리케이션이 컴파일되면 많은 것을 하지는 않는다. 이것은 단지 예제일 뿐이다. GTK+ 루프를 시작하라는 명령어는 main C 함수의 끝에 있다. GTK+ 또는 EasyGTK 애플리케이션에서, 사용자 액션은 gtk_main()로 시작하는 메인 루프에서 감지될 수 있다. 애플리케이션을 구성할 모든 위젯을 추가하면 루프를 시작하는 함수를 사용해야 한다. 이 프로그램은 루핑 한 후 사용자 액션을 기다린다. 사용자가 어떤 것을 수행하면 루프는 멈추고 지정된 함수에 제어가 부여된다. 이 경우 프로그램을 종료시키는 exit() 이다.




위로


맺음말

이 예제를 통해 간단한 애플리케이션을 만드는 방법을 설명했다. 더욱 복잡한 컴포넌트를 추가할 수 있다. EasyGTK에는 50 개의 함수들을 사용할 수 있다. 라이브러리에 있는 예제 소스 파일을 시도해보기 바란다. 또한 같은 애플리케이션에 EasyGTK와 순수한 GTK+ 명령어를 섞을 수 있다.

현재 EasyGTK는 GTK+ 1.2 버전을 지원한다. 대부분의 리눅스 배포판에 포함되어 있다. Imlib, ImageMagick, GNOME이 필요한 함수도 있다. 하지만 이러한 라이브러리의 지원 없이도 라이브러리를 컴파일 할 수 있고 EasyGTK를 사용하기 위해서 이들을 설치할 필요도 없다. 이 라이브러리는 Sun Solaris 같은 유닉스 시스템에서도 작동한다.

EasyGTK 소스 코드는 GPL 라이센스 하에 개방되어 있다. 각자의 필요에 맞게 함수들을 커스터마이징 할 수 있다. 라이브러리는 쉬운 코딩과 빠른 애플리케이션 구현에 있어서 훌륭한 도구이다.



참고자료



필자소개

Patrick Lambert는 IT 컨설턴트이자 프리랜스 작가이다. 컴퓨터와 인터넷 관련 글을 쓴다. 그는 또한 Microsoft 인증 전문가(MCP)이자 A+ 인증 테크니션이다.

+ Recent posts