'Programming/GTK+'에 해당되는 글 13건

  1. 2007.02.28 xlib 에러 해결! 2
  2. 2007.02.27 gtk Thread 2
  3. 2007.01.14 vte를 이용한 간단한 터미널 2
  4. 2006.12.14 libglade 컴파일법 1
  5. 2006.08.09 TODAY.... 삽질 DAY 6

xlib 에러 해결!

The program 'key_grab_ex' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadAccess (attempt to access private resource denied)'.
(Details: serial 11 error_code 10 request_code 33 minor_code 0)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)

쓰래드랑 Xlib랑 같이 썼을경우에 나타남..
일단 쓰레드 사용이 재대로 되었나 확인할것...
또 키가 겹치지 않는지 확인하자!
window-manager,사용자 설정과 같이 겹치면 ..XXXXXXXXXX
전역단축키가 걸려있는데 그걸또 불러내게 하니까 위의 오류가 나서...

'Programming > GTK+' 카테고리의 다른 글

윈도우 메니져 설정 무시하고 윈도우 만들기  (2) 2007.06.14
g_signal_connect의 폐해?  (4) 2007.03.30
gtk Thread  (2) 2007.02.27
vte를 이용한 간단한 터미널  (2) 2007.01.14
libglade 컴파일법  (1) 2006.12.14

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

libglade 컴파일법

glade3.0버젼 이상부터 C솟스를만드러 주는 기능이 사라져따..
그래서 어케해야 glade랑 gtk랑 가치 사용할수 이쓸까 하다가 libglade를 사용하면 된다고 하길래
그거 찾아봤으나.. 도저히 컴팔이 안되서 지지쳤던..

libglade라는넘이랑 gtk랑 같이 쓰면서 GUI플밍 하는듯 싶다..



This,glade파일은 생략.. 알아서 잘 만드러 주기 바람..(꺽쇠의 압박땜에 ..포기)

컴파일법: gcc testprogram.c -o test `pkg-config --cflags --libs gtk+-2.0 libglade-2.0`
저기 뒤에 libglade-2.0 찾는다고 고생해따....

참고:
http://docs.linux.cz/programming/gnome/developer.gnome.org/doc/API/2.0/libglade/index.html

'Programming > GTK+' 카테고리의 다른 글

gtk Thread  (2) 2007.02.27
vte를 이용한 간단한 터미널  (2) 2007.01.14
TODAY.... 삽질 DAY  (6) 2006.08.09
(초보) gtk 작성팁  (10) 2006.08.04
GTK_TEXT 에러..해결책  (4) 2006.07.30

TODAY.... 삽질 DAY

오늘은 하루종일 삽질을 했습니다... 하아하하하하하하하~

그 삽질의 주요내용은 devhelp 제대로 인식시키기 위해서,

GTK 플밍에서 스크롤바 조절 하기 였죠...

/usr/share/gtk-doc/html 수동으로 두기...

스크롤바 만들기.. 좌절...;;;;

아주 듣도 보도 못한 함수 대여섯개 가지고 삽질을 .. 해도 도저히 몰라서.. IRC에서 hz님께 간간히 질문..

and KLDP에 질문... 해가면서 했으나.. 스크롤반 더이상 진전이 없었다...

어쩌다가 구글링을 하다보니.. 그 함수를 쓴 소스 페이지가 나왔었다..

그거 대충보고 분석해서.. 그부분을 복사 붙여넣기 했다.... 하아..

GTK 정말 VI로 하나하나 타이핑 하기애는 정말 복잡하네요..


기본적인초기화
화면에 보여주기
윈도우 만들기
(타이틀,기본윈도 크기조절)
타이틀의 종료 버튼 눌렀을때 윈도우 종료 시키는 명령어 넣기
버튼/레이블 만들기
버튼 눌렀을때 반응 설정하기
텍스트박스/엔트리박스 만들기
라디오박스/체크박스 만들기..
각 팩으로 나눈거 윈도우에 붙이기..
스크롤바 만들기
적재?하기 .............는  책에 있는거 보면서 하면 됬었습니다.. 하지만..

