'GTK'에 해당되는 글 2건

  1. 2007.02.27 gtk Thread 2
  2. 2007.01.14 vte를 이용한 간단한 터미널 2

gtk Thread

이번에 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

'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를 이용한 간단한 터미널

사용자 삽입 이미지
오! 이런 위젯이 있는지 몰랐네요..

간단한 위젯인데.. 이거 하나만 쓰면 그냥 터미널이 바로 뜨니..

조금만 해보면 자신만의 터미널을 만드는것도 쉬울거 같네요..

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
prev 1 next