FoundationsofGTKDevelopment:Introduction
- 서론
서론
애플리케이션에서 가장 중요한 측면 중 하나는 사용자와 상호작용하기 위해 제공되는 인터페이스다. 오늘날 사회에서 컴퓨터가 전례 없는 인기를 누리면서 사람들은 그러한 사용자 인터페이스가 그래픽할 것으로 기대하는 한편 개발자는 어떤 그래픽 툴킷을 재빠르게 사용해야 하는지에 대한 문제에 직면한다. 대다수의 경우 크로스 플랫폼의 GTK+ 라이브러리야말로 분명한 해결책으로 보인다.
GTK+의 학습이 때로는 벅찬 일임에도 불구하고 많은 기능들의 경우 문서가 부족한 것이 현실이며, 더군다나 API 문서로만 이해하기는 더욱더 힘들다. GTK+ 로 개발하기는 학습 곡선을 감소시키고 본인만의 방법으로 크로스 플랫폼의 그래픽 사용자 인터페이스를 생성하도록 만드는 데에 목적이 있다.
본 책에 실린 각 장(chapter)은 독자의 이해를 돕는 여러 예제를 포함하고 있다. 예제에 더불어 마지막 장에는 앞에서 소개한 주제를 합쳐 5개의 애플리케이션을 제공한다. 이러한 애플리케이션들은 학습한 내용을 모아 다양한 프로젝트를 달성하는 방법을 보여줄 것이다.
각 장의 앞 부분에서는 무엇을 다룰 것인지 개요를 제공하므로 원한다면 건너뛰어도 좋다. 대부분의 장에는 내용에 대한 이해도를 시험하기 위한 연습문제도 포함되어 있다. GTK+를 학습하는 최고의 방법은 직접 사용해보는 것이기 때문에 다음 장으로 넘어가기 전에 연습문제를 모두 완료할 것을 권한다.
본 서적의 마지막에는 GTK+의 다양한 측면들에 대한 참조 역할을 하는 부록들이 여러 개 포함되어 있다. 부록에는 GTK+ 의 모든 위젯마다 시그널, 스타일, 프로퍼티를 열거하는 표를 비롯해 스톡 항목과 GError 타입의 전체 리스트가 실려 있다. 부록은 책을 다 읽고 나서 자신만의 애플리케이션을 생성할 때 참고해도 유용할 것이다. 부록 F는 본문에 걸쳐 소개된 모든 연습문제의 해답 설명을 포함한다.
누구를 위한 책인가
이 책은 기본 내용부터 시작해 좀 더 까다로운 개념으로 넘어가기 때문에 책 내용을 소화하기 위해 GTK+ 개발에 대한 사전 지식을 필요로 하지는 않는다. 본문에서는 C 프로그래밍 언어에 대해 적당히 이해하고 있을 것으로 가정한다. 또 Linux terminal에서 명령어를 실행하고 애플리케이션을 종료하는 (Ctrl+C) 데에 익숙해야 한다.
C 프로그래밍 언어에 대한 이해 뿐만 아니라 본문의 일부분은 일반적으로 Linux용 프로그래밍에 대한 추가 지식이 없이는 이해하기가 어려울 수도 있다. 기본 객체 지향의 개념을 이미 이해하고 있다면 이 책에서 더 많은 것을 얻게 될 것이다. 또 Linux가 프로세스를 처리하는 방식을 이해한다면 더 유용하겠다.
Linux에서 프로세스를 관리하거나 객체 지향을 구현하는 방식을 알지 못하더라도 이 책을 사용할 수는 있지만 하나 이상의 온라인 자원을 보완하여 사용하는 방법도 있겠다. 이 책의 웹 사이트 http://www.gtkbook.com 를 방문하면 유용한 링크와 지침서 목록을 찾을 수 있다. 책과 관련된 정보는 http://www.apress.com 에서 더 찾을 수 있다.
책의 구성
GTK+로 개발하기는 총 13개의 장으로 구성된다. 각 장은 한 가지 주제에 대한 전반적인 이해를 제공할 것이다. 가령 제 3장은 컨테이너 위젯에 대해 다루며, GtkContainer 클래스로부터 파생된 가장 중요한 위젯들을 다수 소개할 것이다.
이러한 구조 때문에 몇몇 장들은 내용이 길지도 모른다. 그렇다고 해서 앉은 자리에서 하나의 장을 모두 이해해야 할 필요는 없는데, 제시된 내용을 모두 이해하기가 힘들 수 있기 때문이다. 게다가 많은 예제들이 여러 페이지에 걸쳐 소개되므로 한 번에 몇 가지 예제에만 초점을 두어 어떻게 그들의 구문과 목적을 이해할 것인지 고려해보길 바란다.
각 장은 전문적인 GTK+ 개발자가 되도록 도와주는 중요하고도 독특한 관점들을 제공하는데, 이는 다음과 같다.
제 1장은 Linux 시스템에 GTK+ 라이브러리와 의존하는 패키지를 설치하는 방법을 알려준다. 또한 GLib, GObject, GDK, GdkPixbuf, Pango, ATK를 포함해 각 GTK+ 라이브러리의 개요를 제공한다.
제 2장은 두 개의 "Hello World" 애플리케이션을 처음부터 살펴본다. 첫 번째는 모든 GTK+ 애플리케이션에서 필요로 하는 기본 요점을 보여준다. 두 번째는 첫 번째 애플리케이션을 확장시켜 시그널, 콜백 함수, 이벤트, 자식 위젯을 다룬다. 이후 위젯 프로퍼티와 GtkButton 위젯에 관해 학습할 것이다.
제 3장은 GtkContainer 구조의 소개로 시작된다. 다음으로 수평 및 수직 박스, 테이블, 고정 컨테이너, 수평 및 수직 패인, 노트북, 이벤트 박스를 교육한다.
제 4장은 프로그래머가 사용자와 상호작용하는 방법을 제공하는 기본 위젯을 다룬다. 여기에는 토글 버튼, 특수화된 버튼, 텍스트 엔트리, 스핀 버튼이 포함된다.
제 5장은 독자가 이용할 수 있는 다양한 범위의 내장된 대화상자(dialog)를 소개한다. 뿐만 아니라 본인만의 커스텀 대화상자를 생성하는 방법을 교육한다.
제 6장은 GLib에서 가장 유용한 기능들을 전반적으로 요약한다. 독자가 이용 가능한 데이터 타입을 다수 다룬다. idle 함수, time-out, 프로세스 띄우기, 동적 모듈 로딩, 파일 유틸리티 함수, 타이머, 기타 일반적인 유틸리티 함수 등을 소개한다.
제 7장은 스크롤을 이용한 창을 소개한다. 또한 텍스트 뷰 위젯을 이용하는 것과 관련해 상세한 설명을 제공한다. 그 외에 클립보드와 GtkSourceView 라이브러리에 관한 주제도 포함된다.
제 8장은 GtkTreeModel 객체를 이용하는 두 가지 타입의 위젯을 다룬다. 트리 뷰 위젯의 개요를 상세히 제공하고, 트리 모델 또는 문자열과 함께 콤보박스를 이용하는 방법을 보여준다.
제 9장은 두 가지 메뉴 생성 방법, 즉 매뉴얼 방식과 다이내믹 방식을 제공한다. 메뉴, 툴바, 팝업 메뉴, 키보드 접근자, 상태 바 위젯을 다룬다.
제 10장은 Glade 사용자 인터페이스 빌더(User Interface Builder)를 이용해 사용자 인터페이스를 디자인하는 방법에 관해 짧게 소개한다. 또 Libglade를 이용해 독자의 사용자 인터페이스를 동적으로 로딩하는 방법도 보여줄 것이다.
제 11장은 다른 위젯으로부터 자신만의 커스텀 GTK+ 위젯을 파생시켜 생성하거나, 처음부터 새로 생성하는 방식을 가르친다. 뿐만 아니라 인터페이스의 구현과 사용을 설명한다.
제 12장은 앞에서 다루지 못한 나머지 위젯을 다수 소개한다. 여기에는 최근 파일과 트레이 아이콘 지원 등 GTK+ 2.10에 도입된 여러 위젯이 포함된다.
제 13장은 실제 세계에서 발견할 수 있는 좀 더 긴 예제를 제공한다. 본문을 통해 학습한 개념을 어떻게 조합해 사용할 수 있는지를 보여준다.
여기까지 내용에 더해 위젯 프로퍼티, 시그널, 스타일, 스톡 항목, GError 타입, 연습문제 해답에 대한 설명의 참조로서 6개의 부록이 제공된다.
규칙
이 책은 GTK+ 코드와 일반 영어 문장을 구별하기 위해 다양한 활자체를 활용한다. 실제 코드는 고정폭 글꼴로 표시된다. 문단에서 코드의 전체 행이나 함수명, 시그널, 프로퍼티가 모두 이에 해당된다.
그 외에 준수하는 규칙은 아래와 같다.
연습 0-0. 연습문제 예제
이러한 박스는 해당 절의 주제에 관한 독자의 이해도를 검사하기 위한 연습문제를 보여준다. 질문, 코드 도전과제, 주제에 대한 다양한 유형을 포함한다.
다음으로 넘어가기 전에 각 연습문제를 완료해야만 각 장에서 학습한 개념을 실습하고 앞의 장에서 학습한 개념을 합하도록 도와줄 것이다.
GTK+는 그래피컬 하기 때문에 대부분의 출력은 이미지 형태겠지만 terminal 내 텍스트 출력은 행간 고정폭 글꼴로 표시된다.
준비 사항
진행 전에 몇 가지 준비해야 할 사항이 있다. 컴파일러, 텍스트 에디터, 터미널 에뮬레이터(terminal emulator), GTK+ 라이브러리, pkg-config 애플리케이션, 그리고 이 책을 준비한다.
본문에서 제공된 모든 컴파일러 명령은 http://gcc.gnu.org 또는 자신의 패키지 매니저를 통해 이용 가능한 GCC 컴파일러용이다. 대부분의 표준 C 또는 C++ 컴파일러도 작동하겠지만 GCC 이외의 컴파일러를 사용한다면 제공된 것과는 다른 명령 집합을 사용해야 할 것이다.
어떤 텍스트 에디터도 괜찮으므로 자신에게 맞는 것을 선택해야 한다. 몇 가지 고려해 볼만한 인기 있는 텍스트 에디터로 Vim, Emacs, Leafpad, GEdit가 있겠다. Vim과 Emacs는 terminal 기반의 에디터인 반면 Leafpad 와 GEdit 는 그래픽 텍스트 에디터다.
GTK+ 라이브러리와 pkg-config 애플리케이션의 설치에 관한 지침서는 제 1장 마지막 절에 제공된다.
공식 웹 사이트
본 서적의 공식 웹 사이트, http://www.gtkbook.com 에서 추가 자원을 찾을 수 있을 것이다. 해당 웹 사이트에는 최신 문서, 유용한 자원의 링크, 저서를 통해 학습 시 도움이 되는 논문이 포함되어 있다. 또 서적의 예제마다 소스 코드를 다운로드할 수 있는 링크도 발견할 수 있다. http://www.apress.com 에서 찾을 수 있는 Apress 웹 사이트도 본 서적에 관한 추가 정보를 찾는 데 도움이 될 것이다.
웹 사이트에서 받은 소스 코드를 압축 해제하면 각 장에 실린 예제를 포함하는 폴더와 연습문제 해답이 실린 추가 폴더를 발견할 것이다. 현재 폴더 내에서 모든 파일을 빌드하기 위해선 make 를 실행할 수 있겠다. 제 2장에 주어진 컴파일 명령을 이용하거나 make sourcefile을 실행함으로써 단일 파일을 만드는 것도 가능하다. 가령, exercise2-1.c 를 빌드하기 위해서는 make exercise2-1 를 입력해야 한다.