아래것은... 정말 삽질이란 삽질은 다해가면서.. 어흑..;;
해석은 되는데 당최 내가 해석해놓고 뭐라고 말하는지 해석 불가인?  영문 레퍼런스를 읽으면서..
볼때 마다 좌절했죠..
게대가 봐도 답은 안나와...함수는 함수를 부르고 해서 기능하나 만들려면 함수 3~4개가 필요한것도 있었어요
(안그래도 영어 짧은데 ㅡㅜ.. 작문이 되면 메일링 리스트도 썼겠지만 제가 영작문 실력은 Zero에 수렴하는지라)

인자가 하나밖에 없는 함수(callback) 넘기기(ㅡㅜ)
창버튼 조절(!)
창크기 움직임 방지
최대화 금지
상위/하위 윈도우 조절
윈도우간 이동 제어(!)
일부개체의 크기 설정
다이얼로그 박스 설정(!)
폰트 색깔 조절하기
스크롤바 조절하기(!)
TAB으로 이동되는 경로 설정하기(!)
엔트리박스(한줄짜리 입력상자)입출력 제어하기

IP,PORT 크기 판별하기
  ''       문자가 있는지 확인하기

IP,PORT 문자 제어하기..(IP사이에 점찍기 .; )등등...:wq

아니 윈도우 2개에다가 다이얼로그1개인 프로그램에 설정해야 할게 뭐 저렇게 많단 말입니까 ㅡㅜ..
(프로그램을 실행하기에 필요한게 아니라.. 사용자 편의를 위해서 들어간게 꽤나 많죠 저기)
5일 동안 했는데 아직 윈도우 디자인도 차마 완벽히 못끝낸 상태입니다 ㅡㅜ...
게다가 함수명도 더럽게 길어서...

ex>
gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(text),marks,0.0,FALSE,0.0,0.0);

와 정말 깁니다. C로 객체지향 할려고 하다보니 저렇게 된 모양인데...
아무리 그래도 너무 합니다. 게다가 중간중간에 언더바(...) 타입케스팅은 대문자(...)
대체 시프트키를 얼마나 많이 써야하는지...
대신 함수가 어떤 기능을 하는지 확실하게 알수 있지만요( 무슨 함수인지 설명할 필요가 없죠?)

그리고.. 앞에서도 적었지만은...gtk에는 Callback이라고 VB의 이벤트 비슷한게? 있습니다
그런데.. 그  callback을 넘기는 함수가 포인터 인자를 1개바께 못받게 고정되있어서..
구조체를 계속 만들어 주기 상당히 귀찮습니다.. 그래서 전 몇게는 걍 전역변수로...;;
(사실 따로 넘겨줄려고 하다가 몇개 시도하고는 귀찮아서 포기한)

정말.. GTK는 뭐랄까.. 상당히 복잡하달까...
뭐 이러는것도 일부로 사서 삽질하는 거지만요.. 초반에 부터
glade쓰면 편하긴 하지만.. 일단 대충 개념을 숙지하기 위해서...

하지만 좋은점도 있습니다..
C만 알아도 하는데 전혀 어렵지 않다는것...
몇개 개념적인것만 이해한다면..그냥 함수들이나 배우는거죠 뭘..
(따지고보면 배운다기보다.. copy & paste...하고 계속 그짓? 하다보면 개념이 인식?되는. 쿨럭.;; )
하나더..C에서 지원하는 함수도 사용할수 있다는점도 있겠네요

'Programming > GTK+' 카테고리의 다른 글

vte를 이용한 간단한 터미널  (2) 2007.01.14
libglade 컴파일법  (1) 2006.12.14
(초보) gtk 작성팁  (10) 2006.08.04
GTK_TEXT 에러..해결책  (4) 2006.07.30
Glade! 리눅스 GUI 프로그래밍 툴  (0) 2006.07.18
prev 1 2 3 next