'GTK'에 해당되는 글 2건
- 2007.02.27 gtk Thread 2
- 2007.01.14 vte를 이용한 간단한 터미널 2
gtk Thread
Programming/GTK+ 2007. 2. 27. 15:31
이번에 Thread가 먼지 확실히 알게된...
대충 하나의 프로그램의 흐름을제어 하는것..인거 같다..
fork는 같은 프로그램 이미지를 copy하는거랑 비교하면...
아 몰라 암튼
if(!g_thread_supported())
g_thread_init(NULL);
쓰레드가 지원하는지 확인하고 초기화시킨다 (역시 gtk는 함수만 봐도 딱 보인다니까..)
if(!g_thread_create((GThreadFunc)me_keys,window,FALSE,NULL))
perror("Thread ERROR");
쓰레드를 생성한다
gdk_threads_init(); //이것도 초기화
gdk_threads_enter();
gtk 함수들 ~
gdk_flush();
gdk_threads_leave();
을 랩핑한다
예시>
227 puts("Show");
228 gdk_threads_enter();
229 gtk_window_deiconify(GTK_WINDOW(widget));
230 gtk_window_present(GTK_WINDOW(widget));
231 gdk_flush();
232 gdk_threads_leave();
근데 이런식으로 해서 xlib랑 앞에 포스팅된 key_grap 할려니깐 자꾸 에러가 먹네..
Xlib: unexpected async reply (sequence~)
음 다시 찾아보니 gtk_thread_init를 빼먹었었구나..(현재 윗부분 수정)
가끔씩 맛이 가는거 빼곤 잘된다...
참고:
http://bebop.emstone.com/research/python/pygtk_faq/chapter20#id5
대충 하나의 프로그램의 흐름을제어 하는것..인거 같다..
fork는 같은 프로그램 이미지를 copy하는거랑 비교하면...
아 몰라 암튼
if(!g_thread_supported())
g_thread_init(NULL);
쓰레드가 지원하는지 확인하고 초기화시킨다 (역시 gtk는 함수만 봐도 딱 보인다니까..)
if(!g_thread_create((GThreadFunc)me_keys,window,FALSE,NULL))
perror("Thread ERROR");
쓰레드를 생성한다
gdk_threads_init(); //이것도 초기화
gdk_threads_enter();
gtk 함수들 ~
gdk_flush();
gdk_threads_leave();
을 랩핑한다
예시>
227 puts("Show");
228 gdk_threads_enter();
229 gtk_window_deiconify(GTK_WINDOW(widget));
230 gtk_window_present(GTK_WINDOW(widget));
231 gdk_flush();
232 gdk_threads_leave();
근데 이런식으로 해서 xlib랑 앞에 포스팅된 key_grap 할려니깐 자꾸 에러가 먹네..
Xlib: unexpected async reply (sequence~)
음 다시 찾아보니 gtk_thread_init를 빼먹었었구나..(현재 윗부분 수정)
가끔씩 맛이 가는거 빼곤 잘된다...
참고:
http://bebop.emstone.com/research/python/pygtk_faq/chapter20#id5
'Programming > GTK+' 카테고리의 다른 글
g_signal_connect의 폐해? (4) | 2007.03.30 |
---|---|
xlib 에러 해결! (2) | 2007.02.28 |
vte를 이용한 간단한 터미널 (2) | 2007.01.14 |
libglade 컴파일법 (1) | 2006.12.14 |
TODAY.... 삽질 DAY (6) | 2006.08.09 |
vte를 이용한 간단한 터미널
Programming/GTK+ 2007. 1. 14. 12:00

간단한 위젯인데.. 이거 하나만 쓰면 그냥 터미널이 바로 뜨니..
조금만 해보면 자신만의 터미널을 만드는것도 쉬울거 같네요..
gnome-terminal,tilda가 이 vte 라이브러리를 사용하네요
아마 가상 터미널 애뮬리이팅? 의 약자인듯하네여..
30줄도 안대는 코드로 터미널 하나가 완성됩니다
해더->vte/vte.h,gtk/gtk.h
1 #include
2 #include
3
4 int main(int argc,char *argv[])
5 {
6 GtkWidget *terminal;
7 GtkWidget *window;
8
9 gtk_init(&argc,&argv);
10
11 window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
12
13 terminal=vte_terminal_new(); //위젯 생성
14 //터미널 씰헁조건 같은거..
15 vte_terminal_fork_command(VTE_TERMINAL(terminal),
16 getenv("SHELL"),NULL,NULL,"/home/lowid",
17 TRUE,TRUE,TRUE);
18
19 gtk_container_add(GTK_CONTAINER(window),terminal);
20
21 g_signal_connect(GTK_OBJECT(window),"destroy",gtk_main_quit,NULL);
22 g_signal_connect(GTK_OBJECT(terminal),"child-exited",gtk_main_quit,NULL); //터미널에서 exit 쳤을때
23 gtk_widget_show_all(window);
24
25 gtk_main();
26 return 0;
27 }
다른건 gtk창만드는것과 같고 다른게 있다면 vte의 함수를 가따 썻다는거 뿐
함수는 다음을 참고 하세연..클뤽~!
참고하면 좋은 소스
링크타고 보시면 아시겠지만 터미널을 제어할수 있는 함수가 몇개 되더군요..
이거 이용하면 그놈터미널정도(?)의 수준으로 터미널 만드는건 아주 어려운일 같은 정도는 아닌거 같습니다
추가>vte_terminal_fork_command 함수의 두번째 인자 getenv("SHELL")을 해야 쉘이 뜹니당..(처음 프로그램 정해줌)
안해주면 커서만 가만히 놀고 있음.. 이거 몰라가꾸 하루죙일 뻘짓,..
'Programming > GTK+' 카테고리의 다른 글
xlib 에러 해결! (2) | 2007.02.28 |
---|---|
gtk Thread (2) | 2007.02.27 |
libglade 컴파일법 (1) | 2006.12.14 |
TODAY.... 삽질 DAY (6) | 2006.08.09 |
(초보) gtk 작성팁 (10) | 2006.08.04 |