GLADE�� �����Ű�� ������ ������ �ٿ� ���� ������ â�� ���. ������� �̷� ��Ȳ���� ������ ���� �ܰ躰 �������� ������ ���ǵ� ����� ���� �ؽ�Ʈ ������ �����ϴ� ����� ���ǵ��� �Ѵ�:
�켱 �ؽ�Ʈ �������� ������ �Ǵ� â�� ������ �Ѵ�. ������ ���� �ȷ�Ʈ �����쿡�� ���� ���� ���� ����� ������ Ŭ���ؼ� ���� �� �ִ�.
���� ���� ���� ���� ���� â�� ��´�. �� ���� �ڼ��� ���� �缱 ���ڵ��� ������ ȸ������ ���� �ִ� ���� �� �� �ִ�. �̷� ǥ�ô� �����ε� ���������� ���𰡸� ���� �� �ִ� ���̶�� ����̴�. ��ġ ������ �ٹ��� ����� ��� �ø��� ��Ÿ���� ������ �缱�� ���� ���̶�� ������ �� �ְڴ�.
������ ����� �ʿ��� �������� �ٿ��� �ǰڴ�. ���� �ʿ��� �͵��� �����غ��� ��, ����, �ؽ�Ʈ �ڽ�, ���� ���� �ٰ� �ְڴ�. �̰��� �׳� �ϳ��� �ϳ��� ���� �� ������. �ٷ� ���� ���� �ڼ��� ���� ���� �� �ִ� ������ �κ��� Ŀ�ٶ����� ��ȹ�� �������� ���� �ʴ�. �� �ϳ��� ��ü���� ���� �� �ִٴ� ��Ⱑ �ȴ�. ���Ƿ� ��� �ؾ� �� ��?
���� ������ ����� �� �ִ�, ���� ���� ���� ���� �ڽ���� ������ ����ϸ� �ȴ�. �̰��� ���̸� �� �� ���� �������� ���� ������ ��ȹ�� ����� �Ǿ� �������� �������� ���� �� �ְ� �ȴ�.
�̰��� Ŭ���ϸ� ���콺�� ���ڰ� ������� �ٲ��. �� �� �� ���콺 Ŀ���� ���� �����쿡 ��� Ŭ���ϸ� ���� ���� ���� �� ���� ���� �ڽ��� ���� ���ΰ��� ���� ��ȭ���ڰ� ��Ÿ����.
���⼭ �츮�� 4�� �Է�����. �ֳĸ� ���� â�� ���̰��� �ϴ� ��ü�� 4���̱� �����̴�. OK�� ������ ������ ���� ���� â�� ��� ���ҵǾ� ��Ÿ�� ���̴�.
�� ������ �� �װ��� ��ȹ �������� ����, ����, �ؽ�Ʈ �ڽ�, ���� ���� �ٸ� �ٿ� ������ ����. ���� ���ٸ� ���̷��� ���� ���� ���� ���� ���� widget�� ���� �ȷ�Ʈ �����쿡�� Ŭ���Ͽ� �����Ѵ�.
���� ���� â �� ��ȹ �� ���� ���� �ִ� ��ȹ�� Ŭ���Ѵ�. ���� ���� ȭ���� ������ ���� ���Ѵ�.
�̰��� �ڼ��� ���� �������� �߶��� �ִ� �κ��� 3���� �پ�� ���� �� �� �ִ�. ���� ���� �ֻ�ܿ� ���� �� �κ��� �������� �ƴ� ���� ���� �� �� �ִ�. ���� �̺κ��� ���� �� ���� ������ �ʴ�. �ֳĸ� ������ ���� �Է����� �ʾұ� �����̴�. ���ٸ� ���� ���� �־� ����.
���� �������� ���� ���� ���� ���� Ŭ���ϸ� ������Ƽ �����찡 ���� ��ó�� ��Ÿ����. �̰��� �ڼ��� ���� �ٸ� ������ Ŭ���ؼ� ������ ���ʹ� �ٸ��� �� ����(Edit Menus...)�̶�� ��ư�� �ϳ� �� �ִ�. �̰��� Ŭ������.
���� ������ �� �� 5�� ���� ȭ���� ���. ��� ���� ��ó�� �����ؼ� �ֵ��� ����. �� ��� �⺻������ �����Ǵ� Stock Item�� ����ؼ� ���� ���̴�. ���� Add ��ư�� ������ �ϳ��� �������� ���� �ڿ� Stock Item �� �ڽ��� Ŭ���ؼ� �̸� ���õ� �������� �����ϸ� ���� ���� ������� ���� ���ϴ� ������ �ٲ��. ���� Name�� �ѱ۷� ���� ���, �̰��� ���߿� �˰� �ǰ����� �ҽ� ���� �� �ҽ� ���ο��� ��� �����ų� ���ٷ� ǥ��Ǿ� ���� ���� �� �ȴ�. �� ���� Name�� ������ ������ �ٲ���. �� ���ο��̶�� New���� �ٲ���. ���� �ڵ����� �� �Ʒ��� �ִ� Handler�� �ٲ��. ���� ����. ���� ���� ����Ʈ â�� �ִ� Label�� �ش��ϴ� �͵��� �� �Ʒ��� �ִ� ���⼺ �ִ� ȭ��ǥ ������ ����Ǵ� �����ν� ���� ���� �� ���� ������ �ٹ� �� ���ȴ�.
�� ������ ���� �����쿡 ���� ���� ���� ���� �ȷ�Ʈ�� �ִ� ���� ������ �ٿ� ������ ����.
�̰��� Ŭ���ϸ� ���콺 Ŀ���� ���ڰ� ������� ���Ѵ�. �̰��� �츮�� ���ϴ� ��ġ�� ������ �ι�° ĭ�� ���� Ŭ���Ѵ�. ���� ������ ���� ��� ���ٸ� ���ϴ°��ϴ� ��ȭ ���ڰ� ���.
��� ���ϴ� ����(�� ���� 4��)�� �Է��ϰ� OK�� Ŭ���ϸ� ���� �� ó�� �ι�° ���� 4���� ���ο� �������� ���� ������ ����Ǵ� ���� �� �� �ִ�.
�� ������ �� ���� ���� ���� 4���� �����ǿ��� ���ٹ�ư���� ���� �־�� �Ѵ�. ������ ���� ���� ���� ���� �ȷ�Ʈ���� ��ư ������ �����ؾ� �Ѵ�.
�̰��� ������ �� ���콺�� ���� ������ �ι�° �� ù��° ���������� ���� ���� Ŀ���� ���ڰ� ������� ���Ѵ�. �̰��� Ŭ���ϸ� ������ ���� ���� ȭ���� ���Ѵ�.
�� �� ����� ������Ƽ �����츦 �ڼ��� ���� Icon ���� �Ʒ��� ����Ű�� ���ڽ� ��ư�� �ִ�. �̰��� ������ ������ ���� �̸� ���ǵ� Stock Icon���� ���´�.
��� ���̴� �� ������ �Ʒ��� ��ũ�� �ϸ� ���� ���� ���� �����ܵ��� �غ�Ǿ� ������ ��� ���̴�. �� �߿� �ϳ��� ��������. ���� ������Ƽ���� Label �κ��� �����ܿ� ���߾� �ٲٵ��� ����.. ������ ������ ������ �����ǵ鿡 ���ϴ� ���� ������ �ǰڴ�. ���� ���� ���� ���� ���� ��´�.
������ ����° ��� ������ ���� ���� �ȷ�Ʈ �����쿡 �ִ� �ؽ�Ʈ �ڽ� ������ �����Ͽ� �ٿ� ������ ����.
�̰��� Ŭ���� �� ���콺�� ���� ���� ������ ����° ������ �ű�� Ŀ���� ���ڰ��� �ٲ��. Ŭ������ ���� ���� ��ó�� ���� �����찡 ���Ѵ�.
���� ������Ƽ �����츦 ���� Editable�� ����Ʈ�� No���� �Ǿ� �ִ�. �̰��� Yes�� �����ؾ߸� ���߿� �ؽ�Ʈ�� �Է��� �� �ִ�. ���� ��ü���� ũ�Ⱑ ������ ���� ���� �� �ִ�. ���� ������ ���� ũ�⸦ �����ϴ� �ͺ��� �ٱ� ���� �������� ũ�⸦ �����ϴ� ���� ����. ���� �� ó�� ���� �������� ũ�� �Ӽ��� �����ϵ��� ����. ���� ���߿� ���� ����� �̿� ������ ���̸� ������ �� ���� �����찡 ǰ�� �ִ� ��ü���� ũ��� �����ϰ� ��е� ���̴�.
�� ������ ���������� ���� �����쿡 ���� ���� ���� ���� �ȷ�Ʈ �����쿡 �ִ� ���¹� ������ �����ؼ� ���¹� ������ �ٿ� ������ ����.
�̰��� ������ �� ������ ���� ������ ���� ���콺�� �������� ���������� ���ڰ� ������� Ŀ���� ����ȴ�. Ŭ���ϸ� ������ ���� ���� �����찡 ���Ѵ�.
�̷ν� �츮�� ���� �����츦 ����� �� ���� ��� GUI ��ü���� ���̰� �ణ�� ������ �غ��Ҵ�. ���? �������� �ʴ°�. ������ ���� �� ó�� GLADE�� File���� �ִ� Save�� �����غ���.
���� ���� ���� ���� Project Options��� ��ȭ���ڰ� ���. ��� ������ ���� �Է��ϰ� OK�� ������ ������Ʈ�� ����ȴ�. ��, ������ ���δ� C�� �����ϵ��� ����.
���� ������ �� File ���� Build Source Code��
�����ϸ� ���� ������ ������ �ҽ��� �����ȴ�. ���� ������Ʈ�� �����ϴ�
������ ������ ���丮�� ������ src
��� ���丮�� �ִ� ��
��� ��� �ҽ��� �����ȴ�. �ƽ��Ե� �ٷ� ������ Ŭ���ؼ� ������ �ҽ���
������ ���� ������ ����� ����� ���� ����. ���� ��¿�� ���� ����
���ؼ� ���� ������ ������ۿ� ����. ������Ʈ�� ��Ʈ ���丮�� ls��
����غ��� ��� ���õ� autogen.sh
�� �����ϸ� ȯ�� ������
�̷������.
ls
���ɰ� autogen.sh
���� ȭ��
���� ���� make
�� �����ϸ� ���ϴ� ���� ������ ���� �� �ִ�.
make
�� ����� src
�� ������Ʈ �̸��� ���� ���� ������
����� ���̴�. �̰��� ������ ����� ������ ����.
���� �����غ���. ���� �ϵ��� ������ ���� �ִ� �ݱ� ��ư�� ������ �츮�� ���� ���ø����̼��� ���� �ʴ´�. �ƻԻ�. �츮�� �һ���� ���� ���̴�. ���� �� �һ���� �������� ����. ������ ������ ����� GTK Ʃ���� ���ǿ� �ִ� �ñ׳��� �˾ƾ� �ϰ� ���� �⺻���� delete_event��� �ñ׳��� �˾ƾ� �Ѵ�. �̰��� �ٸ� ���� �ƴϰ� ���� ������ close ��
�̰��� â�����ڰ� ���� ���� ���Ѵ�. �̰��� �츮�� ���� ���ø����̼��� ���� �ٸ����� �����ϰų� title bar���� �ݱ⸦ �����ϸ� X ������ �����ڰ� ���� ���Ͽ��� ���ϴ� �̺�Ʈ�̴�. �̰��� �Ƽ� ó���Ϸ��� ���� ���� ���� ���� �������� ������Ƽ �������� ���� �ǵ� �߿��� �ñ׳� �ǿ��� �ñ׳� �ڵ鷯 �̸��� �Բ� ������־�� �Ѵ�.
window1
�� delete_event
���� ���� ���� ���� ��ϵ� ���̴�.
���⼭ �츮�� �ڵ����� �ñ׳� �ڵ鷯 �̸���
on_window1_delete_event
�� �Ǵ� ���� �� �� �ִ�. �̰��� �״��
����. �̰ͱ��� ���� ������ ���� �ҽ��� �ñ׳ΰ� �ñ׳� �ڵ鷯��
��������ִ� �ͱ����� GLADE�� ���ִ� ���̴�. �� ���� ����
����ó�� �ҽ��� �����غ���. ���� �� �ñ׳�
�ڵ鷯 �ȿ��� �츮�� �ؾ� �� ���� �غ����� ����. �ٸ� ���� �ƴϰ� ������
���� src/callbacks.c
�ȿ� �ִ� ����
on_window1_delete_event
�Լ� ���ο� ������ ���� �Է��ϸ� �ȴ�.
gboolean on_window1_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { gtk_exit( 0 ); return FALSE; }������
make
�ϰ�(�ٽ� autoget.sh
�� ������ �ʿ��
����. ���� �ѹ� �ҽ��� ������� ������ make
�� ��� �ڵ尡
�������ϵ� ���̴�) �����غ����� ����. ���� �����ϸ� ����� ����� ���̴�.
������ �츮�� GLADE �� �۾� ����� �Ǵ� ��ü�� ��, �Ǵ� ���ø��̶�� �θ���. ���� ���� ����� ���� ����� �� ����� �Ӽ���� �θ���� ����. ���� �� ���� ������ �� ���� ���� ������ �۾��ϸ� ���� �������� � � ȿ���� ��Ÿ�� ���̴ٶ�� ������ ǥ���ϱ�� ����.
���� gnome ���α����� ǥ��ȭ�� ������� ���´�. �� �߿����� ��, ����, ���¹�, ���� about ��ȭ ���ڰ� �ε巯����. ���� �ٸ� �͵� �ִ�. ���� ��� ����ǥ ��ȭ ����, ���� ���ñ�(���������� File Open, Save, Save As�� ����) ���� �װ��̴�. �츮�� ���⼭ about ��ȭ ���ڸ� ����� �̰��� �־� ������ ����.
��ȭ ���ڸ� ���� �� GTK+�� �����ϴ� ��ȭ���� ������ �״�� ����ؼ� �� ���� �ٸ� ���� �������� �ٿ��� ���� �ǰ�, gnome�� �����ϴ� ������ ���� ������ ����Ͽ� �� ���� ���� ���� �ִ�. �츮�� �̰��� ���غ����� ����.
�̰��� �����ϸ� ������ ���� ��ȭ���ڰ� ��Ÿ����.
�츮�� �� ��, ���� ���� ������Ƽ �������� Copyright, Author, Comments, ���� Logo�� �ٲپ �� about ��ȭ���ڸ� ������� ������ ����. ���� Copyright�� Author, Comments�� ���� ��ó�� �����Ѵ�.
���� �Ȱ��� �غ��ø� �˰����� �̵� ������ �������� ��ȭ������ ��ü ũ�� ���� �ڵ����� �þ����� �پ����� �Ѵ�.
���� ���������� Logo�� �����غ����� ����. �̷��� �Ϸ��� Logo ���� �����ڽ��� ���� �н��� �Է��ص� �ǰ� �� ���� �ִ� �������� Ŭ���ؼ� ���� ���� ��ȭ���ڸ� �ҷ� �̰��� ���ؼ� �����ص� �ȴ�.
�� ���� ������Ʈ�� �����Ѵ�.
������Ʈ�� ������ �� �ҽ��� ����� �ٽ� make
�� �ص� �츮��
�̻��� ����� ������. �� ���� ������� ����
���� ���� about ��ȭ���ڰ� ���ÿ� Ƣ�� ���´ٴ� ���̴�.
��� �ϸ� �ǰڴ°�? ������� �츮�� ��ġ �ʴ� �̷� ���� �����ϴ�
�ڵ尡 ���� ���̴�. �ٸ� �ƴ� main.c
�� main()
�Լ�
���̴�. ���ٸ� �̰��� ���� ���� �� ������ ���� ����(������ �ǰ� C
commentó�� ���Ƶ� �ȴ�.)
GtkWidget *about1; ....... about1 = create_about1 (); gtk_widget_show (about1);
���ϴ� ��� about ��ȭ���ڰ� ���� ������ �������� ���� �ߴ� ����
��������. ���� ������ ���´�. ��� ���� ��� ��, ����ڰ� ����
���ٸ� ���ؼ� about�� ������ ��� �츮�� about ��ȭ���ڸ� ���� �����
�����ΰ�? ������ ���� �ڵ带 ��� �ִ� �� About�� ���� �ڵ鷯
on_About_activate
(callbacks.c
�� ����) �ȿ� �־� �ָ�
�ȴ�.
GtkWidget *about1; about1 = create_about1_dialog (); gtk_widget_show (about1);������ ������ �ڵ��̴�. �̰��� ���ϴ� ���� �ű�ų� �ٸ�����. �� ������Ʈ�� �����ϰ�
make
�� �� ���� ������ ����� Ȯ���غ���.
About ��ư�� ������ ��쿡�� �̿� ������ ȿ���� �������� ���� ��������
���ٿ��� About ��ư�� ������ �� ������Ƽ �������� �ñ׳� �ǿ��� ����
���� �ñ׳� �ڵ鷯�� �������(���� �� ����). ���� ���� �� �ڵ鷯
�ȿ� ���� ������ �ڵ带 �־� �ָ� �ȴ�(�ƴϸ� ���� �Լ��� ����� �̸�
ȣ���ص� �ǰ�).
���� �� ���� ����� ����ȴ� �ϴ��� �̻��� ���� �ִ�. �� �츮��
�־��� �ΰ��� ����� ��µ��� �ʴ´ٴ� ���̴�. �� ����?
GLADE�� ��������� ���ø����̼��� pixmap ���丮�� ����Ʈ��
"/usr/share/pixmaps" �Ʒ� ���ø����̼� �̸����� �����Ѵ�. ��Ȯ�ϰ�
���ϸ� gnome-config --datadir
�� �������
��
�̰��� �밳 "/usr/share" �̴���� "pixmaps" �� ���ø����̼� �̸��� ������ ���� �ΰ� �� �� ������ ����Ǵ� ��ġ�� �ȴ�.
���Ƿ� ����ڰ� ���縦 �ϵ��� �ƴϸ� ��Ʈ �������μ� make
install
�ϸ� �ΰ� �� �� ���ϵ��� ���� ���丮��
�����Ѵ�. ���� ��� �ִ� ������ ���Ǿ� About ��ȭ������ ����
���̰� �� ���̴�.
�̷��� �ؼ� ������� about ��ȭ���ڴ� ����ڰ� ���� ���ٸ� ���ؼ� ��� �� �ִ�. ���� �� ��ȭ������ Ȯ�� ��ư�� ������ �������� ���� �� �ִ�.
���� ���� ���� ���� ��ȭ���� ������ "���� ������"-"GTK+ Basic �г�" ���� Ŭ���ϸ� ������Ʈ�� �߰��ȴ�.
�̷��� �ϸ� �ڵ�����
"src/interface.c"�� create_fileselection1
���
�Լ��� ����� ��� ok_button1
�� cancel_button1
��ư���� ������� �ٿ�����.
�� ��ȭ���ڰ� ������ ����� �䱸�� ���ؼ� ȭ�鿡 ���÷��̵ǵ��� �����Ϸ��� ������ ���� ����.
���� ������ ������ ���� ��������. ���� ������Ƽ �������� Widget �ǿ� Edit Menus... ��� ��ư�� ���� ���̴�. �̰��� Ŭ���Ͽ� Menu Editor �����츦 �θ� �� File ���� Open ���� ���� ���� �ڵ鷯 �̸��� Ȯ���Ѵ�. �밳 on_Open_activate �� ���̴�. �츮�� �� �ڵ鷯
callbacks.c �� �ִ��ȿ� file open ��ȭ ���ڸ� �θ��� �ڵ带 �־�� �Ѵ�. ������ ���� ����.
void on_Open_activate ( GtkMenuItem *menuitem, gpointer user_data) { /* �߰� ���� */ GtkWidget *open_file; open_file = create_fileselection1(); gtk_widget_show (open_file); /* �߰� �� */ }
���� �������� Open ��ư�� Ŭ���Ͽ� ������ �� �Ӽ� �������� Signals �ǿ��� clicked �ڵ鷯�� ����Ѵ�. ���� Build ��ư�� ������. ���� callbacks.c �� �ش� �ڵ鷯 �Լ��� �ٵ� �߰��� ���̴�. �밳 Open ��ư�� ���ٿ��� �ι�°�̹Ƿ� on_button2_clicked()
�̰͵� callbacks.c �� �ִ��� �� ���̴�. ����� ���� ��� ���� �� ������ �߰�����.
���� Open ��ư�� Ŭ���� ������ ������ ���� ���� ���� ��ȭ���ڰ� ���� ���̴�.
�� ������ �� ��ȭ ���ڿ� �������̽��� �ؾ� �Ѵ�. ����ڰ� Ȯ�� ��ư�� ������ �Էµ� ������ �������� ��ȭ���ڸ� �����ϸ�, ��� ��ư�� ������ �׳� ��ȭ���ڸ� ��������.
�� ���� �� ��ư �ñ׳� �ڵ鷯���� ����غ���.
gtk_file_selection_get_filename
(GTK_FILE_SELECTION(
widget_pointer)))
�� ���ϰ���
���ڿ��̴�.void *
�� ���ϴ� gpointer �� ���� �� �� �ְ�
�� ��, �� �ñ׳� �ڵ鷯 �ʿ����� gpointer ���� ���� �´�. gtk_signal_connect_object
�� �� ���� �ִ�. �� �Լ��� �ٸ�
��ü�� �ݹ� �Լ��� �ñ׳� �ڵ鷯�� ������ �� ���ȴ�. ���� �� �Լ���
ǥ�� �Լ�(��: gtk_widget_show ��)�� �ñ׳� �ڵ鷯�� ������ �� �����ϴ�.
�� �Լ��� ��° �Ķ���ʹ� ����Ǵ� �ñ׳� �ڵ鷯�� ù��° �Ķ���ͷ�
���ȴ�.
���� ��ȭ����(���⼭�� fileselection1) ���ø��� ȭ�鿡 ������ ������ GLADE ���� �����쿡�� �ش� ��ȭ���ڸ� ����Ŭ���Ͽ� ȭ�鿡 ����. ���� ������Ƽ �����츦 ����, ��ȭ������ Ȯ�� ��ư�� ������ �� ��ư�� ���� ������Ƽ�� ������ ���̴�. �� ������Ƽ �������� �ñ׳� �ǿ��� ���� ��ó�� �ڵ鷯�� �߰�����. ���� Data �κп� fileselection1 �� �ֵ��� ����(���� �� ����). ���� gtk_signal_connect() �Լ� ��° �Ķ���Ϳ� �� ���� GLADE �� ���� ��
���� GLADE ���� �����쿡�� Build �� Ŭ���ؾ� �Ѵ��̴�.
���� interface.c �� ������ ���� ������ �߰����� Ȯ���� �� �ִ�.
gtk_signal_connect (GTK_OBJECT (ok_button1), "clicked", GTK_SIGNAL_FUNC(on_ok_button1_clicked), fileselection1);
��� ��ư �ñ׳� �ڵ鷯�� Ȯ�� ��ư �ñ׳� �ڵ鷯�� ����ϰ� ����ϵ� ������Ƽ ������/�ñ׳� ���� �ñ׳� �ڵ鷯 ��� ��(���� �� ����)�� Ŭ���Ͽ� gtk_widget_destroy() ��� ����(ǥ��, ����) �ڵ鷯�� �����Ͽ� �������. ���� Object �κп��� fileselection1 �� �ֵ��� ����(���� �� ����). �̷��� �ϸ� gtk_signal_connect() �Լ� ��ſ� gtk_signal_connect_object() ��� �Լ��� ����ϸ� �� �Լ��� ��° �Ķ���Ϳ� NULL �ƴ� ���� ���� �־��� ���� GLADE ��
���� GLADE ���� �����쿡�� Build �� Ŭ���ؾ� �Ѵ��ִ´�.
���� ���� ������ �� ���̶�� ����Ʈ�� ������ ���� ���� �ø� ���̴�.
���� interface.c �� ������ ���� ������ �߰����� Ȯ���� �� �ִ�.
gtk_signal_connect_object (GTK_OBJECT (cancel_button1), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), fileselection1);
��� ��ư�� ���� �״�� ���ξ ���������� Ȯ�� ��ư�� ��� �ñ׳� �ڵ鷯�� ���� �ڵ带 �߰��Ͽ��� ����ڰ� ������ �����ߴ����� �ľ��� �� �ִ�. ������ ���� �߰��ϸ� �ȴ�:
void on_ok_button1_clicked (GtkButton *button, gpointer user_data ) { /* �߰� ���� */ GtkWidget *open_file = (GtkWidget *)user_data; g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (open_file))); gtk_widget_destroy( (GtkWidget *)open_file ); /* �߰� �� */ }
�켱�� ���õ� ������ �ؽ�Ʈ�� �̳ο� ����ϴ� ������ �� ������ ��⸦ �������� ����. ���߿� �� ���� Ȱ���ϱ�� �ϰ�.
���� ���� ��Ʈ ���� ��ȭ���� ������ "���� ������"-"GTK+ Basic �г�" ���� Ŭ���ϸ� ������Ʈ�� �߰��ȴ�.
������ �� ���� ���� ��ȭ���ڿ� ���� ��� �鿡�� �����ϱ� ������ ���� �κ��� �����Ѵ�. ���� ����ڰ� Ȯ���̳� ������ ������ ��� ����ڰ� ������ ������ ������ �κ��� ���⼭ �ٷ��� �Ѵ�. �̷� ������ �ϴ� �Լ��� ���ϼ��ð��� �� 1���� �ƴ϶� 3������ �ִ�.
����°�� Ư���� ��쿡(���� ��� ����ڰ� ���� ���� �ؽ�Ʈ�� �����ϴ� ��� ��) ���� ������ ���δ�. ù��°�� �ι�°�� �Լ� �̸����� �������ִ� �ٿ� ����. �ٸ� ù��°�� GdkFont ������ �����ϰ� �ι�°�� �̸��� �����Ѵ�.
Ȯ�� ��ư�� ���ؼ� ���� ���ǿ��� �� �Ͱ� ����ϰ� �ϵ� ������ ���� ���� ��� ������ ��� �κ��� �߰�����.
void on_ok_button2_clicked (GtkButton *button, gpointer user_data) { /* �߰� ���� */ GtkWidget *font_select = (GtkWidget *)user_data; GdkFont *gdk_font = NULL; gdk_font = gtk_font_selection_dialog_get_font( GTK_FONT_SELECTION_DIALOG(font_select)); g_print ("type : %s\n", gdk_font->type == GDK_FONT_FONT ? "font" : ( gdk_font->type == GDK_FONT_FONTSET ? "fontset" : "unkonwn") ); g_print ("ascent : %d\n", gdk_font->ascent ); g_print ("descent : %d\n", gdk_font->descent); g_print ( "name = %s\n", gtk_font_selection_dialog_get_font_name( GTK_FONT_SELECTION_DIALOG(font_select)) ); gtk_widget_destroy( (GtkWidget *)font_select ); /* �߰� �� */ }
�� ��Ʈ ���� ��ȭ���ڸ� ���� ���� �ϳ� �߰��Ͽ� �� ��ȭ���ڸ� �������Ѻ���( �� �������� Ȱ������).
������ ����� ������ ����(������ �̳ο� ���� ������ �ָ�����).
�� ���� �ؽ�Ʈ ������ �����غ���. �⺻������ �ؽ�Ʈ ���� ���� ��ü�� �ؽ�Ʈ �Է� ���, �Էµ� �ؽ�Ʈ�� ���� ���, ����Ű �� �齺���̽� Ű ��� ���� �����Ѵ�. ���� Del Ű�� Ŀ�� �� ���� �ϳ��� ����� ���콺 ���� �� Del Ű�� ���õ� ������ ��� �����. �̰��� GtkText ��� �������� �����ȴ�. ���� �� ������ GtkEditable �������κ��� �°�� ���̴�.
���� ��� ����/�ڸ���/���̱� ����� �־���� ����.
�츮��
void gtk_editable_copy_clipboard(GtkEditable *editable);
�Լ���
����Ͽ� ���õ� ������ Ŭ������� ������ �� �ִ�. ���� ����/����
���� �������� �� �����Ǵ� �ñ׳� �ڵ鷯 on_Copy_activate() �ȿ� ������
���� ������ �־��.
gtk_editable_copy_clipboard( (GtkEditable *)gTextArea );
���� ���� GtkText �������� ���� ���� gTextArea �� ����ǰ� �츮�� ����
�����쿡 �ִ� �ؽ�Ʈ ������ ����Ű���� ���ǵǾ� �־�� �Ѵ�. ���Ƿ�
callbacks.c �� GtkText *gTextArea
��� ���� ����
������ �Ѵ�. ���� callbacks.c �� focus_in_event �ñ׳ο� ���� �ڵ鷯��
����� �� �ȿ� ������ ���� �ڵ带 �߰�����
interface.c �� ����
���������� �����ϰų� �� �������� �ʱ�ȭ�� �ִ´ٸ� ������ �� �� �ִ�.
�ֳĸ� GLADE �� interface.c �� �밳 �Լ� ��ü �ڵ尡 ��� �ִ�
create_
xxx �� ���� �Լ����� �ְ� �̴� �����ڰ� GLADE
���� �������� Build �� ���� ���� ������ ���ŵǾ� ������ Ŀ��������
�ڵ尡 ���ǵDZ� �����̴�. ��� callbacks.c �� �ִ� ������� �ַ� �ñ׳�
�ڵ鷯���̸� interface.c �� ���ؼ� ���ǵǴ� ���� ���� ����. ���� ����
GLADE �� Build �� ���ؼ� �ҽ��� ���� ���ŵ� ��, ������ ���� �ʴ� ����
�ʿ�� �Ѵٸ� callbacks.c �� �ִ� ���� ���ڴ�. ���� ���� �ϴ� �����
���� ������ ��� �Ѵٸ� Build ���� �ʴ� �������� �ص� ����.
:
gboolean on_text1_focus_in_event(GtkWidget *widget, GdkEventFocus *event, gpointer user_data) { /* �߰� ���� */ g_print( "on_text1_focus_in_event() start\n" ); if ( gTextArea == NULL ) gTextArea = (GtkText *)user_data; /* �߰� �� */ return FALSE; }
GTK ���������� �ؽ�Ʈ ������ ���� ���� ���翡 ���ؼ� Ctrl-C �� ����Ű�� �Ҵ��� ���� �ִ�.
�츮�� void gtk_editable_cut_clipboard(GtkEditable *editable);
�Լ��� ����ؼ� ���õ� ������ Ŭ������� �߶� ���� �� �ִ�. ������ ����
����/�ڸ��� ���� �������� �����Ǵ� �ñ׳� �ڵ鷯 on_Cut_activate()
�ȿ� ������ ���� ������ �־��.
gtk_editable_cut_clipboard( (GtkEditable *)gTextArea );
GTK ���������� �ؽ�Ʈ ������ ���� ���� �ڸ�� ���ؼ� Ctrl-X �� ����Ű�� �Ҵ��� ���� �ִ�.
�츮�� void gtk_editable_paste_clipboard(GtkEditable *editable);
�Լ��� ����ؼ� Ŭ�����忡 �ִ� ������ ���� Ŀ�� ��ġ�� ���� �� �ִ�.
������ ���� ����/���̱� ���� �������� �����Ǵ� �ñ׳� �ڵ鷯
on_Paste_activate()
�ȿ� ������ ���� ������ �־��.
gtk_editable_paste_clipboard( (GtkEditable *)gTextArea );
GTK ���������� �ؽ�Ʈ ������ ���� ���� ���̱ ���ؼ� Ctrl-P �� ����Ű�� �Ҵ��� ���� �ִ�.
������ ������ �о �ؽ�Ʈ �������� �о���̰�, ���Ͽ� �����غ����� ����.
���� ���� ���� ��ȭ ���� ���ǿ��� ���õ� ������ �о �츮�� ���ø����̼� �ؽ�Ʈ �������� ���÷����غ���.
������ ���� ���� Open ��ȭ���ڸ� ������ �� ����ڰ� Ȯ�� ��ư�� ������ �� �۵��Ǵ� �ñ׳� �ڵ鷯 on_ok_button1_clicked() ���� ������ �о �ؽ�Ʈ ������ �ִ� �ڵ带 �߰��غ���.
void on_ok_button1_clicked (GtkButton *button, gpointer user_data ) { /* �߰� ���� */ GtkWidget *open_file = (GtkWidget *)user_data; gchar *file_name = gtk_file_selection_get_filename (GTK_FILE_SELECTION(open_file)); FILE *infile = NULL; g_print ("%s\n", file_name ); /* �ؽ�Ʈ ���� ��ŷ */ gtk_text_freeze (GTK_TEXT (text)); infile = fopen(file_name, "r"); if (infile) { char buffer[1024]; int nchars; while (1) { nchars = fread(buffer, 1, 1024, infile); gtk_text_insert (GTK_TEXT (gTextArea), NULL, NULL, NULL, buffer, nchars); if (nchars < 1024) break; } fclose (infile); } /* �ؽ�Ʈ ���� ��ŷ ���� */ gtk_text_thaw (GTK_TEXT (text)); gtk_widget_destroy( (GtkWidget *)open_file ); /* �߰� �� */ }
�� �ڵ�� ���� ���� ����Ʈ(current insert point) �ڿ��� �ؽ�Ʈ�� �߰��ϴ� ���̹Ƿ� ���� ������ �ֱ����� �ؽ�Ʈ ������ � ������ �־��ٸ� �� ���Ŀ� ���� ������ �� ���̴�.
������ ���� ���� GTK �Լ��� ������ ����.
������ ���� �ؽ�Ʈ ������ ������ ���Ϸ� �Ẹ��. ������ �ؽ�Ʈ ����
��ü�� �����ؾ� �Ѵ�. �ؽ�Ʈ ���� �Ϻθ� �����ϴ� �Լ���
gtk_editable_get_chars( GtkText *editable, gint start_pos, gint
end_pos);
�̴�. ���⼭ start_pos, end_pos �� 0���� �����ϴ�
��ġ �����̴�. ���� ���� �Լ��ν� �ؽ�Ʈ ������ ��ü ���̸� ���ϴ�
�Լ� gtk_text_get_length( GtkText *gtktext );
�� �ִ�. �̵���
�̿��ؼ� ���Ͽ� �����غ���� ����.
���� Save ��ȭ ���ڸ� ���� ���� ���� ��ȭ���ڿ��� �ߴ� ��ó�� �߰�����. ���� ����ڰ� Ȯ�� ��ư�� ������ �����Ǵ� �ñ׳� �ڵ鷯�� on_ok_button3_clicked() �Լ� �ȿ� ������ ���� �ڵ带 �־� ����:
GtkWidget *save_file = (GtkWidget *)user_data; gchar *file_name = gtk_file_selection_get_filename (GTK_FILE_SELECTION(save_file)); FILE *outfile = NULL; int ntotal = gtk_text_get_length( gTextArea ); int nchars; gchar *buffer = NULL; gint nEnd = ntotal > 1024 ? 1024 : ntotal; gint nStart = 0; g_print ("save file name : %s\n", file_name ); g_print ("ntotal = %d\n", ntotal ); /* �ؽ�Ʈ ���� ��ŷ */ gtk_text_freeze (GTK_TEXT (gTextArea)); outfile = fopen(file_name, "w+"); if (outfile) { buffer = gtk_editable_get_chars( (GtkEditable *)gTextArea, 0, nEnd ); nchars = fwrite(buffer, 1, nEnd, outfile); g_free( buffer ); while (nEnd < ntotal) { nStart = nEnd; nEnd = (nEnd + 1024) < ntotal ? nEnd + 1024 : ntotal; buffer = gtk_editable_get_chars( (GtkEditable *)gTextArea, nStart, nEnd ); g_print( "when iter : nStart=%d:nEnd=%d:buffer=%s\n", nStart, nEnd, buffer ); nchars = fwrite(buffer, 1, nEnd-nStart, outfile); g_free( buffer ); } fclose (outfile); } /* �ؽ�Ʈ ���� ��ŷ ���� */ gtk_text_thaw (GTK_TEXT (gTextArea)); gtk_widget_destroy( (GtkWidget *)save_file );
���⼭ �Ѱ��� ������ ���� GTK �迭�� �Լ����� �ѱ��� ��� 2-byte ���ڰ� �ƴ� 1-byte ���ڷ� ó���Ѵٴ� ���̴�. �ݸ鿡 fwrite �� 2-byte ���ڸ� 2-byte �״�� ó���Ѵ�. ���� �̷� ������ �ѱ��� ���Ϸ� �����ϸ� ������ ���Ѵ�.
���� g_free �Լ��� gtk_editable_get_chars() �Լ��� ȣ���Ͽ� ���� gchar �����Ϳ� ���ؼ� ȣ���Ͽ� ���ҽ��� ��ȯ�ϴ� �Լ��ν� �ݵ�� �̷��� ���ҽ��� ��ȯ�Ͽ��� �Ѵٰ� �Ѵ�(GTK �Ŵ��� ����).
���������� ��Ʈ�� �ٲپ� ���÷��� �غ���.
��Ʈ�� �����ؼ� ���÷����ҷ��� ���� ��Ʈ ���� ��ȭ���ڿ��� Ȯ���� ������ ��� �̿� ���Ͽ� �����Ǵ� �ñ׳� �ڵ鷯���� �����ؾ� �Ѵ�. �뷫������ �����ϸ� �� �ڵ鷯���� �ؾ� �� ����, ��ü �ؽ�Ʈ�� ��� �ؽ�Ʈ ������ ��� ���� ���� ����ڰ� ������ ��Ʈ�� �̿��ؼ� gtk_text_insert() �Լ��� ȣ���ϴ� ���̴�. �� �Լ��� ��Ʈ �Ķ���Ϳ��� NULL�� �ָ� ����Ʈ ��Ʈ�� ����Ѵ�. ���� �ҽ��� �ñ׳� �ڵ鷯(��: on_ok_button2_clicked())�� ���� �ҽ�(���� ���� ����)�������� �߰��ϵ��� ����:
ntotal = gtk_text_get_length( (GtkText *)gTextArea ); /* �ؽ�Ʈ ȹ�� */ text_value = gtk_editable_get_chars( (GtkEditable *)gTextArea, 0, ntotal ); /* �ؽ�Ʈ ��� ����� */ gtk_editable_delete_text( (GtkEditable *)gTextArea, 0, ntotal ); gtk_text_insert( (GtkText *)gTextArea, gdk_font, NULL, NULL, text_value, ntotal ); g_free( text_value );
��Ʈ �������� ����ȭ���� ������ ����.
���Ŀ� �ԷµǴ� ��� �ؽ�Ʈ�� ������ ��Ʈ�� ���÷��̵ȴ�. �� �Ѱ��� ������ ��Ȯ�� threshold ���� ������ Ŀ�ٶ� ��Ʈ(��: 72pt)�� ���÷��̰� �ȵȴ�.
���¹ٴ� GLADE �� ���̸� GtkStatusbar ��� ������ ���ȴ�. ���
������ ����Ϸ��� guint gtk_statusbar_push(GtkStatusbar
*statusbar, guint context_id, const gchar *text);
��� �Լ���
����ϸ� �ȴ�. ���� �� ���콺�� ���� ��ư �� Open ��ư ���� ���� ��
���¹ٿ� "���� �б�" ��� ������ ����غ���. ���� ���콺�� �� ��ư��
���� �� ���¹ٿ��� ������ ���쵵�� ����.
�켱 �ؾ� ������ ��� �ִ�. ù���� ���� push �Լ��� ù��° �Ķ���� ���������� �����ؾ� �Ѵ�. ������ ������ ���� interface.c ���� ���������� ������ ���� �����ϰ�,
GtkStatusBar *gStatusBar = NULL;
create_window1() �Լ������� ���¹� ���� �� ������ �Ϳ��� �� ���������� ��������
������ ����ϸ� ���������� �Ⱦ��� ���¹��� ������ ȹ���ϴ� ����� ã�ƾ� ������ �������� �������� �̷��. �ٸ� GNOME ��� �ҽ����� ���� �밳 GLADE�� �̿����� ���� �� ���̰� �̵��� ���������� �ƴϸ� gnome ���¹ٸ� �׳� ���� ��찡 ���Ҵ�.
gStatusBar = statusbar1;
�ι�°�� �ؾ� �� ���� ���콺 �̵��� �ֽ��ؼ� Open ��ư ���� ���� �� ���Ǵ� enter �ñ׳��� ��� ó���ϴ� �ñ׳� �ڵ鷯�� ����ؾ� �Ѵ�. �̰��� ������ ���� �� �������Ƿ� �����Ѵ�. ���� ���콺�� �� ��ư�� ���� ���� �ñ׳��� ��� �ñ׳� �ڵ鷯�� ����ؾ� �Ѵ�. �̰͵� ���� �����Ѵ�.
�ΰ��� ���� �����ٸ� ���� callbacks.c �� ���� ���������� extern ���� ������ ���� ��������.
extern GtkStatusbar gStatusBar;
���� ���콺 enter �ñ׳� �ڵ鷯���� ������ ���� �ڵ带 ����.
gtk_statusbar_push( gStatusbar, 1, "���� ����" );
���� leave �ñ׳� �ڵ鷯���� ������ ���� �ڵ带 ����.
gtk_statusbar_pop( gStatusbar, 1 );
���� �� ���¹ٿ� ������ �ߴ� ����� ������ ����: