머리말

1. 이 글부터 반드시 읽어주셔야 앞으로 함께하시는데 애로사항이 약간 덜하실 것입니다.

    • 책을 한권 사서보더라도 가장 크게 범하는 오류가 그 책의 스타일과 이해방법을 등한시 한다는것입니다.
      • 이런 것들을 무시한다는것은 그냥 글자들을 눈으로 판독해낼뿐인것입니다.

2. C를 할줄 알고 있다는 가정하에 모든 내용을 기술할 것입니다.

    • C를 모르시는 분은 http://www.jabook.co.kr/ 에서 소설같은 C를 배워보시기 바랍니다.
    • 당장에는 C를 모르더라도 따라만 하시면 실행까진 되게 해드릴 것입니다. 하지만 그것은 매우 위험한 행위입니다. 왠만하면 C를 좀 공부하십시요. 많이 까지도 하실 필요 없습니다. C를 작성하여 컴파일하고 실행함에 있어 최소한 메모리에서 무슨일이 벌어지는지 정도만 알고 계셔도 C와 함께 병행하며 재미있는 배움의 시간을 가져보실 수 있을것입니다.

3. GTK를 설명함에 있어 기본적인 부분과 원리를 설명하는것에 상당히 많은 시간을 할애할 계획입니다.

    • 일단 계획은 그렇습니다만 (-_-;)
    • 가장 기본적이고 기초적인 부분 그리고 원리를 모르고 프로그램을 만든다는것은 매우 똘추적 발상입니다. (저또한 똘추중에 한사람이긴합니다만 -0-) 지속적으로 발생하는 의문과 말도안되는 에러들은 작동방식과 원리만 알았더라도 발생하지 않았을 것들이 대부분입니다. 또한 기본적인 원리를 모르고서는 GTK가 제공하는 기능을 제대로 활용도 할수 없을것이며 확장하여 사용한다던가 응용을 하여 좀더 다이나믹하고 복잡한 구현을 이루어낸다는것은 생각도 할 수 없게 됩니다. 저도 몇줄 적고 "와~ 우리의 X Window에 'Hi 똘츄~'프로그램이 떴습니다" 라고 호들갑 떨어드리며 생색을 내고 싶은 마음은 굴뚝같지만 저역시 그 과정을 밟았던 사람이다보니 최대한 여러분들이 멀쩡한 방향과 길로 가시도록 최선을 다해볼 예정(?)입니다.

4. GTK를 설명하며 상속과 부모, 자식, 업캐스팅, 다운 캐스팅이라는 말을 사용하게 될 것입니다.

    • GTK는 C로 제작되어졌지만 왠지 객체지향 스러운 부분을 지니고 있습니다.
      • 바로 상속입니다만 상속이라고 해서 객체지향에서의 상속이 가지는 특성을 모두 완벽하게 가지고 있는것은 아닙니다.
    • 사실상 용어에 큰 오류가 생길수도 있으나 제가 설명하는데 구구절절히 하기 어려운 부분이나 이해를 돕기 위해 간간히 사용하겠으니 보시는 분들이 알아서 걸러 보시기 바랍니다.
    • 예를 들자면 GtkWindow 또한 GtkWidget으로부터 쭉 아래로 상속되어졌다던가 GtkWidget으로 업캐스팅이 가능하며 다운캐스팅도 가능하다라던가 등등의 용어를 사용할것입니다. 인터페이스도 등장하죠.

5. GTK 개발관련 라이브러리가 미리 설치되어 있어야합니다.

    • 참고로 저는 Ubuntu를 사용합니다(스크린샷은 전부 Ubuntu).

6. 사실 저도 아는게 별로 없습니다.

    • GTK의 원리이니 객체지향스럽느니 하지만 사실 저도 아는게 별로 없습니다.
    • 최대한 아는대로 확인을 가쳐 지껄여볼테니 시비를 걸어주십시요.
      • 문제가 있다면 확인하여 정정한뒤 알리도록 하겠습니다(오타 시비 사양).

7. 제가 이 글을 쓰는 목적은 이렇습니다.

    • 리눅스 기반의 GUI환경에 대한 개발자의 저변확대.
    • 개발자의 저변확대를 통하여 양질의 응용프로그램들을 생산해내어 엔드유저의 접근을 용이하게 한다.
    • 등등의 말도안되는 소리는 일단 집어치우고 거국적 목표따위는 귀찮아서라도 가지고 싶지 않고 생색이라도 내볼까 해서입니다.
      • 또한 GTK 개발을 당분간 손댈일이 없는 터라 까먹을까봐 염려도 되구요. 그동안 구현하는데 바쁘다보니 저또한 신경쓰지 못했던 GTK의 기본 구조와 원리들에 대해 다시한번 되짚어 보는 기회도 될꺼 같기도 하고 해서 사실 무엇보다 잘난척하기 위해서입니다. 헤죽 ^ㅡ^ (농담입니다. 별로 잘나지 않았습니다 --;)
    • 한글로 정리된 자료는 Tutorial정도가 전부입니다.

부족하나마 저부터 시작할까 합니다. 많은 분들이 함께하셔서 GTK에 손쉽게 접근할 수 있는 계기가 되는 쉬운(?) 자료가 만들어지길 바랍니다.