검색결과 리스트
프로그래밍/Gtk+/binding gtk에 해당되는 글 4건
- 2011.11.15 본격 Gtk에서 Cairo 사용하기
- 2011.11.03 gtkmm 예제 프로그램
- 2011.11.02 gtkmm! Anjuta!
- 2011.06.09 gtkbuilder의 사용
글
본격 Gtk에서 Cairo 사용하기
프로그래밍/Gtk+/binding gtk
2011. 11. 15. 23:11
예제 소스 참조한곳 주소 => http://zetcode.com/tutorials/cairographicstutorial/basicdrawing/
결과창
선긋는 예제인듯.
난 저중에서 소스를 일부를 뽑아내서
라는 함수를 만들었다.
mx, my가 시작위치 lx, ly 가 끝위치로해서 선을 긋는 함수다. 물론 cairo_t 타입으로 cr이라는 변수가 선언되어있어야한다.
마우스가 눌리면 전역변수 x,y값에 마우스가 누른 좌표값을 넣고, 마우스가 떼어지면 함수를 이용해 drawline함수를 사용해서 선을 그어보고싶었지만 마우스를 누르고떼는 이벤트와 그 값이 넘어가는 방식을 몰라서 막혔다. 국내에 Gtk, Cairo로 무언가 만들어본사람의 조언이있으면 좋을텐데... 예제파일이랑 영문문서를 찾아야하는건가... @.@...
#include <cairo.h> #include <gtk/gtk.h> static gboolean on_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data) { cairo_t *cr; cr = gdk_cairo_create (widget->window); cairo_set_source_rgba(cr, 0, 0, 0, 1); static const double dashed1[] = {4.0, 1.0}; static int len1 = sizeof(dashed1) / sizeof(dashed1[0]); static const double dashed2[] = {4.0, 1.0, 4.0}; static int len2 = sizeof(dashed2) / sizeof(dashed2[0]); static const double dashed3[] = {1.0}; cairo_set_line_width(cr, 1.5); cairo_set_dash(cr, dashed1, len1, 0); cairo_move_to(cr, 40, 30); cairo_line_to(cr, 200, 30); cairo_stroke(cr); cairo_set_dash(cr, dashed2, len2, 1); cairo_move_to(cr, 40, 50); cairo_line_to(cr, 200, 50); cairo_stroke(cr); cairo_set_dash(cr, dashed3, 1, 0); cairo_move_to(cr, 40, 70); cairo_line_to(cr, 200, 70); cairo_stroke(cr); cairo_destroy(cr); return FALSE; } int main (int argc, char *argv[]) { GtkWidget *window; GtkWidget *darea; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); darea = gtk_drawing_area_new(); gtk_container_add(GTK_CONTAINER(window), darea); g_signal_connect(darea, "expose-event", G_CALLBACK (on_expose_event), NULL); g_signal_connect(window, "destroy", G_CALLBACK (gtk_main_quit), NULL); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_window_set_default_size(GTK_WINDOW(window), 250, 100); gtk_widget_show_all(window); gtk_main(); return 0; }
결과창
선긋는 예제인듯.
난 저중에서 소스를 일부를 뽑아내서
void drawline(mx, my, lx, ly)
{
cairo_set_source_rgba(cr, 0, 0, 0, 1); // color setting
cairo_set_line_width(cr, 1); // line width setting
cairo_move_to(cr, mx, my); // start point
cairo_line_to(cr, lx, ly); // end point
cairo_stroke(cr); // draw?
}
라는 함수를 만들었다.
mx, my가 시작위치 lx, ly 가 끝위치로해서 선을 긋는 함수다. 물론 cairo_t 타입으로 cr이라는 변수가 선언되어있어야한다.
마우스가 눌리면 전역변수 x,y값에 마우스가 누른 좌표값을 넣고, 마우스가 떼어지면 함수를 이용해 drawline함수를 사용해서 선을 그어보고싶었지만 마우스를 누르고떼는 이벤트와 그 값이 넘어가는 방식을 몰라서 막혔다. 국내에 Gtk, Cairo로 무언가 만들어본사람의 조언이있으면 좋을텐데... 예제파일이랑 영문문서를 찾아야하는건가... @.@...
'프로그래밍 > Gtk+/binding gtk' 카테고리의 다른 글
gtkmm 예제 프로그램 (0) | 2011.11.03 |
---|---|
gtkmm! Anjuta! (0) | 2011.11.02 |
gtkbuilder의 사용 (0) | 2011.06.09 |
글
gtkmm 예제 프로그램
프로그래밍/Gtk+/binding gtk
2011. 11. 3. 13:09
#include <gtkmm.h>
#include <iostream>
#include "config.h"
#ifdef ENABLE_NLS
# include <libintl.h>
#endif
Gtk::Window* main_win = 0;
/* For testing propose use the local (not installed) ui file */
/* #define UI_FILE PACKAGE_DATA_DIR"/gtk_test_1/ui/gtk_test_1.ui" */
#define UI_FILE "src/gtk_test_1.ui"
Glib::RefPtr<Gtk::Builder> builder;
Glib::ustring id;
Glib::ustring pass;
Gtk::Entry* idbox = 0;
Gtk::Entry* passbox = 0;
void destroy()
{
exit(0);
}
void debug_on_console()
{
printf("successed debug\n") ;
}
void test()
{
if(idbox)
{
id = idbox->get_text();
}
if(passbox)
{
pass = passbox->get_text();
}
if(id == "1234" && pass == "1234")
{
Gtk::MessageDialog dialog(*main_win,"로그인 성공!",false);
dialog.run();
}
else
{
}
}
int
main (int argc, char *argv[])
{
//pair < int , int > ttwa ;
Gtk::Main kit(argc, argv);
//Load the Glade file and instiate its widgets:
try
{
builder = Gtk::Builder::create_from_file(UI_FILE);
}
catch (const Glib::FileError & ex)
{
std::cerr << ex.what() << std::endl;
return 1;
}
builder->get_widget("main_window", main_win);
builder->get_widget("pwbox", passbox);
builder->get_widget("idbox", idbox);
if (main_win)
{
Gtk::Button* btnexit = 0;
Gtk::Button* btnok = 0;
Gtk::Button* btnclose = 0;
builder->get_widget("btnexit", btnexit);
if(btnexit)
{
btnexit->signal_clicked ().connect(sigc::ptr_fun (&destroy));
}
builder->get_widget("btnlogin", btnok);
if(btnok)
{
btnok->signal_clicked ().connect (sigc::ptr_fun(&test));
}
kit.run(*main_win);
}
return 0;
}
void testing()
{
printf("TEST");
}
Glade의 도움을 받아 UI를 작성하고 코드에서 불러오는 형태이다.
위에 나온거처럼 signal_type().connect(sigc::ptr_fun(&함수이름)); 의 형식으로 시그널과 함수를 이어주는 역활을 한다. 근데 이상하게 인자값이 존재하는 함수를 해봤을땐 에러가 나서 어떻게 값을 주고받지...하고 고민하다가 결국 Gtk::Entry와 Glib::ustring(Entry에서 텍스트를 뽑아오는 함수 get_text()의 리턴값이 Glib::ustring 이다)을 전역변수로 사용하는 길을 택했다.
기능은 login버튼을 눌렀을때 맨위 상자에 1234, 두번째 상자에도 1234라는 값이 있으면 다이얼로그를 띄우는 형식이다.
Glade의 도움을 받아 UI를 작성하고 코드에서 불러오는 형태이다.
위에 나온거처럼 signal_type().connect(sigc::ptr_fun(&함수이름)); 의 형식으로 시그널과 함수를 이어주는 역활을 한다. 근데 이상하게 인자값이 존재하는 함수를 해봤을땐 에러가 나서 어떻게 값을 주고받지...하고 고민하다가 결국 Gtk::Entry와 Glib::ustring(Entry에서 텍스트를 뽑아오는 함수 get_text()의 리턴값이 Glib::ustring 이다)을 전역변수로 사용하는 길을 택했다.
기능은 login버튼을 눌렀을때 맨위 상자에 1234, 두번째 상자에도 1234라는 값이 있으면 다이얼로그를 띄우는 형식이다.
'프로그래밍 > Gtk+/binding gtk' 카테고리의 다른 글
본격 Gtk에서 Cairo 사용하기 (0) | 2011.11.15 |
---|---|
gtkmm! Anjuta! (0) | 2011.11.02 |
gtkbuilder의 사용 (0) | 2011.06.09 |
글
gtkmm! Anjuta!
프로그래밍/Gtk+/binding gtk
2011. 11. 2. 19:21
C++로 바인딩된 Gtk언어 gtkmm.
C++공부삼아 해보기로 결심했다.
Class, Public, Protected, Private, Vitual... 객체지향의 개념이 추가된 C...라는 느낌이기보단 C랑 많이 다르다는 느낌이 들었다.
Virtual이란 키워드... 가상함수? 자바의 abstract 과 비슷한 키워드인듯 하다.
Anjuta IDE라는 gtk개발툴. 몇개월전만 해도 별로였던거 같은데 제법 쓸만한 툴이 되었다.
glade랑 통합되어서 UI는 비주얼스튜디오의 도구상자처럼 Label이나 Button을 끌어다 디자인을 할 수 있다.
그다음 소스코드에서 불러와서 사용하면 끗!
제법 쓸만한 툴이 생긴거 같아서 기쁘다.
열심히 개발해야징 히힛.
C++공부삼아 해보기로 결심했다.
Class, Public, Protected, Private, Vitual... 객체지향의 개념이 추가된 C...라는 느낌이기보단 C랑 많이 다르다는 느낌이 들었다.
Virtual이란 키워드... 가상함수? 자바의 abstract 과 비슷한 키워드인듯 하다.
Anjuta IDE라는 gtk개발툴. 몇개월전만 해도 별로였던거 같은데 제법 쓸만한 툴이 되었다.
glade랑 통합되어서 UI는 비주얼스튜디오의 도구상자처럼 Label이나 Button을 끌어다 디자인을 할 수 있다.
그다음 소스코드에서 불러와서 사용하면 끗!
제법 쓸만한 툴이 생긴거 같아서 기쁘다.
열심히 개발해야징 히힛.
'프로그래밍 > Gtk+/binding gtk' 카테고리의 다른 글
본격 Gtk에서 Cairo 사용하기 (0) | 2011.11.15 |
---|---|
gtkmm 예제 프로그램 (0) | 2011.11.03 |
gtkbuilder의 사용 (0) | 2011.06.09 |
글
gtkbuilder의 사용
프로그래밍/Gtk+/binding gtk
2011. 6. 9. 22:59
gtk+.. 이거 그냥 일일히 설정하기엔 코드도 길어지고 복잡하고... 아무래도 glade라고 GUI로 끌어와서 .glade라는 xml형식의 파일을 만든다음 불러와서 파싱해서 위젯으로 쓰는 방식인듯 하다.
어떻게 하는건지 역시 한국어 문서가 적다는 점이 날 괴롭게 했다....(이래서 영어를 배워야하나봐...)
아무튼 열심히 구글의 문을 두들기다보면 나오지 않는 정보는 없는법 결국 어떻게든 찾아서 사용방법을 알아냈다
GtkBuilder = *builder
builder = gtk_builder_new();
gtk_builder_add_from_file(builder,"file.glade",NULL)
먼저 builder 라는 이름으로 변수를 생성한뒤 그 변수에 gtk_builder_new() 값을 넣는 것처럼 넣고 세번째 줄에서는 함수의 이름 그대로 파일로부터 값을 받아온다. 세번째 패러미터는 error값을 의미하는데 GError 타입의 변수를 선언해 error를 받아올 수 있는것 같다. 첫번째는 값이 들어갈 GtkBuilder 타입의 변수, 두번째는 파일 이름이다.
잡소리지만 Java나 C#에서 쓰이는 객체지향에서 객체를 저런식으로 포인터로 할당한다고 들었다. 그렇다면 위에 두줄은 GtkBuilder builder = new GtkBuilder(); 라는 의미(실제로 이렇게 쓰이는 건 없을듯 하지만)를 지니고 있는게 아닌가 싶어졌다.
어떻게 하는건지 역시 한국어 문서가 적다는 점이 날 괴롭게 했다....(이래서 영어를 배워야하나봐...)
아무튼 열심히 구글의 문을 두들기다보면 나오지 않는 정보는 없는법 결국 어떻게든 찾아서 사용방법을 알아냈다
GtkBuilder = *builder
builder = gtk_builder_new();
gtk_builder_add_from_file(builder,"file.glade",NULL)
먼저 builder 라는 이름으로 변수를 생성한뒤 그 변수에 gtk_builder_new() 값을 넣는 것처럼 넣고 세번째 줄에서는 함수의 이름 그대로 파일로부터 값을 받아온다. 세번째 패러미터는 error값을 의미하는데 GError 타입의 변수를 선언해 error를 받아올 수 있는것 같다. 첫번째는 값이 들어갈 GtkBuilder 타입의 변수, 두번째는 파일 이름이다.
잡소리지만 Java나 C#에서 쓰이는 객체지향에서 객체를 저런식으로 포인터로 할당한다고 들었다. 그렇다면 위에 두줄은 GtkBuilder builder = new GtkBuilder(); 라는 의미(실제로 이렇게 쓰이는 건 없을듯 하지만)를 지니고 있는게 아닌가 싶어졌다.
'프로그래밍 > Gtk+/binding gtk' 카테고리의 다른 글
본격 Gtk에서 Cairo 사용하기 (0) | 2011.11.15 |
---|---|
gtkmm 예제 프로그램 (0) | 2011.11.03 |
gtkmm! Anjuta! (0) | 2011.11.02 |