(tof) 2003/06/19 Hidetoshi NAGAI �ܥɥ�����ȤˤϸŤ� tcltk �饤�֥�ꡤtcltklib �饤�֥������� ���ޤޤ�Ƥ��ޤ��������ε������ƤϸŤ���ΤȤʤäƤ��ޤ��� tcltk �饤�֥���tcltk.rb�ˤϸ��ߤǤϥ��ƥʥ󥹤����¾�Ԥ��� ���ʤ����ᡤ�Ť��ɥ�����Ȥ����������Τޤ�ͭ���Ǥ���������Ф��� tcltklib �饤�֥��ˤĤ��Ƥϡ����ߤ� Ruby/Tk��tk.rb �ʲ��Υ饤�֥� �귲�ˤ��Ư�����뤿����濴�Ȥ��ƥ��ƥʥ󥹤���Ƥ��뤿�ᡤ���� �㤤�������Ƥ��ޤ��� �����ǡ��ޤ��Ť�����ʸ��򼨤����塤���ߤ� tcltklib �饤�֥��ˤ� ���Ƥ�������ä��ޤ��� �ʲ����饤�֥��θŤ�����ʸ��Ǥ��� ============================================================== MANUAL.euc Sep. 19, 1997 Y. Shigehiro �ʲ�, ��tcl/tk�פȤ���ɽ����, tclsh �� wish ��¸����Ƥ���, ���̤Ǥ��� �Ȥ����� tcl/tk ��ؤ��ޤ�. ��tcltk �饤�֥���, ��tcltklib �饤�֥� ��פȤ���ɽ����, �ܥѥå������˴ޤޤ�� ruby �ѤΥ饤�֥���ؤ��ޤ�. << tcltk �饤�֥�� >> tcl/tk �� C �饤�֥������Ѥ��뤿��ι�(��?)��।�󥿡��ե��������� �����ޤ�. ���Υ饤�֥��� ruby ���� tcl/tk �饤�֥������Ѥ��뤿��Τ�Τ�, �� ���� tcltklib �饤�֥������Ѥ��Ƥ��ޤ�. [����] tcl/tk ���󥿥ץ꥿�Ǥ�, ���������åȤ˲����ؼ�������ˤ�, ���������� ��̾��³���ƥѥ�᡼����񤭤ޤ�. �������ä�, ���������åȤ����֥����� �ȤǤ���, ������Ф��ƥ᥽�åɤ����äƤ���, �Ȥߤʤ����Ȥ��Ǥ��ޤ�. �� ��, tcl/tk ���󥿥ץ꥿�Ǥ�, �Ȥ߹��ߥ��ޥ�ɤ�, ���ҤΥ��������åȤ� Ʊ���褦�ʽ񼰤�̿��Ǽ¹Ԥ���ޤ�. ���ʤ��, ���ޥ�ɤ⥪�֥������Ȥ� ����ȹͤ��뤳�Ȥ��Ǥ��ޤ�. ���Τ褦�ʹͤ��˴�Ť�, tcltk �饤�֥��Ǥ�, tcl/tk �Υ��ޥ�ɤ䥦�� �����åȤ��б����륪�֥������Ȥ��������ޤ�. ���֥������Ȥ��Ф���᥽�� �ɸƤӽФ���, e() �᥽�åɤˤ��¹Ԥ���ޤ�. �㤨��, tcl/tk �� info ���ޥ�ɤ��б����� ruby �Υ��֥������Ȥ� info �Ȥ���̾���Ǥ���Ȥ����, tcl/tk �� info commands �Ȥ���̿��� tcltk �饤�֥��Ǥ� info.e("commands") �ȵ��Ҥ���ޤ�. �ޤ�, ��.�פȤ������������å� (wish �¹Ի��˼�ưŪ���� �������롼�ȥ��������å�) ���б����� ruby �Υ��֥������Ȥ� root �Ȥ� ��̾���Ǥ���Ȥ����, . configure -height 300 -width 300 �Ȥ��� tcl/tk ��̿��� root.e("configure -height 300 -width 300") �ȵ��Ҥ���ޤ�. ���Τ褦�ʵ��Ҥ�, ������ˤ�����������ޤ���, ������, ������ץȤ��ɤ�ͤˤϸ��Ť餤�����Τ�ޤ���, �ºݤ˥�����ץȤ�� �Ƥߤ��ͽ�۳��˼�ڤǤ�. [����ˡ] 1. �饤�֥����ɤ߹���. require "tcltk" 2. tcl/tk ���󥿥ץ꥿����������. ip = TclTkInterpreter.new() 3. tcl/tk �Υ��ޥ�ɤ��б����륪�֥������Ȥ��ѿ����������Ƥ���. # ���ޥ�ɤ��б����륪�֥������Ȥ����ä� Hash ����Ф�. c = ip.commands() # �Ȥ��������ޥ�ɤ��б����륪�֥������Ȥ���̤��ѿ�����������. bind, button, info, wm = c.indexes("bind", "button", "info", "wm") 4. ɬ�פʽ�����Ԥ�. �ܤ�����, ����ץ�򻲾ȤΤ���. 5. �������Ǥ�����, ���٥�ȥ롼�פ�����. TclTk.mainloop() (( �ʲ�, �⥸�塼��, ���饹�����������ͽ��.)) << tcltklib �饤�֥�� >> tcl/tk �� C �饤�֥������Ѥ��뤿������।�󥿡��ե��������󶡤��� ��. ����ѥ���/�¹Ԥˤ�, tcl/tk �� C �饤�֥�꤬ɬ�פǤ�. [����] ���Υ饤�֥����Ѥ����, ruby ���� tcl/tk �� C �饤�֥������ѤǤ��� ��. ����Ū�ˤ�, ruby ���󥿥ץ꥿���� tcl/tk ���󥿥ץ꥿��ƤӽФ��� �Ȥ��Ǥ��ޤ�. �����, ����(ruby ���󥿥ץ꥿����ƤӽФ���) tcl/tk �� �󥿥ץ꥿����, �դ� ruby ���󥿥ץ꥿��ƤӽФ����Ȥ�Ǥ��ޤ�. [����ˡ] require "tcltklib" �����, �ʲ��Υ⥸�塼��, ���饹�����Ѳ�ǽ�Ǥ�. �⥸�塼�� TclTkLib tcl/tk �饤�֥���ƤӽФ��᥽�åɤ򽸤᤿�⥸�塼��Ǥ�. ������, tcl/tk ���󥿥ץ꥿�ط��Υ᥽�åɤϥ��饹 TclTkIp �ˤ���ޤ�. �⥸�塼��᥽�å� mainloop() Tk_MainLoop ��¹Ԥ��ޤ�. ���Ƥ� tk �Υ�����ɥ���̵���ʤ�Ƚ�λ ���ޤ�(�㤨��, tcl/tk �ǽ񤯤Ȥ����� "destroy ." �򤷤������). ����: ̵�� �����: nil ���饹 TclTkIp ���󥹥��󥹤� tcl/tk �Υ��󥿥ץ꥿���б����ޤ�. tcl/tk �Υ饤�� ���λ����̤�, ���󥹥��󥹤�ʣ�����������Ƥ�������ư��ޤ�(�� ��ʤ��Ȥ򤹤�ɬ�פϤ��ޤ�̵���Ϥ��Ǥ���). ���󥿥ץ꥿�� wish �� tcl/tk ���ޥ�ɤ�¹ԤǤ��ޤ�. �����, �ʲ��Υ��ޥ�ɤ�¹ԤǤ��� ��. ���ޥ�� ruby ������ ruby �Ǽ¹Ԥ��ޤ�(ruby_eval_string ��¹Ԥ��ޤ�). ���� �� 1 �ĤǤʤ���Фʤ�ޤ���. ����ͤ� ruby �μ¹Է�̤Ǥ�. ruby �μ¹Է�̤� nil �� String �Ǥʤ���Фʤ�ޤ���. ���饹�᥽�å� new() TclTkIp ���饹�Υ��󥹥��󥹤��������ޤ� ����: ̵�� ����� (TclTkIp): �������줿���󥹥��� �᥽�å� _eval(script) ���󥿥ץ꥿�� script ��ɾ�����ޤ�(Tcl_Eval ��¹Ԥ��ޤ�). ���� �Τ褦��, ruby ���ޥ�ɤˤ�� script �⤫�� ruby ������ץȤ�� �ԤǤ��ޤ�. ����: script (String) - ���󥿥ץ꥿��ɾ�����륹����ץ�ʸ���� ����� (String): ɾ����� ((Tcl_Interp *)->result) �᥽�å� _return_value() ľ���� Tcl_Eval ������ͤ��֤��ޤ�. 0(TCL_OK) �����ェλ�Ǥ�. ����: ̵�� ����� (Fixnum): ľ���� Tcl_Eval() ���֤�����. ============================================================== �ʲ����ܥɥ�����Ⱥ��������Ǥ� tcltklib �饤�֥��������Ǥ��� ============================================================== �⥸�塼�� TclTkLib : �ġ��� Tcl/Tk ���󥿡��ץ꥿�˰�¸���ʤ����� ( == ���٥�ȥ롼 : �פ˴ؤ������ ) ��ƤӽФ��᥽�åɤ���������⥸�塼�롥 �⥸�塼�� TclTkLib::EventFlag : do_one_event ��ƤӽФ��ݤν����оݥ��٥�Ȥ���ꤹ�뤿��� : �ե饰 ( WINDOW|DONT_WAIT �Ȥ����褦�˥ӥåȱ黻�Ҥ�Ϣ�뤷�� : ���� ) ������Ȥ�����������⥸�塼�롥�ʲ���������ޤޤ�롥 ��� NONE : �����ʤ����Υ��٥�Ȥ�����оݤȤ��ʤ� ( == 0 ) ��� WINDOW : window ���٥�Ȥ�����оݤȤ��� ��� FILE : file ���٥�Ȥ�����оݤȤ��� ��� TIMER : timer ���٥�Ȥ�����оݤȤ��� ��� IDLE : �����ɥ�롼�׽��� ( ������ʤɡ�¾�μ���Υ��٥�Ȥ�ȯ�� : ���Ƥ��ʤ��Ȥ��˹Ԥ������ ) ������оݤȤ��� ��� ALL : ���٤Ƥμ���Υ��٥�Ȥ�����оݤȤ��� : WINDOW|FILE|TIMER|IDLE ��Ʊ�� ��� DONT_WAIT : �����оݥ��٥�Ȥ�¸�ߤ��ʤ����ˡ����٥��ȯ�����Ԥ��� : �� do_one_event ��λ ( false ���֤� ) ���� �⥸�塼��᥽�å� mainloop(check_root = true) : ���٥�ȥ롼�פ�ư���롥check_root �� true �Ǥ���С� : root widget ��¸�ߤ���¤ꡤ���Υ᥽�åɤϽ�λ���ʤ��� : check_root �� false �ξ��ϡ�root widget �����Ǥ��Ƥ� : ���Υ᥽�åɤϽ�λ���ʤ� ( root widget �����Ǥ��Ƥ⡤ : WINDOW �ʳ��Υ��٥�Ȥ�ȯ�������뤿�� )����λ�ˤϡ����� : �����Ư���ݤ� ( ����åɤ���Ѥ���ʤ� ) ��ɬ�ס� mainloop_watchdog(check_root = true) : �̾�Υ��٥�ȥ롼�פǤϡ����٥�Ƚ��������Ƥˤ�äƤ� : �ǥåɥ��å��������������ǽ�������� (�㤨�Х��٥�Ȥ� : �Ф��륳����Хå�������� widget ���򤷡����ν�λ�� : �ԤĤʤ�)�����Υ᥽�åɤϡ����������ǥåɥ��å������ : �뤿��δƻ륹��å��դ��ǥ��٥�ȥ롼�פ�ư���� : ( �ƻ륹��åɤ�����������˥��٥�ȥ롼�פ�¹Ԥ��� )�� : �����ΰ�̣�� mainloop ��Ʊ���Ǥ��롥 do_one_event(flag = TclTkLib::EventFlag::ALL) : �����Ԥ��Υ��٥�� 1 �Ĥ�¹Ԥ��롥 : ���٥�Ȥ������������ true ���֤��� : �ե饰�� DONT_WAIT ����ꤷ�Ƥ��ʤ���硤�ե饰�ǽ����� : �ݤȤʤäƤ������Υ��٥�Ȥ�ȯ������ޤ��Ԥ�³���롥 : DONT_WAIT ����ꤷ�Ƥ�����硤�����оݥ��٥�Ȥ��ʤ��Ƥ� : �����˽�λ�� false ���֤��� set_eventloop_tick(timer_tick) : ���٥�ȥ롼�פ�Ʊ�����̥���åɤ���Ư���Ƥ�����ˡ��� : �֤˴�Ť�������Ū�ʥ���åɥ����å��󥰤�ɤ����٤����� : ( ���ֳִ� ) ��ȯ�������뤫��ߥ���ñ�̤������ͤǻ��ꤹ�롥 : 0 ����ꤹ��ȡ����ζ���Ū�ʥ����å��󥰤ϹԤ��ʤ��� : ɸ��Ǥ� 0 �����ꤵ��Ƥ��ꡤ���٥�Ƚ������˴�Ť������� : ���󥰤������Ԥ��� ( see set_eventloop_weight )�� : ����������Ư���Ƥ��륹��åɤ����٥�ȥ롼�פ����ξ�硤 : timer_tick �� 0 �����ꤹ�뤳�ȤϤǤ��ʤ����⤷���ꤵ��� : �����顤200 ms ( see NO_THREAD_INTERRUPT_TIME ) �˼�ư�� : �ꤵ��롥 : �ܺ٤�������ά����������� CPU �ѥ�����󤷤Ĥİ����� : ���ꤷ��ư���¸����뤿��˼����������ͤǤ��롥 get_eventloop_tick : timer_tick �θ����ͤ��֤��� set_no_event_wait(no_event_wait) : ʣ���Υ���åɤ���Ư���Ƥ�����ǡ������Ԥ����٥�Ȥ��� : ��¸�ߤ��ʤ��ä��ݤ� sleep ���֤��������Ĺ����ꤹ�롥 : ��Ư����åɤ����٥�ȥ롼�פ����ξ��ˤϰ�̣��ʤ��ʤ��� : �ǥե���Ȥ��ͤ� 20 (ms) get_no_event_wait : no_event_wait �θ����ͤ��֤��� set_eventloop_weight(loop_max, no_event_tick) : ʣ���Υ���åɤ���Ư���Ƥ���ݤ� Ruby/Tk �Υ��٥�ȥ롼 : �פ˳�����Ƥ���Ť����뤿��Υѥ�᡼�������ꤹ�롥 : ��Ư����åɤ����٥�ȥ롼�פ����ξ��ˤϰ�̣��ʤ��ʤ��� : ���٤Υ���å��ڤ��ؤ��δ֤˽������륤�٥�Ȥκ�����ȡ� : �����Ԥ��Υ��٥�Ȥ�¸�ߤ��ʤ��ݤβû����Ȥ����ꤹ�롥 : �����Ԥ����٥�Ȥ�¸�ߤ��ʤ����� no_event_wait ( see : set_no_event_wait ) �����δ� sleep ���֤����롥 : �ǥե���ȤǤϤ��줾�� 800 ��� 10 �󡤤Ĥޤꡤ800 �ĤΥ� : �٥�� (�����ɥ륤�٥�Ȥ�ޤ�) ���������Ȥ������٥�� : ������ȯ�����ʤ��ޤޤ� 80 ��ν����Ԥ����٥�ȸ�������λ : ����Ȥ��ǥ�����Ȥ� 800 �ʾ�ˤʤ�ȥ���åɥ����å��� : ��ȯ�����뤳�Ȥˤʤ롥 get_eventloop_weight : ���ߤ� loop_max �� no_event_tick �Ȥ��ͤ��֤��� : ( see set_eventloop_wait ) ���饹 TclTkIp ���󥹥��󥹥᥽�å� restart : Tcl/Tk ���󥿡��ץ꥿�� Tk ��ʬ�ν�������Ƶ�ư��Ԥ��� : ��ö root widget ���˲�������˺��� Tk �ε�ǽ��ɬ�פ� : �ʤä������Ѥ��롥 _eval(str) _invoke(*args) : Tcl/Tk ���󥿡��ץ꥿���ɾ����Ԥ��� : _eval ��ɾ��������ץȤ���Ĥ�ʸ����Ǥ��뤳�Ȥ��Ф��� : _invoke ��ɾ��������ץȤ� token ���Ȥ˰�Ĥΰ����Ȥ� : ��褦��Ϳ���롥 : _invoke ������ Tcl/Tk ���󥿡��ץ꥿�λ�����ϴ���Ѥ� : �ʤ����ᡤɾ������٤���꾯�ʤ��Ƥ��ࡥ _toUTF8(str, encoding) _fromUTF8(str, encoding) : Tcl/Tk ����¢���Ƥ��� UTF8 �Ѵ�������ƤӽФ��� _return_value : ľ���� Tcl/Tk ��Ǥ�ɾ���μ¹Է�̤Ȥ��Ƥ�����ͤ��֤��� mainloop : ������ޤ�� TclTkLib.mainloop ��Ʊ�� mainloop_watchdog : ������ޤ�� TclTkLib.mainloop_watchdog ��Ʊ�� do_one_event : ������ޤ�� TclTkLib.do_one_event ��Ʊ�� set_eventloop_tick : ������ޤ�� TclTkLib.set_eventloop_tick ��Ʊ�� get_eventloop_tick : ������ޤ�� TclTkLib.get_eventloop_tick ��Ʊ�� set_eventloop_weight : ������ޤ�� TclTkLib.set_eventloop_weight ��Ʊ�� get_eventloop_weight : ������ޤ�� TclTkLib.set_eventloop_weight ��Ʊ�� ���饹 TkCallbackBreak < StandardError ���饹 TkCallbackContinue < StandardError : �����ϥ��٥�ȥ�����Хå��ˤ����ơ�������Хå�������Ŭ�ڤ��� : �Ǥ����ꡤ���ΥХ���ɥ����ΥХ���ǥ��󥰽����˿ʤ᤿�ꤹ�뤳�� : ���ǽ�ˤ��뤿����㳰���饹�Ǥ��롥 : ������Хå��� break �� continue ��¸����뤿��ˤϡ�������Хå� : �Ǥ��� Ruby ��³���� Tcl/Tk ���󥿡��ץ꥿¦��Ŭ�ڤʥ꥿���󥳡� : �ɤ��֤�ɬ�פ����롥Ruby �μ�³�������̤��ͤ��֤��ΤǤϡ����줬�� : �̤�����ͤǤ���Τ��ݤ�����̤��Ǥ��ʤ����ᡤ�㳰ȯ�������Ѥ��� : ������ԤäƤ��롥 (eof)