[연재]
glib, gtk 팝업 사전 만들기 3화
익명(218.147)
2020-03-09 03:33
추천 3
glib, gtk 팝업 사전 만들기 3화
c 언어 익히 알고 있던 사람들은 1,2화 보면서 많이 지루했을거구, c 언어를 모르는 사람은 부담이
되었을 것이라 생각함. c 언어를 조금 아는 사람들에게는 도움이 되었을거구.
이제 c 언어 얘기는 가급적 조금만 하구, 지루했으니까 막바로 창 띄울 준비를 하자구
devhelp 라는 어플, glib2-docs (libglib2.0-doc) 필히 설치하셈.
devhelp 는 api 를 검색하고 문서를 보는 유틸임. 옛날에 msdn 나와서 자유/오픈소스쪽에서 우리도
그런거 함 만들어보자 해서 나왔다 카더라.. devhelp 개편함
tiandict.c 로 덮어쓰기 하셈. 여기에서는 아주 최소한만 다루었음.
gnome.org 홈페이지에서는 예제 코드로 GApplication 을 이용하였을텐데,
여기서는 옛날 예제 코드에 나오는 방식(이 방법도 일반적인 방식임)으로 하였음.
#include
<stdlib
.h
>
#include
<gmodule
.h
>
#include
<gtk
/gtk
.h
>
typedef struct _Tiandict Tiandict
;
struct _Tiandict
{
GtkWidget
*window
;
};
static void
on_destroy
(GtkWidget
*widget
,
gpointer user_data
)
{
gtk_main_quit
();
}
Tiandict
*tian_dict_new
()
{
Tiandict
*dict
;
dict
= g_slice_new
(Tiandict
);
gtk_init
(NULL
, NULL
);
dict
->window
= gtk_window_new
(GTK_WINDOW_TOPLEVEL
);
g_signal_connect
(dict
->window
, "destroy", (GCallback
) on_destroy
, NULL
);
gtk_widget_show_all
(dict
->window
);
return dict
;
}
void tian_dict_free
(Tiandict
*dict
)
{
g_slice_free
(Tiandict
, dict
);
}
int main
(int argc
, char
**argv
)
{
Tiandict
*dict
;
dict
= tian_dict_new
();
gtk_main
();
tian_dict_free
(dict
);
return EXIT_SUCCESS
;
}
여기까지 왔으면 과장이 아니라, GTK+ GUI 프로그래밍 절반 배운 거임. 구라 아님!! 진짜임!!!
GTK로 GUI 프로그래밍하는 방법이 거의 정형화되어 있음. glide 이런거 사용하면 마우스로 GUI
디자인할 수 있는데, 난 그런거 절대 안 씀. GtkBuilder 도 안 씀. 사실 이런게 다 손맛이거덩
어때? 자바 swing, 자바 swt 보다 훨 쉽지? 아님 말구 헤헤~~
ui 고민할때 gtk 고수도 gtk 는 그냥 쳐다도보지말라고 했던게 생각나네.. 맞는말인듯
아... 지금 glib 2.58 소스코드 grep 로 확인해보니까.. kqueue 는 지원하는거 같음. epoll 은 아직인거 같구. 언젠가 모두다 지원해 주겠지
1년 2년... 세월 지날 때마다.. 자꾸.. 지원이 늘어나니까.. 앞으로 "현재의 glib 는 epoll(리눅스), kqueue(FreeBSD) 사용 안 함." 이런 말은 쓰면 안 되겠네. kqueue 지원되는거 확인했음