mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* ext: remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31689 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
87dbea7bbf
commit
0d6d23b25d
83 changed files with 1033 additions and 1033 deletions
|
@ -51,7 +51,7 @@ You can redistribute it and/or modify it under either the terms of the GPL
|
|||
|
||||
* The Author
|
||||
|
||||
Feel free to send comments and bug reports to the author. Here is the
|
||||
Feel free to send comments and bug reports to the author. Here is the
|
||||
author's latest mail address:
|
||||
|
||||
shigeo@tinyforest.gr.jp
|
||||
|
|
|
@ -31,14 +31,14 @@ pre
|
|||
<BODY BGCOLOR=#FFFFE0>
|
||||
<H1>BigDecimal(Variable Precision Floating Library for Ruby)</H1>
|
||||
<DIV align="right"><A HREF="./bigdecimal_ja.html">Japanese</A></DIV><BR>
|
||||
BigDecimal is an extension library for the Ruby interpreter.
|
||||
Using BigDecimal class, you can obtain any number of significant digits in computation.
|
||||
BigDecimal is an extension library for the Ruby interpreter.
|
||||
Using BigDecimal class, you can obtain any number of significant digits in computation.
|
||||
For the details about Ruby see:<BR>
|
||||
<UL>
|
||||
<LI><A HREF="http://www.ruby-lang.org/en/">http://www.ruby-lang.org/en/</A>:Official Ruby page(English).</LI>
|
||||
<LI><A HREF="http://kahori.com/ruby/ring/">http://kahori.com/ruby/ring/</A>:Mutually linked pages relating to Ruby(Japanese).
|
||||
</LI>
|
||||
</UL>
|
||||
</UL>
|
||||
NOTE:<BR>
|
||||
This software is provided "AS IS" and without any express or
|
||||
implied warranties,including,without limitation,the implied
|
||||
|
@ -62,15 +62,15 @@ NOTE:<BR>
|
|||
<A NAME="#INTRO">
|
||||
<H2>Introduction</H2>
|
||||
Ruby already has builtin (variable length integer number) class Bignum. Using Bignum class,you can obtain
|
||||
any integer value in magnitude. But, variable length decimal number class is not yet built in.
|
||||
any integer value in magnitude. But, variable length decimal number class is not yet built in.
|
||||
This is why I made variable length floating class BigDecimal.
|
||||
Feel free to send any comments or bug reports to me.
|
||||
<A HREF="mailto:shigeo@tinyforest.gr.jp">shigeo@tinyforest.gr.jp</A>
|
||||
I will try(but can't promise) to fix bugs reported.
|
||||
I will try(but can't promise) to fix bugs reported.
|
||||
<hr>
|
||||
<H2>Installation</H2>
|
||||
The Ruby latest version can be downloaded from <A HREF="http://www.ruby-lang.org/en/">Official Ruby page</A>.
|
||||
Once decompress the downloaded Ruby archive,follow the normal installation procedures according to the
|
||||
Once decompress the downloaded Ruby archive,follow the normal installation procedures according to the
|
||||
documents included.
|
||||
|
||||
<A NAME="#SPEC">
|
||||
|
@ -89,7 +89,7 @@ to create BigDecimal objects,the program would like:<BR>
|
|||
In 32 bits integer system,every 4 digits(in decimal) are computed simultaneously.
|
||||
This means the number of significant digits in BigDecimal is always a multiple of 4.
|
||||
<P>
|
||||
Some more methods are available in Ruby code (not C code).
|
||||
Some more methods are available in Ruby code (not C code).
|
||||
Functions such as sin,cos ...,are in math.rb in bigdecimal directory.
|
||||
To use them,require math.rb as:
|
||||
<CODE><PRE>
|
||||
|
@ -110,7 +110,7 @@ For details,see the util.rb code.
|
|||
a=BigDecimal::new(s[,n]) or<BR>
|
||||
a=BigDecimal(s[,n]) or<BR>
|
||||
where:<BR>
|
||||
s: Initial value string. Spaces will be ignored. Any unrecognizable character for
|
||||
s: Initial value string. Spaces will be ignored. Any unrecognizable character for
|
||||
representing initial value terminates the string.<BR>
|
||||
n: Maximum number of significant digits of a. n must be a Fixnum object.
|
||||
If n is omitted or is equal to 0,then the maximum number of significant digits of a is determined from the length of s.
|
||||
|
@ -146,7 +146,7 @@ EXCEPTION_OVERFLOW controls the execution when computation overflows.<BR>
|
|||
EXCEPTION_ZERODIVIDE controls the execution when zero-division occurs.<BR>
|
||||
EXCEPTION_ALL controls the execution when any defined exception occurs.<BR>
|
||||
If the flag is true,then the relating exception is thrown.<BR>
|
||||
No exception is thrown when the flag is false(default) and computation
|
||||
No exception is thrown when the flag is false(default) and computation
|
||||
continues with the result:<BR>
|
||||
<BLOCKQUOTE>
|
||||
EXCEPTION_NaN results to NaN<BR>
|
||||
|
@ -159,7 +159,7 @@ EXCEPTION_INFINITY,EXCEPTION_OVERFLOW, and EXCEPTION_ZERODIVIDE are
|
|||
currently the same.<BR>
|
||||
The return value of mode method is the value set.<BR>
|
||||
If nil is specified for the second argument,then current setting is returned.<BR>
|
||||
Suppose the return value of the mode method is f,then
|
||||
Suppose the return value of the mode method is f,then
|
||||
f & BigDecimal::EXCEPTION_NaN !=0 means EXCEPTION_NaN is set to on.
|
||||
<P>
|
||||
<B>[ROUND error control]</B><P>
|
||||
|
@ -185,7 +185,7 @@ use truncate/round/ceil/floor/add/sub/mult/div methods for each instance instead
|
|||
|
||||
<LI><B>limit[(n)]</B></LI><BLOCKQUOTE>
|
||||
Limits the maximum digits that the newly created BigDecimal objects can hold never exceed n.
|
||||
This means the rounding operation specified by BigDecimal.mode is
|
||||
This means the rounding operation specified by BigDecimal.mode is
|
||||
performed if necessary.
|
||||
limit returns the value before set if n is nil or is not specified.
|
||||
Zero,the default value,means no upper limit.<BR>
|
||||
|
@ -194,7 +194,7 @@ mf = BigDecimal::limit(n)<BR>
|
|||
</BLOCKQUOTE>
|
||||
|
||||
<LI><B>double_fig</B></LI><BLOCKQUOTE>
|
||||
double_fig is a class method which returns the number of digits
|
||||
double_fig is a class method which returns the number of digits
|
||||
the Float class can have.
|
||||
<CODE><PRE>
|
||||
p BigDecimal::double_fig # ==> 20 (depends on the CPU etc.)
|
||||
|
@ -290,7 +290,7 @@ returns the maximum integer value (in BigDecimal) which is less than or equal to
|
|||
c = BigDecimal("-1.23456").floor # ==> -2
|
||||
</PRE></CODE>
|
||||
|
||||
As shown in the following example,an optional integer argument (n) specifying the position
|
||||
As shown in the following example,an optional integer argument (n) specifying the position
|
||||
of the target digit can be given.<BR>
|
||||
If n> 0,then the (n+1)th digit counted from the decimal point in fraction part is processed(resulting number of fraction part digits is less than or equal to n).<BR>
|
||||
If n<0,then the n-th digit counted from the decimal point in integer part is processed(at least n 0's are placed from the decimal point to left).
|
||||
|
@ -308,7 +308,7 @@ returns the minimum integer value (in BigDecimal) which is greater than or equal
|
|||
c = BigDecimal("-1.23456").ceil # ==> -1
|
||||
</PRE></CODE>
|
||||
|
||||
As shown in the following example,an optional integer argument (n) specifying the position
|
||||
As shown in the following example,an optional integer argument (n) specifying the position
|
||||
of the target digit can be given.<BR>
|
||||
If n>0,then the (n+1)th digit counted from the decimal point in fraction part is processed(resulting number of fraction part digits is less than or equal to n).<BR>
|
||||
If n<0,then the n-th digit counted from the decimal point in integer part is processed(at least n 0's are placed from the decimal point to left).
|
||||
|
@ -327,7 +327,7 @@ round a to the nearest 1(default)ÅD<BR>
|
|||
</PRE></CODE>
|
||||
The rounding operation changes according to BigDecimal::mode(BigDecimal::ROUND_MODE,flag) if specified.
|
||||
|
||||
As shown in the following example,an optional integer argument (n) specifying the position
|
||||
As shown in the following example,an optional integer argument (n) specifying the position
|
||||
of the target digit can be given.<BR>
|
||||
If n>0,then the (n+1)th digit counted from the decimal point in fraction part is processed(resulting number of fraction part digits is less than or equal to n).<BR>
|
||||
If n<0,then the n-th digit counted from the decimal point in integer part is processed(at least n 0's are placed from the decimal point to left).
|
||||
|
@ -346,7 +346,7 @@ c = BigDecimal::new("1.23356").round(3,BigDecimal::ROUND_HALF_EVEN) # ==> 1.2
|
|||
<LI><B>truncate[(n)]</B></LI><BLOCKQUOTE>
|
||||
c = a.truncate<BR>
|
||||
truncate a to the nearest 1ÅD<BR>
|
||||
As shown in the following example,an optional integer argument (n) specifying the position
|
||||
As shown in the following example,an optional integer argument (n) specifying the position
|
||||
of the target digit can be given.<BR>
|
||||
If n>0,then the (n+1)th digit counted from the decimal point in fraction part is processed(resulting number of fraction part digits is less than or equal to n).<BR>
|
||||
If n<0,then the n-th digit counted from the decimal point in integer part is processed(at least n 0's are placed from the decimal point to left).
|
||||
|
@ -373,7 +373,7 @@ converts to string(default results look like "0.xxxxxEn").
|
|||
<CODE><PRE>
|
||||
BigDecimal("1.23456").to_s # ==> "0.123456E1"
|
||||
</PRE></CODE>
|
||||
If n(>0) is given,then a space is inserted to each of two parts divided by the decimal point
|
||||
If n(>0) is given,then a space is inserted to each of two parts divided by the decimal point
|
||||
after every n digits for readability.
|
||||
<CODE><PRE>
|
||||
BigDecimal("0.1234567890123456789").to_s(10) # ==> "0.1234567890 123456789E0"
|
||||
|
@ -390,7 +390,7 @@ BigDecimal("0.1234567890123456789").to_s("+10") # ==> "+0.1234567890 123456789E
|
|||
BigDecimal("-0.1234567890123456789").to_s("10") # ==> "-0.1234567890 123456789E0"
|
||||
</PRE></CODE>
|
||||
|
||||
At the end of the string,'E'(or 'e') or 'F'(or 'f') can be specified to change
|
||||
At the end of the string,'E'(or 'e') or 'F'(or 'f') can be specified to change
|
||||
number representation.
|
||||
<CODE><PRE>
|
||||
BigDecimal("1234567890.123456789").to_s("E") # ==> "0.1234567890123456789E10"
|
||||
|
@ -408,7 +408,7 @@ means a = 0.xxxxxxx*10**n.
|
|||
|
||||
<LI><B>precs</B></LI><BLOCKQUOTE>
|
||||
n,m = a.precs <BR>
|
||||
precs returns number of significant digits (n) and maximum number of
|
||||
precs returns number of significant digits (n) and maximum number of
|
||||
significant digits (m) of a.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
|
@ -473,7 +473,7 @@ p a=BigDecimal::new("3.14",10)<BR>
|
|||
should produce output like "#<0x112344:'0.314E1',4(12)%gt;".
|
||||
where "0x112344" is the address,
|
||||
'0.314E1' is the value,4 is the number of the significant digits,
|
||||
and 12 is the maximum number of the significant digits
|
||||
and 12 is the maximum number of the significant digits
|
||||
the object can hold.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
|
@ -527,12 +527,12 @@ same as ==,used in case statement.
|
|||
<DT> 2.A is the BigDecimal object but B is other than BigDecimal object</DT>
|
||||
<DD> Operation is performed,after B is translated to corresponding BigDecimal object(because BigDecimal supports coerce method).</DD>
|
||||
<DT> 3.A is not the BigDecimal object but B is BigDecimal object</DT>
|
||||
<DD>If A has coerce method,then B will translate A to corresponding
|
||||
<DD>If A has coerce method,then B will translate A to corresponding
|
||||
BigDecimal object and the operation is performed,otherwise an error occures.</DD>
|
||||
</DL>
|
||||
|
||||
String is not translated to BigDecimal in default.
|
||||
Uncomment /* #define ENABLE_NUMERIC_STRING */ in bigdecimal.c, compile and install
|
||||
Uncomment /* #define ENABLE_NUMERIC_STRING */ in bigdecimal.c, compile and install
|
||||
again if you want to enable string to BigDecimal conversion.
|
||||
Translation stops without error at the character representing non digit.
|
||||
For instance,"10XX" is translated to 10,"XXXX" is translated to 0.<BR>
|
||||
|
@ -563,7 +563,7 @@ and define coerce method within the new class.<BR>
|
|||
Infinite numbers and NaN can be represented by string writing "+Infinity"(or "Infinity"),"-Infinity",and "NaN" respectively in your program.
|
||||
Infinite numbers can be obtained by 1.0/0.0(=Infinity) or -1.0/0.0(=-Infinity).
|
||||
<BR><BR>
|
||||
NaN(Not a number) can be obtained by undefined computation like 0.0/0.0
|
||||
NaN(Not a number) can be obtained by undefined computation like 0.0/0.0
|
||||
or Infinity-Infinity.
|
||||
Any computation including NaN results to NaN.
|
||||
Comparisons with NaN never become true,including comparison with NaN itself.
|
||||
|
@ -602,7 +602,7 @@ where 'x' is any digit representing mantissa(kept in the array frac[]),
|
|||
BASE is base value(=10000 in 32 bit integer system),
|
||||
and n is the exponent value.<BR>
|
||||
Larger BASE value enables smaller size of the array frac[],and increases computation speed.
|
||||
The value of BASE is defined ind VpInit(). In 32 bit integer system, this value is
|
||||
The value of BASE is defined ind VpInit(). In 32 bit integer system, this value is
|
||||
10000. In 64 bit integer system, the value is 1000000000.
|
||||
When BASE is 10000,an element of the array frac[] can have value of from 0 to 9999.
|
||||
(up to 4 digits).<BR>
|
||||
|
@ -630,7 +630,7 @@ The decimal value 1234.56784321 is represented as(BASE=10000):<BR>
|
|||
0.1234 5678 4321*(10000)**1
|
||||
</PRE>
|
||||
where frac[0]=1234,frac[1]=5678,frac[2]=4321,
|
||||
Prec=3,sign=2,exponent=1. MaxPrec can be any value greater than or equal to
|
||||
Prec=3,sign=2,exponent=1. MaxPrec can be any value greater than or equal to
|
||||
Prec.
|
||||
<hr>
|
||||
|
||||
|
@ -657,7 +657,7 @@ The reason why I adopted decimal number representation for BigDecimal is:<BR>
|
|||
end
|
||||
</PRE></CODE>
|
||||
|
||||
If the internal representation is binary,translation from decimal to
|
||||
If the internal representation is binary,translation from decimal to
|
||||
binary is required and the translation error is inevitable.
|
||||
For example, 0.1 can not exactly be represented in binary.<BR>
|
||||
0.1 => b1*2**(-1)+b1*2**(-2)+b3*2**(-3)+b4*2**(-4)....<BR>
|
||||
|
@ -669,7 +669,7 @@ Of course, exact "0.1" is printed if the rounding operation is properly done,
|
|||
<DD>In binary representation,0.1 can not be represented in finite series of digit.
|
||||
|
||||
But we only need one element(frac[0]=1) in decimal representation.
|
||||
This means that we can always determine the size of the array frac[] in Real
|
||||
This means that we can always determine the size of the array frac[] in Real
|
||||
structure.
|
||||
</DL>
|
||||
|
||||
|
@ -689,11 +689,11 @@ For the fundamental arithmetics such as addition,subtraction,
|
|||
multiplication,and division,I prepared 2 group of methods<BR>
|
||||
|
||||
<H3>1. +,-,*,/</H3>
|
||||
For the operation + - * /,you can not specify the resulting
|
||||
For the operation + - * /,you can not specify the resulting
|
||||
number of significant digits.<BR>
|
||||
Resulting number of significant digits are defined as:<BR>
|
||||
1.1 For *,resulting number of significant digits is the sum of the
|
||||
significant digits of both side of the operator. For / ,resulting number of significant digits is the sum of the
|
||||
1.1 For *,resulting number of significant digits is the sum of the
|
||||
significant digits of both side of the operator. For / ,resulting number of significant digits is the sum of the
|
||||
maximum significant digits of both side of the operator.<BR>
|
||||
1.2 For + and -,resulting number of significant digits is determined so that
|
||||
no round operation is needed. <br>
|
||||
|
@ -705,7 +705,7 @@ which means more memory is required to keep computation results.
|
|||
But,the division such as c=1.0/3.0 will always be rounded.<BR>
|
||||
|
||||
<H3>2. add,sub,mult,div</H3>
|
||||
The length of the significant digits obtained from +,-,*,/
|
||||
The length of the significant digits obtained from +,-,*,/
|
||||
is always defined by that of right and left side of the operator.
|
||||
To specify the length of the significant digits by your self,
|
||||
use methos add,sub,mult,div.
|
||||
|
@ -724,7 +724,7 @@ decimal point.
|
|||
|
||||
|
||||
<H3>4. Example</H3>
|
||||
Following example compute the ratio of the circumference of a circle to
|
||||
Following example compute the ratio of the circumference of a circle to
|
||||
its diameter(pi=3.14159265358979....) using J.Machin's formula.
|
||||
<BR><BR>
|
||||
<CODE><PRE>
|
||||
|
@ -746,7 +746,7 @@ def big_pi(sig) # sig: Number of significant figures
|
|||
k = BigDecimal::new("1")
|
||||
w = BigDecimal::new("1")
|
||||
t = BigDecimal::new("-80")
|
||||
while (u.nonzero? && u.exponent >= exp)
|
||||
while (u.nonzero? && u.exponent >= exp)
|
||||
t = t*m25
|
||||
u = t.div(k,sig)
|
||||
pi = pi + u
|
||||
|
|
|
@ -41,7 +41,7 @@ Ruby
|
|||
<UL>
|
||||
<LI><A HREF="http://www.ruby-lang.org/ja/">http://www.ruby-lang.org/ja/</A>:Ruby公式ページ</LI>
|
||||
<LI><A HREF="http://kahori.com/ruby/ring/">http://kahori.com/ruby/ring/</A>:Rubyに関するページを辿れます</LI>
|
||||
</UL>
|
||||
</UL>
|
||||
<hr>
|
||||
<H2>目次</H2>
|
||||
<UL>
|
||||
|
@ -73,8 +73,8 @@ Ruby
|
|||
BigDecimal を含む Ruby の最新版は<A HREF="http://www.ruby-lang.org/ja/">Ruby公式ページ</A>からダウンロードできます。
|
||||
ダウンロードした最新版を解凍したら、通常のインストール手順を実行して下さい。
|
||||
Ruby が正しくインストールされれば、同時に BigDecimal も利用できるようになるはずです。
|
||||
ソースファイルは
|
||||
bigdecimal.c,bigdecimal.h
|
||||
ソースファイルは
|
||||
bigdecimal.c,bigdecimal.h
|
||||
の2個のみです。<BR>
|
||||
|
||||
<hr>
|
||||
|
@ -332,7 +332,7 @@ n>=0
|
|||
<LI><B>round[(n[,b])]</B></LI><BLOCKQUOTE>
|
||||
c = a.round<BR>
|
||||
|
||||
クラスメソッド BigDecimal::mode(BigDecimal::ROUND_MODE,flag) で指定した
|
||||
クラスメソッド BigDecimal::mode(BigDecimal::ROUND_MODE,flag) で指定した
|
||||
ROUND_MODE に従って丸め操作を実行します。
|
||||
BigDecimal::mode(BigDecimal::ROUND_MODE,flag) で何も指定せず、かつ、引数
|
||||
を指定しない場合は「小数点以下第一位の数を四捨五入して整数(BigDecimal 値)」にします。<BR>
|
||||
|
@ -505,7 +505,7 @@ c = a.sqrt(n)<BR>
|
|||
|
||||
<LI><B><=></B></LI><BLOCKQUOTE>
|
||||
a==b なら 0、a > b なら 1、a < b なら -1 になります。<BR>
|
||||
c = a <=> b
|
||||
c = a <=> b
|
||||
</BLOCKQUOTE>
|
||||
</UL>
|
||||
後は、読んで字の如くです。<BR>
|
||||
|
@ -753,7 +753,7 @@ def big_pi(sig) # sig: Number of significant figures
|
|||
k = BigDecimal::new("1")
|
||||
w = BigDecimal::new("1")
|
||||
t = BigDecimal::new("-80")
|
||||
while (u.nonzero? && u.exponent >= exp)
|
||||
while (u.nonzero? && u.exponent >= exp)
|
||||
t = t*m25
|
||||
u = t.div(k,sig)
|
||||
pi = pi + u
|
||||
|
|
|
@ -37,7 +37,7 @@ module Jacobian
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
# Computes the derivative of f[i] at x[i].
|
||||
# fx is the value of f at x.
|
||||
|
|
|
@ -8,7 +8,7 @@ class Float < Numeric
|
|||
# require 'bigdecimal/util'
|
||||
#
|
||||
# 0.5.to_d
|
||||
# # => #<BigDecimal:1dc69e0,'0.5E0',9(18)>
|
||||
# # => #<BigDecimal:1dc69e0,'0.5E0',9(18)>
|
||||
#
|
||||
def to_d
|
||||
BigDecimal(self.to_s)
|
||||
|
@ -25,7 +25,7 @@ class String
|
|||
# require 'bigdecimal/util'
|
||||
#
|
||||
# "0.5".to_d
|
||||
# # => #<BigDecimal:1dc69e0,'0.5E0',9(18)>
|
||||
# # => #<BigDecimal:1dc69e0,'0.5E0',9(18)>
|
||||
#
|
||||
def to_d
|
||||
BigDecimal(self)
|
||||
|
@ -69,7 +69,7 @@ class Rational < Numeric
|
|||
# r.to_d
|
||||
# # => #<BigDecimal:1a52bd8,'0.3142857142 8571427937 0154144999 105E1',45(63)>
|
||||
# r.to_d(3)
|
||||
# # => #<BigDecimal:1a44d08,'0.314E1',18(36)>
|
||||
# # => #<BigDecimal:1a44d08,'0.314E1',18(36)>
|
||||
def to_d(nFig=0)
|
||||
num = self.numerator.to_s
|
||||
if nFig<=0
|
||||
|
|
|
@ -219,7 +219,7 @@ curses_closed(void)
|
|||
* Document-method: Curses.clear
|
||||
*
|
||||
* Clears every position on the screen completely,
|
||||
* so that a subsequent call by Curses.refresh for the screen/window
|
||||
* so that a subsequent call by Curses.refresh for the screen/window
|
||||
* will be repainted from scratch.
|
||||
*/
|
||||
static VALUE
|
||||
|
@ -230,7 +230,7 @@ curses_clear(VALUE obj)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.clrtoeol
|
||||
*
|
||||
* Clears to the end of line, that the cursor is currently on.
|
||||
|
@ -243,7 +243,7 @@ curses_clrtoeol(void)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.refresh
|
||||
*
|
||||
* Refreshes the windows and lines.
|
||||
|
@ -257,7 +257,7 @@ curses_refresh(VALUE obj)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.doupdate
|
||||
*
|
||||
* Refreshes the windows and lines.
|
||||
|
@ -361,7 +361,7 @@ curses_noraw(VALUE obj)
|
|||
* call Curses.cbreak or Curses.nocbreak explicitly.
|
||||
* Most interactive programs using curses set the cbreak mode.
|
||||
* Note that Curses.cbreak overrides Curses.raw.
|
||||
*
|
||||
*
|
||||
* see also Curses.raw
|
||||
*/
|
||||
static VALUE
|
||||
|
@ -430,7 +430,7 @@ curses_nonl(VALUE obj)
|
|||
*
|
||||
* Sounds an audible alarm on the terminal, if possible;
|
||||
* otherwise it flashes the screen (visual bell).
|
||||
*
|
||||
*
|
||||
* see also Curses.flash
|
||||
*/
|
||||
static VALUE
|
||||
|
@ -448,7 +448,7 @@ curses_beep(VALUE obj)
|
|||
*
|
||||
* Flashs the screen, for visual alarm on the terminal, if possible;
|
||||
* otherwise it sounds the alert.
|
||||
*
|
||||
*
|
||||
* see also Curses.beep
|
||||
*/
|
||||
static VALUE
|
||||
|
@ -483,7 +483,7 @@ curses_char(VALUE c)
|
|||
}
|
||||
|
||||
#ifdef HAVE_UNGETCH
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.ungetch
|
||||
* call-seq: ungetch(ch)
|
||||
*
|
||||
|
@ -504,7 +504,7 @@ curses_ungetch(VALUE obj, VALUE ch)
|
|||
#define curses_ungetch rb_f_notimplement
|
||||
#endif
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.setpos
|
||||
* call-seq: setpos(y, x)
|
||||
*
|
||||
|
@ -520,7 +520,7 @@ curses_setpos(VALUE obj, VALUE y, VALUE x)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.standout
|
||||
*
|
||||
* Enables the best highlighting mode of the terminal.
|
||||
|
@ -537,7 +537,7 @@ curses_standout(VALUE obj)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.standend
|
||||
*
|
||||
* Enables the Normal display (no highlight)
|
||||
|
@ -554,7 +554,7 @@ curses_standend(VALUE obj)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.inch
|
||||
*
|
||||
* Returns the character at the current position.
|
||||
|
@ -566,12 +566,12 @@ curses_inch(VALUE obj)
|
|||
return CH2FIX(inch());
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.addch
|
||||
* call-seq: addch(ch)
|
||||
*
|
||||
* Add a character +ch+, with attributes, then advance the cursor.
|
||||
*
|
||||
*
|
||||
* see also the system manual for curs_addch(3)
|
||||
*/
|
||||
static VALUE
|
||||
|
@ -582,12 +582,12 @@ curses_addch(VALUE obj, VALUE ch)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.insch
|
||||
* call-seq: insch(ch)
|
||||
*
|
||||
* Insert a character +ch+, before the cursor.
|
||||
*
|
||||
*
|
||||
*/
|
||||
static VALUE
|
||||
curses_insch(VALUE obj, VALUE ch)
|
||||
|
@ -794,7 +794,7 @@ curses_curs_set(VALUE obj, VALUE visibility)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.scrl
|
||||
* call-seq: scrl(num)
|
||||
*
|
||||
|
@ -818,7 +818,7 @@ curses_scrl(VALUE obj, VALUE n)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.setscrreg
|
||||
* call-seq: setscrreg(top, bottom)
|
||||
*
|
||||
|
@ -843,7 +843,7 @@ curses_setscrreg(VALUE obj, VALUE top, VALUE bottom)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.attroff
|
||||
* call-seq: attroff(attrs)
|
||||
*
|
||||
|
@ -859,7 +859,7 @@ curses_attroff(VALUE obj, VALUE attrs)
|
|||
/* return INT2FIX(attroff(NUM2INT(attrs))); */
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.attron
|
||||
* call-seq: attron(attrs)
|
||||
*
|
||||
|
@ -893,7 +893,7 @@ curses_attrset(VALUE obj, VALUE attrs)
|
|||
/* return INT2FIX(attroff(NUM2INT(attrs))); */
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.bkgdset
|
||||
* call-seq: bkgdset(ch)
|
||||
*
|
||||
|
@ -916,7 +916,7 @@ curses_bkgdset(VALUE obj, VALUE ch)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* call-seq: bkgd(ch)
|
||||
*
|
||||
* Window background manipulation routines.
|
||||
|
@ -956,7 +956,7 @@ curses_use_default_colors(VALUE obj)
|
|||
#endif
|
||||
|
||||
#if defined(HAVE_TABSIZE)
|
||||
/*
|
||||
/*
|
||||
* Document-method: TABSIZE=
|
||||
* call-seq: TABSIZE=(value)
|
||||
*
|
||||
|
@ -973,7 +973,7 @@ curses_tabsize_set(VALUE obj, VALUE val)
|
|||
#endif
|
||||
|
||||
#if defined(HAVE_TABSIZE)
|
||||
/*
|
||||
/*
|
||||
* Returns the number of positions in a tab.
|
||||
*/
|
||||
static VALUE
|
||||
|
@ -986,7 +986,7 @@ curses_tabsize_get(VALUE ojb)
|
|||
#endif
|
||||
|
||||
#if defined(HAVE_ESCDELAY)
|
||||
/*
|
||||
/*
|
||||
* call-seq: ESCDELAY=(value)
|
||||
*
|
||||
* Sets the ESCDELAY to Integer +value+
|
||||
|
@ -1002,7 +1002,7 @@ curses_escdelay_set(VALUE obj, VALUE val)
|
|||
#endif
|
||||
|
||||
#if defined(HAVE_ESCDELAY)
|
||||
/*
|
||||
/*
|
||||
* Returns the total time, in milliseconds, for which
|
||||
* curses will await a character sequence, e.g., a function key
|
||||
*/
|
||||
|
@ -1015,7 +1015,7 @@ curses_escdelay_get(VALUE obj)
|
|||
#define curses_escdelay_get rb_f_notimplement
|
||||
#endif
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.resize
|
||||
* call-seq: resize(lines, cols)
|
||||
*
|
||||
|
@ -1023,7 +1023,7 @@ curses_escdelay_get(VALUE obj)
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.resizeterm
|
||||
* call-seq: resizeterm(lines, cols)
|
||||
*
|
||||
|
@ -1180,7 +1180,7 @@ curses_color_pairs(VALUE obj)
|
|||
* Document-method: Curses.pair_content
|
||||
* call-seq: pair_content(pair)
|
||||
*
|
||||
* Returns a 2 item Array, with the foreground and
|
||||
* Returns a 2 item Array, with the foreground and
|
||||
* background color, in +pair+
|
||||
*/
|
||||
static VALUE
|
||||
|
@ -1248,7 +1248,7 @@ curses_mousedata_free(struct mousedata *mdata)
|
|||
xfree(mdata->mevent);
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses.getmouse
|
||||
*
|
||||
* Returns coordinates of the mouse.
|
||||
|
@ -1395,7 +1395,7 @@ curses_timeout(VALUE obj, VALUE delay)
|
|||
*
|
||||
* Save the current terminal modes as the "program"
|
||||
* state for use by the Curses.reset_prog_mode
|
||||
*
|
||||
*
|
||||
* This is done automatically by Curses.init_screen
|
||||
*/
|
||||
static VALUE
|
||||
|
@ -1414,7 +1414,7 @@ curses_def_prog_mode(VALUE obj)
|
|||
*
|
||||
* Reset the current terminal modes to the saved state
|
||||
* by the Curses.def_prog_mode
|
||||
*
|
||||
*
|
||||
* This is done automatically by Curses.close_screen
|
||||
*/
|
||||
static VALUE
|
||||
|
@ -1438,14 +1438,14 @@ window_s_allocate(VALUE class)
|
|||
return Data_Make_Struct(class, struct windata, 0, free_window, winp);
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.new
|
||||
* call-seq: new(height, width, top, left)
|
||||
*
|
||||
* Contruct a new Curses::Window with constraints of
|
||||
* Contruct a new Curses::Window with constraints of
|
||||
* +height+ lines, +width+ columns, begin at +top+ line, and begin +left+ most column.
|
||||
*
|
||||
* A new window using full screen is called as
|
||||
* A new window using full screen is called as
|
||||
* Curses::Window.new(0,0,0,0)
|
||||
*
|
||||
*/
|
||||
|
@ -1466,11 +1466,11 @@ window_initialize(VALUE obj, VALUE h, VALUE w, VALUE top, VALUE left)
|
|||
return obj;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.subwin
|
||||
* call-seq: subwin(height, width, top, left)
|
||||
*
|
||||
* Contruct a new subwindow with constraints of
|
||||
* Contruct a new subwindow with constraints of
|
||||
* +height+ lines, +width+ columns, begin at +top+ line, and begin +left+ most column.
|
||||
*
|
||||
*/
|
||||
|
@ -1493,7 +1493,7 @@ window_subwin(VALUE obj, VALUE height, VALUE width, VALUE top, VALUE left)
|
|||
return win;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.close
|
||||
*
|
||||
* Deletes the window, and frees the memory
|
||||
|
@ -1510,7 +1510,7 @@ window_close(VALUE obj)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.clear
|
||||
*
|
||||
* Clear the window.
|
||||
|
@ -1526,7 +1526,7 @@ window_clear(VALUE obj)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.clrtoeol
|
||||
*
|
||||
* Clear the window to the end of line, that the cursor is currently on.
|
||||
|
@ -1542,7 +1542,7 @@ window_clrtoeol(VALUE obj)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.refresh
|
||||
*
|
||||
* Refreshes the windows and lines.
|
||||
|
@ -1559,7 +1559,7 @@ window_refresh(VALUE obj)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.noutrefresh
|
||||
*
|
||||
* Refreshes the windows and lines.
|
||||
|
@ -1582,7 +1582,7 @@ window_noutrefresh(VALUE obj)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.move
|
||||
* call-seq: move(y,x)
|
||||
*
|
||||
|
@ -1599,7 +1599,7 @@ window_move(VALUE obj, VALUE y, VALUE x)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.setpos
|
||||
* call-seq: setpos(y, x)
|
||||
*
|
||||
|
@ -1618,7 +1618,7 @@ window_setpos(VALUE obj, VALUE y, VALUE x)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.cury
|
||||
*
|
||||
* A getter for the current line (Y coord) of the window
|
||||
|
@ -1634,7 +1634,7 @@ window_cury(VALUE obj)
|
|||
return INT2FIX(y);
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.curx
|
||||
*
|
||||
* A getter for the current column (X coord) of the window
|
||||
|
@ -1650,7 +1650,7 @@ window_curx(VALUE obj)
|
|||
return INT2FIX(x);
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.maxy
|
||||
*
|
||||
* A getter for the maximum lines for the window
|
||||
|
@ -1674,7 +1674,7 @@ window_maxy(VALUE obj)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.maxx
|
||||
*
|
||||
* A getter for the maximum columns for the window
|
||||
|
@ -1698,7 +1698,7 @@ window_maxx(VALUE obj)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.begy
|
||||
*
|
||||
* A getter for the beginning line (Y coord) of the window
|
||||
|
@ -1718,7 +1718,7 @@ window_begy(VALUE obj)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.begx
|
||||
*
|
||||
* A getter for the beginning column (X coord) of the window
|
||||
|
@ -1738,7 +1738,7 @@ window_begx(VALUE obj)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.box
|
||||
* call-seq: box(vert, hor)
|
||||
*
|
||||
|
@ -1782,7 +1782,7 @@ window_box(int argc, VALUE *argv, VALUE self)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.standout
|
||||
*
|
||||
* Enables the best highlighting mode of the terminal.
|
||||
|
@ -1801,7 +1801,7 @@ window_standout(VALUE obj)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.standend
|
||||
*
|
||||
* Enables the Normal display (no highlight)
|
||||
|
@ -1820,7 +1820,7 @@ window_standend(VALUE obj)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.inch
|
||||
*
|
||||
* Returns the character at the current position of the window.
|
||||
|
@ -1834,12 +1834,12 @@ window_inch(VALUE obj)
|
|||
return CH2FIX(winch(winp->window));
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.addch
|
||||
* call-seq: addch(ch)
|
||||
*
|
||||
* Add a character +ch+, with attributes, to the window, then advance the cursor.
|
||||
*
|
||||
*
|
||||
* see also the system manual for curs_addch(3)
|
||||
*/
|
||||
static VALUE
|
||||
|
@ -1853,12 +1853,12 @@ window_addch(VALUE obj, VALUE ch)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.insch
|
||||
* call-seq: insch(ch)
|
||||
*
|
||||
* Insert a character +ch+, before the cursor, in the current window
|
||||
*
|
||||
*
|
||||
*/
|
||||
static VALUE
|
||||
window_insch(VALUE obj, VALUE ch)
|
||||
|
@ -2086,7 +2086,7 @@ window_idlok(VALUE obj, VALUE bf)
|
|||
return Qnil;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.setscrreg
|
||||
* call-seq: setscrreg(top, bottom)
|
||||
*
|
||||
|
@ -2119,7 +2119,7 @@ window_setscrreg(VALUE obj, VALUE top, VALUE bottom)
|
|||
/*
|
||||
* Document-method: Curses::Window.color_set
|
||||
* call-seq: color_set(col)
|
||||
*
|
||||
*
|
||||
* Sets the current color of the given window to the
|
||||
* foreground/background combination described by the Fixnum +col+.
|
||||
*/
|
||||
|
@ -2135,7 +2135,7 @@ window_color_set(VALUE obj, VALUE col)
|
|||
}
|
||||
#endif /* defined(USE_COLOR) && defined(HAVE_WCOLOR_SET) */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.scroll
|
||||
*
|
||||
* Scrolls the current window up one line.
|
||||
|
@ -2150,7 +2150,7 @@ window_scroll(VALUE obj)
|
|||
return (scroll(winp->window) == OK) ? Qtrue : Qfalse;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.scrl
|
||||
* call-seq: scrl(num)
|
||||
*
|
||||
|
@ -2176,7 +2176,7 @@ window_scrl(VALUE obj, VALUE n)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.attroff
|
||||
* call-seq: attroff(attrs)
|
||||
*
|
||||
|
@ -2197,7 +2197,7 @@ window_attroff(VALUE obj, VALUE attrs)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.attron
|
||||
* call-seq: attron(attrs)
|
||||
*
|
||||
|
@ -2228,7 +2228,7 @@ window_attron(VALUE obj, VALUE attrs)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.attrset
|
||||
* call-seq: attrset(attrs)
|
||||
*
|
||||
|
@ -2329,7 +2329,7 @@ window_getbkgd(VALUE obj)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.resize
|
||||
* call-seq: resize(lines, cols)
|
||||
*
|
||||
|
@ -2354,15 +2354,15 @@ window_resize(VALUE obj, VALUE lin, VALUE col)
|
|||
/*
|
||||
* Document-method: Curses::Window.keypad=
|
||||
* call-seq: keypad=(bool)
|
||||
*
|
||||
*
|
||||
* see Curses::Window.keypad
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-method: Curses::Window.keypad
|
||||
* call-seq: keypad(bool)
|
||||
*
|
||||
* Enables the keypad of the user's terminal.
|
||||
* Enables the keypad of the user's terminal.
|
||||
* If enabled (+bool+ is +true+), the user can press a function key
|
||||
* (such as an arrow key) and wgetch returns a single value representing
|
||||
* the function key, as in KEY_LEFT. If disabled (+bool+ is +false+),
|
||||
|
@ -2449,7 +2449,7 @@ window_timeout(VALUE obj, VALUE delay)
|
|||
|
||||
/*------------------------- Initialization -------------------------*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* Document-module: Curses
|
||||
*
|
||||
* == Description
|
||||
|
@ -2483,7 +2483,7 @@ window_timeout(VALUE obj, VALUE delay)
|
|||
*
|
||||
*
|
||||
* == Examples
|
||||
*
|
||||
*
|
||||
* * hello.rb
|
||||
* :include: hello.rb
|
||||
*
|
||||
|
@ -2517,7 +2517,7 @@ Init_curses(void)
|
|||
rb_gc_register_address(&rb_stdscr);
|
||||
|
||||
#ifdef USE_MOUSE
|
||||
/*
|
||||
/*
|
||||
* Document-class: Curses::MouseEvent
|
||||
*
|
||||
* == Description
|
||||
|
@ -2618,11 +2618,11 @@ Init_curses(void)
|
|||
|
||||
/*
|
||||
* Document-class: Curses::Window
|
||||
*
|
||||
* == Description
|
||||
*
|
||||
* == Description
|
||||
*
|
||||
* The means by which to create and manage frames or windows.
|
||||
* While there may be more than one window at a time, only one window
|
||||
* While there may be more than one window at a time, only one window
|
||||
* receive the input.
|
||||
*
|
||||
* == Usage
|
||||
|
@ -2738,56 +2738,56 @@ Init_curses(void)
|
|||
rb_curses_define_const(A_COLOR);
|
||||
|
||||
#ifdef COLORS
|
||||
/*
|
||||
/*
|
||||
* Document-const: Curses::COLORS
|
||||
*
|
||||
* Integer of the colors available
|
||||
*/
|
||||
rb_curses_define_const(COLORS);
|
||||
#endif
|
||||
/*
|
||||
/*
|
||||
* Document-const: Curses::COLOR_BLACK
|
||||
*
|
||||
* Integer of the color black
|
||||
*/
|
||||
rb_curses_define_const(COLOR_BLACK);
|
||||
/*
|
||||
/*
|
||||
* Document-const: COLOR_RED
|
||||
*
|
||||
* Integer of the color red
|
||||
*/
|
||||
rb_curses_define_const(COLOR_RED);
|
||||
/*
|
||||
/*
|
||||
* Document-const: COLOR_GREEN
|
||||
*
|
||||
* Integer of the color green
|
||||
*/
|
||||
rb_curses_define_const(COLOR_GREEN);
|
||||
/*
|
||||
/*
|
||||
* Document-const: COLOR_YELLOW
|
||||
*
|
||||
* Integer of the color yellow
|
||||
*/
|
||||
rb_curses_define_const(COLOR_YELLOW);
|
||||
/*
|
||||
/*
|
||||
* Document-const: COLOR_BLUE
|
||||
*
|
||||
* Integer of the color blue
|
||||
*/
|
||||
rb_curses_define_const(COLOR_BLUE);
|
||||
/*
|
||||
/*
|
||||
* Document-const: COLOR_MAGENTA
|
||||
*
|
||||
* Integer of the color magenta
|
||||
*/
|
||||
rb_curses_define_const(COLOR_MAGENTA);
|
||||
/*
|
||||
/*
|
||||
* Document-const: COLOR_CYAN
|
||||
*
|
||||
* Integer of the color cyan
|
||||
*/
|
||||
rb_curses_define_const(COLOR_CYAN);
|
||||
/*
|
||||
/*
|
||||
* Document-const: COLOR_WHITE
|
||||
*
|
||||
* Integer of the color white
|
||||
|
|
|
@ -1 +1 @@
|
|||
etc.o : etc.c $(hdrdir)/ruby.h $(topdir)/config.h $(hdrdir)/defines.h
|
||||
etc.o : etc.c $(hdrdir)/ruby.h $(topdir)/config.h $(hdrdir)/defines.h
|
||||
|
|
|
@ -122,8 +122,8 @@ char MasterDevice[] = "/dev/pty%s",
|
|||
|
||||
static VALUE eChildExited;
|
||||
|
||||
/* Returns the exit status of the child for which PTY#check
|
||||
* raised this exception
|
||||
/* Returns the exit status of the child for which PTY#check
|
||||
* raised this exception
|
||||
*/
|
||||
static VALUE
|
||||
echild_status(VALUE self)
|
||||
|
|
|
@ -37,28 +37,28 @@ readline([prompt, [add_hist]]) -> String | nil
|
|||
エンターキーの押下などでユーザが文字列を入力し終えると、
|
||||
入力した文字列を返します。
|
||||
このとき、add_hist が true であれば、入力した文字列をヒストリに追加します。
|
||||
|
||||
|
||||
何も入力していない状態で EOF(UNIX では ^D) を入力するなどで、
|
||||
ユーザからの入力がない場合は nil を返します。
|
||||
|
||||
|
||||
次の条件を全て満たす場合、例外 IOError が発生します。
|
||||
1. 標準入力が tty でない。
|
||||
2. 標準入力をクローズしている。(isatty(2) の errno が EBADF である。)
|
||||
|
||||
|
||||
本メソッドはスレッドに対応しています。
|
||||
入力待ち状態のときはスレッドコンテキストの切替えが発生します。
|
||||
|
||||
|
||||
入力時には行内編集が可能で、vi モードと Emacs モードが用意されています。
|
||||
デフォルトは Emacs モードです。
|
||||
|
||||
|
||||
本メソッドには注意事項があります。
|
||||
入力待ちの状態で ^C すると ruby インタプリタが終了し、端末状態を復帰しません。
|
||||
これを回避するための例を3つ挙げます。
|
||||
|
||||
|
||||
* ^CによるInterrupt例外を補足して、端末状態を復帰します:
|
||||
|
||||
|
||||
require "readline"
|
||||
|
||||
|
||||
stty_save = `stty -g`.chomp
|
||||
begin
|
||||
while buf = Readline.readline
|
||||
|
@ -70,48 +70,48 @@ readline([prompt, [add_hist]]) -> String | nil
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
* INTシグナルを補足して、端末状態を復帰します:
|
||||
|
||||
|
||||
require "readline"
|
||||
|
||||
|
||||
stty_save = `stty -g`.chomp
|
||||
trap("INT") { system "stty", stty_save; exit }
|
||||
|
||||
|
||||
while buf = Readline.readline
|
||||
p buf
|
||||
end
|
||||
|
||||
|
||||
* 単に ^C を無視する方法もあります:
|
||||
|
||||
|
||||
require "readline"
|
||||
|
||||
|
||||
trap("INT", "SIG_IGN")
|
||||
|
||||
|
||||
while buf = Readline.readline
|
||||
p buf
|
||||
end
|
||||
|
||||
|
||||
入力履歴 Readline::HISTORY を使用して、空行や直前の入力と同じ内容は入力
|
||||
履歴に残さないということもできます。
|
||||
|
||||
|
||||
require "readline"
|
||||
|
||||
|
||||
while buf = Readline.readline("> ", true)
|
||||
# p Readline::HISTORY.to_a
|
||||
Readline::HISTORY.pop if /^\s*$/ =~ buf
|
||||
|
||||
|
||||
begin
|
||||
if Readline::HISTORY[Readline::HISTORY.length-2] == buf
|
||||
Readline::HISTORY.pop
|
||||
Readline::HISTORY.pop
|
||||
end
|
||||
rescue IndexError
|
||||
end
|
||||
|
||||
|
||||
# p Readline::HISTORY.to_a
|
||||
print "-> ", buf, "\n"
|
||||
end
|
||||
|
||||
|
||||
$SAFE が 4 の場合、例外 SecurityError が発生します。
|
||||
|
||||
=== クラスメソッド
|
||||
|
@ -171,7 +171,7 @@ Readline.completion_case_fold -> bool
|
|||
そのまま取得するので、次のような動作をします。
|
||||
|
||||
require "readline"
|
||||
|
||||
|
||||
Readline.completion_case_fold = "This is a String."
|
||||
p Readline.completion_case_fold # => "This is a String."
|
||||
|
||||
|
@ -238,7 +238,7 @@ Readline.completion_append_character = char
|
|||
使用例:
|
||||
|
||||
require "readline"
|
||||
|
||||
|
||||
Readline.readline("> ", true)
|
||||
Readline.completion_append_character = " "
|
||||
|
||||
|
@ -246,13 +246,13 @@ Readline.completion_append_character = char
|
|||
|
||||
>
|
||||
ここで "/var/li" を入力します。
|
||||
|
||||
|
||||
> /var/li
|
||||
ここで TAB キーを入力します。
|
||||
|
||||
|
||||
> /var/lib
|
||||
"b" が補完され、最後に " " が追加されるので、"/usr" を連続して入力できます。
|
||||
|
||||
|
||||
> /var/lib /usr
|
||||
|
||||
なお、1文字しか指定することはできません。
|
||||
|
@ -304,7 +304,7 @@ Readline.completer_word_break_characters = string
|
|||
Readline.basic_word_break_characters= との違いは、
|
||||
GNU Readline の rl_complete_internal 関数で使用されることです。
|
||||
|
||||
GNU Readline のデフォルトの値は、
|
||||
GNU Readline のデフォルトの値は、
|
||||
Readline.basic_word_break_characters と同じです。
|
||||
|
||||
サポートしていない環境では、例外 NotImplementedError が発生します。
|
||||
|
@ -388,7 +388,7 @@ HISTORY
|
|||
例えば、HISTORY[4] により 5 番目に入力した内容を取り出すことができます。
|
||||
|
||||
require "readline"
|
||||
|
||||
|
||||
Readline::HISTORY.push("a", "b", "c", "d", "e")
|
||||
p Readline::HISTORY[4] # => "e"
|
||||
|
||||
|
@ -421,7 +421,7 @@ HISTORY
|
|||
FILENAME_COMPLETION_PROC
|
||||
|
||||
ファイル名の補完を行う call メソッドを持つオブジェクトです。
|
||||
|
||||
|
||||
Readline.completion_proc= により、ユーザの入力時にファイル名の補完を
|
||||
行うように設定するために使用することを想定してます。
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ Ripper README
|
|||
|
||||
Ripper is still early-alpha version.
|
||||
I never assure any kind of backward compatibility.
|
||||
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
|
|
|
@ -13,6 +13,6 @@ This library is based on MoonWolf version written in Ruby. Thanks a lot.
|
|||
* not implemented: (({fcntl})), (({reopen})).
|
||||
* (({fileno})) returns nil.
|
||||
* (({pos=})) returns new position, not 0.
|
||||
* (({ungetc})) does nothing at start of the string.
|
||||
* (({ungetc})) does nothing at start of the string.
|
||||
|
||||
=end
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
stringio.o: stringio.c $(hdrdir)/ruby/ruby.h $(arch_hdrdir)/ruby/config.h \
|
||||
$(hdrdir)/ruby/defines.h $(hdrdir)/ruby/intern.h $(hdrdir)/ruby/io.h \
|
||||
$(hdrdir)/ruby/encoding.h
|
||||
$(hdrdir)/ruby/encoding.h
|
||||
|
|
|
@ -75,7 +75,7 @@ Module Methods:
|
|||
|
||||
Example:
|
||||
Syslog.crit("the sky is falling in %d seconds!", 5)
|
||||
|
||||
|
||||
mask
|
||||
mask=(mask)
|
||||
|
||||
|
@ -86,7 +86,7 @@ Module Methods:
|
|||
Example:
|
||||
Syslog.mask = Syslog::LOG_UPTO(Syslog::LOG_ERR)
|
||||
|
||||
close
|
||||
close
|
||||
|
||||
Closes syslog.
|
||||
|
||||
|
|
|
@ -14,13 +14,13 @@
|
|||
|
||||
Tue Nov 25 03:37:42 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||
|
||||
* ext/tk/lib/tkextlib/blt/tabset.rb,
|
||||
ext/tk/lib/tkextlib/blt/tabnotebook.rb:
|
||||
* ext/tk/lib/tkextlib/blt/tabset.rb,
|
||||
ext/tk/lib/tkextlib/blt/tabnotebook.rb:
|
||||
fix many bugs. Now, those work properly.
|
||||
|
||||
Sat Nov 22 10:31:25 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||
|
||||
* ext/tk/lib/tkextlib/blt.rb, ext/tk/lib/tkextlib/blt/vector.rb:
|
||||
* ext/tk/lib/tkextlib/blt.rb, ext/tk/lib/tkextlib/blt/vector.rb:
|
||||
fix NameError bug.
|
||||
|
||||
2008-05-12 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||
|
@ -39,12 +39,12 @@ Sat Nov 22 10:31:25 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
|||
|
||||
2007-01-26 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||
|
||||
* ext/tk/lib/tkextlib/iwidgets/checkbox.rb: wrong number of arguments
|
||||
* ext/tk/lib/tkextlib/iwidgets/checkbox.rb: wrong number of arguments
|
||||
[ruby-Bugs-7776].
|
||||
|
||||
* ext/tk/lib/tkextlib/iwidgets/radiobox.rb: ditto.
|
||||
|
||||
* ext/tk/lib/tkextlib/blt/tile/checkbutton.rb: change primary name
|
||||
* ext/tk/lib/tkextlib/blt/tile/checkbutton.rb: change primary name
|
||||
of class [ruby-dev:30080].
|
||||
|
||||
* ext/tk/lib/tkextlib/blt/tile/radiobutton.rb: ditto.
|
||||
|
@ -53,16 +53,16 @@ Sat Nov 22 10:31:25 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
|||
|
||||
* lib/tkextlib/tile/treeview.rb : minor bug fix.
|
||||
|
||||
* lib/tkextlib/blt/table.rb: fix bugs which forbade use of
|
||||
* lib/tkextlib/blt/table.rb: fix bugs which forbade use of
|
||||
'::blt::table' command. Now, probably, it'll works properly.
|
||||
|
||||
2006-11-06 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||
|
||||
* lib/tkextlib/version.rb: keep release date of tkextlib on
|
||||
* lib/tkextlib/version.rb: keep release date of tkextlib on
|
||||
"Tk::Tkextlib_RELEASE_DATE".
|
||||
|
||||
* lib/tkextlib/tile/treeview.rb : support Tile 0.7.8.
|
||||
Now, you can handle tree items as objects.
|
||||
* lib/tkextlib/tile/treeview.rb : support Tile 0.7.8.
|
||||
Now, you can handle tree items as objects.
|
||||
|
||||
2006-10-04 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||
|
||||
|
@ -112,7 +112,7 @@ Sat Nov 22 10:31:25 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
|||
|
||||
2005-11-19 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||
|
||||
* sample/tkextlib/treectrl/demo.rb: remove dependency on Ruby's
|
||||
* sample/tkextlib/treectrl/demo.rb: remove dependency on Ruby's
|
||||
version (1.8 or 1.9).
|
||||
|
||||
2005-10-23 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||
|
@ -375,7 +375,7 @@ Sat Nov 22 10:31:25 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
|||
* lib/tkextlib/iwidgets/scrolledtext.rb: ditto.
|
||||
|
||||
* lib/tkextlib/iwidgets/scrolledcanvas.rb: bug fix on
|
||||
TkCanvas#delete when given non-TkcItem arguments.
|
||||
TkCanvas#delete when given non-TkcItem arguments.
|
||||
|
||||
2005-05-10 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||
|
||||
|
@ -576,7 +576,7 @@ Sat Nov 22 10:31:25 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
|||
* lib/tkextlib/blt/component.rb: bug fix on treatment of
|
||||
component objects.
|
||||
|
||||
* sample/tkextlib/blt/graph6.rb: a new sample script.
|
||||
* sample/tkextlib/blt/graph6.rb: a new sample script.
|
||||
|
||||
2005-03-31 ocean <ocean@ruby-lang.org>
|
||||
|
||||
|
@ -592,7 +592,7 @@ Sat Nov 22 10:31:25 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
|||
* sample/tkextlib/iwidgets/sample/hierarchy.rb: show basename
|
||||
only [ruby-dev:25970]
|
||||
|
||||
* sample/tkextlib/treectrl/demo.rb: add check for existence of
|
||||
* sample/tkextlib/treectrl/demo.rb: add check for existence of
|
||||
'backgroundimage' option.
|
||||
|
||||
* sample/tkextlib/treectrl/bitmaps.rb: ditto.
|
||||
|
@ -626,7 +626,7 @@ Sat Nov 22 10:31:25 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
|||
2005-03-29 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||
|
||||
* lib/tkextlib/blt/component.rb: cannot create elements except
|
||||
default type of element.
|
||||
default type of element.
|
||||
|
||||
* lib/tkextlib/blt/barchart.rb: ditto.
|
||||
|
||||
|
@ -661,7 +661,7 @@ Sat Nov 22 10:31:25 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
|||
* lib/tkextlib/blt/component.rb: proper call on xaxis_* and so on.
|
||||
|
||||
* lib/tkextlib/blt/htext.rb: add TkVariable object to access
|
||||
special Tcl variables.
|
||||
special Tcl variables.
|
||||
|
||||
* lib/tkextlib/treectrl/tktreectrl.rb: typo fix.
|
||||
|
||||
|
@ -923,8 +923,8 @@ Sat Nov 22 10:31:25 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
|||
* use Tk::ValidateConfigure.__def_validcmd() method
|
||||
(new function to define validatecommand methods easier)
|
||||
|
||||
* tcllib.rb : avoid the loading trouble that almost all part of
|
||||
the extension is not available when some libraries are invalid.
|
||||
* tcllib.rb : avoid the loading trouble that almost all part of
|
||||
the extension is not available when some libraries are invalid.
|
||||
|
||||
2004-07-09 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||
|
||||
|
@ -942,7 +942,7 @@ Sat Nov 22 10:31:25 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
|||
|
||||
* add ICONS extension demo
|
||||
|
||||
* many bug fix
|
||||
* many bug fix
|
||||
|
||||
2004-07-01 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||
|
||||
|
|
|
@ -3,16 +3,16 @@
|
|||
|
||||
This document discribes about the 'tcltklib' library. Although there
|
||||
is the 'tcltk' library (tcltk.rb) under this directory, no description
|
||||
in this document (because it is not maintained recently).
|
||||
in this document (because it is not maintained recently).
|
||||
|
||||
==============================================================
|
||||
module TclTklib
|
||||
: Defines methods to do operations which are independed on
|
||||
: Defines methods to do operations which are independed on
|
||||
: Tcl/Tk interpreters
|
||||
|
||||
module TclTkLib::EventFlag
|
||||
: Defines flags to define taget events on 'do_one_event' methos.
|
||||
: When to give, please use bit-operator (e.g. WINDOW | DONT_WAIT).
|
||||
: Defines flags to define taget events on 'do_one_event' methos.
|
||||
: When to give, please use bit-operator (e.g. WINDOW | DONT_WAIT).
|
||||
|
||||
[constants]
|
||||
NONE
|
||||
|
@ -30,29 +30,29 @@ module TclTklib
|
|||
|
||||
IDLE
|
||||
: 'idle' operation (e.g. 're-draw'; the operations when the
|
||||
: other kinds of events doesn't occur) is processed.
|
||||
: other kinds of events doesn't occur) is processed.
|
||||
|
||||
ALL
|
||||
: All kinds of events are processed.
|
||||
: Same to 'WINDOW | FILE | TIMER | IDLE'.
|
||||
: All kinds of events are processed.
|
||||
: Same to 'WINDOW | FILE | TIMER | IDLE'.
|
||||
|
||||
DONT_WAIT
|
||||
: Without this flag, 'do_one_event' waits the occurence of
|
||||
: a target event. With this flag, doesn't wait and returns
|
||||
: false if there is no target event for processing.
|
||||
: Without this flag, 'do_one_event' waits the occurence of
|
||||
: a target event. With this flag, doesn't wait and returns
|
||||
: false if there is no target event for processing.
|
||||
|
||||
module TclTkLib::VarAccessFlag
|
||||
: Defines flags to give '_get_variable' and so on. When to give,
|
||||
: please use bit-operator (e.g. GLOBAL_ONLY | LEAVE_ERR_MSG ).
|
||||
: Defines flags to give '_get_variable' and so on. When to give,
|
||||
: please use bit-operator (e.g. GLOBAL_ONLY | LEAVE_ERR_MSG ).
|
||||
|
||||
[constants]
|
||||
NONE
|
||||
: Is 0. It means "set no flag".
|
||||
: Is 0. It means "set no flag".
|
||||
|
||||
GLOBAL_ONLY
|
||||
: (site Tcl/Tk's man page)
|
||||
: Under normal circumstances the procedures look up
|
||||
: variables as follows: If a procedure call is active
|
||||
: Under normal circumstances the procedures look up
|
||||
: variables as follows: If a procedure call is active
|
||||
: in interp, a variable is looked up at the current
|
||||
: level of procedure call. Otherwise, a variable is
|
||||
: looked up first in the current namespace, then in
|
||||
|
@ -63,9 +63,9 @@ module TclTklib
|
|||
: given, GLOBAL_ONLY is ignored.
|
||||
:
|
||||
: *** ATTENTION ***
|
||||
: Tcl7.6 doesn't have namespaces. So NAMESPACE_ONLY
|
||||
: Tcl7.6 doesn't have namespaces. So NAMESPACE_ONLY
|
||||
: is defined as 0, and then GLOBAL_ONLY is available
|
||||
: even if flag is (GLOBAL_ONLY | NAMESPACE_ONLY).
|
||||
: even if flag is (GLOBAL_ONLY | NAMESPACE_ONLY).
|
||||
|
||||
NAMESPACE_ONLY
|
||||
: (site Tcl/Tk's man page)
|
||||
|
@ -80,16 +80,16 @@ module TclTklib
|
|||
: active.
|
||||
:
|
||||
: *** ATTENTION ***
|
||||
: Tcl7.6 doesn't have namespaces. So NAMESPACE_ONLY
|
||||
: Tcl7.6 doesn't have namespaces. So NAMESPACE_ONLY
|
||||
: is defined as 0.
|
||||
|
||||
LEAVE_ERR_MSG
|
||||
: (site Tcl/Tk's man page)
|
||||
: If an error is returned and this bit is set in flags,
|
||||
: If an error is returned and this bit is set in flags,
|
||||
: then an error message will be left in the interpreter's
|
||||
: result, where it can be retrieved with Tcl_GetObjResult
|
||||
: or Tcl_GetStringResult. If this flag bit isn't set then
|
||||
: no error message is left and the interpreter's result
|
||||
: or Tcl_GetStringResult. If this flag bit isn't set then
|
||||
: no error message is left and the interpreter's result
|
||||
: will not be modified.
|
||||
|
||||
APPEND_VALUE
|
||||
|
@ -104,26 +104,26 @@ module TclTklib
|
|||
: valid Tcl list element before setting (or appending
|
||||
: to) the variable. A separator space is appended before
|
||||
: the new list element unless the list element is going
|
||||
: to be the first element in a list or sublist (i.e. the
|
||||
: variable's current value is empty, or contains the
|
||||
: to be the first element in a list or sublist (i.e. the
|
||||
: variable's current value is empty, or contains the
|
||||
: single character ``{'', or ends in `` }'').
|
||||
|
||||
PARSE_VARNAME
|
||||
: (site Tcl/Tk's man page)
|
||||
: If this bit is set when calling _set_variable and so
|
||||
: If this bit is set when calling _set_variable and so
|
||||
: on, var_name argument may contain both an array and an
|
||||
: element name: if the name contains an open parenthesis
|
||||
: and ends with a close parenthesis, then the value
|
||||
: between the parentheses is treated as an element name
|
||||
: element name: if the name contains an open parenthesis
|
||||
: and ends with a close parenthesis, then the value
|
||||
: between the parentheses is treated as an element name
|
||||
: (which can have any string value) and the characters
|
||||
: before the first open parenthesis are treated as the
|
||||
: before the first open parenthesis are treated as the
|
||||
: name of an array variable. If the flag PARSE_VARNAME
|
||||
: is given, index_name argument should be 'nil' since the
|
||||
: is given, index_name argument should be 'nil' since the
|
||||
: array and element names are taken from var_name.
|
||||
:
|
||||
: *** ATTENTION ***
|
||||
: Tcl7.6 doesn't have this flag. So PARSE_VARNAME is
|
||||
: defined as 0.
|
||||
: Tcl7.6 doesn't have this flag. So PARSE_VARNAME is
|
||||
: defined as 0.
|
||||
|
||||
module TclTkLib::RELEASE_TYPE
|
||||
: Defines release type number of Tcl/Tk
|
||||
|
@ -139,105 +139,105 @@ module TclTklib
|
|||
|
||||
[module methods]
|
||||
get_version()
|
||||
: return an array of major, minor, release-type number,
|
||||
: return an array of major, minor, release-type number,
|
||||
: and patchlevel of current Tcl/Tk library.
|
||||
|
||||
mainloop(check_root = true)
|
||||
: Starts the eventloop. If 'check_root' is true, this method
|
||||
: doesn't return when a root widget exists.
|
||||
: Starts the eventloop. If 'check_root' is true, this method
|
||||
: doesn't return when a root widget exists.
|
||||
: If 'check_root' is false, doen't return by the other
|
||||
: reasons than exceptions.
|
||||
|
||||
mainloop_thread?
|
||||
: Returns whether the current thread executes the eventloop.
|
||||
: If true, the eventloop is working on the current thread.
|
||||
: Returns whether the current thread executes the eventloop.
|
||||
: If true, the eventloop is working on the current thread.
|
||||
: If no eventloop is working, this method returns nil.
|
||||
: And if the other thread executes the eventloop, returns false.
|
||||
:
|
||||
:
|
||||
: *** ATTENTION ***
|
||||
: When this methods returns false, it is dangerous to call a Tk
|
||||
: When this methods returns false, it is dangerous to call a Tk
|
||||
: interpreter directly.
|
||||
|
||||
mainloop_watchdog(check_root = true)
|
||||
: On the normal eventloop, some kinds of callback operations
|
||||
: On the normal eventloop, some kinds of callback operations
|
||||
: cause deadlock. To avoid some of such deadlocks, this
|
||||
: method starts an eventloop and a watchdog-thread.
|
||||
|
||||
do_one_event(flag = TclTkLib::EventFlag::ALL |
|
||||
do_one_event(flag = TclTkLib::EventFlag::ALL |
|
||||
TclTkLib::EventFlag::DONT_WAIT)
|
||||
: Do one event for processing. When processed an event,
|
||||
: returns true.
|
||||
: Do one event for processing. When processed an event,
|
||||
: returns true.
|
||||
: If NOT set DONT_WAIT flag, this method waits occurrence of
|
||||
: a target event.
|
||||
: If set DONT_WAIT flag and no event for processing, returns
|
||||
: false immediately.
|
||||
: If $SAFE >= 4, or $SAFE >= 1 and the flag is tainted,
|
||||
: a target event.
|
||||
: If set DONT_WAIT flag and no event for processing, returns
|
||||
: false immediately.
|
||||
: If $SAFE >= 4, or $SAFE >= 1 and the flag is tainted,
|
||||
: force to set DONT_WAIT flag.
|
||||
|
||||
set_eventloop_tick(timer_tick)
|
||||
: Define the interval of thread-switching with an integer
|
||||
: value of mili-seconds.
|
||||
: Default timer_tick is 0. It means that thread-switching
|
||||
: is based on the count of processed events.
|
||||
: value of mili-seconds.
|
||||
: Default timer_tick is 0. It means that thread-switching
|
||||
: is based on the count of processed events.
|
||||
: ( see 'set_eventloop_weight' method )
|
||||
: However, if the eventloop thread is the only thread,
|
||||
: timer_tick cannt be set to 0. If 0, then is set to 100 ms
|
||||
: automatically (see NO_THREAD_INTERRUPT_TIME on tcltklib.c).
|
||||
: On $SAFE >= 4, cannot call this method.
|
||||
: However, if the eventloop thread is the only thread,
|
||||
: timer_tick cannt be set to 0. If 0, then is set to 100 ms
|
||||
: automatically (see NO_THREAD_INTERRUPT_TIME on tcltklib.c).
|
||||
: On $SAFE >= 4, cannot call this method.
|
||||
|
||||
get_eventloop_tick
|
||||
: Get current value of 'timer_tick'
|
||||
|
||||
set_no_event_wait(no_event_wait)
|
||||
: Define sleeping time of the eventloop when two or more
|
||||
: thread are running and there is no event for processing.
|
||||
: Define sleeping time of the eventloop when two or more
|
||||
: thread are running and there is no event for processing.
|
||||
: Default value is 20 (ms).
|
||||
: If the eventloop thread is the only thread, this value is
|
||||
: invalid.
|
||||
: On $SAFE >= 4, cannot call this method.
|
||||
: If the eventloop thread is the only thread, this value is
|
||||
: invalid.
|
||||
: On $SAFE >= 4, cannot call this method.
|
||||
|
||||
get_no_event_wait
|
||||
: Get current value of 'no_event_wait'.
|
||||
|
||||
set_eventloop_weight(loop_max, no_event_tick)
|
||||
: Define the weight parameters for the eventloop thread.
|
||||
: That is invalid when the eventloop is the only thread.
|
||||
: 'loop_max' is the max events for thread-switching.
|
||||
: 'no_event_tick' is the increment value of the event count
|
||||
: Define the weight parameters for the eventloop thread.
|
||||
: That is invalid when the eventloop is the only thread.
|
||||
: 'loop_max' is the max events for thread-switching.
|
||||
: 'no_event_tick' is the increment value of the event count
|
||||
: when no event for processing (And then, the eventloop thead
|
||||
: sleeps 'no_event_wait' mili-seconds).
|
||||
: 'loop_max == 800' and 'no_event_tick == 10' are defalut.
|
||||
: On $SAFE >= 4, cannot call this method.
|
||||
: sleeps 'no_event_wait' mili-seconds).
|
||||
: 'loop_max == 800' and 'no_event_tick == 10' are defalut.
|
||||
: On $SAFE >= 4, cannot call this method.
|
||||
|
||||
get_eventloop_weight
|
||||
: Get current values of 'loop_max' and 'no_event_tick'.
|
||||
|
||||
mainloop_abort_on_exception=(bool)
|
||||
: Define whether the eventloop stops on exception or not.
|
||||
: If true (default value), stops on exception.
|
||||
: Define whether the eventloop stops on exception or not.
|
||||
: If true (default value), stops on exception.
|
||||
: If false, show a warinig message but ignore the exception.
|
||||
: If nil, no warning message and ignore the excepsion.
|
||||
: If nil, no warning message and ignore the excepsion.
|
||||
: This parameter is sometimes useful when multiple Tk
|
||||
: interpreters are working. Because the only one eventloop
|
||||
: interpreters are working. Because the only one eventloop
|
||||
: admins all Tk interpreters, sometimes exception on a
|
||||
: interpreter kills the eventloop thread. Even if such
|
||||
: situation, when abort_on_exception == false or nil,
|
||||
: the eventloop ignores the exception and continue to working.
|
||||
: On $SAFE >= 4, cannot call this method.
|
||||
: situation, when abort_on_exception == false or nil,
|
||||
: the eventloop ignores the exception and continue to working.
|
||||
: On $SAFE >= 4, cannot call this method.
|
||||
|
||||
mainloop_abort_on_exception
|
||||
: Get current status of that.
|
||||
: Get current status of that.
|
||||
|
||||
num_of_mainwindows
|
||||
: Returns the number of main-windows (root-widget).
|
||||
: Because there is only one main-window for one Tk interpreter,
|
||||
: the value is same to the number of interpreters which has
|
||||
: Returns the number of main-windows (root-widget).
|
||||
: Because there is only one main-window for one Tk interpreter,
|
||||
: the value is same to the number of interpreters which has
|
||||
: available Tk functions.
|
||||
|
||||
_merge_tklist(str, str, ... )
|
||||
: Get a Tcl's list string from arguments with a Tcl/Tk's
|
||||
: library function. Each arguemnt is converted to a valid
|
||||
: Tcl list element.
|
||||
: Get a Tcl's list string from arguments with a Tcl/Tk's
|
||||
: library function. Each arguemnt is converted to a valid
|
||||
: Tcl list element.
|
||||
|
||||
_conv_listelement(str)
|
||||
: Convert the argument to a valid Tcl list element with
|
||||
|
@ -252,7 +252,7 @@ module TclTklib
|
|||
_subst_Tcl_backslash(str)
|
||||
: Substitute backslash sequence with Tcl's rule (include \uhhhh;
|
||||
: give a sixteen-bit hexadecimal value for Unicode character).
|
||||
: _subst_Tcl_backslash method parses all backslash sequence.
|
||||
: _subst_Tcl_backslash method parses all backslash sequence.
|
||||
: _subst_UTF_backslash method parses \uhhhh only.
|
||||
|
||||
encoding_system
|
||||
|
@ -268,90 +268,90 @@ module TclTklib
|
|||
class TclTkIp
|
||||
[class methods]
|
||||
new(ip_name=nil, options='')
|
||||
: Generate an instance of TclTkIp class.
|
||||
: Generate an instance of TclTkIp class.
|
||||
: If 'ip_name' argument is given as a string, it is the name
|
||||
: of the Tk interpreter which is shown by 'winfo interps'
|
||||
: command.
|
||||
: 'options' argument accepts a string which is the command
|
||||
: line options of wish; such as '-geometry' or '-use'.
|
||||
: The information is used to generate the root widget of the
|
||||
: interpreter.
|
||||
: command.
|
||||
: 'options' argument accepts a string which is the command
|
||||
: line options of wish; such as '-geometry' or '-use'.
|
||||
: The information is used to generate the root widget of the
|
||||
: interpreter.
|
||||
: ( e.g. TclTkIp.new('FOO', '-geometry 500x200 -use 0x2200009') )
|
||||
: If is given nil or falsr for the 'option' argument, generates
|
||||
: the Tcl interpreter without Tk library. Then the interpreter
|
||||
: the Tcl interpreter without Tk library. Then the interpreter
|
||||
: doesn't need GUI environment. Therefore, even if a window
|
||||
: system doesn't exist or cannot be used, Ruby can control the
|
||||
: Tcl interpreter and the extention libraries loaded on the
|
||||
: interpreter.
|
||||
: Tcl interpreter and the extention libraries loaded on the
|
||||
: interpreter.
|
||||
|
||||
[instance methods]
|
||||
create_slave(name, safe=false)
|
||||
: Create a slave interpreter.
|
||||
: Create a slave interpreter.
|
||||
: The parent of the interpreter is the receiver of this method.
|
||||
: The name of the slave interpreter is given by 'name' argument.
|
||||
: The name of the slave interpreter is given by 'name' argument.
|
||||
: The 'safe' argument decides whether the slave interpreter is
|
||||
: created as a safe interpreter or not. If true, create a safe
|
||||
: interpreter. Default is false. However, if the parent
|
||||
: interpreter is a safe interpreter, the created interpreter is
|
||||
: a safe interpreter (ignore 'safe' argument value).
|
||||
: If $SAFE >= 4, can create a safe interpreter only.
|
||||
: a safe interpreter (ignore 'safe' argument value).
|
||||
: If $SAFE >= 4, can create a safe interpreter only.
|
||||
|
||||
make_safe
|
||||
: Make the interpreter to the safe interpreter, and returns
|
||||
: self. If fail, raise RuntimeError.
|
||||
|
||||
safe?
|
||||
: Check whether the interpreter is the safe interpreter.
|
||||
: If is the safe interpreter, returns true.
|
||||
: Check whether the interpreter is the safe interpreter.
|
||||
: If is the safe interpreter, returns true.
|
||||
|
||||
allow_ruby_exit?
|
||||
: Return the mode whether 'exit' function of ruby or 'exit'
|
||||
: command of Tcl/Tk can quit the ruby process or not on the
|
||||
: interpreter. If false, such a command quit the interpreter
|
||||
: Return the mode whether 'exit' function of ruby or 'exit'
|
||||
: command of Tcl/Tk can quit the ruby process or not on the
|
||||
: interpreter. If false, such a command quit the interpreter
|
||||
: only.
|
||||
: The default value for a master interpreter is true, and
|
||||
: The default value for a master interpreter is true, and
|
||||
: for a slave interpreter is false.
|
||||
|
||||
allow_ruby_exit=(mode)
|
||||
: Change the mode of 'allow_ruby_exit?'.
|
||||
: If $SAFE >= 4 or the interpreter is a "safe" interpreter,
|
||||
: this is not permitted (raise an exception).
|
||||
: If $SAFE >= 4 or the interpreter is a "safe" interpreter,
|
||||
: this is not permitted (raise an exception).
|
||||
|
||||
delete
|
||||
: Delete the interpreter.
|
||||
: Delete the interpreter.
|
||||
: The deleted interpreter doesn't accept command and then
|
||||
: raise an exception.
|
||||
|
||||
deleted?
|
||||
: Check whether the interpreter is already deleted.
|
||||
: If deleted, returns true.
|
||||
: If deleted, returns true.
|
||||
|
||||
has_mainwindow?
|
||||
: Check whether the interpreter has a MainWindow (root widget).
|
||||
: If has, returns true. If doesn't, returns false.
|
||||
: If IP is already deleted, returns nil.
|
||||
: If has, returns true. If doesn't, returns false.
|
||||
: If IP is already deleted, returns nil.
|
||||
|
||||
restart
|
||||
: Restart Tk part of the interpreter.
|
||||
: Restart Tk part of the interpreter.
|
||||
: Use this when you need Tk functions after destroying the
|
||||
: root widget.
|
||||
: On $SAFE >= 4, cannot call this method.
|
||||
: root widget.
|
||||
: On $SAFE >= 4, cannot call this method.
|
||||
|
||||
_eval(str)
|
||||
_invoke(*args)
|
||||
: Estimates the arguments as a command on the Tk interpreter.
|
||||
: Estimates the arguments as a command on the Tk interpreter.
|
||||
: The argument of _eval is a script of Tcl/Tk.
|
||||
: Each argument of _invoke is a token of one command line of
|
||||
: Tcl/Tk.
|
||||
: Tcl/Tk.
|
||||
: Because the operation of _invoke doesn't through the
|
||||
: command line parser of Tk interpreter, the cost of
|
||||
: estimation is smaller than _eval. However, auto_load
|
||||
: mechanism of the Tk interpreter doesn't work on _invoke.
|
||||
: mechanism of the Tk interpreter doesn't work on _invoke.
|
||||
: So _invoke can call only the command which already
|
||||
: registered on the interpreter by 'load' command and so on.
|
||||
: On _eval command, auto_load mechanism words. So if succeed
|
||||
: registered on the interpreter by 'load' command and so on.
|
||||
: On _eval command, auto_load mechanism words. So if succeed
|
||||
: to _eval and regist the command once, after that, the
|
||||
: command can be called by _invoke.
|
||||
: command can be called by _invoke.
|
||||
|
||||
_cancel_eval(str)
|
||||
_cancel_eval_unwind(str)
|
||||
|
@ -365,46 +365,46 @@ class TclTkIp
|
|||
|
||||
_thread_vwait(var_name)
|
||||
_thread_tkwait(mode, target)
|
||||
: 'vwait' or 'tkwait' with thread support.
|
||||
: The difference from normal 'vwait' or 'tkwait' command is
|
||||
: 'vwait' or 'tkwait' with thread support.
|
||||
: The difference from normal 'vwait' or 'tkwait' command is
|
||||
: doing independent wait from the vwait stack when they are
|
||||
: called on the other thread than the eventloop thread.
|
||||
: In the case of Tcl/Tk's vwait / tkwait, if 2nd vwait /
|
||||
: tkwait is called on waiting for 1st vwait / tkwait,
|
||||
: tkwait is called on waiting for 1st vwait / tkwait,
|
||||
: returns the order of [2nd]->[1st] regardless of the order
|
||||
: of when the wait condition was fulfilled.
|
||||
: of when the wait condition was fulfilled.
|
||||
: If _thread_vwait / _thread_tkwait is called on the
|
||||
: eventloop thread, there is no difference from vwait /
|
||||
: tkwait. But if called on the other thread than the
|
||||
: eventloop, stops the thread. And when the wait condition
|
||||
: eventloop, stops the thread. And when the wait condition
|
||||
: is fulfilled, the thread restarts. The meaning of
|
||||
: "independent from the vwait stack" is that the timing of
|
||||
: restarting is independent from the waiting status of the
|
||||
: other threads. That is, even if the eventloop thread is
|
||||
: waiting by vwait and is not fulfilled the condition,
|
||||
: "independent from the vwait stack" is that the timing of
|
||||
: restarting is independent from the waiting status of the
|
||||
: other threads. That is, even if the eventloop thread is
|
||||
: waiting by vwait and is not fulfilled the condition,
|
||||
: _thread_vwait completes the waiting when its waiting
|
||||
: condition is fulfilled and the thread which stopped by
|
||||
: _thread_vwait can continue the operation.
|
||||
: _thread_vwait can continue the operation.
|
||||
|
||||
_return_value
|
||||
: Get the last result value on the interpreter.
|
||||
: Get the last result value on the interpreter.
|
||||
|
||||
_get_variable(var_name, flag)
|
||||
_get_variable2(var_name, index_name, flag)
|
||||
: Get the current value of a variable. If specified a
|
||||
: index_name (see also the PARSE_VARNAME flag), get the
|
||||
: value of the index_name element.
|
||||
: Get the current value of a variable. If specified a
|
||||
: index_name (see also the PARSE_VARNAME flag), get the
|
||||
: value of the index_name element.
|
||||
|
||||
_set_variable(var_name, value, flag)
|
||||
_set_variable2(var_name, index_name, value, flag)
|
||||
: Create or modify a variable. If specified a index_name
|
||||
: (see also the PARSE_VARNAME flag), create or modify the
|
||||
: index_name element.
|
||||
: Create or modify a variable. If specified a index_name
|
||||
: (see also the PARSE_VARNAME flag), create or modify the
|
||||
: index_name element.
|
||||
|
||||
_unset_variable(var_name)
|
||||
_unset_variable2(var_name, index_name)
|
||||
: Remove a variable. If specified a index_name (see also
|
||||
: the PARSE_VARNAME flag), remove the index_name element.
|
||||
: Remove a variable. If specified a index_name (see also
|
||||
: the PARSE_VARNAME flag), remove the index_name element.
|
||||
|
||||
_get_global_var(var_name)
|
||||
_get_global_var2(var_name, index_name)
|
||||
|
@ -416,13 +416,13 @@ class TclTkIp
|
|||
: (GLOBAL_ONLY | LEAVE_ERR_MSG).
|
||||
|
||||
_split_tklist(str)
|
||||
: Split the argument with Tcl/Tk's library function and
|
||||
: Split the argument with Tcl/Tk's library function and
|
||||
: get an array as a list of Tcl list elements.
|
||||
|
||||
_merge_tklist(str, str, ... )
|
||||
: Get a Tcl's list string from arguments with a Tcl/Tk's
|
||||
: library function. Each arguemnt is converted to a valid
|
||||
: Tcl list element.
|
||||
: Get a Tcl's list string from arguments with a Tcl/Tk's
|
||||
: library function. Each arguemnt is converted to a valid
|
||||
: Tcl list element.
|
||||
|
||||
_conv_listelement(str)
|
||||
: Convert the argument to a valid Tcl list element with
|
||||
|
@ -431,14 +431,14 @@ class TclTkIp
|
|||
mainloop
|
||||
mainloop_watchdog
|
||||
: If on the slave interpreter, never start an eventloop and
|
||||
: returns nil.
|
||||
: returns nil.
|
||||
: With the exception that, same to the TclTkLib module method
|
||||
: with the same name.
|
||||
: with the same name.
|
||||
|
||||
do_one_event
|
||||
: With the exception that the argument is forced to set
|
||||
: DONT_WAIT flag on the slave interpreter, same to
|
||||
: TclTkLib#do_one_event.
|
||||
: TclTkLib#do_one_event.
|
||||
|
||||
set_eventloop_tick
|
||||
get_eventloop_tick
|
||||
|
@ -450,24 +450,24 @@ class TclTkIp
|
|||
mainloop_abort_on_exception=
|
||||
: With the exception that it is ignored to set value on the
|
||||
: slave interpreter, same to the TclTkLib module method with
|
||||
: the same name.
|
||||
: the same name.
|
||||
|
||||
encoding_table
|
||||
: For Ruby m17n. Return encoding relation table between Ruby's
|
||||
: For Ruby m17n. Return encoding relation table between Ruby's
|
||||
: Encoding object and Tcl's encoding name.
|
||||
|
||||
class TkCallbackBreak < StandardError
|
||||
class TkCallbackContinue < StandardError
|
||||
: They are exception classes to break or continue the Tk callback
|
||||
: operation.
|
||||
: If raise TkCallbackBreak on the callback procedure, Ruby returns
|
||||
: 'break' code to Tk interpreter (Then the Tk interpreter will
|
||||
: break the operation for the current event).
|
||||
: They are exception classes to break or continue the Tk callback
|
||||
: operation.
|
||||
: If raise TkCallbackBreak on the callback procedure, Ruby returns
|
||||
: 'break' code to Tk interpreter (Then the Tk interpreter will
|
||||
: break the operation for the current event).
|
||||
: If raise TkCallbackContinue, returns 'continue' code (Then the Tk
|
||||
: interpreter will break the operateion for the current bindtag and
|
||||
: interpreter will break the operateion for the current bindtag and
|
||||
: starts the operation for the next buindtag for the current event).
|
||||
: However, current tcltklib supports Ruby's 'break' and 'next' to
|
||||
: get the same effect. That is, those classes are obsolete. Those
|
||||
: exist for backward compatibility.
|
||||
: However, current tcltklib supports Ruby's 'break' and 'next' to
|
||||
: get the same effect. That is, those classes are obsolete. Those
|
||||
: exist for backward compatibility.
|
||||
|
||||
(eof)
|
||||
|
|
|
@ -41,7 +41,7 @@ tcl/tk
|
|||
|
||||
このような考えに基づき, tcltk ライブラリでは, tcl/tk のコマンドやウィ
|
||||
ジェットに対応するオブジェクトを生成します. オブジェクトに対するメソッ
|
||||
ド呼び出しは, e() メソッドにより実行されます. 例えば, tcl/tk の info
|
||||
ド呼び出しは, e() メソッドにより実行されます. 例えば, tcl/tk の info
|
||||
コマンドに対応する ruby のオブジェクトが info という名前であるとすると,
|
||||
tcl/tk の
|
||||
info commands
|
||||
|
@ -53,7 +53,7 @@ tcl/tk
|
|||
. configure -height 300 -width 300
|
||||
という tcl/tk の命令は
|
||||
root.e("configure -height 300 -width 300")
|
||||
と記述されます. このような記述は, 見ためには美しくありませんが, そして,
|
||||
と記述されます. このような記述は, 見ためには美しくありませんが, そして,
|
||||
スクリプトを読む人には見づらいかも知れませんが, 実際にスクリプトを書い
|
||||
てみると予想外に手軽です.
|
||||
|
||||
|
@ -173,7 +173,7 @@ require "tcltklib"
|
|||
|
||||
定数 DONT_WAIT
|
||||
: 処理対象イベントが存在しない場合に,イベント発生を待たず
|
||||
: に do_one_event を終了 ( false を返す ) する
|
||||
: に do_one_event を終了 ( false を返す ) する
|
||||
|
||||
モジュール TclTkLib::VarAccessFlag
|
||||
: _get_variable などでのフラグを指定するためのもの.フラグに
|
||||
|
@ -217,7 +217,7 @@ require "tcltklib"
|
|||
: 含む可能性がある (開き括弧を含み,閉じ括弧で終わる) こ
|
||||
: とを示す.その場合,括弧の間が要素名指定,最初の開き括
|
||||
: 弧までが連想配列名として扱われる._set_variable2 などで
|
||||
: このフラグを指定する場合,連想配列名と要素名は var_name
|
||||
: このフラグを指定する場合,連想配列名と要素名は var_name
|
||||
: から抽出されるはずであるから,index_name 引数は nil と
|
||||
: せねばならない.
|
||||
|
||||
|
@ -250,7 +250,7 @@ require "tcltklib"
|
|||
: カレントスレッドがイベントループを実行しているスレッド
|
||||
: かどうかを返す.
|
||||
: イベントループを実行しているスレッドであれば true を,
|
||||
: どのスレッドでもイベントループが実行されていない場合は
|
||||
: どのスレッドでもイベントループが実行されていない場合は
|
||||
: nil を,他のスレッドでイベントループが実行されている場
|
||||
: 合は false を返す.
|
||||
: false の際に Tk インタープリタを直接呼ぶのは危険である.
|
||||
|
@ -264,7 +264,7 @@ require "tcltklib"
|
|||
: ( 監視スレッドを生成した後にイベントループを実行する ).
|
||||
: 引数の意味は mainloop と同じである.
|
||||
|
||||
do_one_event(flag = TclTkLib::EventFlag::ALL |
|
||||
do_one_event(flag = TclTkLib::EventFlag::ALL |
|
||||
TclTkLib::EventFlag::DONT_WAIT)
|
||||
: 処理待ちのイベント 1 個を実行する.
|
||||
: イベントを処理した場合は true を返す.
|
||||
|
@ -309,7 +309,7 @@ require "tcltklib"
|
|||
: 稼働スレッドがイベントループだけの場合には意味をなさない.
|
||||
: 一度のスレッド切り替えの間に処理するイベントの最大数と,
|
||||
: 処理待ちのイベントが存在しない際の加算数とを設定する.
|
||||
: 処理待ちイベントが存在しない場合は no_event_wait ( see
|
||||
: 処理待ちイベントが存在しない場合は no_event_wait ( see
|
||||
: set_no_event_wait ) だけの間 sleep 状態に入る.
|
||||
: デフォルトではそれぞれ 800 回と 10 回,つまり,800 個のイ
|
||||
: ベント (アイドルイベントを含む) を処理するとか,イベント
|
||||
|
@ -363,10 +363,10 @@ require "tcltklib"
|
|||
|
||||
_subst_UTF_backslash(str)
|
||||
_subst_Tcl_backslash(str)
|
||||
: Tcl のルールでバックスラッシュ記法 ( \uhhhh による
|
||||
: Tcl のルールでバックスラッシュ記法 ( \uhhhh による
|
||||
: Unicode 文字表現を含む ) を解析する.
|
||||
: _subst_Tcl_backslash はすべてのバックスラッシュ記法を
|
||||
: 置き換えるのに対し,_subst_UTF_backslash は \uhhhh
|
||||
: 置き換えるのに対し,_subst_UTF_backslash は \uhhhh
|
||||
: による Unicode 文字表現だけを置き換える.
|
||||
|
||||
encoding_system
|
||||
|
@ -402,7 +402,7 @@ require "tcltklib"
|
|||
: safe には生成するインタープリタを safe インタープリタとする
|
||||
: かを指定する.デフォルトは false ということになっているが,
|
||||
: たとえ明確に false を指定していたとしても,親となるインター
|
||||
: プリタが safe インタープリタであれば,その設定を引き継いで
|
||||
: プリタが safe インタープリタであれば,その設定を引き継いで
|
||||
: safe インタープリタとして生成される.
|
||||
: $SAFE >= 4 では,safe インタープリタ以外の生成が禁止される.
|
||||
|
||||
|
@ -416,7 +416,7 @@ require "tcltklib"
|
|||
: safe インタープリタであれば true を返す.
|
||||
|
||||
allow_ruby_exit?
|
||||
: 対象となるインタープリタ上の評価で,ruby の exit 関数または
|
||||
: 対象となるインタープリタ上の評価で,ruby の exit 関数または
|
||||
: Tcl/Tk 上の exit コマンドによって ruby 自体を終了させること
|
||||
: を許すかどうかを返す.
|
||||
: 許さない場合は対象のインタープリタだけが終了する.
|
||||
|
@ -500,7 +500,7 @@ require "tcltklib"
|
|||
_get_variable(var_name, flag)
|
||||
_get_variable2(var_name, index_name, flag)
|
||||
: Tcl/Tk 上の var という変数名の変数の値を返す.
|
||||
: もし index_name が指定 (PARSE_VARNAME フラグの説明も参照)
|
||||
: もし index_name が指定 (PARSE_VARNAME フラグの説明も参照)
|
||||
: された場合は連想配列 var_name の index_name の要素を返す.
|
||||
: flag には変数を検索する際の条件を指定する.flag に与える
|
||||
: 値はモジュール TclTkLib::VarAccessFlag を参照すること.
|
||||
|
@ -508,7 +508,7 @@ require "tcltklib"
|
|||
_set_variable(var_name, value, flag)
|
||||
_set_variable2(var_name, index_name, value, flag)
|
||||
: Tcl/Tk 上の var という変数名の変数に値を設定する.
|
||||
: もし index_name が指定 (PARSE_VARNAME フラグの説明も参照)
|
||||
: もし index_name が指定 (PARSE_VARNAME フラグの説明も参照)
|
||||
: された場合は連想配列 var_name の index_name の要素を設定
|
||||
: する.
|
||||
: flag には変数を検索する際の条件を指定する.flag に与える
|
||||
|
@ -517,7 +517,7 @@ require "tcltklib"
|
|||
_unset_variable(var_name)
|
||||
_unset_variable2(var_name, index_name)
|
||||
: Tcl/Tk 上の var_name という変数名の変数を消去する.
|
||||
: もし index_name が指定 (PARSE_VARNAME フラグの説明も参照)
|
||||
: もし index_name が指定 (PARSE_VARNAME フラグの説明も参照)
|
||||
: された場合は連想配列 var_name から index_name の要素だけ
|
||||
: を消去する.
|
||||
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
If you want to use Ruby/Tk (tk.rb and so on), you must have tcltklib.so
|
||||
which is working correctly. When you have some troubles on compiling,
|
||||
please read README.tcltklib and README.ActiveTcl.
|
||||
Even if there is a tcltklib.so on your Ruby library directry, it will not
|
||||
work without Tcl/Tk libraries (e.g. libtcl8.4.so) on your environment.
|
||||
You must also check that your Tcl/Tk is installed properly.
|
||||
If you want to use Ruby/Tk (tk.rb and so on), you must have tcltklib.so
|
||||
which is working correctly. When you have some troubles on compiling,
|
||||
please read README.tcltklib and README.ActiveTcl.
|
||||
Even if there is a tcltklib.so on your Ruby library directry, it will not
|
||||
work without Tcl/Tk libraries (e.g. libtcl8.4.so) on your environment.
|
||||
You must also check that your Tcl/Tk is installed properly.
|
||||
|
||||
--------------------------------------------
|
||||
( the following is written in EUC-JP )
|
||||
|
||||
Ruby/Tk (tk.rb など) を使いたい場合には,tcltklib.so が正しく動いていな
|
||||
ければなりません.コンパイル時に何か問題が生じた場合は,README.tcltklib
|
||||
ければなりません.コンパイル時に何か問題が生じた場合は,README.tcltklib
|
||||
や README.ActiveTcl を見てください.
|
||||
たとえ Ruby のライブラリディレクトリに tcltklib.so が存在していたとして
|
||||
も,実行環境に Tcl/Tk ライブラリ (libtcl8.4.so など) がなければ機能しま
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
ActiveTcl is ActiveState's quality-assured distribution of Tcl.
|
||||
ActiveTcl is ActiveState's quality-assured distribution of Tcl.
|
||||
|
||||
# see <http://www.activestate.com/Products/ActiveTcl/>
|
||||
# <http://www.tcl.tk/>
|
||||
|
@ -12,11 +12,11 @@ use --without-ActiveTcl option.
|
|||
When "extconf.rb" fails to find your ActiveTcl libraries, please try
|
||||
the followings.
|
||||
|
||||
If you want to use ActiveTcl binary package as the Tcl/Tk libraries,
|
||||
If you want to use ActiveTcl binary package as the Tcl/Tk libraries,
|
||||
please use the following configure options.
|
||||
|
||||
--with-ActiveTcl=<ActiveTcl_root>
|
||||
( When without argument; no <ActiveTcl_root>; only '--with-ActiveTcl',
|
||||
( When without argument; no <ActiveTcl_root>; only '--with-ActiveTcl',
|
||||
it same to '--with-ActiveTcl=/opt/ActiveTcl*/lib' )
|
||||
|
||||
--with-tcl-dir=<ActiveTcl_root>
|
||||
|
@ -28,7 +28,7 @@ And use the followings if you need.
|
|||
--with-tklib=<libname>
|
||||
--enable-tcltk-stubs
|
||||
|
||||
For example, when you install ActiveTcl-8.4.x to '/usr/local/ActiveTcl',
|
||||
For example, when you install ActiveTcl-8.4.x to '/usr/local/ActiveTcl',
|
||||
|
||||
configure --with-tcl-dir=/usr/local/ActiveTcl/ \
|
||||
--with-tk-dir=/usr/local/ActiveTcl/ \
|
||||
|
@ -36,17 +36,17 @@ For example, when you install ActiveTcl-8.4.x to '/usr/local/ActiveTcl',
|
|||
--with-tklib=tkstub8.4 \
|
||||
--enable-tcltk-stubs
|
||||
|
||||
It depends on your environment that you have to add the directory of
|
||||
ActiveTcl's libraries to your library path when execute Ruby/Tk.
|
||||
One of the way is to add entries to TCLLIBPATH environment variable,
|
||||
It depends on your environment that you have to add the directory of
|
||||
ActiveTcl's libraries to your library path when execute Ruby/Tk.
|
||||
One of the way is to add entries to TCLLIBPATH environment variable,
|
||||
and one of the others add to LD_LIBRARY_PATH environment variable
|
||||
|
||||
Probably, using TCLLIBPATH is better. The value is appended at the
|
||||
head of Tcl's 'auto_path' variable. You can see the value of the
|
||||
Probably, using TCLLIBPATH is better. The value is appended at the
|
||||
head of Tcl's 'auto_path' variable. You can see the value of the
|
||||
variable by using 'Tk::AUTO_PATH.value' or 'Tk::AUTO_PATH.list'.
|
||||
|
||||
For example, on Linux, one of the ways is to use LD_LIBRARY_PATH
|
||||
environment variable.
|
||||
For example, on Linux, one of the ways is to use LD_LIBRARY_PATH
|
||||
environment variable.
|
||||
-------------------------------------------------------------------------
|
||||
[bash]$ LD_LIBRARY_PATH=/usr/local/ActiveTcl/lib:$LD_LIBRARY_PATH \
|
||||
ruby your-Ruby/Tk-script
|
||||
|
@ -57,6 +57,6 @@ Based on it, the Tcl interpreter changes auto_path variable's value.
|
|||
|
||||
Then, you'll be able to use Tcl/Tk extension libraries included in the
|
||||
ActiveTcl package (e.g. call TkPackage.require('BWidget'), and then,
|
||||
use functions/widgets of BWidget extention).
|
||||
use functions/widgets of BWidget extention).
|
||||
|
||||
Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
Ruby/Tk does NOT support forking the process on which Tk interpreter
|
||||
is running (unless NEVER control Tk interpreter under the forked child
|
||||
process). In the library 'tk.rb', a Tk interpreter is initialized.
|
||||
is running (unless NEVER control Tk interpreter under the forked child
|
||||
process). In the library 'tk.rb', a Tk interpreter is initialized.
|
||||
Therefore, if you want running Tk under a child process, please call
|
||||
"require 'tk'" in the child process.
|
||||
"require 'tk'" in the child process.
|
||||
|
||||
# If do fork and exec(<new Ruby/Tk>) on the child process, you can
|
||||
# control Ruby/Tk interpreter on the child process by 'send' command
|
||||
# of Tcl/Tk. About this, please see Tk.appsend and Tk.rb_appsend, or
|
||||
# 'remote-tk.rb' and the sample 'sample/remote-ip_sample.rb'.
|
||||
# If do fork and exec(<new Ruby/Tk>) on the child process, you can
|
||||
# control Ruby/Tk interpreter on the child process by 'send' command
|
||||
# of Tcl/Tk. About this, please see Tk.appsend and Tk.rb_appsend, or
|
||||
# 'remote-tk.rb' and the sample 'sample/remote-ip_sample.rb'.
|
||||
|
||||
For example, the following sample1 will NOT work, and sample2 will
|
||||
work properly.
|
||||
|
|
|
@ -3,13 +3,13 @@
|
|||
|
||||
First of all, please read README.tcltklib to use Tcl/Tk Aqua Framework.
|
||||
|
||||
With Tcl/Tk Aqua libraries, current tcltklib somtimes freezes when
|
||||
using Aqua specific dialogs (e.g. Tk.messageBox).
|
||||
With Tcl/Tk Aqua libraries, current tcltklib somtimes freezes when
|
||||
using Aqua specific dialogs (e.g. Tk.messageBox).
|
||||
This is a known bug of Ruby-1.8.4 release.
|
||||
|
||||
When you meet the trouble on your GUI, you'll be able to avoid the trouble
|
||||
by Tcl/Tk's traditional dialogs.
|
||||
If you want to do that, please call some of the following bits of script
|
||||
When you meet the trouble on your GUI, you'll be able to avoid the trouble
|
||||
by Tcl/Tk's traditional dialogs.
|
||||
If you want to do that, please call some of the following bits of script
|
||||
after "reqruie 'tk'".
|
||||
|
||||
=================================================================
|
||||
|
@ -57,11 +57,11 @@ Tk.ip_eval(<<'EOS')
|
|||
EOS
|
||||
=================================================================
|
||||
|
||||
Each of them replaces the platform specific dialog command to the
|
||||
traditional one.
|
||||
Each of them replaces the platform specific dialog command to the
|
||||
traditional one.
|
||||
|
||||
If you use some MultiTkIp objects, probably, you'll have to call the
|
||||
bits of script for each MultiTkIp object.
|
||||
If you use some MultiTkIp objects, probably, you'll have to call the
|
||||
bits of script for each MultiTkIp object.
|
||||
|
||||
--
|
||||
--
|
||||
Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
|
||||
|
|
|
@ -1,42 +1,42 @@
|
|||
To compile 'tcltklib', you must have Tcl/Tk libraries on your environment.
|
||||
To compile 'tcltklib', you must have Tcl/Tk libraries on your environment.
|
||||
Although 'extconf.rb' script searches Tcl/Tk libraries and header files
|
||||
(as default, searches tclConfig.sh/tkConfig.sh and use the defintions on
|
||||
those; ActiveTcl has high priority on searching unless --without-ActiveTcl),
|
||||
sometimes fails to find them. And then, 'tcltklib' cannot be compiled. If
|
||||
Tcl/Tk libraries or header files are installed but are not found, you can
|
||||
give the information by arguments of the 'configure' script. Please give
|
||||
some or all of the following options.
|
||||
sometimes fails to find them. And then, 'tcltklib' cannot be compiled. If
|
||||
Tcl/Tk libraries or header files are installed but are not found, you can
|
||||
give the information by arguments of the 'configure' script. Please give
|
||||
some or all of the following options.
|
||||
|
||||
--with-tk-old-extconf use old "extconf.rb" (default: false).
|
||||
If current extconf.rb doesn't work properly
|
||||
(or your install process is based on old
|
||||
(or your install process is based on old
|
||||
documant about Ruby/Tk install), please try
|
||||
this option.
|
||||
|
||||
--with-ActiveTcl / --without-ActiveTcl
|
||||
--with-ActiveTcl=<dir> search ActiveTcl libraries (default: true).
|
||||
When true, try to find installed ActiveTcl.
|
||||
When true, try to find installed ActiveTcl.
|
||||
When <dir> is given, use it as the ActiveTcl's
|
||||
top directory (use <dir>/lib, and so on).
|
||||
Old "extconf.rb" doesn't support this option.
|
||||
|
||||
--with-tk-shlib-search-path=<paths>
|
||||
teach the paths for loading shared-libraries
|
||||
teach the paths for loading shared-libraries
|
||||
to linker.
|
||||
<paths> is a path list with the same format
|
||||
<paths> is a path list with the same format
|
||||
as PATH environment variable.
|
||||
This option may be experimental.
|
||||
Old "extconf.rb" doesn't support this option.
|
||||
|
||||
--with-tcltkversion=<version>
|
||||
--with-tcltkversion=<version>
|
||||
force version of Tcl/Tk libaray
|
||||
(e.g. libtcl8.4g.so ==> --with-tcltkversion=8.4g)
|
||||
|
||||
--without-tcl-config / --without-tk-config
|
||||
--with-tclConfig-dir=<dir>
|
||||
--with-tkConfig-dir=<dir> the directory contains 'tclConfig.sh' and
|
||||
'tkConfig.sh'.
|
||||
Current "extconf.rb" uses the information
|
||||
--with-tclConfig-dir=<dir>
|
||||
--with-tkConfig-dir=<dir> the directory contains 'tclConfig.sh' and
|
||||
'tkConfig.sh'.
|
||||
Current "extconf.rb" uses the information
|
||||
on tclConfig.sh/tkConfig.rb, if possible.
|
||||
Old "extconf.rb" doesn't support this option.
|
||||
|
||||
|
@ -45,14 +45,14 @@ some or all of the following options.
|
|||
|
||||
--enable-tcltk-stubs (if you force to enable stubs)
|
||||
On old "extconf.rb", default is false.
|
||||
On current "extconf.rb", default is true when
|
||||
On current "extconf.rb", default is true when
|
||||
tclConfig.sh/tkConfig.sh have TCL_STUB_LIB_SPEC
|
||||
/TK_STUB_LIB_SPEC, else default is false.
|
||||
|
||||
--with-tcl-dir=<path>
|
||||
--with-tcl-dir=<path>
|
||||
equal to "--with-tcl-include=<path>/include --with-tcl-lib=<path>/lib"
|
||||
|
||||
--with-tk-dir=<path>
|
||||
--with-tk-dir=<path>
|
||||
equal to "--with-tk-include=<path>/include --with-tk-lib=<path>/lib"
|
||||
|
||||
--with-tcl-include=<dir> the directry contains 'tcl.h'
|
||||
|
@ -66,9 +66,9 @@ some or all of the following options.
|
|||
|
||||
--enable-tcltk-framework use Tcl/Tk framework
|
||||
|
||||
--with-tcltk-framework=<dir> the directory contains Tcl/Tk framework;
|
||||
--with-tcltk-framework=<dir> the directory contains Tcl/Tk framework;
|
||||
"<dir>/Tcl.framework" and "<dir>/Tk.framework".
|
||||
When this option is given, it is assumed that
|
||||
When this option is given, it is assumed that
|
||||
--enable-tcltk-framework option is given also.
|
||||
|
||||
--with-tcl-framework-dir=<dir>
|
||||
|
@ -78,17 +78,17 @@ some or all of the following options.
|
|||
Tk framework directory (e.g. "/Library/Frameworks/Tk.framework")
|
||||
|
||||
--with-tcl-framework-header=<dir>
|
||||
Tcl framework headers directory
|
||||
Tcl framework headers directory
|
||||
(e.g. "/Library/Frameworks/Tcl.framework/Headers")
|
||||
|
||||
--with-tk-framework-header=<dir>
|
||||
Tk framework headers directory
|
||||
Tk framework headers directory
|
||||
(e.g. "/Library/Frameworks/Tk.framework/Headers")
|
||||
|
||||
|
||||
--with-X11 / --without-X11 use / not use the X Window System
|
||||
|
||||
--with-X11-dir=<path>
|
||||
--with-X11-dir=<path>
|
||||
equal to "--with-X11-include=<path>/include --with-X11-lib=<path>/lib"
|
||||
|
||||
--with-X11-include=<dir> the directry contais X11 header files
|
||||
|
@ -104,24 +104,24 @@ directry of Ruby sources, please try something like as the followings.
|
|||
|
||||
|
||||
*** ATTENTION ***
|
||||
When your Tcl/Tk libraries are compiled with "pthread support",
|
||||
Ruby/Tk may cause "Hang-up" or "Segmentation Fault" frequently.
|
||||
If you have such a trouble, please try to use the '--enable-pthread'
|
||||
option of the 'configure' command and re-compile Ruby sources.
|
||||
It may help you to avoid this trouble. The following configure
|
||||
When your Tcl/Tk libraries are compiled with "pthread support",
|
||||
Ruby/Tk may cause "Hang-up" or "Segmentation Fault" frequently.
|
||||
If you have such a trouble, please try to use the '--enable-pthread'
|
||||
option of the 'configure' command and re-compile Ruby sources.
|
||||
It may help you to avoid this trouble. The following configure
|
||||
options may be useful.
|
||||
|
||||
--enable-tcl-thread/--disable-tcl-thread
|
||||
--with-tclConfig-file=<path of 'tclConfig.sh'>
|
||||
--with-tkConfig-file=<path of 'tkConfig.sh'>
|
||||
|
||||
It is not need that 'tclConfig.sh' is a normal Tcl/Tk's tclConfig.sh.
|
||||
It is not need that 'tclConfig.sh' is a normal Tcl/Tk's tclConfig.sh.
|
||||
But the file is expected to include the line "TCL_THREADS=0" or "...=1".
|
||||
When no "TCL_THREADS=?" line, if Tcl version is 7.x or 8.0 which is
|
||||
given by "TCL_MAJOR_VERSION=?" line and "TCL_MINOR_VERSION=?" line,
|
||||
When no "TCL_THREADS=?" line, if Tcl version is 7.x or 8.0 which is
|
||||
given by "TCL_MAJOR_VERSION=?" line and "TCL_MINOR_VERSION=?" line,
|
||||
then --disable-tcl-thread is expected. Else, ignore the 'tclConfig.sh'.
|
||||
If --enable-tcl-thread or --disable-tcl-thread option is given, then
|
||||
--with-tclConfig-file option is ignored.
|
||||
If --enable-tcl-thread or --disable-tcl-thread option is given, then
|
||||
--with-tclConfig-file option is ignored.
|
||||
|
||||
==========================================================
|
||||
Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
|
||||
|
|
|
@ -9,8 +9,8 @@ tkextlib/ non-standard Tcl/Tk extension support libraries
|
|||
|
||||
*********************************************************************
|
||||
*** The followings exists for backward compatibility only.
|
||||
*** The only thing which they work is that requires current
|
||||
*** library files ( tk/*.rb ).
|
||||
*** The only thing which they work is that requires current
|
||||
*** library files ( tk/*.rb ).
|
||||
*********************************************************************
|
||||
tkafter.rb handles Tcl after
|
||||
tkbgerror.rb Tk error module
|
||||
|
|
|
@ -6,56 +6,56 @@
|
|||
The following list shows *CURRENT* status when this file was modifyed
|
||||
at last. If you want to add other Tcl/Tk extensions to the planed list
|
||||
(or change its status position), please request them at the ruby-talk,
|
||||
ruby-list, or ruby-dev ML. Although we cannot promise to support your
|
||||
requests, we'll try to do.
|
||||
ruby-list, or ruby-dev ML. Although we cannot promise to support your
|
||||
requests, we'll try to do.
|
||||
|
||||
If you want to check that wrapper libraries are ready to use on your
|
||||
environment, please execute 'pkg_checker.rb' with no arguments. The
|
||||
If you want to check that wrapper libraries are ready to use on your
|
||||
environment, please execute 'pkg_checker.rb' with no arguments. The
|
||||
script may give you some hints about that.
|
||||
|
||||
|
||||
***** IMPORTANT NOTE **********************************************
|
||||
|
||||
'support' means that Ruby/Tk's wrapper libraries are released.
|
||||
'support' means that Ruby/Tk's wrapper libraries are released.
|
||||
'not support' does *NOT* mean that the extension doesn't work
|
||||
on Ruby/Tk.
|
||||
on Ruby/Tk.
|
||||
|
||||
The version number of each extension means the latest version
|
||||
which is checked its feature. That is, it does NOT means only
|
||||
version of working. Library files maybe include some features
|
||||
which is included in the former version but removed from the
|
||||
latest, and maybe able to support the later version then the
|
||||
which is checked its feature. That is, it does NOT means only
|
||||
version of working. Library files maybe include some features
|
||||
which is included in the former version but removed from the
|
||||
latest, and maybe able to support the later version then the
|
||||
shown version.
|
||||
|
||||
Even if the status of the extension is 'not support', you can
|
||||
control the functions/widgets of the extension without wrapper
|
||||
libraries by Tk.tk_call(), Tk.ip_eval(), and so on.
|
||||
Even if the status of the extension is 'not support', you can
|
||||
control the functions/widgets of the extension without wrapper
|
||||
libraries by Tk.tk_call(), Tk.ip_eval(), and so on.
|
||||
|
||||
If you cannot use installed Tcl/Tk extension, please check the
|
||||
followings.
|
||||
If you cannot use installed Tcl/Tk extension, please check the
|
||||
followings.
|
||||
|
||||
(1) On your Tcl/Tk, does the extention work?
|
||||
|
||||
(2) Do DLL libraries of the extension exist on DLL load-path?
|
||||
(See also "<ruby archive>/ext/tcltklib/README.ActiveTcl")
|
||||
|
||||
(3) Is the Tcl library directory of the extension included in
|
||||
(3) Is the Tcl library directory of the extension included in
|
||||
library search-path of the Tcl interpreter linked Ruby/Tk?
|
||||
|
||||
The check results may request you to do some setup operations
|
||||
before using the extension. If so, then please write the step
|
||||
of setup oprations into the "setup.rb" file in the directory
|
||||
The check results may request you to do some setup operations
|
||||
before using the extension. If so, then please write the step
|
||||
of setup oprations into the "setup.rb" file in the directory
|
||||
of the wrapper libraries for the extention (It is the wrapper
|
||||
libraries have the standard structure of the libraries in this
|
||||
directory). The "setup" file is required before requiring the
|
||||
Tcl library package (TkPackage.require(<libname>)).
|
||||
libraries have the standard structure of the libraries in this
|
||||
directory). The "setup" file is required before requiring the
|
||||
Tcl library package (TkPackage.require(<libname>)).
|
||||
|
||||
*******************************************************************
|
||||
|
||||
|
||||
===< support with some examples (may be beta quality) >=======================
|
||||
|
||||
Tcllib 1.11.1
|
||||
Tcllib 1.11.1
|
||||
Tklib 0.5 http://sourceforge.net/projects/tcllib ==> tcllib
|
||||
( partial support; primary support target is Tklib)
|
||||
|
||||
|
@ -78,7 +78,7 @@ TkImg 1.3 http://sourceforge.net/projects/tkimg ==> tkimg
|
|||
|
||||
|
||||
BLT 2.4z http://sourceforge.net/projects/blt
|
||||
* see also tcltk-ext library on RAA
|
||||
* see also tcltk-ext library on RAA
|
||||
(http://raa.ruby-lang.org/)
|
||||
==> blt
|
||||
|
||||
|
@ -97,7 +97,7 @@ IncrTcl CVS/Hd(2008-12-15)
|
|||
|
||||
TclX CVS/Hd(2008-12-15)
|
||||
http://sourceforge.net/projects/tclx
|
||||
==> tclx (partial support; infox command and
|
||||
==> tclx (partial support; infox command and
|
||||
XPG/3 message catalogs only)
|
||||
|
||||
Trofs 0.4.4 http://math.nist.gov/~DPorter/tcltk/trofs/
|
||||
|
@ -129,7 +129,7 @@ Tkgeomap *** http://tkgeomap.sourceforge.net/index.html
|
|||
===< not determined to supprt or not >========================================
|
||||
|
||||
Tix *** http://tixlibrary.sourceforge.net/
|
||||
* see also tcltk-ext library on RAA
|
||||
* see also tcltk-ext library on RAA
|
||||
(http://raa.ruby-lang.org/)
|
||||
|
||||
TkZinc *** http://www.tkzinc.org/
|
||||
|
@ -175,7 +175,7 @@ TclDOM *** http://sourceforge.net/projects/tclxml
|
|||
TclSOAP *** http://sourceforge.net/projects/tclsoap
|
||||
|
||||
Snack *** http://www.speech.kth.se/~kare/snack2.2.tar.gz
|
||||
* use Snack for Ruby
|
||||
* use Snack for Ruby
|
||||
(see http://rbsnack.sourceforge.net/)
|
||||
|
||||
Tcom *** http://www.vex.net/~cthuang/tcom/
|
||||
|
@ -191,7 +191,7 @@ XOTcl *** http://www.xotcl.org/
|
|||
|
||||
===< tool (may not supprt) >==================================================
|
||||
|
||||
tbcload/tclcompiler
|
||||
tbcload/tclcompiler
|
||||
*** http://www.tcl.tk/software/tclpro/
|
||||
|
||||
|
||||
|
|
|
@ -4,14 +4,14 @@
|
|||
Tcllib includes many utilities. But currently, supports TKLib part
|
||||
only (see the following 'tcllib contents').
|
||||
|
||||
If you request to support others, please send your message to one of
|
||||
ruby-talk/ruby-list/ruby-dev/ruby-ext mailing lists.
|
||||
If you request to support others, please send your message to one of
|
||||
ruby-talk/ruby-list/ruby-dev/ruby-ext mailing lists.
|
||||
|
||||
-----<from "What is tcllib?">----------------------------
|
||||
Tcllib is a collection of utility modules for Tcl. These modules provide
|
||||
a wide variety of functionality, from implementations of standard data
|
||||
structures to implementations of common networking protocols. The intent
|
||||
is to collect commonly used function into a single library, which users
|
||||
Tcllib is a collection of utility modules for Tcl. These modules provide
|
||||
a wide variety of functionality, from implementations of standard data
|
||||
structures to implementations of common networking protocols. The intent
|
||||
is to collect commonly used function into a single library, which users
|
||||
can rely on to be available and stable.
|
||||
---------------------------------------------------------
|
||||
|
||||
|
@ -124,7 +124,7 @@ Grammars and finite automata
|
|||
|
||||
TKLib
|
||||
* Plotchart - Simple plotting and charting package
|
||||
* autoscroll - Provides for a scrollbar to automatically mapped and
|
||||
* autoscroll - Provides for a scrollbar to automatically mapped and
|
||||
unmapped as needed
|
||||
* ctext - An extended text widget with customizable Syntax highlighting
|
||||
* cursor - Procedures to handle CURSOR data
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
[ Tcl/Tk Image formats (TkImg) support ]
|
||||
|
||||
TkImg contains a collection of format handlers for the Tk photo
|
||||
image type, and a new image type, pixmaps.
|
||||
image type, and a new image type, pixmaps.
|
||||
|
||||
Supported formats of TkImg version 1.3 are
|
||||
-------------------------------------------------------
|
||||
|
|
|
@ -70,7 +70,7 @@ demo/lines2.rb : tcltk
|
|||
|
||||
で作成/動作確認しました. 他の環境では動作するかどうかわかりません.
|
||||
|
||||
TclTkLib.mainloop を実行中に Control-C が効かないのは不便なので, ruby
|
||||
TclTkLib.mainloop を実行中に Control-C が効かないのは不便なので, ruby
|
||||
のソースを参考に, #include "sig.h" して trap_immediate を操作していま
|
||||
すが, ruby の README.EXT にも書いてないのに, こんなことをして良いのか
|
||||
どうかわかりません.
|
||||
|
@ -86,12 +86,12 @@ extconf.rb
|
|||
|
||||
ruby から tcl/tk ライブラリを利用できます.
|
||||
|
||||
tcl/tk インタプリタのスクリプトは, 機械的に tcltk ライブラリ用の ruby
|
||||
tcl/tk インタプリタのスクリプトは, 機械的に tcltk ライブラリ用の ruby
|
||||
スクリプトに変換できます.
|
||||
|
||||
(`tk.rb' との違い)
|
||||
|
||||
1. tcl/tk インタプリタのスクリプトが, どのように, tcltk ライブラリ用の
|
||||
1. tcl/tk インタプリタのスクリプトが, どのように, tcltk ライブラリ用の
|
||||
ruby スクリプトに変換されるかが理解できれば, マニュアル類が無いに等
|
||||
しい `tk.rb' とは異なり
|
||||
|
||||
|
@ -136,7 +136,7 @@ tcl/tk
|
|||
|
||||
しなければなりません(その代わり, tcl/tk ライブラリの仕様通り,
|
||||
tcl/tk インタプリタを複数生成することもできますが).
|
||||
インターフェースは(おそらく) ruby の思想に沿ったものではありません.
|
||||
インターフェースは(おそらく) ruby の思想に沿ったものではありません.
|
||||
また, スクリプトの記述は
|
||||
|
||||
ダサダサ
|
||||
|
|
|
@ -6,4 +6,4 @@
|
|||
|
||||
* Added test to widget and hello versus Tk::TCL_VERSION & Tk::JAPANIZED_TK (per Guy Decoux in [ruby-talk:18559]) before requiring tkencoding.rb.
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
Current Maintainer:
|
||||
Current Maintainer:
|
||||
Jonathan Conway
|
||||
rise@knavery.net
|
||||
|
||||
Please direct all bug reports/requests/suggestions to the above
|
||||
Please direct all bug reports/requests/suggestions to the above
|
||||
address.
|
||||
|
||||
|
||||
Notes:
|
||||
|
||||
* The files hello and widget have been changed to test Tk::TCL_VERSION
|
||||
* The files hello and widget have been changed to test Tk::TCL_VERSION
|
||||
and Tk::JAPANIZED_TK before requiring tkencoding.rb to prevent an
|
||||
infinite loop. This test was taken from a message in
|
||||
[ruby-talk:18559] by Guy Decoux.
|
||||
|
@ -18,7 +18,7 @@ Notes:
|
|||
able to use images exported by a graphics program as Windows
|
||||
bitmaps with this demo collection nor will you be able to edit the
|
||||
included images without setting the file type correctly.
|
||||
|
||||
|
||||
-- Jonathan Conway, 2001-07-26
|
||||
|
||||
|
||||
|
@ -28,19 +28,19 @@ Notes:
|
|||
# To create this version of the Ruby/Tk widget demo, I took the
|
||||
# ruby-tk81-demos and removed all the Kanji strings and comments. I
|
||||
# have tried to restore the original English strings and comments
|
||||
# using the Tcl/Tk8.2.2 version of the widget demo.
|
||||
# using the Tcl/Tk8.2.2 version of the widget demo.
|
||||
#
|
||||
# When I tried running the Kanji version, all I got was a mostly blank
|
||||
# panel with a non-functional "File" button. I disovered that if all
|
||||
# non-ASCII characters were replaced with blanks, then I could get the
|
||||
# gutted stuff running.
|
||||
# gutted stuff running.
|
||||
#
|
||||
# Since English Ruby/Tk documentation is lacking and I needed this
|
||||
# code to see how it worked and to use as the basis of my try-it
|
||||
# prototype (The Ruby Yielding Interactive Toolkit), plus the fact
|
||||
# that no help was forthcoming for making the Kanji version work (plus
|
||||
# the fact that I can't read Kanji anyway), I decided to embark on
|
||||
# this English restoration project.
|
||||
# this English restoration project.
|
||||
#
|
||||
# Thanks to everyone who worked on the original Ruby/Tk widget demo
|
||||
# (and the preceding Tcl/Tk version for that matter). The
|
||||
|
@ -86,13 +86,13 @@ Windows(Cygwin)
|
|||
<eban@os.rim.or.jp>
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Ruby/Tk widget-demo
|
||||
Ruby/Tk widget-demo
|
||||
version 1.1 ( 1998/07/24 )
|
||||
永井@知能.九工大 (nagai@ai.kyutech.ac.jp)
|
||||
|
||||
標準配布の Tcl/Tk 拡張パッケージを取り込んだ Ruby (以下 Ruby/Tk と呼びます)
|
||||
標準配布の Tcl/Tk 拡張パッケージを取り込んだ Ruby (以下 Ruby/Tk と呼びます)
|
||||
では,Tk widget を用いた GUI の作成を行うことができます.実際に GUI を作成
|
||||
していく場合には様々な実例がサンプルとして存在すると便利なのですが,Ruby/Tk
|
||||
していく場合には様々な実例がサンプルとして存在すると便利なのですが,Ruby/Tk
|
||||
にはそのような適当なサンプルスクリプト集合は存在しませんでした.それに対し,
|
||||
拡張パッケージの元である Tcl/Tk には,Tk widget を用いてどのようなことがで
|
||||
きるかを示すものとして widget-demo が存在しおり,Tcl/Tk を用いた GUI の作成
|
||||
|
@ -118,21 +118,21 @@ Tcl/Tk
|
|||
でしょう.Ruby/Tk 版の記述を widget-demo を Tcl/Tk 版の記述に近いものにして
|
||||
おけば,その対比によって,Ruby/Tk の理解を早めることができると考えられます.
|
||||
一旦 Ruby/Tk での 各 widget の使用方法を習得してしまえば,Ruby らしいスクリ
|
||||
プトを作成することは難しくないでしょう.本アーカイブのスクリプトは,Ruby/Tk
|
||||
プトを作成することは難しくないでしょう.本アーカイブのスクリプトは,Ruby/Tk
|
||||
を最初に習得するまでの踏台として利用していただければ幸いです.
|
||||
|
||||
widget-demo の移植にあたっては,次の方にも移植したスクリプトを提供していただ
|
||||
きました.ここに感謝の意を表します.
|
||||
|
||||
立石@JAIST (ttate@jaist.ac.jp) さん
|
||||
立石@JAIST (ttate@jaist.ac.jp) さん
|
||||
平松祥史 (hiramatu@cdrom.co.jp) さん
|
||||
|
||||
平松さんによる Ruby/Tk 入門の Web page (http://www.cdrom.co.jp/~hiramatu/)
|
||||
平松さんによる Ruby/Tk 入門の Web page (http://www.cdrom.co.jp/~hiramatu/)
|
||||
も Ruby/Tk の習得に有用と思えますので,ぜひご参照ください.
|
||||
|
||||
また,前橋 (maebashi@iij.ad.jp) さんをはじめとして,widget-demo の移植に際し
|
||||
て必要となった Ruby の Tk 関連ライブラリ修正について,問題点,バグの指摘をし
|
||||
ていただいた方々にも感謝致します.
|
||||
|
||||
そして最後に最大の感謝を Ruby 設計者の まつもと ゆきひろ (matz@netlab.co.jp)
|
||||
そして最後に最大の感謝を Ruby 設計者の まつもと ゆきひろ (matz@netlab.co.jp)
|
||||
さんに捧げたいと思います.
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
There are Ruby/Tk demo scripts.
|
||||
|
||||
Files with '.rb' extension are sub-scripts which are launched 'widget'
|
||||
script. Those files don't work independently. Please call them from
|
||||
script. Those files don't work independently. Please call them from
|
||||
'widget' script.
|
||||
|
||||
If you want start some sub-scripts at same time when the launcher
|
||||
script tarts, please give the sub-script names as arguments.
|
||||
script tarts, please give the sub-script names as arguments.
|
||||
(e.g. /usr/local/bin/ruby widget button.rb entry1.rb text.rb )
|
||||
You can ommit '.rb' of the sub-scripts
|
||||
(e.g. /usr/local/bin/ruby widget button entry1 text )
|
||||
|
||||
If you don't need launcher's main window, give -n option.
|
||||
If you don't need launcher's main window, give -n option.
|
||||
(e.g. /usr/local/bin/ruby widget -n button.rb entry1.rb text.rb )
|
||||
|
||||
Others (browse1, hello, and so on) are standalone scripts.
|
||||
Others (browse1, hello, and so on) are standalone scripts.
|
||||
|
||||
2004/04/14 Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
This is a original document of 'tkencoding.rb'.
|
||||
The library 'tkencoding.rb' is obsolete.
|
||||
This is a original document of 'tkencoding.rb'.
|
||||
The library 'tkencoding.rb' is obsolete.
|
||||
Functions of tkencoding.rb is already included into Ruby/Tk.
|
||||
|
||||
-------------------------------------------------
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# browse --
|
||||
# This script generates a directory browser, which lists the working
|
||||
# directory and allow you to open files or subdirectories by
|
||||
# double-clicking.
|
||||
# This script generates a directory browser, which lists the working
|
||||
# directory and allow you to open files or subdirectories by
|
||||
# double-clicking.
|
||||
|
||||
require 'tk'
|
||||
|
||||
# Create a scrollbar on the right side of the main window and a listbox
|
||||
# Create a scrollbar on the right side of the main window and a listbox
|
||||
# on the left side.
|
||||
|
||||
listbox = TkListbox.new(nil, 'relief'=>'sunken',
|
||||
listbox = TkListbox.new(nil, 'relief'=>'sunken',
|
||||
'width'=>20, 'height'=>20, 'setgrid'=>'yes') {|l|
|
||||
TkScrollbar.new(nil, 'command'=>proc{|*args| l.yview *args}) {|s|
|
||||
pack('side'=>'right', 'fill'=>'y')
|
||||
|
@ -23,10 +23,10 @@ listbox = TkListbox.new(nil, 'relief'=>'sunken',
|
|||
root = TkRoot.new
|
||||
root.minsize(1,1)
|
||||
|
||||
# The procedure below is invoked to open a browser on a given file; if the
|
||||
# file is a directory then another instance of this program is invoked; if
|
||||
# the file is a regular file then the Mx editor is invoked to display
|
||||
# the file.
|
||||
# The procedure below is invoked to open a browser on a given file; if the
|
||||
# file is a directory then another instance of this program is invoked; if
|
||||
# the file is a regular file then the Mx editor is invoked to display
|
||||
# the file.
|
||||
|
||||
def browse (dir, file)
|
||||
file = dir + File::Separator + file if dir != '.'
|
||||
|
@ -46,7 +46,7 @@ def browse (dir, file)
|
|||
end
|
||||
end
|
||||
|
||||
# Fill the listbox with a list of all the files in the directory (run
|
||||
# Fill the listbox with a list of all the files in the directory (run
|
||||
# the "ls" command to get that information).
|
||||
|
||||
dir = ARGV[0] ? ARGV[0] : '.'
|
||||
|
@ -57,7 +57,7 @@ open("|ls -a #{dir}", 'r'){|fid| fid.readlines}.each{|fname|
|
|||
# Set up bindings for the browser.
|
||||
|
||||
Tk.bind_all('Control-c', proc{root.destroy})
|
||||
listbox.bind('Double-Button-1',
|
||||
listbox.bind('Double-Button-1',
|
||||
proc{TkSelection.get.each{|f| browse dir, f}})
|
||||
|
||||
Tk.mainloop
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# browse --
|
||||
# This script generates a directory browser, which lists the working
|
||||
# directory and allow you to open files or subdirectories by
|
||||
# double-clicking.
|
||||
# This script generates a directory browser, which lists the working
|
||||
# directory and allow you to open files or subdirectories by
|
||||
# double-clicking.
|
||||
|
||||
require 'tk'
|
||||
|
||||
|
@ -19,9 +19,9 @@ class Browse
|
|||
title('Browse : ' + dir)
|
||||
}
|
||||
|
||||
# Create a scrollbar on the right side of the main window and a listbox
|
||||
# Create a scrollbar on the right side of the main window and a listbox
|
||||
# on the left side.
|
||||
list = TkListbox.new(base, 'relief'=>'sunken',
|
||||
list = TkListbox.new(base, 'relief'=>'sunken',
|
||||
'width'=>20, 'height'=>20, 'setgrid'=>'yes') {|l|
|
||||
TkScrollbar.new(base, 'command'=>proc{|*args| l.yview *args}) {|s|
|
||||
pack('side'=>'right', 'fill'=>'y')
|
||||
|
@ -30,7 +30,7 @@ class Browse
|
|||
|
||||
pack('side'=>'left', 'fill'=>'both', 'expand'=>'yes')
|
||||
|
||||
# Fill the listbox with a list of all the files in the directory (run
|
||||
# Fill the listbox with a list of all the files in the directory (run
|
||||
# the "ls" command to get that information).
|
||||
open("|ls -a #{dir}", 'r'){|fid| fid.readlines}.each{|fname|
|
||||
l.insert('end', fname.chomp)
|
||||
|
@ -44,14 +44,14 @@ class Browse
|
|||
Browse::BROWSE_WIN_COUNTER.to_i - 1
|
||||
})
|
||||
base.bind('Control-c', proc{base.destroy})
|
||||
list.bind('Double-Button-1',
|
||||
list.bind('Double-Button-1',
|
||||
proc{TkSelection.get.each{|f| self.browse dir, f}})
|
||||
end
|
||||
|
||||
# The method below is invoked to open a browser on a given file; if the
|
||||
# file is a directory then another instance of this program is invoked; if
|
||||
# the file is a regular file then the Mx editor is invoked to display
|
||||
# the file.
|
||||
# The method below is invoked to open a browser on a given file; if the
|
||||
# file is a directory then another instance of this program is invoked; if
|
||||
# the file is a regular file then the Mx editor is invoked to display
|
||||
# the file.
|
||||
def browse (dir, file)
|
||||
file = dir + File::Separator + file if dir != '.'
|
||||
type = File.ftype(file)
|
||||
|
|
|
@ -28,7 +28,7 @@ MODIFICATIONS.
|
|||
|
||||
GOVERNMENT USE: If you are acquiring this software on behalf of the
|
||||
U.S. government, the Government shall have only "Restricted Rights"
|
||||
in the software and related documentation as defined in the Federal
|
||||
in the software and related documentation as defined in the Federal
|
||||
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
|
||||
are acquiring the software on behalf of the Department of Defense, the
|
||||
software shall be classified as "Commercial Computer Software" and the
|
||||
|
|
|
@ -28,7 +28,7 @@ MODIFICATIONS.
|
|||
|
||||
GOVERNMENT USE: If you are acquiring this software on behalf of the
|
||||
U.S. government, the Government shall have only "Restricted Rights"
|
||||
in the software and related documentation as defined in the Federal
|
||||
in the software and related documentation as defined in the Federal
|
||||
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
|
||||
are acquiring the software on behalf of the Department of Defense, the
|
||||
software shall be classified as "Commercial Computer Software" and the
|
||||
|
|
|
@ -164,8 +164,8 @@ class Xsettings
|
|||
#
|
||||
bell = TkFrame.new(@root, 'relief'=>'raised', 'borderwidth'=>2)
|
||||
l = TkLabel.new(bell, 'text'=>'Bell Settings')
|
||||
@w_bellvol = TkScale.new(bell, 'from'=>0, 'to'=>100, 'length'=>200,
|
||||
'tickinterval'=>20, 'orient'=>'horizontal',
|
||||
@w_bellvol = TkScale.new(bell, 'from'=>0, 'to'=>100, 'length'=>200,
|
||||
'tickinterval'=>20, 'orient'=>'horizontal',
|
||||
'label'=>"Volume (%)")
|
||||
|
||||
f = TkFrame.new(bell)
|
||||
|
@ -180,13 +180,13 @@ class Xsettings
|
|||
|
||||
#
|
||||
# Keyboard settings
|
||||
#
|
||||
#
|
||||
kbdonoff = nil
|
||||
kbdcli = nil
|
||||
kbd = TkFrame.new(@root, 'relief'=>'raised', 'borderwidth'=>2)
|
||||
l = TkLabel.new(kbd, 'text'=>'Keyboard Repeat Settings')
|
||||
f = TkFrame.new(kbd)
|
||||
@w_kbdonoff = TkCheckButton.new(f, 'text'=>'On', 'relief'=>'flat',
|
||||
@w_kbdonoff = TkCheckButton.new(f, 'text'=>'On', 'relief'=>'flat',
|
||||
'onvalue'=>'on', 'offvalue'=>'off',
|
||||
'variable'=>@w_kbdrep ) {
|
||||
def self.set(value)
|
||||
|
@ -198,8 +198,8 @@ class Xsettings
|
|||
end
|
||||
pack('side'=>'left', 'expand'=>'yes', 'fill'=>'both')
|
||||
}
|
||||
@w_kbdcli = TkScale.new(f, 'from'=>0, 'to'=>100, 'length'=>200,
|
||||
'tickinterval'=>20, 'orient'=>'horizontal',
|
||||
@w_kbdcli = TkScale.new(f, 'from'=>0, 'to'=>100, 'length'=>200,
|
||||
'tickinterval'=>20, 'orient'=>'horizontal',
|
||||
'label'=>'Click Volume (%)')
|
||||
@w_kbdcli.pack('side'=>'left', 'expand'=>'yes')
|
||||
l.pack('side'=>'top', 'expand'=>'yes')
|
||||
|
@ -225,9 +225,9 @@ class Xsettings
|
|||
l = TkLabel.new(screen, 'text'=>'Screen-saver Settings')
|
||||
f = TkFrame.new(screen)
|
||||
ff1 = TkFrame.new(f)
|
||||
[ @w_screenblank = TkRadioButton.new(ff1, 'text'=>'Blank',
|
||||
'relief'=>'flat',
|
||||
'variable'=>@w_screenbla,
|
||||
[ @w_screenblank = TkRadioButton.new(ff1, 'text'=>'Blank',
|
||||
'relief'=>'flat',
|
||||
'variable'=>@w_screenbla,
|
||||
'value'=>'blank') {
|
||||
def self.set(value)
|
||||
if value == 'blank'
|
||||
|
@ -236,10 +236,10 @@ class Xsettings
|
|||
self.deselect
|
||||
end
|
||||
end
|
||||
},
|
||||
@w_screenpat = TkRadioButton.new(ff1, 'text'=>'Pattern',
|
||||
'relief'=>'flat',
|
||||
'variable'=>@w_screenbla,
|
||||
},
|
||||
@w_screenpat = TkRadioButton.new(ff1, 'text'=>'Pattern',
|
||||
'relief'=>'flat',
|
||||
'variable'=>@w_screenbla,
|
||||
'value'=>'noblank') {
|
||||
def self.set(value)
|
||||
if value != 'blank'
|
||||
|
@ -252,7 +252,7 @@ class Xsettings
|
|||
].each {|w| w.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w') }
|
||||
|
||||
ff2 = TkFrame.new(f)
|
||||
[ @w_screentim = LabelEntry.new(ff2, 'Timeout (s)', 5),
|
||||
[ @w_screentim = LabelEntry.new(ff2, 'Timeout (s)', 5),
|
||||
@w_screencyc = LabelEntry.new(ff2, 'Cycle (s)', 5) ].each{|w|
|
||||
w.pack('side'=>'top', 'pady'=>2, 'anchor'=>'e')
|
||||
}
|
||||
|
|
|
@ -134,8 +134,8 @@ class Xsettings
|
|||
def initialize(parent, text, length, range=[])
|
||||
@frame = TkFrame.new(parent)
|
||||
TkLabel.new(@frame, 'text'=>text).pack('side'=>'left')
|
||||
if range.size > 0
|
||||
@entry = TkSpinbox.new(@frame, 'width'=>length, 'relief'=>'sunken',
|
||||
if range.size > 0
|
||||
@entry = TkSpinbox.new(@frame, 'width'=>length, 'relief'=>'sunken',
|
||||
'from'=>range[0], 'to'=>range[1])
|
||||
else
|
||||
@entry = TkEntry.new(@frame, 'width'=>length, 'relief'=>'sunken')
|
||||
|
@ -164,16 +164,16 @@ class Xsettings
|
|||
# Buttons
|
||||
#
|
||||
btn_frame = TkFrame.new(@root)
|
||||
buttons = [
|
||||
@btn_OK = TkButton.new(btn_frame, 'command'=>proc{win.ok},
|
||||
buttons = [
|
||||
@btn_OK = TkButton.new(btn_frame, 'command'=>proc{win.ok},
|
||||
'default'=>'active', 'text'=>'Ok'),
|
||||
@btn_APPLY = TkButton.new(btn_frame, 'command'=>proc{win.writesettings},
|
||||
'default'=>'normal', 'text'=>'Apply',
|
||||
@btn_APPLY = TkButton.new(btn_frame, 'command'=>proc{win.writesettings},
|
||||
'default'=>'normal', 'text'=>'Apply',
|
||||
'state'=>'disabled'),
|
||||
@btn_CANCEL = TkButton.new(btn_frame, 'command'=>proc{win.cancel},
|
||||
'default'=>'normal', 'text'=>'Cancel',
|
||||
@btn_CANCEL = TkButton.new(btn_frame, 'command'=>proc{win.cancel},
|
||||
'default'=>'normal', 'text'=>'Cancel',
|
||||
'state'=>'disabled'),
|
||||
@btn_QUIT = TkButton.new(btn_frame, 'command'=>proc{win.quit},
|
||||
@btn_QUIT = TkButton.new(btn_frame, 'command'=>proc{win.quit},
|
||||
'default'=>'normal', 'text'=>'Quit')
|
||||
]
|
||||
buttons.each{|b| b.pack('side'=>'left', 'expand'=>'yes', 'pady'=>5) }
|
||||
|
@ -201,10 +201,10 @@ class Xsettings
|
|||
#
|
||||
# Bell settings
|
||||
#
|
||||
bell = TkLabelframe.new(@root, 'text'=>'Bell Settings',
|
||||
bell = TkLabelframe.new(@root, 'text'=>'Bell Settings',
|
||||
'padx'=>'1.5m', 'pady'=>'1.5m')
|
||||
@w_bellvol = TkScale.new(bell, 'from'=>0, 'to'=>100, 'length'=>200,
|
||||
'tickinterval'=>20, 'orient'=>'horizontal',
|
||||
@w_bellvol = TkScale.new(bell, 'from'=>0, 'to'=>100, 'length'=>200,
|
||||
'tickinterval'=>20, 'orient'=>'horizontal',
|
||||
'label'=>"Volume (%)")
|
||||
|
||||
f = TkFrame.new(bell)
|
||||
|
@ -218,13 +218,13 @@ class Xsettings
|
|||
|
||||
#
|
||||
# Keyboard settings
|
||||
#
|
||||
#
|
||||
kbdonoff = nil
|
||||
kbdcli = nil
|
||||
kbd = TkLabelframe.new(@root, 'text'=>'Keyboard Repeat Settings',
|
||||
kbd = TkLabelframe.new(@root, 'text'=>'Keyboard Repeat Settings',
|
||||
'padx'=>'1.5m', 'pady'=>'1.5m')
|
||||
f = TkFrame.new(kbd)
|
||||
@w_kbdonoff = TkCheckButton.new(f, 'text'=>'On', 'relief'=>'flat',
|
||||
@w_kbdonoff = TkCheckButton.new(f, 'text'=>'On', 'relief'=>'flat',
|
||||
'onvalue'=>'on', 'offvalue'=>'off',
|
||||
'variable'=>@w_kbdrep ) {
|
||||
def self.set(value)
|
||||
|
@ -236,17 +236,17 @@ class Xsettings
|
|||
end
|
||||
pack('side'=>'left', 'expand'=>'yes', 'fill'=>'x', 'padx'=>[0, '1m'])
|
||||
}
|
||||
@w_kbdcli = TkScale.new(f, 'from'=>0, 'to'=>100, 'length'=>200,
|
||||
'tickinterval'=>20, 'orient'=>'horizontal',
|
||||
@w_kbdcli = TkScale.new(f, 'from'=>0, 'to'=>100, 'length'=>200,
|
||||
'tickinterval'=>20, 'orient'=>'horizontal',
|
||||
'label'=>'Click Volume (%)')
|
||||
@w_kbdcli.pack('side'=>'left', 'expand'=>'yes',
|
||||
@w_kbdcli.pack('side'=>'left', 'expand'=>'yes',
|
||||
'fill'=>'x', 'padx'=>['1m', 0])
|
||||
f.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2, 'fill'=>'x')
|
||||
|
||||
#
|
||||
# Mouse settings
|
||||
#
|
||||
mouse = TkLabelframe.new(@root, 'text'=>'Mouse Settings',
|
||||
mouse = TkLabelframe.new(@root, 'text'=>'Mouse Settings',
|
||||
'padx'=>'1.5m', 'pady'=>'1.5m')
|
||||
f = TkFrame.new(mouse)
|
||||
@w_mouseacc = LabelEntry.new(f, 'Acceleration', 5)
|
||||
|
@ -258,11 +258,11 @@ class Xsettings
|
|||
#
|
||||
# Screen Saver settings
|
||||
#
|
||||
screen = TkLabelframe.new(@root, 'text'=>'Screen-saver Settings',
|
||||
screen = TkLabelframe.new(@root, 'text'=>'Screen-saver Settings',
|
||||
'padx'=>'1.5m', 'pady'=>'1.5m')
|
||||
@w_screenblank = TkRadioButton.new(screen, 'text'=>'Blank',
|
||||
'relief'=>'flat', 'anchor'=>'w',
|
||||
'variable'=>@w_screenbla,
|
||||
@w_screenblank = TkRadioButton.new(screen, 'text'=>'Blank',
|
||||
'relief'=>'flat', 'anchor'=>'w',
|
||||
'variable'=>@w_screenbla,
|
||||
'value'=>'blank') {
|
||||
def self.set(value)
|
||||
if value == 'blank'
|
||||
|
@ -273,9 +273,9 @@ class Xsettings
|
|||
end
|
||||
}
|
||||
|
||||
@w_screenpat = TkRadioButton.new(screen, 'text'=>'Pattern',
|
||||
'relief'=>'flat', 'anchor'=>'w',
|
||||
'variable'=>@w_screenbla,
|
||||
@w_screenpat = TkRadioButton.new(screen, 'text'=>'Pattern',
|
||||
'relief'=>'flat', 'anchor'=>'w',
|
||||
'variable'=>@w_screenbla,
|
||||
'value'=>'noblank') {
|
||||
def self.set(value)
|
||||
if value != 'blank'
|
||||
|
@ -297,7 +297,7 @@ class Xsettings
|
|||
# Main window
|
||||
#
|
||||
param = {
|
||||
'side'=>'top', 'fill'=>'both', 'expand'=>'yes',
|
||||
'side'=>'top', 'fill'=>'both', 'expand'=>'yes',
|
||||
'padx'=>'1m', 'pady'=>'1m'
|
||||
}
|
||||
btn_frame.pack('side'=>'top', 'fill'=>'both')
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# rmt --
|
||||
# This script implements a simple remote-control mechanism for
|
||||
# Tk applications. It allows you to select an application and
|
||||
# then type commands to that application.
|
||||
# rmt --
|
||||
# This script implements a simple remote-control mechanism for
|
||||
# Tk applications. It allows you to select an application and
|
||||
# then type commands to that application.
|
||||
|
||||
require 'tk'
|
||||
|
||||
|
@ -17,41 +17,41 @@ class Rmt
|
|||
root = TkWinfo.toplevel(parent)
|
||||
root.minsize(1,1)
|
||||
|
||||
# The instance variable below keeps track of the remote application
|
||||
# that we're sending to. If it's an empty string then we execute
|
||||
# the commands locally.
|
||||
# The instance variable below keeps track of the remote application
|
||||
# that we're sending to. If it's an empty string then we execute
|
||||
# the commands locally.
|
||||
@app = 'local'
|
||||
@mode = 'Ruby'
|
||||
|
||||
# The instance variable below keeps track of whether we're in the
|
||||
# middle of executing a command entered via the text.
|
||||
# The instance variable below keeps track of whether we're in the
|
||||
# middle of executing a command entered via the text.
|
||||
@executing = 0
|
||||
|
||||
# The instance variable below keeps track of the last command executed,
|
||||
# so it can be re-executed in response to !! commands.
|
||||
# The instance variable below keeps track of the last command executed,
|
||||
# so it can be re-executed in response to !! commands.
|
||||
@lastCommand = ""
|
||||
|
||||
# Create menu bar. Arrange to recreate all the information in the
|
||||
# applications sub-menu whenever it is cascaded to.
|
||||
# Create menu bar. Arrange to recreate all the information in the
|
||||
# applications sub-menu whenever it is cascaded to.
|
||||
|
||||
TkFrame.new(root, 'relief'=>'raised', 'bd'=>2) {|f|
|
||||
pack('side'=>'top', 'fill'=>'x')
|
||||
TkMenubutton.new(f, 'text'=>'File', 'underline'=>0) {|mb|
|
||||
TkMenu.new(mb) {|mf|
|
||||
mb.menu(mf)
|
||||
TkMenu.new(mf) {|ma|
|
||||
TkMenu.new(mf) {|ma|
|
||||
postcommand proc{win.fillAppsMenu ma}
|
||||
mf.add('cascade', 'label'=>'Select Application',
|
||||
mf.add('cascade', 'label'=>'Select Application',
|
||||
'menu'=>ma, 'underline'=>0)
|
||||
}
|
||||
add('command', 'label'=>'Quit',
|
||||
add('command', 'label'=>'Quit',
|
||||
'command'=>proc{root.destroy}, 'underline'=>0)
|
||||
}
|
||||
pack('side'=>'left')
|
||||
}
|
||||
}
|
||||
|
||||
# Create text window and scrollbar.
|
||||
# Create text window and scrollbar.
|
||||
|
||||
@txt = TkText.new(root, 'relief'=>'sunken', 'bd'=>2, 'setgrid'=>true) {
|
||||
yscrollbar(TkScrollbar.new(root){pack('side'=>'right', 'fill'=>'y')})
|
||||
|
@ -60,9 +60,9 @@ class Rmt
|
|||
|
||||
@promptEnd = TkTextMark.new(@txt, 'insert')
|
||||
|
||||
# Create a binding to forward commands to the target application,
|
||||
# plus modify many of the built-in bindings so that only information
|
||||
# in the current command can be deleted (can still set the cursor
|
||||
# Create a binding to forward commands to the target application,
|
||||
# plus modify many of the built-in bindings so that only information
|
||||
# in the current command can be deleted (can still set the cursor
|
||||
# earlier in the text and select and insert; just can't delete).
|
||||
|
||||
@txt.bindtags([@txt, TkText, root, 'all'])
|
||||
|
@ -151,8 +151,8 @@ class Rmt
|
|||
w.see('insert')
|
||||
end
|
||||
|
||||
# The method below is used to print out a prompt at the
|
||||
# insertion point (which should be at the beginning of a line
|
||||
# The method below is used to print out a prompt at the
|
||||
# insertion point (which should be at the beginning of a line
|
||||
# right now).
|
||||
|
||||
def prompt
|
||||
|
@ -162,8 +162,8 @@ class Rmt
|
|||
@txt.tag_add('bold', "#{@promptEnd.path} linestart", @promptEnd)
|
||||
end
|
||||
|
||||
# The method below executes a command (it takes everything on the
|
||||
# current line after the prompt and either sends it to the remote
|
||||
# The method below executes a command (it takes everything on the
|
||||
# current line after the prompt and either sends it to the remote
|
||||
# application or executes it locally, depending on "app".
|
||||
|
||||
def invoke
|
||||
|
@ -200,8 +200,8 @@ class Rmt
|
|||
if complete
|
||||
@lastCommand = cmd
|
||||
begin
|
||||
# msg = Tk.appsend(@app, false,
|
||||
# 'ruby',
|
||||
# msg = Tk.appsend(@app, false,
|
||||
# 'ruby',
|
||||
# '"(' + cmd.gsub(/[][$"]/, '\\\\\&') + ').to_s"')
|
||||
msg = Tk.rb_appsend(@app, false, cmd)
|
||||
rescue
|
||||
|
@ -218,10 +218,10 @@ class Rmt
|
|||
end
|
||||
|
||||
# The following method is invoked to change the application that
|
||||
# we're talking to. It also updates the prompt for the current
|
||||
# command, unless we're in the middle of executing a command from
|
||||
# the text item (in which case a new prompt is about to be output
|
||||
# so there's no need to change the old one).
|
||||
# we're talking to. It also updates the prompt for the current
|
||||
# command, unless we're in the middle of executing a command from
|
||||
# the text item (in which case a new prompt is about to be output
|
||||
# so there's no need to change the old one).
|
||||
|
||||
def newApp(appName, mode)
|
||||
@app = appName
|
||||
|
@ -236,7 +236,7 @@ class Rmt
|
|||
end
|
||||
|
||||
# The method below will fill in the applications sub-menu with a list
|
||||
# of all the applications that currently exist.
|
||||
# of all the applications that currently exist.
|
||||
|
||||
def fillAppsMenu(menu)
|
||||
win = self
|
||||
|
@ -251,14 +251,14 @@ class Rmt
|
|||
else
|
||||
mode = 'Ruby'
|
||||
end
|
||||
menu.add('command', 'label'=>format("%s (#{mode}/Tk)", ip),
|
||||
menu.add('command', 'label'=>format("%s (#{mode}/Tk)", ip),
|
||||
'command'=>proc{win.newApp ip, mode})
|
||||
rescue
|
||||
menu.add('command', 'label'=>format("%s (unknown Tk)", ip),
|
||||
menu.add('command', 'label'=>format("%s (unknown Tk)", ip),
|
||||
'command'=>proc{win.newApp ip, mode}, 'state'=>'disabled')
|
||||
end
|
||||
}
|
||||
menu.add('command', 'label'=>format("local (Ruby/Tk)"),
|
||||
menu.add('command', 'label'=>format("local (Ruby/Tk)"),
|
||||
'command'=>proc{win.newApp 'local', 'Ruby'})
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# rolodex --
|
||||
# This script is a part of Tom LaStrange's rolodex
|
||||
#
|
||||
#
|
||||
# Copyright (C) 1998 by Takaaki Tateishi <ttate@jaist.ac.jp>
|
||||
# Time-stamp: "03/08/02 06:23:06 nagai"
|
||||
#
|
||||
|
@ -17,7 +17,7 @@ def show_help(topic,x=0,y=0)
|
|||
topic = w
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if( $helpTopics.include?(topic) )
|
||||
msg = $helpTopics[topic]
|
||||
else
|
||||
|
@ -81,7 +81,7 @@ class RolodexFrame < TkFrame
|
|||
def initialize(parent=nil,keys=nil)
|
||||
super(parent,keys)
|
||||
self["relief"] = "flat"
|
||||
|
||||
|
||||
@i = []
|
||||
@label = []
|
||||
@entry = []
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# square --
|
||||
# This script generates a demo application containing only
|
||||
# a "square" widget. It's only usable if Tk has been compiled
|
||||
# with tkSquare.c and with the -DSQUARE_DEMO compiler switch.
|
||||
# This demo arranges the following bindings for the widget:
|
||||
# This script generates a demo application containing only
|
||||
# a "square" widget. It's only usable if Tk has been compiled
|
||||
# with tkSquare.c and with the -DSQUARE_DEMO compiler switch.
|
||||
# This demo arranges the following bindings for the widget:
|
||||
#
|
||||
# Button-1 press/drag: moves square to mouse
|
||||
# "a": toggle size animation on/off
|
||||
|
@ -19,7 +19,7 @@ class TkSquare<TkWindow
|
|||
tk_call 'square', path
|
||||
rescue
|
||||
STDERR.print "\nSorry. Your Tk interpreter does not contain " +
|
||||
'a "square" demonstration widget.' +
|
||||
'a "square" demonstration widget.' +
|
||||
"\n ( See documents included the Tcl/Tk source archive. )\n\n"
|
||||
exit
|
||||
end
|
||||
|
@ -53,7 +53,7 @@ def center(x,y)
|
|||
end
|
||||
|
||||
# The procedures below provide a simple form of animation where
|
||||
# the box changes size in a pulsing pattern: larger, smaller, larger,
|
||||
# the box changes size in a pulsing pattern: larger, smaller, larger,
|
||||
# and so on.
|
||||
|
||||
$inc = 0
|
||||
|
|
|
@ -126,7 +126,7 @@ def _null_binding
|
|||
end
|
||||
private :_null_binding
|
||||
|
||||
def doUpdate
|
||||
def doUpdate
|
||||
newCmd = $command.to_s.gsub("%%","\"#{$color}\"")
|
||||
eval(newCmd, _null_binding)
|
||||
end
|
||||
|
@ -134,7 +134,7 @@ end
|
|||
|
||||
def tc_scaleChanged
|
||||
if( $updating.to_i == 1 )
|
||||
return
|
||||
return
|
||||
end
|
||||
|
||||
$master = :scale if $master == nil
|
||||
|
@ -151,7 +151,7 @@ def tc_scaleChanged
|
|||
when :cmy
|
||||
$red = (65535 - scale1.get * 65.535).to_i
|
||||
$green = (65535 - scale2.get * 65.535).to_i
|
||||
$blue = (65535 - scale3.get * 65.535).to_i
|
||||
$blue = (65535 - scale3.get * 65.535).to_i
|
||||
when :hsb
|
||||
list = hsbToRgb(scale1.get / 1000.0,
|
||||
scale2.get / 1000.0,
|
||||
|
@ -179,7 +179,7 @@ def tc_setScales
|
|||
scale1 = $root.middle.middle.scale1
|
||||
scale2 = $root.middle.middle.scale2
|
||||
scale3 = $root.middle.middle.scale3
|
||||
|
||||
|
||||
case $colorSpace.value.intern
|
||||
when :rgb
|
||||
scale1.set($red / 65.535)
|
||||
|
@ -205,7 +205,7 @@ end
|
|||
def tc_loadNamedColor(name)
|
||||
$name.value = name
|
||||
$master = :name if $master == nil
|
||||
if name[0,1] != "#"
|
||||
if name[0,1] != "#"
|
||||
list = TkWinfo.rgb($root.middle.right.swatch,name)
|
||||
$red = list[0]
|
||||
$green = list[1]
|
||||
|
@ -239,7 +239,7 @@ def tc_loadNamedColor(name)
|
|||
$green = $green << shift
|
||||
$blue = $blue << shift
|
||||
end
|
||||
|
||||
|
||||
tc_setScales
|
||||
$color = format("#%04x%04x%04x",$red,$green,$blue)
|
||||
$root.middle.right.set_color($color)
|
||||
|
@ -318,7 +318,7 @@ class TkColorMenuFrame<TkFrame
|
|||
"underline" => "0",
|
||||
"command" => proc{exit}
|
||||
}
|
||||
|
||||
|
||||
# assign File menu to File button
|
||||
menu @file_menu
|
||||
|
||||
|
@ -354,7 +354,7 @@ class TkColorBotFrame<TkFrame
|
|||
|
||||
self
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# left side frame of middle level
|
||||
|
@ -459,7 +459,7 @@ class TkColorMiddleRightFrame<TkFrame
|
|||
super(parent)
|
||||
@swatch = TkFrame.new(self, "width"=>"2c", "height"=>"5c",
|
||||
"background"=>$color)
|
||||
@value = TkLabel.new(self,
|
||||
@value = TkLabel.new(self,
|
||||
"text"=>$color,
|
||||
"width"=>"13",
|
||||
"font"=>"-Adobe-Courier-Medium-R-Normal--*-120-*-*-*-*-*-*")
|
||||
|
|
|
@ -69,7 +69,7 @@ class CountFrame < TkFrame
|
|||
def initialize(parent=nil,keys=nil)
|
||||
super(parent,keys)
|
||||
@counter = TkLabel.new(self,
|
||||
'text'=>$time,
|
||||
'text'=>$time,
|
||||
'relief'=>'raised')
|
||||
@counter.pack('fill'=>'both')
|
||||
self
|
||||
|
|
|
@ -26,15 +26,15 @@ $RubyTk_WidgetDemo = true
|
|||
# $demo_dir = File.dirname($0)
|
||||
$demo_dir = File.dirname(__FILE__)
|
||||
|
||||
# root
|
||||
# root
|
||||
$root = TkRoot.new{title "Ruby/Tk Widget Demonstration"}
|
||||
|
||||
# tk
|
||||
# tk
|
||||
$tk_version = Tk::TK_VERSION
|
||||
$tk_major_ver, $tk_minor_ver = $tk_version.split('.').map{|n| n.to_i}
|
||||
$tk_patchlevel = Tk::TK_PATCHLEVEL
|
||||
|
||||
# tcl_platform
|
||||
# tcl_platform
|
||||
$tk_platform = TkVarAccess.new('tcl_platform')
|
||||
|
||||
#
|
||||
|
@ -104,18 +104,18 @@ $image['print'] = TkPhotoImage.new(:height=>19, :format=>'GIF', :data=><<EOD)
|
|||
EOD
|
||||
end
|
||||
|
||||
#
|
||||
#
|
||||
if $tk_major_ver >= 8
|
||||
$root.add_menubar([[['File', 0],
|
||||
$root.add_menubar([[['File', 0],
|
||||
['About ... ', proc{aboutBox}, 0, '<F1>'],
|
||||
'---',
|
||||
'---',
|
||||
['Quit', proc{exit}, 0, 'Ctrl-Q']
|
||||
]])
|
||||
else
|
||||
TkMenubar.new($root,
|
||||
[[['File', 0],
|
||||
TkMenubar.new($root,
|
||||
[[['File', 0],
|
||||
['About ... ', proc{aboutBox}, 0, '<F1>'],
|
||||
'---',
|
||||
'---',
|
||||
['Quit', proc{exit}, 0, 'Ctrl-Q']
|
||||
]]).pack('side'=>'top', 'fill'=>'x')
|
||||
end
|
||||
|
@ -135,7 +135,7 @@ TkFrame.new($root){|frame|
|
|||
}.pack('side'=>'top', 'fill'=>'x')
|
||||
=end
|
||||
|
||||
#
|
||||
#
|
||||
if $tk_version =~ /^4\.[01]/
|
||||
scr = TkScrollbar.new($root, 'orient'=>'vertical')
|
||||
txt = TkText.new($root) {
|
||||
|
@ -151,7 +151,7 @@ if $tk_version =~ /^4\.[01]/
|
|||
txt.pack('expand'=>'yes', 'fill'=>'both')
|
||||
else
|
||||
textFrame = TkFrame.new($root)
|
||||
scr = TkScrollbar.new($root, 'orient'=>'vertical',
|
||||
scr = TkScrollbar.new($root, 'orient'=>'vertical',
|
||||
'highlightthickness'=>0, 'takefocus'=>1) {
|
||||
pack('in'=>textFrame, 'side'=>'right', 'fill'=>'y', 'padx'=>1)
|
||||
}
|
||||
|
@ -184,10 +184,10 @@ else
|
|||
statusfont = 'Helvetica 10'
|
||||
end
|
||||
$statusBarLabel = \
|
||||
TkLabel.new(f, 'text'=>" ", 'relief'=>'sunken', 'bd'=>1, 'anchor'=>'w',
|
||||
TkLabel.new(f, 'text'=>" ", 'relief'=>'sunken', 'bd'=>1, 'anchor'=>'w',
|
||||
'font'=>statusfont) \
|
||||
.pack('side'=>'left', 'padx'=>2, 'expand'=>'yes', 'fill'=>'both')
|
||||
TkLabel.new(f, 'width'=>8, 'relief'=>'sunken', 'bd'=>1, 'anchor'=>'w',
|
||||
TkLabel.new(f, 'width'=>8, 'relief'=>'sunken', 'bd'=>1, 'anchor'=>'w',
|
||||
'font'=>statusfont) \
|
||||
.pack('side'=>'left', 'padx'=>2)
|
||||
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>2)
|
||||
|
@ -196,7 +196,7 @@ end
|
|||
# Create a bunch of tags to use in the text widget, such as those for
|
||||
# section titles and demo descriptions. Also define the bindings for
|
||||
# tags.
|
||||
|
||||
|
||||
if $tk_version =~ /^4.*/
|
||||
tag_title = TkTextTag.new(txt, 'font'=>'-*-Helvetica-Bold-R-Normal--*-180-*-*-*-*-*-*')
|
||||
else
|
||||
|
@ -210,23 +210,23 @@ end
|
|||
tag_demospace = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c')
|
||||
|
||||
if TkWinfo.depth($root) == 1
|
||||
tag_demo = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
|
||||
tag_demo = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
|
||||
'underline'=>1)
|
||||
$tag_visited = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
|
||||
$tag_visited = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
|
||||
'underline'=>1)
|
||||
tag_hot = TkTextTag.new(txt, 'background'=>'black', 'foreground'=>'white')
|
||||
else
|
||||
tag_demo = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
|
||||
tag_demo = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
|
||||
'foreground'=>'blue', 'underline'=>1)
|
||||
$tag_visited = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
|
||||
$tag_visited = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
|
||||
'foreground'=>'#303080', 'underline'=>1)
|
||||
# tag_hot = TkTextTag.new(txt, 'relief'=>'raised', 'borderwidth'=>1,
|
||||
# tag_hot = TkTextTag.new(txt, 'relief'=>'raised', 'borderwidth'=>1,
|
||||
# 'background'=>'SeaGreen3')
|
||||
tag_hot = TkTextTag.new(txt, 'borderwidth'=>1, 'foreground'=>'red')
|
||||
end
|
||||
|
||||
#tag_demo.bind('Button-1', proc{invoke txt, txt.index('current')})
|
||||
tag_demo.bind('ButtonRelease-1',
|
||||
tag_demo.bind('ButtonRelease-1',
|
||||
proc{|x,y|invoke txt, txt.index("@#{x},#{y}")}, '%x %y')
|
||||
|
||||
lastLine = TkVariable.new("")
|
||||
|
@ -237,7 +237,7 @@ tag_demo.bind('Enter', proc{|x,y|
|
|||
showStatus txt, txt.index("@#{x},#{y}")
|
||||
},
|
||||
'%x %y')
|
||||
tag_demo.bind('Leave',
|
||||
tag_demo.bind('Leave',
|
||||
proc{
|
||||
tag_hot.remove('1.0','end')
|
||||
txt.configure('cursor','xterm')
|
||||
|
@ -248,10 +248,10 @@ tag_demo.bind('Motion', proc{|x, y|
|
|||
if newLine.value != lastLine.value
|
||||
tag_hot.remove('1.0','end')
|
||||
lastLine.value = newLine.value
|
||||
if ( txt.tag_names("@#{x},#{y}").find{|t|
|
||||
if ( txt.tag_names("@#{x},#{y}").find{|t|
|
||||
t.kind_of?(String) && t =~ /^demo-/
|
||||
} )
|
||||
tag_hot.add(lastLine.value,
|
||||
tag_hot.add(lastLine.value,
|
||||
"#{lastLine.value} lineend -1 chars")
|
||||
end
|
||||
end
|
||||
|
@ -273,7 +273,7 @@ demonstration. If you wish, you can edit the code and click the \
|
|||
with the modified code. \
|
||||
Don't worry about breaking the source code. \
|
||||
Your modifications are not reflected on the original file. \
|
||||
Please try many kind of changes.
|
||||
Please try many kind of changes.
|
||||
|
||||
Some demo scripts require the recent version of Tk library \
|
||||
(e.g. Tk8.4 or later) \
|
||||
|
@ -353,8 +353,8 @@ txt.insert('end', "1. Without scrollbars.\n", tag_demo, "demo-entry1")
|
|||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "2. With scrollbars.\n", tag_demo, "demo-entry2")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end',
|
||||
"3. Validated entries and password fields. (if supported)\n",
|
||||
txt.insert('end',
|
||||
"3. Validated entries and password fields. (if supported)\n",
|
||||
tag_demo, "demo-entry3")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "4. Spin-boxes. (if supported)\n", tag_demo, "demo-spin")
|
||||
|
@ -499,7 +499,7 @@ $showVarsWin = {}
|
|||
def showVars1(parent, *args)
|
||||
if $showVarsWin[parent.path]
|
||||
begin
|
||||
$showVarsWin[parent.path].destroy
|
||||
$showVarsWin[parent.path].destroy
|
||||
rescue
|
||||
end
|
||||
end
|
||||
|
@ -539,7 +539,7 @@ end
|
|||
def showVars2(parent, *args)
|
||||
if $showVarsWin[parent.path]
|
||||
begin
|
||||
$showVarsWin[parent.path].destroy
|
||||
$showVarsWin[parent.path].destroy
|
||||
rescue
|
||||
end
|
||||
end
|
||||
|
@ -548,11 +548,11 @@ def showVars2(parent, *args)
|
|||
|
||||
base = TkFrame.new(top).pack(:fill=>:both, :expand=>true)
|
||||
|
||||
TkLabelFrame.new(base, :text=>"Variable values:",
|
||||
TkLabelFrame.new(base, :text=>"Variable values:",
|
||||
:font=>{:family=>'Helvetica', :size=>14}){|f|
|
||||
args.each{|vnam,vbody|
|
||||
TkGrid(TkLabel.new(f, :text=>"#{vnam}: ", :anchor=>'w'),
|
||||
TkLabel.new(f, :textvariable=>vbody, :anchor=>'w'),
|
||||
TkGrid(TkLabel.new(f, :text=>"#{vnam}: ", :anchor=>'w'),
|
||||
TkLabel.new(f, :textvariable=>vbody, :anchor=>'w'),
|
||||
:padx=>2, :pady=>2, :sticky=>'w')
|
||||
}
|
||||
|
||||
|
@ -560,7 +560,7 @@ def showVars2(parent, *args)
|
|||
f.grid_columnconfig(1, :weight=>1)
|
||||
f.grid_rowconfig(100, :weight=>1)
|
||||
}
|
||||
TkButton.new(base, :text=>"OK", :width=>8, :default=>:active,
|
||||
TkButton.new(base, :text=>"OK", :width=>8, :default=>:active,
|
||||
:command=>proc{top.destroy}){|b|
|
||||
top.bind('Return', proc{b.invoke})
|
||||
top.bind('Escape', proc{b.invoke})
|
||||
|
@ -610,9 +610,9 @@ class Object
|
|||
|
||||
def method_missing(id, *args)
|
||||
begin
|
||||
has_top = (top = Thread.current[:TOPLEVEL]) &&
|
||||
top.respond_to?(:pseudo_toplevel_evaluable?) &&
|
||||
top.pseudo_toplevel_evaluable? &&
|
||||
has_top = (top = Thread.current[:TOPLEVEL]) &&
|
||||
top.respond_to?(:pseudo_toplevel_evaluable?) &&
|
||||
top.pseudo_toplevel_evaluable? &&
|
||||
top.respond_to?(id)
|
||||
rescue Exception => e
|
||||
has_top = false
|
||||
|
@ -738,7 +738,7 @@ def showStatus (txt, index)
|
|||
newcursor = 'xterm'
|
||||
else
|
||||
demoname = tag[5..-1]
|
||||
$statusBarLabel.configure('text',
|
||||
$statusBarLabel.configure('text',
|
||||
"Run the \"#{demoname}\" sample program")
|
||||
newcursor = 'hand2'
|
||||
end
|
||||
|
@ -800,9 +800,9 @@ def showCode1(demo)
|
|||
TkFrame.new($code_window) {|f|
|
||||
pack('expand'=>'yes', 'fill'=>'both', 'padx'=>1, 'pady'=>1)
|
||||
|
||||
hs = TkScrollbar.new($code_window, 'highlightthickness'=>0,
|
||||
hs = TkScrollbar.new($code_window, 'highlightthickness'=>0,
|
||||
'orient'=>'horizontal')
|
||||
vs = TkScrollbar.new($code_window, 'highlightthickness'=>0,
|
||||
vs = TkScrollbar.new($code_window, 'highlightthickness'=>0,
|
||||
'orient'=>'vertical')
|
||||
$code_text = TkText.new($code_window) {|t|
|
||||
height 40
|
||||
|
@ -817,11 +817,11 @@ def showCode1(demo)
|
|||
vs.command(proc{|*args| $code_text.yview(*args)})
|
||||
}
|
||||
|
||||
$code_text.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>0,
|
||||
$code_text.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>0,
|
||||
'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
|
||||
vs.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>1,
|
||||
vs.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>1,
|
||||
'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
|
||||
# xs.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>1, 'column'=>0,
|
||||
# xs.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>1, 'column'=>0,
|
||||
# 'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
|
||||
|
||||
# JKC 2001-07-26: segfaults under 1.7.1 (2001-06-19) [i686-linux]
|
||||
|
@ -866,8 +866,8 @@ def showCode2(demo)
|
|||
if $code_window == nil || TkWinfo.exist?($code_window) == false
|
||||
$code_window = TkToplevel.new(nil)
|
||||
tf = TkFrame.new($code_window)
|
||||
$code_text = TkText.new(tf, :font=>'Courier 10', :height=>30,
|
||||
:wrap=>'word', :bd=>1, :setgrid=>true,
|
||||
$code_text = TkText.new(tf, :font=>'Courier 10', :height=>30,
|
||||
:wrap=>'word', :bd=>1, :setgrid=>true,
|
||||
:highlightthickness=>0, :pady=>2, :padx=>3)
|
||||
xscr = TkScrollbar.new(tf, :bd=>1){assign($code_text)}
|
||||
yscr = TkScrollbar.new(tf, :bd=>1){assign($code_text)}
|
||||
|
@ -890,20 +890,20 @@ def showCode2(demo)
|
|||
posnum.text = pos
|
||||
}
|
||||
|
||||
b_dis = TkButton.new(bf, :text=>'Dismiss', :default=>:active,
|
||||
b_dis = TkButton.new(bf, :text=>'Dismiss', :default=>:active,
|
||||
:command=>proc{
|
||||
$code_window.destroy
|
||||
$code_window = nil
|
||||
},
|
||||
},
|
||||
:image=>$image['delete'], :compound=>:left)
|
||||
b_prn = TkButton.new(bf, :text=>'Print Code',
|
||||
:command=>proc{printCode($code_text, file)},
|
||||
b_prn = TkButton.new(bf, :text=>'Print Code',
|
||||
:command=>proc{printCode($code_text, file)},
|
||||
:image=>$image['print'], :compound=>:left)
|
||||
b_run = TkButton.new(bf, :text=>'Rerun Demo',
|
||||
b_run = TkButton.new(bf, :text=>'Rerun Demo',
|
||||
:command=>proc{
|
||||
# eval($code_text.get('1.0','end'), _null_binding)
|
||||
eval_samplecode($code_text.get('1.0','end'), '<viewer>')
|
||||
},
|
||||
},
|
||||
:image=>$image['refresh'], :compound=>:left)
|
||||
|
||||
TkGrid(lf, 'x', b_run, b_prn, b_dis, :padx=>4, :pady=>[6,4])
|
||||
|
@ -979,23 +979,23 @@ def printCode(txt, file)
|
|||
when 'unix'
|
||||
msg = `lp -c #{fname}`
|
||||
unless $?.exitstatus == 0
|
||||
Tk.messageBox(:title=>'Print spooling failure',
|
||||
Tk.messageBox(:title=>'Print spooling failure',
|
||||
:message=>'Print spooling probably failed: ' + msg)
|
||||
end
|
||||
when 'windows'
|
||||
begin
|
||||
printTextWin32(fname)
|
||||
rescue => e
|
||||
Tk.messageBox(:title=>'Print spooling failure',
|
||||
:message=>'Print spooling probably failed: ' +
|
||||
Tk.messageBox(:title=>'Print spooling failure',
|
||||
:message=>'Print spooling probably failed: ' +
|
||||
e.message)
|
||||
end
|
||||
end
|
||||
when 'macintosh'
|
||||
Tk.messageBox(:title=>'Operation not Implemented',
|
||||
Tk.messageBox(:title=>'Operation not Implemented',
|
||||
:message=>'Oops, sorry: not implemented yet!')
|
||||
else
|
||||
Tk.messageBox(:title=>'Operation not Implemented',
|
||||
:message=>'Wow! Unknown platform: ' +
|
||||
Tk.messageBox(:title=>'Operation not Implemented',
|
||||
:message=>'Wow! Unknown platform: ' +
|
||||
Tk::TCL_PLATFORM('platform'))
|
||||
end
|
||||
ensure
|
||||
|
@ -1025,7 +1025,7 @@ def printTextWin32(fname)
|
|||
pcmd.gsub!('%1', fname)
|
||||
puts pcmd
|
||||
cmd = Tk.tk_call('auto_execok', 'start') + ' /min ' + pcmd
|
||||
|
||||
|
||||
msg = `#{cmd}`
|
||||
unless $?.exitstatus == 0
|
||||
fail RuntimeError, msg
|
||||
|
@ -1037,16 +1037,16 @@ end
|
|||
# Pops up a message box with an "about" message
|
||||
#
|
||||
def aboutBox
|
||||
Tk.messageBox('icon'=>'info', 'type'=>'ok', 'title'=>'About Widget Demo',
|
||||
'message'=>"Ruby/Tk widget demonstration Ver.1.7.1-en\n\n" +
|
||||
"based on demos of Tk8.1 -- 8.5 " +
|
||||
"( Copyright of Tcl/Tk demos:: " +
|
||||
"(c) 1996-1997 Sun Microsystems, Inc. / " +
|
||||
"(c) 1997-2000 Ajuba Solutions, Inc. / " +
|
||||
"(c) 2001-2007 Donal K. Fellows / " +
|
||||
Tk.messageBox('icon'=>'info', 'type'=>'ok', 'title'=>'About Widget Demo',
|
||||
'message'=>"Ruby/Tk widget demonstration Ver.1.7.1-en\n\n" +
|
||||
"based on demos of Tk8.1 -- 8.5 " +
|
||||
"( Copyright of Tcl/Tk demos:: " +
|
||||
"(c) 1996-1997 Sun Microsystems, Inc. / " +
|
||||
"(c) 1997-2000 Ajuba Solutions, Inc. / " +
|
||||
"(c) 2001-2007 Donal K. Fellows / " +
|
||||
"(c) 2002-2007 Daniel A. Steffen )\n\n" +
|
||||
"Your Ruby & Tk Version ::\n" +
|
||||
"Ruby#{RUBY_VERSION}(#{RUBY_RELEASE_DATE})[#{RUBY_PLATFORM}] / Tk#{$tk_patchlevel}#{(Tk::JAPANIZED_TK)? '-jp': ''}\n\n" +
|
||||
"Your Ruby & Tk Version ::\n" +
|
||||
"Ruby#{RUBY_VERSION}(#{RUBY_RELEASE_DATE})[#{RUBY_PLATFORM}] / Tk#{$tk_patchlevel}#{(Tk::JAPANIZED_TK)? '-jp': ''}\n\n" +
|
||||
"Ruby/Tk release date :: tcltklib #{TclTkLib::RELEASE_DATE}; tk #{Tk::RELEASE_DATE}")
|
||||
end
|
||||
|
||||
|
@ -1060,11 +1060,11 @@ else
|
|||
# show the root widget to make it lower then demo windows
|
||||
Tk.update
|
||||
end
|
||||
ARGV.each{|cmd|
|
||||
ARGV.each{|cmd|
|
||||
if cmd =~ /(.*).rb/
|
||||
cmd = $1
|
||||
end
|
||||
#eval(IO.readlines("#{[$demo_dir, cmd].join(File::Separator)}.rb").join,
|
||||
#eval(IO.readlines("#{[$demo_dir, cmd].join(File::Separator)}.rb").join,
|
||||
# _null_binding)
|
||||
eval_samplecode(IO.readlines("#{[$demo_dir, cmd].join(File::Separator)}.rb").join, cmd + '.rb')
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
|
||||
Ruby/Tk widget-demo
|
||||
Ruby/Tk widget-demo
|
||||
version 1.2 ( 2000/04/08 )
|
||||
永井@知能.九工大 (nagai@ai.kyutech.ac.jp)
|
||||
|
||||
標準配布の Tcl/Tk 拡張パッケージを取り込んだ Ruby (以下 Ruby/Tk と呼びます)
|
||||
標準配布の Tcl/Tk 拡張パッケージを取り込んだ Ruby (以下 Ruby/Tk と呼びます)
|
||||
では,Tk widget を用いた GUI の作成を行うことができます.実際に GUI を作成
|
||||
していく場合には様々な実例がサンプルとして存在すると便利なのですが,Ruby/Tk
|
||||
していく場合には様々な実例がサンプルとして存在すると便利なのですが,Ruby/Tk
|
||||
にはそのような適当なサンプルスクリプト集合は存在しませんでした.それに対し,
|
||||
拡張パッケージの元である Tcl/Tk には,Tk widget を用いてどのようなことがで
|
||||
きるかを示すものとして widget-demo が存在しおり,Tcl/Tk を用いた GUI の作成
|
||||
|
@ -34,21 +34,21 @@ Tcl/Tk
|
|||
でしょう.Ruby/Tk 版の記述を widget-demo を Tcl/Tk 版の記述に近いものにして
|
||||
おけば,その対比によって,Ruby/Tk の理解を早めることができると考えられます.
|
||||
一旦 Ruby/Tk での 各 widget の使用方法を習得してしまえば,Ruby らしいスクリ
|
||||
プトを作成することは難しくないでしょう.本アーカイブのスクリプトは,Ruby/Tk
|
||||
プトを作成することは難しくないでしょう.本アーカイブのスクリプトは,Ruby/Tk
|
||||
を最初に習得するまでの踏台として利用していただければ幸いです.
|
||||
|
||||
widget-demo の移植にあたっては,次の方にも移植したスクリプトを提供していただ
|
||||
きました.ここに感謝の意を表します.
|
||||
|
||||
立石@JAIST (ttate@jaist.ac.jp) さん
|
||||
立石@JAIST (ttate@jaist.ac.jp) さん
|
||||
平松祥史 (hiramatu@cdrom.co.jp) さん
|
||||
|
||||
平松さんによる Ruby/Tk 入門の Web page (http://www.cdrom.co.jp/~hiramatu/)
|
||||
平松さんによる Ruby/Tk 入門の Web page (http://www.cdrom.co.jp/~hiramatu/)
|
||||
も Ruby/Tk の習得に有用と思えますので,ぜひご参照ください.
|
||||
|
||||
また,前橋 (maebashi@iij.ad.jp) さんをはじめとして,widget-demo の移植に際し
|
||||
て必要となった Ruby の Tk 関連ライブラリ修正について,問題点,バグの指摘をし
|
||||
ていただいた方々にも感謝致します.
|
||||
|
||||
そして最後に最大の感謝を Ruby 設計者の まつもと ゆきひろ (matz@netlab.co.jp)
|
||||
そして最後に最大の感謝を Ruby 設計者の まつもと ゆきひろ (matz@netlab.co.jp)
|
||||
さんに捧げたいと思います.
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# browse --
|
||||
# This script generates a directory browser, which lists the working
|
||||
# directory and allow you to open files or subdirectories by
|
||||
# double-clicking.
|
||||
# This script generates a directory browser, which lists the working
|
||||
# directory and allow you to open files or subdirectories by
|
||||
# double-clicking.
|
||||
|
||||
require 'tk'
|
||||
|
||||
# Create a scrollbar on the right side of the main window and a listbox
|
||||
# Create a scrollbar on the right side of the main window and a listbox
|
||||
# on the left side.
|
||||
|
||||
listbox = TkListbox.new(nil, 'relief'=>'sunken',
|
||||
listbox = TkListbox.new(nil, 'relief'=>'sunken',
|
||||
'width'=>20, 'height'=>20, 'setgrid'=>'yes') {|l|
|
||||
TkScrollbar.new(nil, 'command'=>proc{|*args| l.yview *args}) {|s|
|
||||
pack('side'=>'right', 'fill'=>'y')
|
||||
|
@ -23,10 +23,10 @@ listbox = TkListbox.new(nil, 'relief'=>'sunken',
|
|||
root = TkRoot.new
|
||||
root.minsize(1,1)
|
||||
|
||||
# The procedure below is invoked to open a browser on a given file; if the
|
||||
# file is a directory then another instance of this program is invoked; if
|
||||
# the file is a regular file then the Mx editor is invoked to display
|
||||
# the file.
|
||||
# The procedure below is invoked to open a browser on a given file; if the
|
||||
# file is a directory then another instance of this program is invoked; if
|
||||
# the file is a regular file then the Mx editor is invoked to display
|
||||
# the file.
|
||||
|
||||
def browse (dir, file)
|
||||
file = dir + File::Separator + file if dir != '.'
|
||||
|
@ -46,7 +46,7 @@ def browse (dir, file)
|
|||
end
|
||||
end
|
||||
|
||||
# Fill the listbox with a list of all the files in the directory (run
|
||||
# Fill the listbox with a list of all the files in the directory (run
|
||||
# the "ls" command to get that information).
|
||||
|
||||
dir = ARGV[0] ? ARGV[0] : '.'
|
||||
|
@ -57,7 +57,7 @@ open("|ls -a #{dir}", 'r'){|fid| fid.readlines}.each{|fname|
|
|||
# Set up bindings for the browser.
|
||||
|
||||
Tk.bind_all('Control-c', proc{root.destroy})
|
||||
listbox.bind('Double-Button-1',
|
||||
listbox.bind('Double-Button-1',
|
||||
proc{TkSelection.get.each{|f| browse dir, f}})
|
||||
|
||||
Tk.mainloop
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# browse --
|
||||
# This script generates a directory browser, which lists the working
|
||||
# directory and allow you to open files or subdirectories by
|
||||
# double-clicking.
|
||||
# This script generates a directory browser, which lists the working
|
||||
# directory and allow you to open files or subdirectories by
|
||||
# double-clicking.
|
||||
|
||||
require 'tk'
|
||||
|
||||
|
@ -19,9 +19,9 @@ class Browse
|
|||
title('Browse : ' + dir)
|
||||
}
|
||||
|
||||
# Create a scrollbar on the right side of the main window and a listbox
|
||||
# Create a scrollbar on the right side of the main window and a listbox
|
||||
# on the left side.
|
||||
list = TkListbox.new(base, 'relief'=>'sunken',
|
||||
list = TkListbox.new(base, 'relief'=>'sunken',
|
||||
'width'=>20, 'height'=>20, 'setgrid'=>'yes') {|l|
|
||||
TkScrollbar.new(base, 'command'=>proc{|*args| l.yview *args}) {|s|
|
||||
pack('side'=>'right', 'fill'=>'y')
|
||||
|
@ -30,7 +30,7 @@ class Browse
|
|||
|
||||
pack('side'=>'left', 'fill'=>'both', 'expand'=>'yes')
|
||||
|
||||
# Fill the listbox with a list of all the files in the directory (run
|
||||
# Fill the listbox with a list of all the files in the directory (run
|
||||
# the "ls" command to get that information).
|
||||
open("|ls -a #{dir}", 'r'){|fid| fid.readlines}.each{|fname|
|
||||
l.insert('end', fname.chomp)
|
||||
|
@ -44,14 +44,14 @@ class Browse
|
|||
Browse::BROWSE_WIN_COUNTER.to_i - 1
|
||||
})
|
||||
base.bind('Control-c', proc{base.destroy})
|
||||
list.bind('Double-Button-1',
|
||||
list.bind('Double-Button-1',
|
||||
proc{TkSelection.get.each{|f| self.browse dir, f}})
|
||||
end
|
||||
|
||||
# The method below is invoked to open a browser on a given file; if the
|
||||
# file is a directory then another instance of this program is invoked; if
|
||||
# the file is a regular file then the Mx editor is invoked to display
|
||||
# the file.
|
||||
# The method below is invoked to open a browser on a given file; if the
|
||||
# file is a directory then another instance of this program is invoked; if
|
||||
# the file is a regular file then the Mx editor is invoked to display
|
||||
# the file.
|
||||
def browse (dir, file)
|
||||
file = dir + File::Separator + file if dir != '.'
|
||||
type = File.ftype(file)
|
||||
|
|
|
@ -28,7 +28,7 @@ MODIFICATIONS.
|
|||
|
||||
GOVERNMENT USE: If you are acquiring this software on behalf of the
|
||||
U.S. government, the Government shall have only "Restricted Rights"
|
||||
in the software and related documentation as defined in the Federal
|
||||
in the software and related documentation as defined in the Federal
|
||||
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
|
||||
are acquiring the software on behalf of the Department of Defense, the
|
||||
software shall be classified as "Commercial Computer Software" and the
|
||||
|
|
|
@ -28,7 +28,7 @@ MODIFICATIONS.
|
|||
|
||||
GOVERNMENT USE: If you are acquiring this software on behalf of the
|
||||
U.S. government, the Government shall have only "Restricted Rights"
|
||||
in the software and related documentation as defined in the Federal
|
||||
in the software and related documentation as defined in the Federal
|
||||
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
|
||||
are acquiring the software on behalf of the Department of Defense, the
|
||||
software shall be classified as "Commercial Computer Software" and the
|
||||
|
|
|
@ -164,9 +164,9 @@ class Xsettings
|
|||
#
|
||||
bell = TkFrame.new(@root, 'relief'=>'raised', 'borderwidth'=>2)
|
||||
l = TkLabel.new(bell, 'text'=>'Bell Settings')
|
||||
@w_bellvol = TkScale.new(bell, 'from'=>0, 'to'=>100, 'length'=>200,
|
||||
'tickinterval'=>20, 'orient'=>'horizontal',
|
||||
'label'=>"Volume (%)")
|
||||
@w_bellvol = TkScale.new(bell, 'from'=>0, 'to'=>100, 'length'=>200,
|
||||
'tickinterval'=>20, 'orient'=>'horizontal',
|
||||
'label'=>"Volume (%)")
|
||||
|
||||
f = TkFrame.new(bell)
|
||||
@w_bellpit = LabelEntry.new(f, "Pitch (Hz)", 6)
|
||||
|
@ -180,13 +180,13 @@ class Xsettings
|
|||
|
||||
#
|
||||
# Keyboard settings
|
||||
#
|
||||
#
|
||||
kbdonoff = nil
|
||||
kbdcli = nil
|
||||
kbd = TkFrame.new(@root, 'relief'=>'raised', 'borderwidth'=>2)
|
||||
l = TkLabel.new(kbd, 'text'=>'Keyboard Repeat Settings')
|
||||
f = TkFrame.new(kbd)
|
||||
@w_kbdonoff = TkCheckButton.new(f, 'text'=>'On', 'relief'=>'flat',
|
||||
@w_kbdonoff = TkCheckButton.new(f, 'text'=>'On', 'relief'=>'flat',
|
||||
'onvalue'=>'on', 'offvalue'=>'off',
|
||||
'variable'=>@w_kbdrep ) {
|
||||
def self.set(value)
|
||||
|
@ -198,8 +198,8 @@ class Xsettings
|
|||
end
|
||||
pack('side'=>'left', 'expand'=>'yes', 'fill'=>'both')
|
||||
}
|
||||
@w_kbdcli = TkScale.new(f, 'from'=>0, 'to'=>100, 'length'=>200,
|
||||
'tickinterval'=>20, 'orient'=>'horizontal',
|
||||
@w_kbdcli = TkScale.new(f, 'from'=>0, 'to'=>100, 'length'=>200,
|
||||
'tickinterval'=>20, 'orient'=>'horizontal',
|
||||
'label'=>'Click Volume (%)')
|
||||
@w_kbdcli.pack('side'=>'left', 'expand'=>'yes')
|
||||
l.pack('side'=>'top', 'expand'=>'yes')
|
||||
|
@ -225,9 +225,9 @@ class Xsettings
|
|||
l = TkLabel.new(screen, 'text'=>'Screen-saver Settings')
|
||||
f = TkFrame.new(screen)
|
||||
ff1 = TkFrame.new(f)
|
||||
[ @w_screenblank = TkRadioButton.new(ff1, 'text'=>'Blank',
|
||||
'relief'=>'flat',
|
||||
'variable'=>@w_screenbla,
|
||||
[ @w_screenblank = TkRadioButton.new(ff1, 'text'=>'Blank',
|
||||
'relief'=>'flat',
|
||||
'variable'=>@w_screenbla,
|
||||
'value'=>'blank') {
|
||||
def self.set(value)
|
||||
if value == 'blank'
|
||||
|
@ -236,10 +236,10 @@ class Xsettings
|
|||
self.deselect
|
||||
end
|
||||
end
|
||||
},
|
||||
@w_screenpat = TkRadioButton.new(ff1, 'text'=>'Pattern',
|
||||
'relief'=>'flat',
|
||||
'variable'=>@w_screenbla,
|
||||
},
|
||||
@w_screenpat = TkRadioButton.new(ff1, 'text'=>'Pattern',
|
||||
'relief'=>'flat',
|
||||
'variable'=>@w_screenbla,
|
||||
'value'=>'noblank') {
|
||||
def self.set(value)
|
||||
if value != 'blank'
|
||||
|
@ -252,7 +252,7 @@ class Xsettings
|
|||
].each {|w| w.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w') }
|
||||
|
||||
ff2 = TkFrame.new(f)
|
||||
[ @w_screentim = LabelEntry.new(ff2, 'Timeout (s)', 5),
|
||||
[ @w_screentim = LabelEntry.new(ff2, 'Timeout (s)', 5),
|
||||
@w_screencyc = LabelEntry.new(ff2, 'Cycle (s)', 5) ].each{|w|
|
||||
w.pack('side'=>'top', 'pady'=>2, 'anchor'=>'e')
|
||||
}
|
||||
|
|
|
@ -135,8 +135,8 @@ class Xsettings
|
|||
def initialize(parent, text, length, range=[])
|
||||
@frame = TkFrame.new(parent)
|
||||
TkLabel.new(@frame, 'text'=>text).pack('side'=>'left')
|
||||
if range.size > 0
|
||||
@entry = TkSpinbox.new(@frame, 'width'=>length, 'relief'=>'sunken',
|
||||
if range.size > 0
|
||||
@entry = TkSpinbox.new(@frame, 'width'=>length, 'relief'=>'sunken',
|
||||
'from'=>range[0], 'to'=>range[1])
|
||||
else
|
||||
@entry = TkEntry.new(@frame, 'width'=>length, 'relief'=>'sunken')
|
||||
|
@ -165,16 +165,16 @@ class Xsettings
|
|||
# Buttons
|
||||
#
|
||||
btn_frame = TkFrame.new(@root)
|
||||
buttons = [
|
||||
@btn_OK = TkButton.new(btn_frame, 'command'=>proc{win.ok},
|
||||
buttons = [
|
||||
@btn_OK = TkButton.new(btn_frame, 'command'=>proc{win.ok},
|
||||
'default'=>'active', 'text'=>'了解'),
|
||||
@btn_APPLY = TkButton.new(btn_frame, 'command'=>proc{win.writesettings},
|
||||
'default'=>'normal', 'text'=>'適用',
|
||||
@btn_APPLY = TkButton.new(btn_frame, 'command'=>proc{win.writesettings},
|
||||
'default'=>'normal', 'text'=>'適用',
|
||||
'state'=>'disabled'),
|
||||
@btn_CANCEL = TkButton.new(btn_frame, 'command'=>proc{win.cancel},
|
||||
'default'=>'normal', 'text'=>'取消',
|
||||
@btn_CANCEL = TkButton.new(btn_frame, 'command'=>proc{win.cancel},
|
||||
'default'=>'normal', 'text'=>'取消',
|
||||
'state'=>'disabled'),
|
||||
@btn_QUIT = TkButton.new(btn_frame, 'command'=>proc{win.quit},
|
||||
@btn_QUIT = TkButton.new(btn_frame, 'command'=>proc{win.quit},
|
||||
'default'=>'normal', 'text'=>'中止')
|
||||
]
|
||||
buttons.each{|b| b.pack('side'=>'left', 'expand'=>'yes', 'pady'=>5) }
|
||||
|
@ -202,10 +202,10 @@ class Xsettings
|
|||
#
|
||||
# Bell settings
|
||||
#
|
||||
bell = TkLabelframe.new(@root, 'text'=>'ベル設定',
|
||||
bell = TkLabelframe.new(@root, 'text'=>'ベル設定',
|
||||
'padx'=>'1.5m', 'pady'=>'1.5m')
|
||||
@w_bellvol = TkScale.new(bell, 'from'=>0, 'to'=>100, 'length'=>200,
|
||||
'tickinterval'=>20, 'orient'=>'horizontal',
|
||||
@w_bellvol = TkScale.new(bell, 'from'=>0, 'to'=>100, 'length'=>200,
|
||||
'tickinterval'=>20, 'orient'=>'horizontal',
|
||||
'label'=>"音量 (%)")
|
||||
|
||||
f = TkFrame.new(bell)
|
||||
|
@ -219,14 +219,14 @@ class Xsettings
|
|||
|
||||
#
|
||||
# Keyboard settings
|
||||
#
|
||||
#
|
||||
kbdonoff = nil
|
||||
kbdcli = nil
|
||||
kbd = TkLabelframe.new(@root, 'text'=>'キーボードリピート設定',
|
||||
kbd = TkLabelframe.new(@root, 'text'=>'キーボードリピート設定',
|
||||
'padx'=>'1.5m', 'pady'=>'1.5m')
|
||||
f = TkFrame.new(kbd)
|
||||
@w_kbdonoff = TkCheckButton.new(f, 'text'=>'クリック音あり',
|
||||
'relief'=>'flat',
|
||||
@w_kbdonoff = TkCheckButton.new(f, 'text'=>'クリック音あり',
|
||||
'relief'=>'flat',
|
||||
'onvalue'=>'on', 'offvalue'=>'off',
|
||||
'variable'=>@w_kbdrep ) {
|
||||
def self.set(value)
|
||||
|
@ -238,17 +238,17 @@ class Xsettings
|
|||
end
|
||||
pack('side'=>'left', 'expand'=>'yes', 'fill'=>'x', 'padx'=>[0, '1m'])
|
||||
}
|
||||
@w_kbdcli = TkScale.new(f, 'from'=>0, 'to'=>100, 'length'=>200,
|
||||
'tickinterval'=>20, 'orient'=>'horizontal',
|
||||
@w_kbdcli = TkScale.new(f, 'from'=>0, 'to'=>100, 'length'=>200,
|
||||
'tickinterval'=>20, 'orient'=>'horizontal',
|
||||
'label'=>'クリック音量 (%)')
|
||||
@w_kbdcli.pack('side'=>'left', 'expand'=>'yes',
|
||||
@w_kbdcli.pack('side'=>'left', 'expand'=>'yes',
|
||||
'fill'=>'x', 'padx'=>['1m', 0])
|
||||
f.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2, 'fill'=>'x')
|
||||
|
||||
#
|
||||
# Mouse settings
|
||||
#
|
||||
mouse = TkLabelframe.new(@root, 'text'=>'マウス設定',
|
||||
mouse = TkLabelframe.new(@root, 'text'=>'マウス設定',
|
||||
'padx'=>'1.5m', 'pady'=>'1.5m')
|
||||
f = TkFrame.new(mouse)
|
||||
@w_mouseacc = LabelEntry.new(f, '加速量', 5)
|
||||
|
@ -260,11 +260,11 @@ class Xsettings
|
|||
#
|
||||
# Screen Saver settings
|
||||
#
|
||||
screen = TkLabelframe.new(@root, 'text'=>'スクリーンセーバ設定',
|
||||
screen = TkLabelframe.new(@root, 'text'=>'スクリーンセーバ設定',
|
||||
'padx'=>'1.5m', 'pady'=>'1.5m')
|
||||
@w_screenblank = TkRadioButton.new(screen, 'text'=>'ブランク表示',
|
||||
'relief'=>'flat', 'anchor'=>'w',
|
||||
'variable'=>@w_screenbla,
|
||||
@w_screenblank = TkRadioButton.new(screen, 'text'=>'ブランク表示',
|
||||
'relief'=>'flat', 'anchor'=>'w',
|
||||
'variable'=>@w_screenbla,
|
||||
'value'=>'blank') {
|
||||
def self.set(value)
|
||||
if value == 'blank'
|
||||
|
@ -275,9 +275,9 @@ class Xsettings
|
|||
end
|
||||
}
|
||||
|
||||
@w_screenpat = TkRadioButton.new(screen, 'text'=>'パターン表示',
|
||||
'relief'=>'flat', 'anchor'=>'w',
|
||||
'variable'=>@w_screenbla,
|
||||
@w_screenpat = TkRadioButton.new(screen, 'text'=>'パターン表示',
|
||||
'relief'=>'flat', 'anchor'=>'w',
|
||||
'variable'=>@w_screenbla,
|
||||
'value'=>'noblank') {
|
||||
def self.set(value)
|
||||
if value != 'blank'
|
||||
|
@ -299,7 +299,7 @@ class Xsettings
|
|||
# Main window
|
||||
#
|
||||
param = {
|
||||
'side'=>'top', 'fill'=>'both', 'expand'=>'yes',
|
||||
'side'=>'top', 'fill'=>'both', 'expand'=>'yes',
|
||||
'padx'=>'1m', 'pady'=>'1m'
|
||||
}
|
||||
btn_frame.pack('side'=>'top', 'fill'=>'both')
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# rmt --
|
||||
# This script implements a simple remote-control mechanism for
|
||||
# Tk applications. It allows you to select an application and
|
||||
# then type commands to that application.
|
||||
# rmt --
|
||||
# This script implements a simple remote-control mechanism for
|
||||
# Tk applications. It allows you to select an application and
|
||||
# then type commands to that application.
|
||||
|
||||
require 'tk'
|
||||
|
||||
|
@ -17,41 +17,41 @@ class Rmt
|
|||
root = TkWinfo.toplevel(parent)
|
||||
root.minsize(1,1)
|
||||
|
||||
# The instance variable below keeps track of the remote application
|
||||
# that we're sending to. If it's an empty string then we execute
|
||||
# the commands locally.
|
||||
# The instance variable below keeps track of the remote application
|
||||
# that we're sending to. If it's an empty string then we execute
|
||||
# the commands locally.
|
||||
@app = 'local'
|
||||
@mode = 'Ruby'
|
||||
|
||||
# The instance variable below keeps track of whether we're in the
|
||||
# middle of executing a command entered via the text.
|
||||
# The instance variable below keeps track of whether we're in the
|
||||
# middle of executing a command entered via the text.
|
||||
@executing = 0
|
||||
|
||||
# The instance variable below keeps track of the last command executed,
|
||||
# so it can be re-executed in response to !! commands.
|
||||
# The instance variable below keeps track of the last command executed,
|
||||
# so it can be re-executed in response to !! commands.
|
||||
@lastCommand = ""
|
||||
|
||||
# Create menu bar. Arrange to recreate all the information in the
|
||||
# applications sub-menu whenever it is cascaded to.
|
||||
# Create menu bar. Arrange to recreate all the information in the
|
||||
# applications sub-menu whenever it is cascaded to.
|
||||
|
||||
TkFrame.new(root, 'relief'=>'raised', 'bd'=>2) {|f|
|
||||
pack('side'=>'top', 'fill'=>'x')
|
||||
TkMenubutton.new(f, 'text'=>'File', 'underline'=>0) {|mb|
|
||||
TkMenu.new(mb) {|mf|
|
||||
mb.menu(mf)
|
||||
TkMenu.new(mf) {|ma|
|
||||
TkMenu.new(mf) {|ma|
|
||||
postcommand proc{win.fillAppsMenu ma}
|
||||
mf.add('cascade', 'label'=>'Select Application',
|
||||
mf.add('cascade', 'label'=>'Select Application',
|
||||
'menu'=>ma, 'underline'=>0)
|
||||
}
|
||||
add('command', 'label'=>'Quit',
|
||||
add('command', 'label'=>'Quit',
|
||||
'command'=>proc{root.destroy}, 'underline'=>0)
|
||||
}
|
||||
pack('side'=>'left')
|
||||
}
|
||||
}
|
||||
|
||||
# Create text window and scrollbar.
|
||||
# Create text window and scrollbar.
|
||||
|
||||
@txt = TkText.new(root, 'relief'=>'sunken', 'bd'=>2, 'setgrid'=>true) {
|
||||
yscrollbar(TkScrollbar.new(root){pack('side'=>'right', 'fill'=>'y')})
|
||||
|
@ -60,9 +60,9 @@ class Rmt
|
|||
|
||||
@promptEnd = TkTextMark.new(@txt, 'insert')
|
||||
|
||||
# Create a binding to forward commands to the target application,
|
||||
# plus modify many of the built-in bindings so that only information
|
||||
# in the current command can be deleted (can still set the cursor
|
||||
# Create a binding to forward commands to the target application,
|
||||
# plus modify many of the built-in bindings so that only information
|
||||
# in the current command can be deleted (can still set the cursor
|
||||
# earlier in the text and select and insert; just can't delete).
|
||||
|
||||
@txt.bindtags([@txt, TkText, root, 'all'])
|
||||
|
@ -151,8 +151,8 @@ class Rmt
|
|||
w.see('insert')
|
||||
end
|
||||
|
||||
# The method below is used to print out a prompt at the
|
||||
# insertion point (which should be at the beginning of a line
|
||||
# The method below is used to print out a prompt at the
|
||||
# insertion point (which should be at the beginning of a line
|
||||
# right now).
|
||||
|
||||
def prompt
|
||||
|
@ -162,8 +162,8 @@ class Rmt
|
|||
@txt.tag_add('bold', "#{@promptEnd.path} linestart", @promptEnd)
|
||||
end
|
||||
|
||||
# The method below executes a command (it takes everything on the
|
||||
# current line after the prompt and either sends it to the remote
|
||||
# The method below executes a command (it takes everything on the
|
||||
# current line after the prompt and either sends it to the remote
|
||||
# application or executes it locally, depending on "app".
|
||||
|
||||
def invoke
|
||||
|
@ -200,8 +200,8 @@ class Rmt
|
|||
if complete
|
||||
@lastCommand = cmd
|
||||
begin
|
||||
# msg = Tk.appsend(@app, false,
|
||||
# 'ruby',
|
||||
# msg = Tk.appsend(@app, false,
|
||||
# 'ruby',
|
||||
# '"(' + cmd.gsub(/[][$"]/, '\\\\\&') + ').to_s"')
|
||||
msg = Tk.rb_appsend(@app, false, cmd)
|
||||
rescue
|
||||
|
@ -218,10 +218,10 @@ class Rmt
|
|||
end
|
||||
|
||||
# The following method is invoked to change the application that
|
||||
# we're talking to. It also updates the prompt for the current
|
||||
# command, unless we're in the middle of executing a command from
|
||||
# the text item (in which case a new prompt is about to be output
|
||||
# so there's no need to change the old one).
|
||||
# we're talking to. It also updates the prompt for the current
|
||||
# command, unless we're in the middle of executing a command from
|
||||
# the text item (in which case a new prompt is about to be output
|
||||
# so there's no need to change the old one).
|
||||
|
||||
def newApp(appName, mode)
|
||||
@app = appName
|
||||
|
@ -236,7 +236,7 @@ class Rmt
|
|||
end
|
||||
|
||||
# The method below will fill in the applications sub-menu with a list
|
||||
# of all the applications that currently exist.
|
||||
# of all the applications that currently exist.
|
||||
|
||||
def fillAppsMenu(menu)
|
||||
win = self
|
||||
|
@ -251,14 +251,14 @@ class Rmt
|
|||
else
|
||||
mode = 'Ruby'
|
||||
end
|
||||
menu.add('command', 'label'=>format("%s (#{mode}/Tk)", ip),
|
||||
menu.add('command', 'label'=>format("%s (#{mode}/Tk)", ip),
|
||||
'command'=>proc{win.newApp ip, mode})
|
||||
rescue
|
||||
menu.add('command', 'label'=>format("%s (unknown Tk)", ip),
|
||||
menu.add('command', 'label'=>format("%s (unknown Tk)", ip),
|
||||
'command'=>proc{win.newApp ip, mode}, 'state'=>'disabled')
|
||||
end
|
||||
}
|
||||
menu.add('command', 'label'=>format("local (Ruby/Tk)"),
|
||||
menu.add('command', 'label'=>format("local (Ruby/Tk)"),
|
||||
'command'=>proc{win.newApp 'local', 'Ruby'})
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# rolodex --
|
||||
# This script is a part of Tom LaStrange's rolodex
|
||||
#
|
||||
#
|
||||
# Copyright (C) 1998 by Takaaki Tateishi <ttate@jaist.ac.jp>
|
||||
# Time-stamp: "03/08/02 12:45:21 nagai"
|
||||
#
|
||||
|
@ -17,7 +17,7 @@ def show_help(topic,x=0,y=0)
|
|||
topic = w
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if( $helpTopics.include?(topic) )
|
||||
msg = $helpTopics[topic]
|
||||
else
|
||||
|
@ -81,7 +81,7 @@ class RolodexFrame < TkFrame
|
|||
def initialize(parent=nil,keys=nil)
|
||||
super(parent,keys)
|
||||
self["relief"] = "flat"
|
||||
|
||||
|
||||
@i = []
|
||||
@label = []
|
||||
@entry = []
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
# rolodex --
|
||||
# このスクリプトは Tom LaStrange の rolodex の一部です。
|
||||
#
|
||||
#
|
||||
# Copyright (C) 1998 by Takaaki Tateishi <ttate@jaist.ac.jp>
|
||||
# Time-stamp: "04/04/09 00:32:12 nagai"
|
||||
#
|
||||
|
@ -20,7 +20,7 @@ def show_help(topic,x=0,y=0)
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if( $helpTopics.include?(topic) )
|
||||
msg = $helpTopics[topic]
|
||||
else
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# square --
|
||||
# This script generates a demo application containing only
|
||||
# a "square" widget. It's only usable if Tk has been compiled
|
||||
# with tkSquare.c and with the -DSQUARE_DEMO compiler switch.
|
||||
# This demo arranges the following bindings for the widget:
|
||||
# This script generates a demo application containing only
|
||||
# a "square" widget. It's only usable if Tk has been compiled
|
||||
# with tkSquare.c and with the -DSQUARE_DEMO compiler switch.
|
||||
# This demo arranges the following bindings for the widget:
|
||||
#
|
||||
# Button-1 press/drag: moves square to mouse
|
||||
# "a": toggle size animation on/off
|
||||
|
@ -19,7 +19,7 @@ class TkSquare<TkWindow
|
|||
tk_call 'square', path
|
||||
rescue
|
||||
STDERR.print "\nSorry. Your Tk interpreter does not contain " +
|
||||
'a "square" demonstration widget.' +
|
||||
'a "square" demonstration widget.' +
|
||||
"\n ( See documents included the Tcl/Tk source archive. )\n\n"
|
||||
exit
|
||||
end
|
||||
|
@ -53,7 +53,7 @@ def center(x,y)
|
|||
end
|
||||
|
||||
# The procedures below provide a simple form of animation where
|
||||
# the box changes size in a pulsing pattern: larger, smaller, larger,
|
||||
# the box changes size in a pulsing pattern: larger, smaller, larger,
|
||||
# and so on.
|
||||
|
||||
$inc = 0
|
||||
|
|
|
@ -130,7 +130,7 @@ def _null_binding
|
|||
end
|
||||
private :_null_binding
|
||||
|
||||
def doUpdate
|
||||
def doUpdate
|
||||
newCmd = $command.to_s.gsub("%%","\"#{$color}\"")
|
||||
eval(newCmd, _null_binding)
|
||||
end
|
||||
|
@ -138,7 +138,7 @@ end
|
|||
|
||||
def tc_scaleChanged
|
||||
if( $updating.to_i == 1 )
|
||||
return
|
||||
return
|
||||
end
|
||||
|
||||
$master = :scale if $master == nil
|
||||
|
@ -155,7 +155,7 @@ def tc_scaleChanged
|
|||
when :cmy
|
||||
$red = (65535 - scale1.get * 65.535).to_i
|
||||
$green = (65535 - scale2.get * 65.535).to_i
|
||||
$blue = (65535 - scale3.get * 65.535).to_i
|
||||
$blue = (65535 - scale3.get * 65.535).to_i
|
||||
when :hsb
|
||||
list = hsbToRgb(scale1.get / 1000.0,
|
||||
scale2.get / 1000.0,
|
||||
|
@ -183,7 +183,7 @@ def tc_setScales
|
|||
scale1 = $root.middle.middle.scale1
|
||||
scale2 = $root.middle.middle.scale2
|
||||
scale3 = $root.middle.middle.scale3
|
||||
|
||||
|
||||
case $colorSpace.value.intern
|
||||
when :rgb
|
||||
scale1.set($red / 65.535)
|
||||
|
@ -209,7 +209,7 @@ end
|
|||
def tc_loadNamedColor(name)
|
||||
$name.value = name
|
||||
$master = :name if $master == nil
|
||||
if name[0,1] != "#"
|
||||
if name[0,1] != "#"
|
||||
list = TkWinfo.rgb($root.middle.right.swatch,name)
|
||||
$red = list[0]
|
||||
$green = list[1]
|
||||
|
@ -243,7 +243,7 @@ def tc_loadNamedColor(name)
|
|||
$green = $green << shift
|
||||
$blue = $blue << shift
|
||||
end
|
||||
|
||||
|
||||
tc_setScales
|
||||
$color = format("#%04x%04x%04x",$red,$green,$blue)
|
||||
$root.middle.right.set_color($color)
|
||||
|
@ -325,7 +325,7 @@ class TkColorMenuFrame<TkFrame
|
|||
"underline" => "0",
|
||||
"command" => proc{exit}
|
||||
}
|
||||
|
||||
|
||||
# FileメニューとFileボタンを関連付ける
|
||||
menu @file_menu
|
||||
|
||||
|
@ -361,7 +361,7 @@ class TkColorBotFrame<TkFrame
|
|||
|
||||
self
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# 中段左のフレーム
|
||||
|
@ -467,7 +467,7 @@ class TkColorMiddleRightFrame<TkFrame
|
|||
super(parent)
|
||||
@swatch = TkFrame.new(self, "width"=>"2c", "height"=>"5c",
|
||||
"background"=>$color)
|
||||
@value = TkLabel.new(self,
|
||||
@value = TkLabel.new(self,
|
||||
"text"=>$color,
|
||||
"width"=>"13",
|
||||
"font"=>"-Adobe-Courier-Medium-R-Normal--*-120-*-*-*-*-*-*")
|
||||
|
|
|
@ -69,7 +69,7 @@ class CountFrame < TkFrame
|
|||
def initialize(parent=nil,keys=nil)
|
||||
super(parent,keys)
|
||||
@counter = TkLabel.new(self,
|
||||
'text'=>$time,
|
||||
'text'=>$time,
|
||||
'relief'=>'raised')
|
||||
@counter.pack('fill'=>'both')
|
||||
self
|
||||
|
|
|
@ -125,16 +125,16 @@ end
|
|||
|
||||
# メニュー設定
|
||||
if $tk_major_ver >= 8
|
||||
$root.add_menubar([[['File', 0],
|
||||
$root.add_menubar([[['File', 0],
|
||||
['About ... ', proc{aboutBox}, 0, '<F1>'],
|
||||
'---',
|
||||
'---',
|
||||
['Quit', proc{exit}, 0, 'Ctrl-Q']
|
||||
]])
|
||||
else
|
||||
TkMenubar.new($root,
|
||||
[[['File', 0],
|
||||
TkMenubar.new($root,
|
||||
[[['File', 0],
|
||||
['About ... ', proc{aboutBox}, 0, '<F1>'],
|
||||
'---',
|
||||
'---',
|
||||
['Quit', proc{exit}, 0, 'Ctrl-Q']
|
||||
]]).pack('side'=>'top', 'fill'=>'x')
|
||||
end
|
||||
|
@ -171,7 +171,7 @@ if $tk_version =~ /^4\.[01]/
|
|||
txt.pack('expand'=>'yes', 'fill'=>'both')
|
||||
else
|
||||
textFrame = TkFrame.new($root)
|
||||
scr = TkScrollbar.new($root, 'orient'=>'vertical',
|
||||
scr = TkScrollbar.new($root, 'orient'=>'vertical',
|
||||
'highlightthickness'=>0, 'takefocus'=>1) {
|
||||
pack('in'=>textFrame, 'side'=>'right', 'fill'=>'y', 'padx'=>1)
|
||||
}
|
||||
|
@ -206,10 +206,10 @@ else
|
|||
statusfont = 'Helvetica 10'
|
||||
end
|
||||
$statusBarLabel = \
|
||||
TkLabel.new(f, 'text'=>" ", 'relief'=>'sunken', 'bd'=>1, 'anchor'=>'w',
|
||||
TkLabel.new(f, 'text'=>" ", 'relief'=>'sunken', 'bd'=>1, 'anchor'=>'w',
|
||||
'font'=>statusfont) \
|
||||
.pack('side'=>'left', 'padx'=>2, 'expand'=>'yes', 'fill'=>'both')
|
||||
TkLabel.new(f, 'width'=>8, 'relief'=>'sunken', 'bd'=>1, 'anchor'=>'w',
|
||||
TkLabel.new(f, 'width'=>8, 'relief'=>'sunken', 'bd'=>1, 'anchor'=>'w',
|
||||
'font'=>statusfont) \
|
||||
.pack('side'=>'left', 'padx'=>2)
|
||||
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>2)
|
||||
|
@ -228,23 +228,23 @@ tag_middle = TkTextTag.new(txt, 'font'=>$kanji_font)
|
|||
tag_demospace = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c')
|
||||
|
||||
if TkWinfo.depth($root) == 1
|
||||
tag_demo = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
|
||||
tag_demo = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
|
||||
'underline'=>1)
|
||||
$tag_visited = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
|
||||
$tag_visited = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
|
||||
'underline'=>1)
|
||||
tag_hot = TkTextTag.new(txt, 'background'=>'black', 'foreground'=>'white')
|
||||
else
|
||||
tag_demo = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
|
||||
tag_demo = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
|
||||
'foreground'=>'blue', 'underline'=>1)
|
||||
$tag_visited = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
|
||||
$tag_visited = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
|
||||
'foreground'=>'#303080', 'underline'=>1)
|
||||
# tag_hot = TkTextTag.new(txt, 'relief'=>'raised', 'borderwidth'=>1,
|
||||
# tag_hot = TkTextTag.new(txt, 'relief'=>'raised', 'borderwidth'=>1,
|
||||
# 'background'=>'SeaGreen3')
|
||||
tag_hot = TkTextTag.new(txt, 'borderwidth'=>1, 'foreground'=>'red')
|
||||
end
|
||||
|
||||
#tag_demo.bind('Button-1', proc{invoke txt, txt.index('current')})
|
||||
tag_demo.bind('ButtonRelease-1',
|
||||
tag_demo.bind('ButtonRelease-1',
|
||||
proc{|x,y|invoke txt, txt.index("@#{x},#{y}")}, '%x %y')
|
||||
|
||||
lastLine = TkVariable.new("")
|
||||
|
@ -255,7 +255,7 @@ tag_demo.bind('Enter', proc{|x,y|
|
|||
showStatus txt, txt.index("@#{x},#{y}")
|
||||
},
|
||||
'%x %y')
|
||||
tag_demo.bind('Leave',
|
||||
tag_demo.bind('Leave',
|
||||
proc{
|
||||
tag_hot.remove('1.0','end')
|
||||
txt.configure('cursor','xterm')
|
||||
|
@ -266,10 +266,10 @@ tag_demo.bind('Motion', proc{|x, y|
|
|||
if newLine.value != lastLine.value
|
||||
tag_hot.remove('1.0','end')
|
||||
lastLine.value = newLine.value
|
||||
if ( txt.tag_names("@#{x},#{y}").find{|t|
|
||||
if ( txt.tag_names("@#{x},#{y}").find{|t|
|
||||
t.kind_of?(String) && t =~ /^demo-/
|
||||
} )
|
||||
tag_hot.add(lastLine.value,
|
||||
tag_hot.add(lastLine.value,
|
||||
"#{lastLine.value} lineend -1 chars")
|
||||
end
|
||||
end
|
||||
|
@ -321,50 +321,50 @@ Ttk
|
|||
EOT
|
||||
|
||||
#txt.insert('end',"ラベル, ボタン, チェックボタン, ラジオボタン\n",tag_middle)
|
||||
txt.insert('end', "ラベル, ボタン, チェックボタン, ラジオボタン\n",
|
||||
txt.insert('end', "ラベル, ボタン, チェックボタン, ラジオボタン\n",
|
||||
tag_kanji_title)
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "1. ラベル (テキスト, ビットマップ)\n",
|
||||
txt.insert('end', "1. ラベル (テキスト, ビットマップ)\n",
|
||||
tag_demo, "demo-label")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "2. ラベルとUNICODEテキスト (機能に対応したバージョンのTkが必要)\n", tag_demo, "demo-unicodeout")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "3. ボタン \n", tag_demo, "demo-button")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "4. チェックボタン (複数を選択可能)\n",
|
||||
txt.insert('end', "4. チェックボタン (複数を選択可能)\n",
|
||||
tag_demo, "demo-check")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "5. 3状態チェックボタン (機能に対応したバージョンのTkが必要)\n",
|
||||
txt.insert('end', "5. 3状態チェックボタン (機能に対応したバージョンのTkが必要)\n",
|
||||
tag_demo, "demo-check2")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "6. ラジオボタン (任意の一つを選択可能)\n",
|
||||
txt.insert('end', "6. ラジオボタン (任意の一つを選択可能)\n",
|
||||
tag_demo, "demo-radio")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "7. ラジオボタン (機能に対応したバージョンのTkが必要)\n",
|
||||
txt.insert('end', "7. ラジオボタン (機能に対応したバージョンのTkが必要)\n",
|
||||
tag_demo, "demo-radio2")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "8. 3状態ラジオボタン (機能に対応したバージョンのTkが必要)\n",
|
||||
txt.insert('end', "8. 3状態ラジオボタン (機能に対応したバージョンのTkが必要)\n",
|
||||
tag_demo, "demo-radio3")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "9. ボタンで作られた15-パズルゲーム\n",
|
||||
txt.insert('end', "9. ボタンで作られた15-パズルゲーム\n",
|
||||
tag_demo, "demo-puzzle")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "10. ビットマップを使用したアイコンボタン\n",
|
||||
txt.insert('end', "10. ビットマップを使用したアイコンボタン\n",
|
||||
tag_demo, "demo-icon")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "11. 画像を表示する二つのラベル\n",
|
||||
txt.insert('end', "11. 画像を表示する二つのラベル\n",
|
||||
tag_demo, "demo-image1")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "12. 画像を見るための簡単なユーザインターフェース\n",
|
||||
txt.insert('end', "12. 画像を見るための簡単なユーザインターフェース\n",
|
||||
tag_demo, "demo-image2")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "13. 画像を見るための簡単なユーザインターフェース (機能に対応したバージョンのTkが必要)\n",
|
||||
txt.insert('end', "13. 画像を見るための簡単なユーザインターフェース (機能に対応したバージョンのTkが必要)\n",
|
||||
tag_demo, "demo-image3")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "14. ラベル付きフレーム (機能に対応したバージョンのTkが必要)\n",
|
||||
txt.insert('end', "14. ラベル付きフレーム (機能に対応したバージョンのTkが必要)\n",
|
||||
tag_demo, "demo-labelframe")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "15. テーマに対応したウィジェットの簡単な例 (Tile/Ttk拡張への対応が必要)\n",
|
||||
txt.insert('end', "15. テーマに対応したウィジェットの簡単な例 (Tile/Ttk拡張への対応が必要)\n",
|
||||
tag_demo, "demo-ttkbut")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
|
||||
|
@ -374,15 +374,15 @@ txt.insert('end', "
|
|||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "1. 都道府県.\n", tag_demo, "demo-states")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "2. 色: アプリケーションのための配色を変える\n",
|
||||
txt.insert('end', "2. 色: アプリケーションのための配色を変える\n",
|
||||
"#{tag_demo.id} demo-colors")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "3. 格言集\n", tag_demo, "demo-sayings")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "4. 国についてのマルチカラムリスト (Tile/Ttk拡張への対応が必要)\n",
|
||||
txt.insert('end', "4. 国についてのマルチカラムリスト (Tile/Ttk拡張への対応が必要)\n",
|
||||
tag_demo, "demo-mclist")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "5. ディレクトリブラウザ (Tile/Ttk拡張への対応が必要)\n",
|
||||
txt.insert('end', "5. ディレクトリブラウザ (Tile/Ttk拡張への対応が必要)\n",
|
||||
tag_demo, "demo-tree")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
|
||||
|
@ -394,13 +394,13 @@ txt.insert('end', "1.
|
|||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "2. スクロールバーあり\n", tag_demo, "demo-entry2")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "3. 認証処理付きのエントリボックスとパスワードフィールド (機能に対応したバージョンのTkが必要)\n",
|
||||
txt.insert('end', "3. 認証処理付きのエントリボックスとパスワードフィールド (機能に対応したバージョンのTkが必要)\n",
|
||||
tag_demo, "demo-entry3")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "4. スピンボックス (機能に対応したバージョンのTkが必要)\n",
|
||||
txt.insert('end', "4. スピンボックス (機能に対応したバージョンのTkが必要)\n",
|
||||
tag_demo, "demo-spin")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "5. コンボボックス (Tile/Ttk拡張への対応が必要)\n",
|
||||
txt.insert('end', "5. コンボボックス (Tile/Ttk拡張への対応が必要)\n",
|
||||
tag_demo, "demo-combo")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "6. 簡単なフォーム\n", tag_demo, "demo-form")
|
||||
|
@ -414,13 +414,13 @@ txt.insert('end', "1.
|
|||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "2. 表示スタイル.\n", tag_demo, "demo-style")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "3. ハイパーテキスト(タグバインド).\n",
|
||||
txt.insert('end', "3. ハイパーテキスト(タグバインド).\n",
|
||||
tag_demo, "demo-bind")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "4. ウィンドウを埋め込んだテキスト\n",
|
||||
txt.insert('end', "4. ウィンドウを埋め込んだテキスト\n",
|
||||
tag_demo, "demo-twind")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "5. ウィンドウを埋め込んだテキスト (機能に対応したバージョンのTkが必要)\n",
|
||||
txt.insert('end', "5. ウィンドウを埋め込んだテキスト (機能に対応したバージョンのTkが必要)\n",
|
||||
tag_demo, "demo-twind2")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "6. 検索\n", tag_demo, "demo-search")
|
||||
|
@ -446,10 +446,10 @@ txt.insert('end', "6.
|
|||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "7. フロアプラン (異なるキャンバスアイテム作成方法を使用)\n", tag_demo, "demo-floor2")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "8. スクロール可能なキャンバス\n",
|
||||
txt.insert('end', "8. スクロール可能なキャンバス\n",
|
||||
tag_demo, "demo-cscroll")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "9. チェスボード上の騎士の巡回 (Tile/Ttk拡張への対応が必要)\n",
|
||||
txt.insert('end', "9. チェスボード上の騎士の巡回 (Tile/Ttk拡張への対応が必要)\n",
|
||||
tag_demo, "demo-knightstour")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
|
||||
|
@ -467,16 +467,16 @@ txt.insert('end', " \n ", tag_demospace)
|
|||
txt.insert('end', "\n")
|
||||
txt.insert('end', "ペインドウィンドウとノートブック\n", tag_kanji_title)
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "1. 水平方向 (機能に対応したバージョンのTkが必要)\n",
|
||||
txt.insert('end', "1. 水平方向 (機能に対応したバージョンのTkが必要)\n",
|
||||
tag_demo.id, "demo-paned1")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "2. 垂直方向 (機能に対応したバージョンのTkが必要)\n",
|
||||
txt.insert('end', "2. 垂直方向 (機能に対応したバージョンのTkが必要)\n",
|
||||
tag_demo.id, "demo-paned2")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "3. テーマに対応した埋め込みペイン (Tile/Ttk拡張への対応が必要)\n",
|
||||
txt.insert('end', "3. テーマに対応した埋め込みペイン (Tile/Ttk拡張への対応が必要)\n",
|
||||
tag_demo.id, "demo-ttkpane")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "4. ノートブックウィジェット (Tile/Ttk拡張への対応が必要)\n",
|
||||
txt.insert('end', "4. ノートブックウィジェット (Tile/Ttk拡張への対応が必要)\n",
|
||||
tag_demo.id, "demo-ttknote")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
|
||||
|
@ -484,22 +484,22 @@ txt.insert('end', "\n")
|
|||
#txt.insert('end', "メニューとツールバー\n", tag_middle)
|
||||
txt.insert('end', "メニューとツールバー\n", tag_kanji_title)
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "1. メニューとカスケードを含んだウィンドウ\n",
|
||||
txt.insert('end', "1. メニューとカスケードを含んだウィンドウ\n",
|
||||
tag_demo, "demo-menu")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "2. メニューとカスケードを含んだウィンドウ (Tk8.x 専用)\n",
|
||||
txt.insert('end', "2. メニューとカスケードを含んだウィンドウ (Tk8.x 専用)\n",
|
||||
tag_demo, "demo-menu8x")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "3. 〃 (機能に対応したバージョンのTkが必要)\n",
|
||||
txt.insert('end', "3. 〃 (機能に対応したバージョンのTkが必要)\n",
|
||||
tag_demo, "demo-menu84")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "4. メニューボタン (Tk8.x 専用)\n",
|
||||
txt.insert('end', "4. メニューボタン (Tk8.x 専用)\n",
|
||||
tag_demo, "demo-menubu")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "5. テーマに対応したメニューボタン (Tile/Ttk拡張への対応が必要)\n",
|
||||
txt.insert('end', "5. テーマに対応したメニューボタン (Tile/Ttk拡張への対応が必要)\n",
|
||||
tag_demo.id, "demo-ttkmenu")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "6. テーマに対応したツールバー (Tile/Ttk拡張への対応が必要)\n",
|
||||
txt.insert('end', "6. テーマに対応したツールバー (Tile/Ttk拡張への対応が必要)\n",
|
||||
tag_demo.id, "demo-toolbar")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
|
||||
|
@ -534,10 +534,10 @@ txt.insert('end', "
|
|||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "1. 組み込みのビットマップ\n", tag_demo, "demo-bitmap")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "2. モーダルダイアログ(ローカルグラブ)\n",
|
||||
txt.insert('end', "2. モーダルダイアログ(ローカルグラブ)\n",
|
||||
tag_demo, "demo-dialog1")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
txt.insert('end', "3. モーダルダイアログ(グローバルグラブ)\n",
|
||||
txt.insert('end', "3. モーダルダイアログ(グローバルグラブ)\n",
|
||||
tag_demo, "demo-dialog2")
|
||||
txt.insert('end', " \n ", tag_demospace)
|
||||
|
||||
|
@ -556,7 +556,7 @@ $showVarsWin = {}
|
|||
def showVars1(parent, *args)
|
||||
if $showVarsWin[parent.path]
|
||||
begin
|
||||
$showVarsWin[parent.path].destroy
|
||||
$showVarsWin[parent.path].destroy
|
||||
rescue
|
||||
end
|
||||
end
|
||||
|
@ -596,7 +596,7 @@ end
|
|||
def showVars2(parent, *args)
|
||||
if $showVarsWin[parent.path]
|
||||
begin
|
||||
$showVarsWin[parent.path].destroy
|
||||
$showVarsWin[parent.path].destroy
|
||||
rescue
|
||||
end
|
||||
end
|
||||
|
@ -605,11 +605,11 @@ def showVars2(parent, *args)
|
|||
|
||||
base = TkFrame.new(top).pack(:fill=>:both, :expand=>true)
|
||||
|
||||
TkLabelFrame.new(base, :text=>"変数値:",
|
||||
TkLabelFrame.new(base, :text=>"変数値:",
|
||||
:font=>{:family=>'Helvetica', :size=>14}){|f|
|
||||
args.each{|vnam,vbody|
|
||||
TkGrid(TkLabel.new(f, :text=>"#{vnam}: ", :anchor=>'w'),
|
||||
TkLabel.new(f, :textvariable=>vbody, :anchor=>'w'),
|
||||
TkGrid(TkLabel.new(f, :text=>"#{vnam}: ", :anchor=>'w'),
|
||||
TkLabel.new(f, :textvariable=>vbody, :anchor=>'w'),
|
||||
:padx=>2, :pady=>2, :sticky=>'w')
|
||||
}
|
||||
|
||||
|
@ -617,7 +617,7 @@ def showVars2(parent, *args)
|
|||
f.grid_columnconfig(1, :weight=>1)
|
||||
f.grid_rowconfig(100, :weight=>1)
|
||||
}
|
||||
TkButton.new(base, :text=>"了解", :width=>8, :default=>:active,
|
||||
TkButton.new(base, :text=>"了解", :width=>8, :default=>:active,
|
||||
:command=>proc{top.destroy}){|b|
|
||||
top.bind('Return', proc{b.invoke})
|
||||
top.bind('Escape', proc{b.invoke})
|
||||
|
@ -667,9 +667,9 @@ class Object
|
|||
|
||||
def method_missing(id, *args)
|
||||
begin
|
||||
has_top = (top = Thread.current[:TOPLEVEL]) &&
|
||||
top.respond_to?(:pseudo_toplevel_evaluable?) &&
|
||||
top.pseudo_toplevel_evaluable? &&
|
||||
has_top = (top = Thread.current[:TOPLEVEL]) &&
|
||||
top.respond_to?(:pseudo_toplevel_evaluable?) &&
|
||||
top.pseudo_toplevel_evaluable? &&
|
||||
top.respond_to?(id)
|
||||
rescue Exception => e
|
||||
has_top = false
|
||||
|
@ -733,9 +733,9 @@ def eval_samplecode(code, file=nil)
|
|||
end
|
||||
rescue Exception=>e
|
||||
#p e
|
||||
TkBgError.show(e.message + "\n" +
|
||||
"\n---< backtrace of Ruby side >-----\n" +
|
||||
e.backtrace.join("\n") +
|
||||
TkBgError.show(e.message + "\n" +
|
||||
"\n---< backtrace of Ruby side >-----\n" +
|
||||
e.backtrace.join("\n") +
|
||||
"\n---< backtrace of Tk side >-------")
|
||||
end
|
||||
}
|
||||
|
@ -785,7 +785,7 @@ def showStatus (txt, index)
|
|||
newcursor = 'xterm'
|
||||
else
|
||||
demoname = tag[5..-1]
|
||||
$statusBarLabel.configure('text',
|
||||
$statusBarLabel.configure('text',
|
||||
"サンプルプログラム \"#{demoname}\" の実行 ")
|
||||
newcursor = 'hand2'
|
||||
end
|
||||
|
@ -841,9 +841,9 @@ def showCode1(demo)
|
|||
TkFrame.new($code_window) {|f|
|
||||
pack('expand'=>'yes', 'fill'=>'both', 'padx'=>1, 'pady'=>1)
|
||||
|
||||
hs = TkScrollbar.new($code_window, 'highlightthickness'=>0,
|
||||
hs = TkScrollbar.new($code_window, 'highlightthickness'=>0,
|
||||
'orient'=>'horizontal')
|
||||
vs = TkScrollbar.new($code_window, 'highlightthickness'=>0,
|
||||
vs = TkScrollbar.new($code_window, 'highlightthickness'=>0,
|
||||
'orient'=>'vertical')
|
||||
$code_text = TkText.new($code_window) {|t|
|
||||
height 40
|
||||
|
@ -859,11 +859,11 @@ def showCode1(demo)
|
|||
vs.command(proc{|*args| $code_text.yview(*args)})
|
||||
}
|
||||
|
||||
$code_text.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>0,
|
||||
$code_text.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>0,
|
||||
'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
|
||||
vs.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>1,
|
||||
vs.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>1,
|
||||
'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
|
||||
# xs.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>1, 'column'=>0,
|
||||
# xs.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>1, 'column'=>0,
|
||||
# 'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
|
||||
TkGrid.rowconfigure(f, 0, 'weight'=>1, 'minsize'=>0)
|
||||
TkGrid.columnconfigure(f, 0, 'weight'=>1, 'minsize'=>0)
|
||||
|
@ -900,8 +900,8 @@ def showCode2(demo)
|
|||
if $code_window == nil || TkWinfo.exist?($code_window) == false
|
||||
$code_window = TkToplevel.new(nil)
|
||||
tf = TkFrame.new($code_window)
|
||||
$code_text = TkText.new(tf, :font=>'Courier 10', :height=>30,
|
||||
:wrap=>'word', :bd=>1, :setgrid=>true,
|
||||
$code_text = TkText.new(tf, :font=>'Courier 10', :height=>30,
|
||||
:wrap=>'word', :bd=>1, :setgrid=>true,
|
||||
:highlightthickness=>0, :pady=>2, :padx=>3)
|
||||
xscr = TkScrollbar.new(tf, :bd=>1){assign($code_text)}
|
||||
yscr = TkScrollbar.new(tf, :bd=>1){assign($code_text)}
|
||||
|
@ -924,21 +924,21 @@ def showCode2(demo)
|
|||
posnum.text = pos
|
||||
}
|
||||
|
||||
#b_dis = TkButton.new(bf, :text=>'了解', :default=>:active,
|
||||
b_dis = TkButton.new(bf, :text=>'閉じる', :default=>:active,
|
||||
#b_dis = TkButton.new(bf, :text=>'了解', :default=>:active,
|
||||
b_dis = TkButton.new(bf, :text=>'閉じる', :default=>:active,
|
||||
:command=>proc{
|
||||
$code_window.destroy
|
||||
$code_window = nil
|
||||
},
|
||||
},
|
||||
:image=>$image['delete'], :compound=>:left)
|
||||
b_prn = TkButton.new(bf, :text=>'印刷',
|
||||
:command=>proc{printCode($code_text, file)},
|
||||
b_prn = TkButton.new(bf, :text=>'印刷',
|
||||
:command=>proc{printCode($code_text, file)},
|
||||
:image=>$image['print'], :compound=>:left)
|
||||
b_run = TkButton.new(bf, :text=>'再実行',
|
||||
b_run = TkButton.new(bf, :text=>'再実行',
|
||||
:command=>proc{
|
||||
# eval($code_text.get('1.0','end'), _null_binding)
|
||||
eval_samplecode($code_text.get('1.0','end'), '<viewer>')
|
||||
},
|
||||
},
|
||||
:image=>$image['refresh'], :compound=>:left)
|
||||
|
||||
TkGrid(lf, 'x', b_run, b_prn, b_dis, :padx=>4, :pady=>[6,4])
|
||||
|
@ -1011,27 +1011,27 @@ def printCode(txt, file)
|
|||
when 'unix'
|
||||
msg = `lp -c #{fname}`
|
||||
unless $?.exitstatus == 0
|
||||
Tk.messageBox(:title=>'Print spooling failure',
|
||||
:message=>'エラーが発生しました.' +
|
||||
Tk.messageBox(:title=>'Print spooling failure',
|
||||
:message=>'エラーが発生しました.' +
|
||||
'印刷に失敗したものと思われます : ' + msg)
|
||||
end
|
||||
when 'windows'
|
||||
begin
|
||||
printTextWin32(fname)
|
||||
rescue => e
|
||||
Tk.messageBox(:title=>'Print spooling failure',
|
||||
:message=>'エラーが発生しました.' +
|
||||
'印刷に失敗したものと思われます : ' +
|
||||
Tk.messageBox(:title=>'Print spooling failure',
|
||||
:message=>'エラーが発生しました.' +
|
||||
'印刷に失敗したものと思われます : ' +
|
||||
e.message)
|
||||
end
|
||||
end
|
||||
when 'macintosh'
|
||||
Tk.messageBox(:title=>'Operation not Implemented',
|
||||
Tk.messageBox(:title=>'Operation not Implemented',
|
||||
:message=>'印刷機能はまだ実装されていません')
|
||||
else
|
||||
Tk.messageBox(:title=>'Operation not Implemented',
|
||||
:message=>'検出された環境 ' +
|
||||
Tk::TCL_PLATFORM('platform') +
|
||||
' は未知の環境であるため,' +
|
||||
Tk.messageBox(:title=>'Operation not Implemented',
|
||||
:message=>'検出された環境 ' +
|
||||
Tk::TCL_PLATFORM('platform') +
|
||||
' は未知の環境であるため,' +
|
||||
'印刷機能は実装されていません: ')
|
||||
end
|
||||
ensure
|
||||
|
@ -1061,7 +1061,7 @@ def printTextWin32(fname)
|
|||
pcmd.gsub!('%1', fname)
|
||||
puts pcmd
|
||||
cmd = Tk.tk_call('auto_execok', 'start') + ' /min ' + pcmd
|
||||
|
||||
|
||||
msg = `#{cmd}`
|
||||
unless $?.exitstatus == 0
|
||||
fail RuntimeError, msg
|
||||
|
@ -1073,16 +1073,16 @@ end
|
|||
# Pops up a message box with an "about" message
|
||||
#
|
||||
def aboutBox
|
||||
Tk.messageBox('icon'=>'info', 'type'=>'ok', 'title'=>'About Widget Demo',
|
||||
'message'=>"Ruby/Tk ウィジェットデモ Ver.1.7.1-jp\n\n" +
|
||||
"based on demos of Tk8.1 -- 8.5 " +
|
||||
"( Copyright of Tcl/Tk demos:: " +
|
||||
"(c) 1996-1997 Sun Microsystems, Inc. / " +
|
||||
"(c) 1997-2000 Ajuba Solutions, Inc. / " +
|
||||
"(c) 2001-2007 Donal K. Fellows / " +
|
||||
Tk.messageBox('icon'=>'info', 'type'=>'ok', 'title'=>'About Widget Demo',
|
||||
'message'=>"Ruby/Tk ウィジェットデモ Ver.1.7.1-jp\n\n" +
|
||||
"based on demos of Tk8.1 -- 8.5 " +
|
||||
"( Copyright of Tcl/Tk demos:: " +
|
||||
"(c) 1996-1997 Sun Microsystems, Inc. / " +
|
||||
"(c) 1997-2000 Ajuba Solutions, Inc. / " +
|
||||
"(c) 2001-2007 Donal K. Fellows / " +
|
||||
"(c) 2002-2007 Daniel A. Steffen )\n\n" +
|
||||
"Your Ruby & Tk Version ::\n" +
|
||||
"Ruby#{RUBY_VERSION}(#{RUBY_RELEASE_DATE})[#{RUBY_PLATFORM}] / Tk#{$tk_patchlevel}#{(Tk::JAPANIZED_TK)? '-jp': ''}\n\n" +
|
||||
"Your Ruby & Tk Version ::\n" +
|
||||
"Ruby#{RUBY_VERSION}(#{RUBY_RELEASE_DATE})[#{RUBY_PLATFORM}] / Tk#{$tk_patchlevel}#{(Tk::JAPANIZED_TK)? '-jp': ''}\n\n" +
|
||||
"Ruby/Tk release date :: tcltklib #{TclTkLib::RELEASE_DATE}; tk #{Tk::RELEASE_DATE}")
|
||||
end
|
||||
|
||||
|
@ -1096,11 +1096,11 @@ else
|
|||
# show the root widget to make it lower then demo windows
|
||||
Tk.update
|
||||
end
|
||||
ARGV.each{|cmd|
|
||||
ARGV.each{|cmd|
|
||||
if cmd =~ /(.*).rb/
|
||||
cmd = $1
|
||||
end
|
||||
#eval(IO.readlines("#{[$demo_dir, cmd].join(File::Separator)}.rb").join,
|
||||
#eval(IO.readlines("#{[$demo_dir, cmd].join(File::Separator)}.rb").join,
|
||||
# _null_binding)
|
||||
eval_samplecode(IO.readlines("#{[$demo_dir, cmd].join(File::Separator)}.rb").join, cmd + '.rb')
|
||||
}
|
||||
|
|
|
@ -41,12 +41,12 @@ else
|
|||
fnt = ['courier', '-12']
|
||||
end
|
||||
|
||||
console = TkTextIO.new(top, :mode=>:console,
|
||||
:width=>80).pack(:side=>:left,
|
||||
console = TkTextIO.new(top, :mode=>:console,
|
||||
:width=>80).pack(:side=>:left,
|
||||
:expand=>true, :fill=>:both)
|
||||
console.yscrollbar(TkScrollbar.new(top, :width=>10).pack(:before=>console,
|
||||
:side=>:right,
|
||||
:expand=>false,
|
||||
console.yscrollbar(TkScrollbar.new(top, :width=>10).pack(:before=>console,
|
||||
:side=>:right,
|
||||
:expand=>false,
|
||||
:fill=>:y))
|
||||
|
||||
# save original I/O
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Message catalogs in this directory depend on Tcl/Tk's message catalogs.
|
||||
Message catalogs in this directory depend on Tcl/Tk's message catalogs.
|
||||
Texts of each locale are copied from Tcl/Tk8.5a1 widget demos.
|
||||
Please refer to '../msgs_tk/README'.
|
||||
Please refer to '../msgs_tk/README'.
|
||||
|
|
|
@ -69,7 +69,7 @@ TkMsgCatalog.new('::tk') {
|
|||
es "Tcl Scripts", "Scripts Tcl"
|
||||
es "Tcl for Windows", "Tcl para Windows"
|
||||
es "Text Files", "Archivos de texto"
|
||||
es "&Yes", "&S\\u00ed"
|
||||
es "&Yes", "&S\\u00ed"
|
||||
es "abort", "abortar"
|
||||
es "blue", "azul"
|
||||
es "cancel", "cancelar"
|
||||
|
|
|
@ -31,7 +31,7 @@ TkMsgCatalog.new('::tk') {
|
|||
ru 'Details >>', '\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 >>'
|
||||
ru 'Directory "%1\$s" does not exist.', '\u041a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 "%1\$s" \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.'
|
||||
ru '&Directory:', '&\u041a\u0430\u0442\u0430\u043b\u043e\u0433:'
|
||||
ru 'Error: %1\$s', '\u041e\u0448\u0438\u0431\u043a\u0430: %1\$s'
|
||||
ru 'Error: %1\$s', '\u041e\u0448\u0438\u0431\u043a\u0430: %1\$s'
|
||||
ru 'Exit', '\u0412\u044b\u0445\u043e\u0434'
|
||||
ru 'File "%1\$s" already exists.' "\n" 'Do you want to overwrite it?' \
|
||||
'\u0424\u0430\u0439\u043b "%1\$s" \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.' "\n" '\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e?'
|
||||
|
@ -47,7 +47,7 @@ TkMsgCatalog.new('::tk') {
|
|||
ru 'Hi', '\u041f\u0440\u0438\u0432\u0435\u0442'
|
||||
ru 'Hide Console', '\u0421\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c'
|
||||
ru '&Ignore', '&\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c'
|
||||
ru 'Invalid file name "%1\$s".', '\u041d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 "%1\$s".'
|
||||
ru 'Invalid file name "%1\$s".', '\u041d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 "%1\$s".'
|
||||
ru 'Log Files', '\u0424\u0430\u0439\u043b\u044b \u0436\u0443\u0440\u043d\u0430\u043b\u0430'
|
||||
ru '&No', '&\u041d\u0435\u0442'
|
||||
ru '&OK', '&\u041e\u041a'
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Message catalogs in this directory are written in encodings except
|
||||
UTF-8. As if you have a trouble to edit UTF-8 text, you can write
|
||||
UTF-8. As if you have a trouble to edit UTF-8 text, you can write
|
||||
message catalogs in your familier encoding.
|
||||
|
||||
Please see '../msgs_rb/README' too.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Almost all of Message-Catalog files in this directory are quoted
|
||||
Almost all of Message-Catalog files in this directory are quoted
|
||||
from Tcl/Tk8.5a1 source archive (only a little are modified for
|
||||
'tkmsgcat-load_tk.rb'). Please read the file 'license.terms' in
|
||||
this directry (That was included in demo directory of Tcl/Tk8.5a1).
|
||||
|
|
|
@ -13,7 +13,7 @@ namespace eval ::tkmsgcat_demo {
|
|||
}
|
||||
|
||||
|
||||
# followings are same to original file included into Tk8.5a1's widget demos.
|
||||
# followings are same to original file included into Tk8.5a1's widget demos.
|
||||
|
||||
## Messages for the Greek (Hellenic - "el") language.
|
||||
## Please report any changes/suggestions to:
|
||||
|
|
|
@ -69,7 +69,7 @@ namespace eval ::tk {
|
|||
::msgcat::mcset es "Tcl Scripts" "Scripts Tcl"
|
||||
::msgcat::mcset es "Tcl for Windows" "Tcl para Windows"
|
||||
::msgcat::mcset es "Text Files" "Archivos de texto"
|
||||
::msgcat::mcset es "&Yes" "&S\u00ed"
|
||||
::msgcat::mcset es "&Yes" "&S\u00ed"
|
||||
::msgcat::mcset es "abort" "abortar"
|
||||
::msgcat::mcset es "blue" "azul"
|
||||
::msgcat::mcset es "cancel" "cancelar"
|
||||
|
|
|
@ -28,7 +28,7 @@ MODIFICATIONS.
|
|||
|
||||
GOVERNMENT USE: If you are acquiring this software on behalf of the
|
||||
U.S. government, the Government shall have only "Restricted Rights"
|
||||
in the software and related documentation as defined in the Federal
|
||||
in the software and related documentation as defined in the Federal
|
||||
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
|
||||
are acquiring the software on behalf of the Department of Defense, the
|
||||
software shall be classified as "Commercial Computer Software" and the
|
||||
|
|
|
@ -31,7 +31,7 @@ namespace eval ::tk {
|
|||
::msgcat::mcset ru "Details >>" "\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 >>"
|
||||
::msgcat::mcset ru "Directory \"%1\$s\" does not exist." "\u041a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \"%1\$s\" \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442."
|
||||
::msgcat::mcset ru "&Directory:" "&\u041a\u0430\u0442\u0430\u043b\u043e\u0433:"
|
||||
::msgcat::mcset ru "Error: %1\$s" "\u041e\u0448\u0438\u0431\u043a\u0430: %1\$s"
|
||||
::msgcat::mcset ru "Error: %1\$s" "\u041e\u0448\u0438\u0431\u043a\u0430: %1\$s"
|
||||
::msgcat::mcset ru "Exit" "\u0412\u044b\u0445\u043e\u0434"
|
||||
::msgcat::mcset ru "File \"%1\$s\" already exists.\nDo you want to overwrite it?" \
|
||||
"\u0424\u0430\u0439\u043b \"%1\$s\" \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.\n\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e?"
|
||||
|
@ -47,7 +47,7 @@ namespace eval ::tk {
|
|||
::msgcat::mcset ru "Hi" "\u041f\u0440\u0438\u0432\u0435\u0442"
|
||||
::msgcat::mcset ru "Hide Console" "\u0421\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c"
|
||||
::msgcat::mcset ru "&Ignore" "&\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c"
|
||||
::msgcat::mcset ru "Invalid file name \"%1\$s\"." "\u041d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \"%1\$s\"."
|
||||
::msgcat::mcset ru "Invalid file name \"%1\$s\"." "\u041d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \"%1\$s\"."
|
||||
::msgcat::mcset ru "Log Files" "\u0424\u0430\u0439\u043b\u044b \u0436\u0443\u0440\u043d\u0430\u043b\u0430"
|
||||
::msgcat::mcset ru "&No" "&\u041d\u0435\u0442"
|
||||
::msgcat::mcset ru "&OK" "&\u041e\u041a"
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
The scripts and image files in this directory are based on demo files
|
||||
of Tcl/Tk's BLT extention.
|
||||
of Tcl/Tk's BLT extention.
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
All of *.tcl and under themes/ directory (except kroc.rb) are
|
||||
quoted from Tcl/Tk's Tile extension. Please read Orig_LICENSE.txt.
|
||||
All of *.tcl and under themes/ directory (except kroc.rb) are
|
||||
quoted from Tcl/Tk's Tile extension. Please read Orig_LICENSE.txt.
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
# Notes:
|
||||
# Repeater buttons work more like scrollbar arrows than
|
||||
# Tk repeating buttons: they fire once immediately when
|
||||
# first pressed, and $State(delay) specifies the initial
|
||||
# first pressed, and $State(delay) specifies the initial
|
||||
# interval before the button starts autorepeating.
|
||||
#
|
||||
|
||||
|
@ -49,8 +49,8 @@ bind Repeater <B1-Enter> \
|
|||
### Binding procedures.
|
||||
#
|
||||
|
||||
## Activate -- Keyboard activation binding.
|
||||
# Simulate clicking the button, and invoke the command once.
|
||||
## Activate -- Keyboard activation binding.
|
||||
# Simulate clicking the button, and invoke the command once.
|
||||
#
|
||||
proc tile::Repeater::Activate {w} {
|
||||
$w instate disabled { return }
|
||||
|
@ -61,7 +61,7 @@ proc tile::Repeater::Activate {w} {
|
|||
}
|
||||
|
||||
## Press -- ButtonPress-1 binding.
|
||||
# Invoke the command once and start autorepeating after
|
||||
# Invoke the command once and start autorepeating after
|
||||
# $State(delay) milliseconds.
|
||||
#
|
||||
proc tile::Repeater::Press {w} {
|
||||
|
@ -104,7 +104,7 @@ proc tile::Repeater::Resume {w} {
|
|||
}
|
||||
|
||||
## Repeat -- Timer script
|
||||
# Invoke the command and reschedule another repetition
|
||||
# Invoke the command and reschedule another repetition
|
||||
# after $State(interval) milliseconds.
|
||||
#
|
||||
proc tile::Repeater::Repeat {w} {
|
||||
|
|
|
@ -68,12 +68,12 @@ namespace eval tile::theme::blue {
|
|||
style default Toolbutton \
|
||||
-width 0 -relief flat -borderwidth 2 -padding 4 \
|
||||
-background $colors(-frame) -foreground #000000 ;
|
||||
style map Toolbutton -background [list active $colors(-selectbg)]
|
||||
style map Toolbutton -foreground [list active $colors(-selectfg)]
|
||||
style map Toolbutton -background [list active $colors(-selectbg)]
|
||||
style map Toolbutton -foreground [list active $colors(-selectfg)]
|
||||
style map Toolbutton -relief {
|
||||
disabled flat
|
||||
selected sunken
|
||||
pressed sunken
|
||||
selected sunken
|
||||
pressed sunken
|
||||
active raised
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# keramik.tcl -
|
||||
# keramik.tcl -
|
||||
#
|
||||
# A sample pixmap theme for the tile package.
|
||||
#
|
||||
|
@ -48,12 +48,12 @@ namespace eval tile::theme::keramik {
|
|||
;
|
||||
|
||||
style map . -foreground [list disabled $colors(-disabledfg)]
|
||||
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Button elements
|
||||
# - the button has a large rounded border and needs a bit of
|
||||
# horizontal padding.
|
||||
# - the checkbutton and radiobutton have the focus drawn around
|
||||
# - the checkbutton and radiobutton have the focus drawn around
|
||||
# the whole widget - hence the new layouts.
|
||||
#
|
||||
style layout TButton {
|
||||
|
@ -125,7 +125,7 @@ namespace eval tile::theme::keramik {
|
|||
# one at the top.
|
||||
#
|
||||
style layout Vertical.TScrollbar {
|
||||
Scrollbar.background
|
||||
Scrollbar.background
|
||||
Scrollbar.trough -children {
|
||||
Scrollbar.uparrow -side top
|
||||
Scrollbar.downarrow -side bottom
|
||||
|
@ -133,9 +133,9 @@ namespace eval tile::theme::keramik {
|
|||
Vertical.Scrollbar.thumb -side top -expand true -sticky ns
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
style layout Horizontal.TScrollbar {
|
||||
Scrollbar.background
|
||||
Scrollbar.background
|
||||
Scrollbar.trough -children {
|
||||
Scrollbar.leftarrow -side left
|
||||
Scrollbar.rightarrow -side right
|
||||
|
@ -149,26 +149,26 @@ namespace eval tile::theme::keramik {
|
|||
style element create Horizontal.Scrollbar.thumb image $I(hsb-n) \
|
||||
-border {6 4} -width 15 -height 16 -sticky news \
|
||||
-map [list {pressed !disabled} $I(hsb-p)]
|
||||
|
||||
|
||||
style element create Vertical.Scrollbar.thumb image $I(vsb-n) \
|
||||
-border {4 6} -width 16 -height 15 -sticky news \
|
||||
-map [list {pressed !disabled} $I(vsb-p)]
|
||||
|
||||
|
||||
style element create Scale.slider image $I(hslider-n) \
|
||||
-border 3
|
||||
|
||||
|
||||
style element create Vertical.Scale.slider image $I(vslider-n) \
|
||||
-border 3
|
||||
|
||||
|
||||
style element create Horizontal.Progress.bar image $I(hsb-n) \
|
||||
-border {6 4}
|
||||
|
||||
|
||||
style element create Vertical.Progress.bar image $I(vsb-n) \
|
||||
-border {4 6}
|
||||
|
||||
|
||||
style element create uparrow image $I(arrowup-n) \
|
||||
-map [list {pressed !disabled} $I(arrowup-p)]
|
||||
|
||||
|
||||
style element create downarrow image $I(arrowdown-n) \
|
||||
-map [list {pressed !disabled} $I(arrowdown-p)]
|
||||
|
||||
|
@ -177,7 +177,7 @@ namespace eval tile::theme::keramik {
|
|||
|
||||
style element create leftarrow image $I(arrowleft-n) \
|
||||
-map [list {pressed !disabled} $I(arrowleft-p)]
|
||||
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Notebook elements
|
||||
#
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
# or we don't have the right version of Tcl/Tk
|
||||
#
|
||||
# To use this automatically within tile, the tile-using application should
|
||||
# use tile::availableThemes and tile::setTheme
|
||||
# use tile::availableThemes and tile::setTheme
|
||||
#
|
||||
# $Id$
|
||||
|
||||
|
|
|
@ -11,25 +11,25 @@ namespace eval tile {
|
|||
}
|
||||
|
||||
namespace eval tile::kroc {
|
||||
|
||||
|
||||
set imgdir [file join [file dirname [info script]] kroc]
|
||||
array set Images [tile::LoadImages $imgdir *.gif]
|
||||
|
||||
|
||||
if {[package vsatisfies [package provide tile] 0.5]} {
|
||||
set TNoteBook_Tab TNotebook.Tab
|
||||
} else {
|
||||
set TNoteBook_Tab Tab.TNotebook
|
||||
}
|
||||
|
||||
|
||||
style theme create kroc -parent alt -settings {
|
||||
|
||||
|
||||
style default . -background #FCB64F -troughcolor #F8C278 -borderwidth 1
|
||||
style default . -font TkDefaultFont -borderwidth 1
|
||||
style map . -background [list active #694418]
|
||||
style map . -foreground [list disabled #B2B2B2 active #FFE7CB]
|
||||
|
||||
|
||||
style default TButton -padding "10 4"
|
||||
|
||||
|
||||
style default $TNoteBook_Tab -padding {10 3} -font TkDefaultFont
|
||||
style map $TNoteBook_Tab \
|
||||
-background [list selected #FCB64F {} #FFE6BA] \
|
||||
|
@ -41,7 +41,7 @@ namespace eval tile::kroc {
|
|||
-arrowcolor { pressed #FFE7CB } \
|
||||
-relief { pressed sunken } \
|
||||
;
|
||||
|
||||
|
||||
style layout Vertical.TScrollbar {
|
||||
Scrollbar.trough -children {
|
||||
Scrollbar.uparrow -side top
|
||||
|
@ -50,7 +50,7 @@ namespace eval tile::kroc {
|
|||
Scrollbar.thumb -side top -expand true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
style layout Horizontal.TScrollbar {
|
||||
Scrollbar.trough -children {
|
||||
Scrollbar.leftarrow -side left
|
||||
|
@ -59,18 +59,18 @@ namespace eval tile::kroc {
|
|||
Scrollbar.thumb -side left -expand true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# Elements:
|
||||
#
|
||||
if {[package vsatisfies [package provide tile] 0.5]} {
|
||||
|
||||
|
||||
style element create Button.button image $Images(button-n) \
|
||||
-map [list \
|
||||
pressed $Images(button-p) \
|
||||
active $Images(button-h) \
|
||||
] -border 3 -sticky ew
|
||||
|
||||
|
||||
style element create Checkbutton.indicator image $Images(check-nu) \
|
||||
-map [list \
|
||||
{pressed selected} $Images(check-nc) \
|
||||
|
@ -79,7 +79,7 @@ namespace eval tile::kroc {
|
|||
active $Images(check-hu) \
|
||||
selected $Images(check-nc) \
|
||||
] -sticky w
|
||||
|
||||
|
||||
style element create Radiobutton.indicator image $Images(radio-nu) \
|
||||
-map [list \
|
||||
{pressed selected} $Images(radio-nc) \
|
||||
|
@ -88,15 +88,15 @@ namespace eval tile::kroc {
|
|||
active $Images(radio-hu) \
|
||||
selected $Images(radio-nc) \
|
||||
] -sticky w
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
|
||||
style element create Button.button pixmap -images [list \
|
||||
pressed $Images(button-p) \
|
||||
active $Images(button-h) \
|
||||
{} $Images(button-n) \
|
||||
] -border 3 -tiling tile
|
||||
|
||||
|
||||
style element create Checkbutton.indicator pixmap -images [list \
|
||||
{pressed selected} $Images(check-nc) \
|
||||
pressed $Images(check-nu) \
|
||||
|
@ -105,7 +105,7 @@ namespace eval tile::kroc {
|
|||
selected $Images(check-nc) \
|
||||
{} $Images(check-nu) \
|
||||
] -tiling fixed
|
||||
|
||||
|
||||
style element create Radiobutton.indicator pixmap -images [list \
|
||||
{pressed selected} $Images(radio-nc) \
|
||||
pressed $Images(radio-nu) \
|
||||
|
@ -114,7 +114,7 @@ namespace eval tile::kroc {
|
|||
selected $Images(radio-nc) \
|
||||
{} $Images(radio-nu) \
|
||||
] -tiling fixed
|
||||
|
||||
|
||||
}
|
||||
|
||||
#
|
||||
|
@ -141,7 +141,7 @@ namespace eval tile::kroc {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
style layout TRadiobutton {
|
||||
Radiobutton.border -children {
|
||||
Radiobutton.background
|
||||
|
@ -153,7 +153,7 @@ namespace eval tile::kroc {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} }
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
# or we don't have the right version of Tcl/Tk
|
||||
#
|
||||
# To use this automatically within tile, the tile-using application should
|
||||
# use tile::availableThemes and tile::setTheme
|
||||
# use tile::availableThemes and tile::setTheme
|
||||
#
|
||||
# $Id$
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
# or we don't have the right version of Tcl/Tk
|
||||
#
|
||||
# To use this automatically within tile, the tile-using application should
|
||||
# use tile::availableThemes and tile::setTheme
|
||||
# use tile::availableThemes and tile::setTheme
|
||||
#
|
||||
# $Id$
|
||||
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
#
|
||||
# ~ BACKGROUND
|
||||
#
|
||||
# Checkbuttons in toolbars have a very different appearance
|
||||
# Checkbuttons in toolbars have a very different appearance
|
||||
# than regular checkbuttons: there's no indicator, they
|
||||
# "pop up" when the mouse is over them, and they appear sunken
|
||||
# when selected.
|
||||
#
|
||||
# Tk added partial support for toolbar-style buttons in 8.4
|
||||
#
|
||||
# Tk added partial support for toolbar-style buttons in 8.4
|
||||
# with the "-overrelief" option, and TIP #82 added further
|
||||
# support with the "-offrelief" option. So to get a toolbar-style
|
||||
# support with the "-offrelief" option. So to get a toolbar-style
|
||||
# checkbutton, you can configure it with:
|
||||
#
|
||||
# checkbutton .cb \
|
||||
|
@ -34,11 +34,11 @@
|
|||
#
|
||||
# ~ DEMONSTRATION
|
||||
#
|
||||
# The tile built-in themes (default, "alt", windows, and XP)
|
||||
# The tile built-in themes (default, "alt", windows, and XP)
|
||||
# already include Toolbutton styles. This script will add
|
||||
# them to the "step" and "blue" themes as a demonstration.
|
||||
#
|
||||
# (Note: Pushbuttons and radiobuttons can also use the "Toolbutton"
|
||||
# (Note: Pushbuttons and radiobuttons can also use the "Toolbutton"
|
||||
# style; see demo.tcl.)
|
||||
#
|
||||
|
||||
|
@ -48,7 +48,7 @@ style theme settings "step" {
|
|||
# First, we use [style layout] to define what elements to
|
||||
# use and how they're arranged. Toolbuttons are pretty
|
||||
# simple, consisting of a border, some internal padding,
|
||||
# and a label. (See also the TScrollbar layout definition
|
||||
# and a label. (See also the TScrollbar layout definition
|
||||
# in demos/blue.tcl for a more complicated layout spec.)
|
||||
#
|
||||
style layout Toolbutton {
|
||||
|
@ -60,8 +60,8 @@ style theme settings "step" {
|
|||
}
|
||||
}
|
||||
|
||||
# (Actually the above isn't strictly necessary, since the same layout
|
||||
# is defined in the default theme; we could have inherited it
|
||||
# (Actually the above isn't strictly necessary, since the same layout
|
||||
# is defined in the default theme; we could have inherited it
|
||||
# instead.)
|
||||
#
|
||||
# Next, specify default values for element options.
|
||||
|
@ -71,17 +71,17 @@ style theme settings "step" {
|
|||
style default Toolbutton -width 0 -padding 1 -relief flat -borderwidth 2
|
||||
|
||||
#
|
||||
# Finally, use [style map] to specify state-specific
|
||||
# Finally, use [style map] to specify state-specific
|
||||
# resource values. We want a flat relief if the widget is
|
||||
# disabled, sunken if it's selected (on) or pressed,
|
||||
# disabled, sunken if it's selected (on) or pressed,
|
||||
# and raised when it's active (the mouse pointer is
|
||||
# over the widget). Each state-value pair is checked
|
||||
# in order, and the first matching state takes precedence.
|
||||
#
|
||||
style map Toolbutton -relief {
|
||||
disabled flat
|
||||
selected sunken
|
||||
pressed sunken
|
||||
selected sunken
|
||||
pressed sunken
|
||||
active raised
|
||||
}
|
||||
}
|
||||
|
@ -107,10 +107,10 @@ style theme settings "blue" {
|
|||
#
|
||||
style map Toolbutton -relief {
|
||||
disabled flat
|
||||
selected sunken
|
||||
pressed sunken
|
||||
selected sunken
|
||||
pressed sunken
|
||||
active raised
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Adjust the -padding at the same time, to enhance
|
||||
|
@ -138,7 +138,7 @@ style theme settings "blue" {
|
|||
}
|
||||
|
||||
#
|
||||
# ~ A final note:
|
||||
# ~ A final note:
|
||||
#
|
||||
# TIP #82 also says: "When -indicatoron is off and the button itself
|
||||
# is on, the relief continues to be hard-coded to sunken. For symmetry,
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
|
||||
[ TkHtml widget example ]
|
||||
|
||||
The directory page1 -- page4 are referd from "test" directory of
|
||||
original TkHtml extension's source archive.
|
||||
The directory page1 -- page4 are referd from "test" directory of
|
||||
original TkHtml extension's source archive.
|
||||
( see http://www.hwaci.com/sw/tkhtml/index.html )
|
||||
|
||||
You can see the HTML documents on the 'hv.rb' or 'ss.rb' sample script.
|
||||
|
||||
e.g.
|
||||
e.g.
|
||||
LD_LIBRARY_PATH=/usr/local/ActiveTcl/lib:$LD_LIBRARY_PATH /usr/local/bin/ruby ./hv.rb page1/index.html
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<tr>
|
||||
<td width="120" valign="TOP"><a href="/"><img src="image1" width="120" height="79" alt="Scriptics" border="0"></a></td>
|
||||
<td valign="top" width="548">
|
||||
|
||||
|
||||
<!-- Table to hold tabs -->
|
||||
<table cellpadding="0" cellspacing="0" border="0" width="548">
|
||||
<tr>
|
||||
|
@ -50,8 +50,8 @@
|
|||
}
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
|
||||
</SCRIPT>
|
||||
|
||||
<!-- MenuSubLevel Resource Software Extensions Tk -->
|
||||
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
|
@ -186,13 +186,13 @@ or higher.
|
|||
There are also an "<a href="#bltunoff">unofficial</a>" release for 8.0p2
|
||||
and 8.1a2 that were not done by the author. <a href="/live/annotate?url=http%3a%2f%2fwww%2etcltk%2ecom%2fblt%2f">Edit</a>
|
||||
<i><font size="-1">(October 26, 1999 09:43)</font></i><dt><b><a href="http://www.unifix-online.com/BWidget/index.html" ="">BWidget</a></b>
|
||||
<dd>A set of native Tk 8.x Widgets using Tcl8.x namespaces.
|
||||
<dd>A set of native Tk 8.x Widgets using Tcl8.x namespaces.
|
||||
The ToolKit is available under Unix/X11 and Windows.
|
||||
The BWidget(s) have a professional look&feel as in other
|
||||
well known Toolkits (Tix or Incr Widget) but the concept is
|
||||
radically different because everything is native
|
||||
The BWidget(s) have a professional look&feel as in other
|
||||
well known Toolkits (Tix or Incr Widget) but the concept is
|
||||
radically different because everything is native
|
||||
so no platform compilation, no compiled extension
|
||||
library are needed. The code is 100 Pure Tcl/Tk.
|
||||
library are needed. The code is 100 Pure Tcl/Tk.
|
||||
More 30 components : Notebook, PageManager, Tree, PanedWindow, ButtonBox,
|
||||
ScrollView, ComboBox, SpinBox, ListBox, SelectFont, SelectColor,
|
||||
ProgressBare ... <a href="/live/annotate?url=http%3a%2f%2fwww%2eunifix%2donline%2ecom%2fBWidget%2findex%2ehtml">Edit</a>
|
||||
|
@ -220,10 +220,10 @@ Unix). The console itself provides many more features than the standard console.
|
|||
<dd>This project seeks to integrate the Tk toolkit
|
||||
with the Frontier scripting language. <a href="/live/annotate?url=http%3a%2f%2fwww%2escriptmeridian%2eorg%2fprojects%2ftk%2f">Edit</a>
|
||||
<i><font size="-1">(August 19, 1999 15:36)</font></i><dt><b><a href="http://purl.oclc.org/net/nijtmans/img.html" ="">Img image format extension</a></b>
|
||||
<dd>This package enhances Tk, adding support for many other Image formats:
|
||||
<dd>This package enhances Tk, adding support for many other Image formats:
|
||||
BMP, XBM, XPM, GIF (with transparency), PNG,
|
||||
JPEG, TIFF and postscript.
|
||||
This is implemented as a shared library that can be dynamically loaded into
|
||||
This is implemented as a shared library that can be dynamically loaded into
|
||||
Tcl/Tk.
|
||||
<a href="/live/annotate?url=http%3a%2f%2fpurl%2eoclc%2eorg%2fnet%2fnijtmans%2fimg%2ehtml">Edit</a>
|
||||
<i><font size="-1">(November 21, 1999 06:35)</font></i><dt><b><a href="http://purl.oclc.org/net/oakley/tcl/mclistbox/index.html" ="">mclistbox - a multi-column listbox widget</a></b>
|
||||
|
@ -234,7 +234,7 @@ requires no other extensions; it is completely
|
|||
standalone. <a href="/live/annotate?url=http%3a%2f%2fpurl%2eoclc%2eorg%2fnet%2foakley%2ftcl%2fmclistbox%2findex%2ehtml">Edit</a>
|
||||
<i><font size="-1">(August 19, 1999 15:37)</font></i><dt><b><a href="http://home.t-online.de/home/dshepherd/tkview.htm" ="">MFC views C++ class for embedding Tk</a></b>
|
||||
<dd>The idea of embedding Tk in MFC windows always seemed very enticing but information was sparse and contradictory - on a
|
||||
scale between "very easy" and "not yet possible". The only thing for it was to have a go and lo, it wasn't that hard after all.
|
||||
scale between "very easy" and "not yet possible". The only thing for it was to have a go and lo, it wasn't that hard after all.
|
||||
CTkView is a C++ class which can be used in MFC SDI or MDI applications. An instance of CTkView hosts an embedded Tk
|
||||
toplevel widget and performs some management chores for the widget so that it can size, update and react correctly to Windows
|
||||
events. <a href="/live/annotate?url=http%3a%2f%2fhome%2et%2donline%2ede%2fhome%2fdshepherd%2ftkview%2ehtm">Edit</a>
|
||||
|
@ -244,7 +244,7 @@ standalone. <a href="/live/annotate?url=http%3a%2f%2fpurl%2eoclc%2eorg%2fnet%2fo
|
|||
Works with <b>8.0</b>
|
||||
<br>Download: <a href="http://www.cs.umd.edu/hcil/pad++/download.html">download.html</a><br>Pad++ is a Tk widget that provides a Zoomable User Interface (ZUI) that supports real-time interactive zoomable graphics in a fashion similar to the Tk Canvas widget. Pad++ supports tens of thousands of objects which include text, images, graphics, portals, lenses, simple html (and more), including transparency and rotation. <a href="/live/annotate?url=http%3a%2f%2fwww%2ecs%2eumd%2eedu%2fhcil%2fpad%2b%2b">Edit</a>
|
||||
<i><font size="-1">(August 19, 1999 15:39)</font></i><dt><b><a href="http://home.t-online.de/home/sesam.com/freeware.htm" ="">Progressbar</a></b>
|
||||
<dd>Progressbar is a megawidget written in pure tcl (ie: no compiling required - runs on all platforms Macintosh, Unix, Windows).
|
||||
<dd>Progressbar is a megawidget written in pure tcl (ie: no compiling required - runs on all platforms Macintosh, Unix, Windows).
|
||||
Its primary purpose is to show the progress of any action in percent. <a href="/live/annotate?url=http%3a%2f%2fhome%2et%2donline%2ede%2fhome%2fsesam%2ecom%2ffreeware%2ehtm">Edit</a>
|
||||
<i><font size="-1">(January 24, 2000 09:19)</font></i><dt><b><a href="http://jfontain.free.fr/" ="">scwoop (Simple Composite Widget Object Oriented Package)</a></b>
|
||||
<dd>Scwoop is a composite widget (also known as mega widget) extension to the great Tk widget library. Scwoop is
|
||||
|
@ -287,7 +287,7 @@ pie charts on a Tk canvas. <a href="/live/annotate?url=http%3a%2f%2fjfontain%2ef
|
|||
<dd>TkPrint is an extension that allows you to print from a
|
||||
Tk widget. <a href="/live/annotate?url=http%3a%2f%2fwww%2ecygnus%2ecom%2f%7eirox%2ftkprint%2f">Edit</a>
|
||||
<i><font size="-1">(October 11, 1999 09:58)</font></i><dt><b><a href="http://www.purl.org/net/hobbs/tcl/capp/" ="">TkTable Home Page</a></b>
|
||||
<dd>The TkTable widget. The <code>table</code> command creates a
|
||||
<dd>The TkTable widget. The <code>table</code> command creates a
|
||||
2-dimensional grid of cells. The table can use a Tcl array variable or Tcl
|
||||
|
||||
command for data storage and retrieval. <a href="/live/annotate?url=http%3a%2f%2fwww%2epurl%2eorg%2fnet%2fhobbs%2ftcl%2fcapp%2f">Edit</a>
|
||||
|
@ -303,14 +303,14 @@ command for data storage and retrieval. <a href="/live/annotate?url=http%3a%2f%2
|
|||
distribution. <a href="/live/annotate?url=http%3a%2f%2fftp%2eaustintx%2enet%2fusers%2fjatucker%2fTkTextmatrix%2fdefault%2ehtm">Edit</a>
|
||||
<i><font size="-1">(August 23, 1999 12:14)</font></i><dt><b><a href="http://www.cs.umd.edu/~bederson/Togl.html" ="">ToGL - a Tk Open GL widget</a></b>
|
||||
<dd>Togl is a Tk widget for OpenGL rendering. Togl is based on OGLTK, originally written by Benjamin Bederson at the
|
||||
University of New Mexico (who has since moved to the University of Maryland). Togl adds the new features:
|
||||
University of New Mexico (who has since moved to the University of Maryland). Togl adds the new features:
|
||||
<ul>
|
||||
<li> color-index mode support including color allocation functions
|
||||
<li> support for requesting stencil, accumulation, alpha buffers, etc
|
||||
<li> multiple OpenGL drawing widgets
|
||||
<li> OpenGL extension testing from Tcl
|
||||
<li> simple, portable font support
|
||||
<li> overlay plane support
|
||||
<li> color-index mode support including color allocation functions
|
||||
<li> support for requesting stencil, accumulation, alpha buffers, etc
|
||||
<li> multiple OpenGL drawing widgets
|
||||
<li> OpenGL extension testing from Tcl
|
||||
<li> simple, portable font support
|
||||
<li> overlay plane support
|
||||
</ul>
|
||||
Togl allows one to create and manage a special Tk/OpenGL widget with Tcl and render into it with a C program. That is,
|
||||
a typical Togl program will have Tcl code for managing the user interface and a C program for computations and
|
||||
|
@ -383,7 +383,7 @@ tree. The tree can be displayed horizontally or vertically.
|
|||
Works with <b>Tcl/Tk 8.0 or higher</b>
|
||||
<br>Download: <a href="http://www.purl.org/net/hobbs/tcl/script/widget/widget-0.9.tar.gz">widget-0.9.tar.gz</a><br>This is a package of
|
||||
megawidgets (i.e., compound widgets) that work almost exactly like Tk widgets.
|
||||
You can also build your own new megawidgets.
|
||||
You can also build your own new megawidgets.
|
||||
Includes: combobox, hierarchy, console, progressbar,
|
||||
tabnotebook, validating entry, pane geometry manager, baloon help. <a href="/live/annotate?url=http%3a%2f%2fwww%2epurl%2eorg%2fnet%2fhobbs%2ftcl%2fscript%2fwidget%2f">Edit</a>
|
||||
<i><font size="-1">(August 23, 1999 12:16)</font></i></dl>
|
||||
|
@ -419,15 +419,15 @@ tabnotebook, validating entry, pane geometry manager, baloon help. <a href="/liv
|
|||
over[9].src = "http://images.scriptics.com/images/homeMainRollover3.gif"
|
||||
|
||||
}
|
||||
|
||||
|
||||
function MakeImageArray(n) {
|
||||
this.length = n
|
||||
for (var i = 0; i<=n; i++)="i++)" {="{" this[i]="this[i]" ="" new="new" Image()="Image()" }="}" return="return" this="this" }="}" //="//" --="--">
|
||||
</SCRIPT><br>
|
||||
<font size="2">
|
||||
© 1998-2000 Scriptics Corporation. All rights reserved.
|
||||
<a href="/legal_notice.html">Legal Notice</a> | <A href="" /privacy.html="/privacy.html">
|
||||
<a href="/legal_notice.html">Legal Notice</a> | <A href="" /privacy.html="/privacy.html">
|
||||
Privacy Statement</a>
|
||||
</td></tr></table></td></tr></table>
|
||||
</Body>
|
||||
</Html>
|
||||
</Html>
|
||||
|
|
|
@ -218,7 +218,7 @@
|
|||
<h2 align="center">How To Compile Under Unix Without Installing Tcl</h2>
|
||||
<p><p>Specify the *.a file directly:</p>
|
||||
<blockquote><pre>
|
||||
$ gcc -I../tcl8.2.2/generic hello.c \
|
||||
$ gcc -I../tcl8.2.2/generic hello.c \
|
||||
../tcl8.2.2/unix/libtcl8.2.a -lm -ldl
|
||||
$ strip a.out
|
||||
$ ./a.out
|
||||
|
@ -226,7 +226,7 @@
|
|||
|
||||
<p>Or, tell the C compiler where to look for *.a files:</p>
|
||||
<blockquote><pre>
|
||||
$ gcc -I../tcl8.2.2/generic hello.c \
|
||||
$ gcc -I../tcl8.2.2/generic hello.c \
|
||||
-L../tcl8.2.2/unix -ltcl -lm -ldl
|
||||
$ strip a.out
|
||||
$ ./a.out
|
||||
|
@ -982,7 +982,7 @@ int main(int argc, char **argv){<br>
|
|||
<br clear="both"><p><hr></p>
|
||||
<h2 align="center">Linkage From Tcl To C</h2>
|
||||
<p><p align="center"><img src="image4"></p></p><p><ul><li>3rd parameter of Tcl_CreateCommand() is a pointer to the C subroutine
|
||||
that implements the command.</li></ul><ul><li>4th parameter to Tcl_CreateCommand() becomes the 1st parameter to
|
||||
that implements the command.</li></ul><ul><li>4th parameter to Tcl_CreateCommand() becomes the 1st parameter to
|
||||
the C routine whenever the Tcl command is executed.</li></ul><ul><li>1st parameter to Tcl_CreateCommand() must be a valid Tcl interpreter.
|
||||
The same pointer appears as the second parameter to the C routine
|
||||
whenever the Tcl command is executed.</li></ul></p>
|
||||
|
@ -990,7 +990,7 @@ int main(int argc, char **argv){<br>
|
|||
<br clear="both"><p><hr></p>
|
||||
<h2 align="center">Linkage From Tcl To C</h2>
|
||||
<p><p align="center"><img src="image5"></p></p><p><ul><li>5th parameter of Tcl_CreateCommand() is a pointer to the C subroutine
|
||||
that is called when the Tcl command is deleted.</li></ul><ul><li>4th parameter to Tcl_CreateCommand() becomes the 1st parameter to
|
||||
that is called when the Tcl command is deleted.</li></ul><ul><li>4th parameter to Tcl_CreateCommand() becomes the 1st parameter to
|
||||
the C routine.</li></ul></p>
|
||||
|
||||
<br clear="both"><p><hr></p>
|
||||
|
@ -1035,7 +1035,7 @@ pack .b</tt></small></td>
|
|||
|
||||
<br clear="both"><p><hr></p>
|
||||
<h2 align="center">Linkage From Tcl To C</h2>
|
||||
<p>The <tt>argc</tt> and <tt>argv</tt> parameters work just like in
|
||||
<p>The <tt>argc</tt> and <tt>argv</tt> parameters work just like in
|
||||
<tt>main()</tt></p><p>
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<tr><td valign="center">
|
||||
|
@ -1139,7 +1139,7 @@ pack .b</tt></small></td>
|
|||
<td></td><td></td><td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
<p><ul><li>Result should be the text of an error message if you
|
||||
<p><ul><li>Result should be the text of an error message if you
|
||||
return TCL_ERROR.</li></ul><ul><li>3rd argument to Tcl_SetResult() can be TCL_STATIC,
|
||||
TCL_DYNAMIC, TCL_VOLATILE, or a function pointer.</li></ul><ul><li>Also consider using Tcl_AppendResult().</li></ul><ul><li>Direct access to <tt>interp->result</tt> is deprecated.</li></ul><ul><li>See the man pages for details.</li></ul></p>
|
||||
|
||||
|
@ -1443,7 +1443,7 @@ int main(int argc, char **argv){<br>
|
|||
<h2 align="center">Initialization Scripts</h2>
|
||||
<p><ul><li>Run the mini TCLSH implemented above and execute the <tt>parray</tt> command</li></ul><ul><li>It doesn't work! What's wrong? </p></li></li></ul><ul><li><tt>parray</tt> is really a Tcl proc that is read in when the
|
||||
interpreter is initialized. </p></li></li></ul><ul><li><tt>parray</tt> (and several other commands) are stored in a
|
||||
handful of "Initialization Scripts" </p></li></li></ul><ul><li>All the initialization scripts are stored in the
|
||||
handful of "Initialization Scripts" </p></li></li></ul><ul><li>All the initialization scripts are stored in the
|
||||
"Tcl Library" - a directory on the host
|
||||
computer. </p></li></li></ul><table><tr><td valign="top"><img src="image3"></td>
|
||||
<td valign="top"><b>Invoke the Tcl_Init() function to locate and read the
|
||||
|
@ -1668,8 +1668,8 @@ int main(int argc, char **argv){<br>
|
|||
</ul></li></ul><ul><li>Allows us to implement a virtual filesystem that overlays the
|
||||
real filesystem.</li></ul><ul><li>The virtual filesystem contains all the initialization scripts
|
||||
as compiled-in strings. The initialization scripts look like
|
||||
they are resident on disk even though they are built in.</li></ul><ul><li>These functions first appeared in Tcl8.0.3.
|
||||
Presumably to support TclPro Wrapper.</li></ul><ul><li>The only documentation is comments on the code.
|
||||
they are resident on disk even though they are built in.</li></ul><ul><li>These functions first appeared in Tcl8.0.3.
|
||||
Presumably to support TclPro Wrapper.</li></ul><ul><li>The only documentation is comments on the code.
|
||||
See the Tcl source file <tt>generic/tclIOUtil.c</tt></li></ul></p>
|
||||
<br clear="both"><p><hr></p>
|
||||
<h2 align="center">The <tt>TclStatInsertProc()</tt> Function</h2>
|
||||
|
@ -1997,7 +1997,7 @@ int main(int argc, char **argv){<br>
|
|||
<h2 align="center">Compiling "Hello, World!" For Tk</h2>
|
||||
<p><p><b>Unix:</b></p>
|
||||
<blockquote><pre>
|
||||
$ gcc hello.c -ltk -L/usr/X11R6/lib \
|
||||
$ gcc hello.c -ltk -L/usr/X11R6/lib \
|
||||
-lX11 -ltcl -lm -ldl
|
||||
$ ./a.out</pre></blockquote>
|
||||
|
||||
|
@ -2008,7 +2008,7 @@ int main(int argc, char **argv){<br>
|
|||
|
||||
<p><b>Windows using Mingw32:</b></p>
|
||||
<blockquote><pre>
|
||||
C:> gcc -mno-cygwin hello.c -mwindows \
|
||||
C:> gcc -mno-cygwin hello.c -mwindows \
|
||||
-ltk82 -ltcl82 -lm
|
||||
C:> a.exe</pre></blockquote></p>
|
||||
<br clear="both"><p><hr></p>
|
||||
|
@ -2162,7 +2162,7 @@ int main(int argc, char **argv){<br>
|
|||
<li> FreeWrap - http://www.albany.net/~dlabelle/freewrap/freewrap.html </li>
|
||||
<li> Wrap - http://members1.chello.nl/~j.nijtmans/wrap.html </li>
|
||||
</ul></li></ul><ul><li>No C compiler required!</li></ul><ul><li>TclPro will convert Tcl script into bytecode so that it cannot be
|
||||
easily read by the end user. FreeWrap encrypts the scripts.</li></ul><ul><li>FreeWrap uses compression on its executable.
|
||||
easily read by the end user. FreeWrap encrypts the scripts.</li></ul><ul><li>FreeWrap uses compression on its executable.
|
||||
Wrap uses compression on both the executable and on the bundled script files.</li></ul><ul><li>Usually include extensions like winico and/or BLT</li></ul></p></td></tr></table>
|
||||
|
||||
<br clear="both"><p><hr></p>
|
||||
|
@ -2170,8 +2170,8 @@ int main(int argc, char **argv){<br>
|
|||
<table><tr><td valign="top"><img src="image9"></td>
|
||||
<td valign="top"><p><ul><li>Mix C/C++ with Tcl/Tk into a standalone binary</li></ul>
|
||||
<ul><li><tt>mktclapp</tt> generates an application initialization file
|
||||
that contains Tcl scripts as strings and makes all necessary calls
|
||||
to <tt>Tcl_Init</tt>, <tt>Tcl_CreateCommand</tt>,
|
||||
that contains Tcl scripts as strings and makes all necessary calls
|
||||
to <tt>Tcl_Init</tt>, <tt>Tcl_CreateCommand</tt>,
|
||||
<tt>Tcl</tt>*<tt>InsertProc</tt>, etc.</li></ul><ul><li>Features to make it easier to write new Tcl command in C</li></ul><ul><li><tt>xmktclapp.tcl</tt> provides a GUI interface to <tt>mktclapp</tt></li></ul><ul><li>http://www.hwaci.com/sw/mktclapp/</li></ul></p></td></tr></table>
|
||||
|
||||
<br clear="both"><p><hr></p>
|
||||
|
@ -2400,7 +2400,7 @@ int ET_OBJCOMMAND_add2(ET_OBJARGS){<br>
|
|||
<h2 align="center">Locations Of Libraries</h2>
|
||||
<table><tr><td valign="top"><img src="image13"></td>
|
||||
<td valign="top"><p><ul><li>Tells mktclapp where to look for script libraries.</li></ul><ul><li>All Tcl scripts in the indicated directories are
|
||||
compiled into the <tt>appinit.c</tt> file.</li></ul><ul><li>Comments and extra white-space are removed.
|
||||
compiled into the <tt>appinit.c</tt> file.</li></ul><ul><li>Comments and extra white-space are removed.
|
||||
There is no way to turn this off.</li></ul></p></td></tr></table>
|
||||
|
||||
<br clear="both"><p><hr></p>
|
||||
|
@ -2607,10 +2607,10 @@ int main(int argc, char **argv){</tt></small></td>
|
|||
|
||||
<br clear="both"><p><hr></p>
|
||||
<h2 align="center">Mktclapp Initialization Sequence</h2>
|
||||
<p><ul><li>Initialization starts when the <tt>Et_Init()</tt>
|
||||
<p><ul><li>Initialization starts when the <tt>Et_Init()</tt>
|
||||
function is called either by client code or by
|
||||
the <tt>main()</tt> that mktclapp generates</li></ul><ul><li>Create the main Tcl interpreter</li></ul><ul><li>Construct the virtual filesystem overlay by redefining
|
||||
the <tt>source</tt> command and by using the
|
||||
the <tt>source</tt> command and by using the
|
||||
<tt>Tcl</tt>*<tt>InsertProc()</tt> functions</li></ul><ul><li>Call <tt>Et_PreInit()</tt> if the client defines it</li></ul><ul><li>Call <tt>Tcl_Init()</tt> and <tt>Tk_Init()</tt></li></ul><ul><li>Call <tt>Tcl_CreateCommand()</tt> and <tt>Tcl_CreateObjCommand()</tt>
|
||||
for every <tt>ET_COMMAND_</tt>* and <tt>ET_OBJCOMMAND_</tt>* function
|
||||
in the client code</li></ul><ul><li>Call <tt>Et_AppInit()</tt> if the client defines it</li></ul><ul><li>Run the main Tcl script if there is one</li></ul><ul><li>Call <tt>Et_CustomMainLoop()</tt> if defined by client code or
|
||||
|
@ -2680,7 +2680,7 @@ void ErrMsg(char *zMsg){<br>
|
|||
<ul><li>
|
||||
The command that gets executed is:
|
||||
<pre>
|
||||
tk_messageBox -icon error -msg \
|
||||
tk_messageBox -icon error -msg \
|
||||
{Syntax error near "}"} -type ok
|
||||
</pre>
|
||||
</li></ul>
|
||||
|
@ -2708,7 +2708,7 @@ void ErrMsg(char *zMsg){<br>
|
|||
<p><ul><li>The <tt></tt> puts a backslash before all characters that
|
||||
are special to Tcl</li></ul><ul><li>The Tcl command becomes:
|
||||
<pre>
|
||||
tk_messageBox -icon error -msg \
|
||||
tk_messageBox -icon error -msg \
|
||||
"Syntax error near \"\}\"" -type ok
|
||||
</pre></li></ul></p>
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ MODIFICATIONS.
|
|||
|
||||
GOVERNMENT USE: If you are acquiring this software on behalf of the
|
||||
U.S. government, the Government shall have only "Restricted Rights"
|
||||
in the software and related documentation as defined in the Federal
|
||||
in the software and related documentation as defined in the Federal
|
||||
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
|
||||
are acquiring the software on behalf of the Department of Defense, the
|
||||
software shall be classified as "Commercial Computer Software" and the
|
||||
|
@ -38,4 +38,4 @@ Government shall have only "Restricted Rights" as defined in Clause
|
|||
252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the
|
||||
authors grant the U.S. Government and others acting in its behalf
|
||||
permission to use and distribute the software in accordance with the
|
||||
terms specified in this license.
|
||||
terms specified in this license.
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
The script 'demo.rb' is based on 'demo.tcl' of Tcl/Tk's 'Img' extention.
|
||||
The script 'demo.rb' is based on 'demo.tcl' of Tcl/Tk's 'Img' extention.
|
||||
Image data in 'demo.rb' is those of 'demo.tcl'.
|
||||
Please read 'license_terms_of_Img_extension' file.
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
The scripts and image files in this directory are based on demo files
|
||||
of Tcl/Tk's TreeCtrl extention.
|
||||
of Tcl/Tk's TreeCtrl extention.
|
||||
|
|
|
@ -1 +1 @@
|
|||
win32ole.o : win32ole.c $(hdrdir)/ruby.h $(hdrdir)/config.h $(hdrdir)/defines.h
|
||||
win32ole.o : win32ole.c $(hdrdir)/ruby.h $(hdrdir)/config.h $(hdrdir)/defines.h
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue