ewipe-1.2.0/0040755000076400001440000000000007065161356012377 5ustar sekisitausersewipe-1.2.0/Changes.jp0100644000076400001440000002155207065161356014304 0ustar sekisitausers■ EWIPE 変更履歴 Ver.1.2.0 (2000.3.20) 正式バージョン Ver.1.1.6 (2000.3.12) MagicPoint 形式ファイルの出力機能追加 ユーザ定義フォントの表示不具合の修正 Ver.1.1.5 (2000.3.11) フォント変更でユーザフォントが反映されない不具合を修正 Ver.1.1.4 (1999.12.26) 画像の横に文字を表示する figure コマンドを追加(Viewer のみ) Ver.1.1.3 (1999.9.12) 表のフォントのサイズ・色の変更機能追加 フォントサイズによる罫線描画処理の修正 Ver.1.1.2 (1999.8.8) フォント処理の修正 Ver.1.1.1 (1999.3.28) アニメーションのコマ送り機能追加 pause の不具合修正 Ver.1.1.0 (1999.1.10) 正式バージョン Ver.1.0.4 (1998.12.17) 日本語に依存した部分を修正 -e オプション追加 Ver.1.0.3 (1998.7.22) 自動ナンバリング機能の追加 Ver.1.0.2 (1998.5.4) エディタ用のフォントを Tcl/Tk デフォルトフォントに変更 Tcl/Tk 8.0 用のフォント定義を追加 Viewer のキー設定の修正(Windows) Ver.1.0.1 (1998.4.19) バージョン表示処理の変更 -kanjifont 処理の変更 Ver.1.0.0 (1998.3.30) 正式バージョン テキスト編集機能の改良 ラベル挿入・追加時の不具合の修正 ラベル貼付処理の不具合の修正 文字色変更処理の不具合の修正 フォント変更処理の不具合の修正 Ver.0.7.4 (1998.3.28) pause コマンド追加 編集画面のスクロール処理の追加 文字色変更(etc)処理で tk_chooseColor を使用 フォント定義処理の変更 経過時間の計算方法の変更 Ver.0.7.3 (1998.3.19) 時刻の取得方法を変更 経過時間リセット機能の追加 Ver.0.7.2 (1998.2.24) item,subitem,subsubitem,subsubsubitem の拡張へのエディタの対応 時間表示機能追加 exec コマンド追加(Viewer のみ) move コマンドの不具合の修正 ファイル保存処理の不具合の修正 Ver.0.7.1 (1998.2.20) animation ラベル追加 ファイル保存処理の改良 属性変更機能追加(move をサポート) Ver.0.7.0 (1998.2.13) 正式バージョン ポインタ変更時の不具合の修正 pause コマンドの不具合の修正 cleft コマンドの不具合の修正 ラベル挿入・追加時の不具合の修正 Ver.0.6.6 (1998.1.28) item,subitem,subsubitem,subsubsubitem コマンドの拡張(Vierer のみ) メニューに Title type を追加 タイトルに新しい表示形式を追加 Ver.0.6.5 (1998.1.19) Viewer-Editor 連動機能の不具合の修正 Viewer にキー操作によるページジャンプ機能追加 ラベル挿入時の不具合の修正 Windows95 に対応(一部に不具合あり) Ver.0.6.4 (1998.1.12) ページ番号表示切替えの不具合の修正 ラベル挿入・追加の操作の改良 ページ表示処理の改良(Editor と Viewer の操作を区別) pause コマンド追加(Viewer のみ) Viewer の操作の改良 エディタで任意のフォント名を入力できるように変更 Ver.0.6.3 (1998.1.5) move コマンド追加(Viewer のみ) 文字の大きさと色を文の途中で変更できる処理を追加(Viewer のみ) Viewer でタイトル一覧後のページ表示の不具合の修正 textbox の表示位置を修正 viewer redraw を off にしたときの不具合の修正 Ver.0.6.2 (1997.12.29) animation コマンド追加(Viewer のみ) 落書きモード切替え時の不具合の修正 Viewer でページ切替え時にカーソルが時計になるように改良 -v オプションで起動した場合の相対パス処理の不具合の修正 Ver.0.6.1 (1997.12.22) ページ番号表示処理の不具合の修正 Viewer のページ操作と編集画面の連動 (by うめしまさん) Ver.0.6.0 (1997.12.5) 正式バージョン Ver.0.5.7 (1997.12.1) オプションメニューの不具合の修正 ポインタ設定の不具合の修正 ポインタ選択時に normal を指定したときの処理を変更 Ver.0.5.6 (1997.11.25) ポインタ色の変更機能追加 落書き機能のペン色変更機能追加 ポインタ選択処理の改良 オプションメニューの不具合の修正 落書き機能の不具合の修正 Ver.0.5.5 (1997.11.20) 落書き機能の改良 (by うめしまさん) ページ番号表示を変更したときの処理の修正 ページ番号表示切替え追加 Ver.0.5.4 (1997.11.17) Viewer に落書き機能追加 ポインタ変更機能追加 オプション保存の不具合の修正 Ver.0.5.3 (1997.11.10) フォント変更処理追加 編集画面などのサイズの調整 label,color ボタンの処理の変更 Ver.0.5.2 (1997.11.4) Viewer の表示処理改良 データ形式の拡張 (フォント指定) HTML 形式の保存の改良 (表出力追加,背景追加,text・textbox 変更) (by 武藤@奈良高専さん) コマンドラインから新規作成のデータを保存する場合の不具合の修正 ewipe 起動パスの設定方法の変更 目次編集画面の改良 Ver.0.5.1 (1997.10.28) ファイル保存処理の改良 (バックアップファイル作成) Viewer にヘルプ表示機能追加 (by いしい@ソニーさん) symbol の記号追加 Ver.0.5.0 (1997.10.28) 正式バージョン Ver.0.4.8 (1997.10.24) 行削除の不具合の修正 目次ボタンの制御処理追加 相対パス指定の不具合の修正 Ver.0.4.7 (1997.10.23) エディタにおける table の表示の修正 symbol 編集時に文字色が戻る不具合の修正 ラベル変更処理の改良 ページ変更ボタンの制御処理追加 (by うめしまさん) Viewer のタイトル一覧の表示を一部変更 Ver.0.4.6 (1997.10.21) Viewer のページ番号表示位置を修正 メニュー表示 (状態の制御) の修正 タイトル表示の不具合の修正 テキスト編集時に文字色が戻る不具合の修正 table コマンド追加 table 編集機能追加 Ver.0.4.5 (1997.10.21) 800x600 表示モード追加 text,textbox コマンド追加 pp,rp コマンドを left,right に変更 label メニューから etc を削除 画像ファイル選択時の相対パス指定の不具合の修正 背景選択時の相対パス指定の不具合の修正 Viewer における相対パスで指定した画像表示の不具合の修正 エディタのテキスト表示に関する修正 Viewer の終了処理の変更 ページジャンプ指定の不具合の修正 行削除の不具合の修正 Ver.0.4.4 (1997.10.17) 画像ファイル選択における相対パスへの対応 ファイルダイアログに関する操作の改良 ファイル再読込み時の Viewer の動作の変更 背景選択機能の追加 エディタ表示・非表示切替え機能の追加 Ver.0.4.3 (1997.10.15) 動作環境を Tcl7.6/Tk4.2 以上に変更 selectfile.tcl を削除 Ver.0.4.2 (1997.10.15) Viewer のみを表示する機能を追加 起動時オプションの追加 (by いしい@ソニーさん) 背景の表示方法に背景を埋める表示を追加 Ver.0.4.1 (1997.10.14) Tk4.2 使用時のファイルダイアログに関する不具合の修正 Ver.0.4.0 (1997.10.13) 設定ファイルによるオプション設定機能の追加 初期状態のページ定義機能の追加 pagen コマンド削除 背景に gif ファイルを表示する機能を追加 データ形式変更 (オプション保存機能を追加) Ver.0.3.6 (1997.10.11) symbol コマンド編集時の不具合の修正 ファイルを新規に保存する場合の動作の修正 pict の表示処理の不具合の修正 ファイル操作時におけるディレクトリ処理の修正 pict コマンドの編集時の処理を変更 目次編集時のページ削除の不具合の修正 Ver.0.3.5 (1997.10.7) symbol コマンド追加 Ver.0.3.4 (1997.9.29) EWIPE Viewer の自動再描画機能の追加 table コマンドの仕様変更 表の枠の表示の不具合の修正 Ver.0.3.3 (1997.9.24) バージョンの表示を追加 table,symbol コマンド追加 (EWIPE Viewer 専用,暫定版) Ver.0.3.2 (1997.9.16) 表示位置の調整 (viewer) ページ指定方法の変更 HTML のカラー化 (WIPE 色) 機能を追加 HTML の文字の大きさ変更機能を追加 Ver.0.3.1 (1997.9.11) 目次画面のページ番号の表示の修正 HTML ファイル出力時の表示言語オプションへの対応 ボタン名の変更 (View → Viewer) Ver.0.3.0 (1997.9.9) 表示機能 (EWIPE Viewer) の追加 WIPE (WIPE2) 起動コマンドの削除 pagen にラベル変更した場合の不具合の修正 Ver.0.2.0 (1997.9.1) HTML 形式でファイルを出力する機能を追加 tk4.2 以降使用時は tk 標準のファイルダイアログを使用 ページ番号表示方法の変更 Ver.0.1.1 (1997.8.29) pagen からラベル変更した場合の不具合の修正 ページ番号の表示の不具合の修正 Ver.0.1.0 (1997.8.21) ページ先頭のテキスト追加時 (add) の不具合の修正 ページ番号の表示の変更 (先頭ページ = 1) wipe2.1997081902.diff への対応 rp の追加 pagen の追加 center の色指定処理の変更 Ver.0.0.7 (1997.7.29) 色変更時の不具合の修正 ファイルセレクタの変更 ページ先頭のテキスト追加時にタイトル入力にならない不具合の修正 ページ追加時にタイトル入力にならない不具合の修正 Ver.0.0.6 (1997.6.11) メニューに新規作成を追加 ファイル選択後のカラー変更ボタンの制御 ファイル読込み時の初期化処理の修正 ファイル読込み時のカーソル処理の修正 ラベル、テキストが空白の場合、ファイル保存時に label に変換 テキスト入力時の不具合の修正 挿入、追加、頁挿入、頁追加ボタンのダブルクリック時のエラーの修正 Ver.0.0.5 (1997.5.28) ダブルクリックによるメニュー表示処理の変更 タイトルの入力処理変更(サブタイトル入力追加) ファイル選択処理の変更 編集中のファイル名の表示の追加 Ver.0.0.4 (1997.5.23) ファイルに変更がない場合の終了時の処理の修正 カラー変更時にキャンセルした場合のエラーの修正 テキスト表示に関する不具合の修正 ダブルクリックによるメニューの不具合の修正 unofficial.patch 用の pict コマンドの追加 Ver.0.0.3 (1997.5.21) メニューからカラー変更した場合のエラーの修正 新規ファイル名を引数として実行した場合のエラーの修正 ダイアログボックスのメッセージの修正 ページ編集の前に目次を表示した場合のエラーの修正 メニュー、コマンドの日本語表示の追加 Ver.0.0.2 (1997.5.17) 任意のカラー変更を追加 Ver.0.0.1 (1997.5.16) 初版完成 ewipe-1.2.0/README0100644000076400001440000002566007065161356013265 0ustar sekisitausers****************************************** Manual for EWIPE (Extended WIPE) ****************************************** Hiromasa Sekishita first edition Dec.20, 1998 last updated Mar.12, 2000 *** Introduction EWIPE is a presentatin tool for UNIX based on Tcl/Tk. You can make and edit data by use of GUI. *** Required environment EWIPE requires Tcl7.6/Tk4.2 or later for UNIX. (It also works on Windows95.) *** Install At first, confirm a path for wish. Next, copy uncompress files to a adequate directory. When I explain a way of install, I consider a target directory for copying as /usr/local/lib/ewipe. If you use EWIPE on the other directory of one which files are installed, you need to set a environment parameter or change a file of ewipe. * The case of setting a environment parameter For example, if you use csh, set as follows. % setenv EWIPEPATH /usr/local/lib/ewipe * The case of changing a file of ewipe Change the 30th line of ewipe as follows. from set PATH . to (a absolute path) set PATH /usr/local/lib/ewipe ^^^^^^^^^^^^^^^^^^^^ * If you don't find tclIndex in the directory which includes ewipe, or if you want to make tclIndex again, execute tclsh or wish, and command as follows. % auto_mkindex . *.tcl % exit *** Way of starting EWIPE starts working when you command as folows. ewipe [filename for editing] EWIPE Viewer also starts working directly when you command as follows. ewipe -v [filename] ewipe -view [filename] *** Options for starting There are options as follows. -V, -Version, -version : showing a version information of EWIPE -e : for English -h, -help : showing a easy help message *** How to use * Editing * Menu File : concerned with files New : makeing a new file Load : loading a file Save : saving a file Save as HTML: saving a file as HTML format Save as MGP : saving a file as MagicPoint format About EWIPE : showing a version information of EWIPE Exit : exiting You are asked whether you save the file before EWIPE exits. Option: various setting Language : changing a language Japanese : Japanese English : English Path type : selecting shown path in selecting files absolute path : absolute path relative path : relative path Page number : setting for showing page number on EWIPE Viewer off : not shown on : shown Pointer : choosing a cursor which is used as a pointer on Viewer Select background : choosing a background of Viewer Background type : selecting a way of showing background normal : showing on center of view tiled : showing as tiled Title type : selecting a way of showing title box : showing box around title text line : showing title with underline HTML color : setting for a text color in HTML Mono : monochrome Color : color HTML size : setting for a text size in HTML Normal : normal () Large : large () Viewer size : selecting a window size of Viewer : 640x480 : 800x600 Viewer redraw : validateing the function of auto redraw on EWIPE Viewer off : off on : on View mode : EWIPE Viewer is displayed, Editor is not displayed Save options : saving options off : options are not saved on : options are saved * Buttons on top of view (from leftside) label : changing a label on a cursor position Choose a label from the menu. insert: inserting new line previous to a cursor add : inserting new line next to a cursor cut : removing a line pointed by a cursor The line is temporarily stored. paste : inserting the stored line previous to a cursor edit : editing a text pointed by a cursor If a label is "pict", input a filename. If it is "table", edit a table. up : moving a line pointed by a cursor up down : moving a line pointed by a cursor down color : changing a text color of a line pointed by a cursor Choose a color from the menu. You can change other color by choosing "etc". Input a color name or a code as #RRGGBB. font : changing a text font of a line pointed by a cursor Choose a font sizr from the menu. You can change other font by choosing "etc". attr : setting a line pointed by a cursor as "moving text" * Buttons on bottom of the view (from leftside) Viewer : EWIPE Viewer window is opened If it has already opened, the preview on it is updated. contents : showing the table of contents page No. : the current page number You can input a page number directly. prev : showing previous page next : showing next page insertpage : making new page previous to the current page addpage : making new page next to the current page * Editing pages by using a mouse left button : pointing a line order to edit right button : canceling to point double-clicking left button : for label : changing a label for text : editing a text input a file name if the label is "pict". edit a table if the label is "table". for background : making new line in the position pointed by the cursor * Editing a table of contents by using a mouse left button : pointing a page double-clicking left button : changing the page center button : moving the page pointed by cursor previous to the page clicked now * Editing a table Adjusting location for each column is set by entering following charactor to top input box. l : left adjust c : centering r : right adjust If the other charactor is entered, "c" is set as default. The size of table can be adjusted by buttons on bottom. Maximum size is 10x10. Input Spaces are output directly. * Buttons addrow : Adding a row on last row delrow : Deleting a last row addcolumn : Adding a column on last column delcolumn : Deleting a last column * Choosing a pointer pointer : The shape of cursor used for pointer of Viewer forground color : Foreground color of pointer (inside color of cursor) background color : Background color of pointer (edge color of cursor) left pen color : Drawn line color by clicking left button right pen color : Drawn line color by clicking right button * Buttons Select : Showing the menu for setting Test : Testing the setting You can set a color by inputting to input box directly, in addition to selecting from menu. * How to use EWIPE Viewer * Operation on Page View Mode Next page : n, Right cursor, Space, Clicking left button Previous page : p, Left cursor, Delete, Backspace, Clicking right button Title list : Enter, Clicking center button Showing help : h Show/Hide editor : e Showing page number : s Showing time : t Resetting time : r Closing EWIPE Viewer : q * Operation on Title View Mode Selecting page : Double clicking left button, Enter Cancel : Clicking right button, ESC pen : Drawing line mode (same as "Shift") page : Showing page number (same as "s") help : Showing help (same as "h") cancel: Cancel * Drawing Line Mode When you hit Shift key on Page View Mode or push "Pen" button on Title View Mode, the shape of cursor changes to pen and you can draw free line on page. You can draw it by left or right button and delete by center button (or "clear" button on bottom of page). You can finish this mode by hitting Shift key again (or "Return" button on bottom of page). *** labels title title and sub title item * item subitem # item subsubitem - item subsubsubitem + item left left adjust center centering right right adjust pict show of picture (gif format) symbol symbol text A text including space, tab and enter is showed directly. textbox A text is showd in the box on the center. table show of table animation show of animation pause pause *** configurating environment You can define states of options in starting EWIPE and well used format as configuration file. The configuration file has to be placed in home directory as named ".ewipe". "dot.ewipe" is its sample. So you can use it by copying. More details are described in "dot.ewipe". *** New version of EWIPE You can download a new version of EWIPE from http://www.jnet-jp.to/~sekisita/ewipe/ *** Copyright EWIPE complies with GNU GENERAL PUBLIC LICENSE Version 2. The copyright of this document is belong to me. You can distribute it freely. But if you have any trouble by it, I am not in charge of that. *** Acknowledgement I thank Mr.Fukuda for his cooperation. I thank members of wipe-ml, Mr.Ueki, Mr.Umeshima, Mr.Ishioka, Mr.Yakuwa, Mr.Ishii, Mr.Mutoh, Mr.Itojin, Mr.Tange for their advices, and thank everyone who use EWIPE. WIPE provides my making EWIPE with useful information. I thank Mr.Utashiro for his agreeing about an announcement of EWIPE. EWIPE has improved by cooperation of WIPE-ML members. I hope it will continue to be improved by them. (*) WIPE (Wide Instant Presentation Environment) is a presentation tool which is made by Mr.Utashiro. (*) WIPE2 is a improved program based on WIPE which is made by Mr.Ishioka. ewipe-1.2.0/README.jp0100644000076400001440000002764607065161356013703 0ustar sekisitausers****************************************** EWIPE (Extended WIPE) マニュアル ****************************************** 関下 浩正 初版 1997 年 5 月 17 日 更新 2000 年 3 月 12 日 ■ はじめに EWIPE は、Tck/Tk ベースの UNIX 用プレゼンテーションツールです。 GUI 画面でデータを作成、編集することができます。 ■ 動作環境 UNIX の Tcl7.6/Tk4.2 以降で動作します。 (正常な動作を保証しませんが、Windows95 でも動作可能です。) ■ インストール 最初に、wish にパスが通っていることを確認して下さい。 次に、展開したファイルを適当なディレクトリにコピーして下さい。 ここでは、コピー先を /usr/local/lib/ewipe として説明します。 ewipe のあるディレクトリ以外から使う場合には、環境変数 EWIPEPATH を設定するか、ewipe ファイルを変更して下さい。 □ 環境変数を設定する場合 例えば、csh の場合、 % setenv EWIPEPATH /usr/local/lib/ewipe のようにします。 □ ewipe ファイルを変更する場合 ewipe の 30 行目の set PATH . の部分を絶対パスに変更して下さい。 set PATH /usr/local/lib/ewipe ^^^^^^^^^^^^^^^^^^^^ ○ ewipe のあるディレクトリに tclIndex がない場合、 または、tclIndex を作り直したい場合。 tclsh または wish を起動し、 % auto_mkindex . *.tcl % exit とします。 ■ 起動方法 EWIPE の起動方法は、 ewipe [編集ファイル名] です。また、EWIPE Viewer を直接起動する方法は、 ewipe -v [データファイル名] ewipe -view [データファイル名] です。 ■ 起動時オプション 以下のようなオプションがあります。 -V, -Version, -version :EWIPE のバージョン表示 -e :英語版用 -h, -help :簡易ヘルプ表示 ■ 操作方法 (メニューやボタンの名称は、表示言語を英語に設定したときのものです。) □ 編集画面 ○ メニュー File :ファイルに関する操作 New :新規作成 Load :ファイルを読み込む。 Save :ファイルを保存する。 Save as HTML:HTML 形式でファイルを保存する。 Save as MGP :MagicPoint 形式でファイルを保存する。 About EWIPE :EWIPE のバージョンを表示する。 Exit :EWIPE を終了する。 終了する前にファイルを保存するかどうか確認する。 Option:各種設定 Language :メニュー、ボタンの表示言語の変更 Japanese :日本語 English :英語 Path type :ファイル選択後のパス表示 absolute path :絶対パスで表示 relative path :相対パスで表示 Page number :EWIPE Viewer でのページ番号表示の設定 off :非表示 on :表示 Pointer :Viewer のポインタとして使用するカーソルの選択 Select background :Viewer の背景の選択 Background type :背景の表示方法 normal :画面中央に表示 tiled :画面の大きさになるように並べて表示 Title type :タイトルの種類 box :四角の中にタイトルを表示 line :タイトルの下に線を表示 HTML color :HTML 出力時の文字色 Mono :モノクロ Color :カラー (WIPE 色) HTML size :HTML 出力時の文字の大きさ Normal :標準 () Large :大 () Viewer size :Viewer ウィンドウの大きさ :640x480 :800x600 Viewer redraw :EWIPE Viewer の自動再描画の設定 off :自動再描画 off on :自動再描画 on View mode :EWIPE Viewer を表示、エディタを非表示 Save options :オプションの保存 off :保存しない on :保存する ○ 画面上部のボタン(左から順に) label :カーソル行のラベルを変更する。 メニューからラベルを選ぶ。(ラベル一覧参照) insert:カーソルの前に新しい行を挿入する。 add :カーソルの後に新しい行を挿入する。 cut :カーソル行を削除する。削除された行は一時的に保存される。 paste :保存されている行をカーソルの前に挿入する。 edit :カーソル行のテキストを編集する。 ラベルが pict のときはファイル名を指定する。 ラベルが table のときは表を作成する。 up :カーソル行を一行上に移動させる。 down :カーソル行を一行下に移動させる。 color :カーソル行のテキストの文字色を変更する。 メニューから色を選ぶ。etc はメニュー以外の色を指定できる。 色名または #RRGGBB などで指定する。 font :カーソル行のフォントを変更する。 メニューからフォントサイズを選ぶ。etc はメニュー以外の フォントを指定できる。入力画面の上段が英数字フォント名、 下段が漢字フォント名。 attr :カーソル行のテキストを「文字の移動」表示にする。 ○ 画面下部のボタン(左から順に) Viewer :EWIPE Viewer の起動。 すでに起動されている場合は、編集内容に合わせて EWIPE Viewer が更新される。 contents :目次(各ページの1行目)を一覧表示する。 ページ番号 :編集中のページ番号。直接ページを指定できる。 prev :前のページを表示する。 next :次のページを表示する。 insertpage :編集中のページの前に新しいページを挿入する。 addpage :編集中のページの後に新しいページを挿入する。 ○ ページ編集中のマウス操作 左クリック:編集する行を指定する。 右クリック:カーソルを取り消す。 左ダブルクリック: ラベルに対して :ラベルを変更する。 テキストに対して:テキストを編集する。 ラベルが pict のときはファイル名を指定する。 ラベルが table のときは表を作成する。 背景に対して :マウスカーソルの位置に新しい行を挿入する。 ○ 目次編集中のマウス操作 左クリック :ページを指定する。 ダブルクリック:クリックしたページの編集画面になる。 中クリック :カーソルのあるページをクリックしたページの前に 移動させる。 □ 表の編集画面 画面最上部の入力ボックスには、列ごとの位置を設定します。 l :左寄せ c :中揃え r :右寄せ 上記以外の文字が入力された場合は、c が設定されます。 表の大きさは画面下部のボタンで調整します。表の大きさの上限は、 10 行 10 列です。表に入力したスペースは、そのまま出力されます。 ○ ボタン addrow :表の最後に行を追加 delrow :表の最後の行を削除 addcolumn :表の最後に列を追加 delcolumn :表の最後の列を削除 □ ポインタの選択画面 pointer :Viewer のポインタとして使用するカーソルの形状 forground color :ポインタの前景色(カーソル内部の色) background color :ポインタの背景色(カーソルの輪郭の色) left pen color :左ボタンで描画する線の色 right pen color :右ボタンで描画する線の色 ○ ボタン Select :設定項目をメニューから選択する。 Test :入力ボックス内の設定を反映させる。 (メニューから選択した場合は自動的に反映されている) 色名はメニューからのほか、入力ボックスで任意の色を指定することが できます。ポインタ名は、X で定義されているカーソルフォント名の 'XC_' を除いた部分を指定することができます。メニューから normal を選択した場合は、EWIPE 起動時の設定となり、前景色と背景色は反映 されません。 □ EWIPE Viewer の操作 ○ ページ表示画面での操作 次ページ表示 :n、→、スペース、左クリック 前ページ表示 :p、←、Delete、Backspace、右クリック タイトル一覧の表示 :リターン、中クリック ヘルプ表示 :h エディタ表示切替え :e ページ番号表示 :s 時間表示 :t 経過時間リセット :r EWIPE Viewer を閉じる:q ○ タイトル一覧表示での操作 表示ページの選択:左ダブルクリック、リターン キャンセル :右クリック、ESC pen :落書き機能(Shift と同じ) page :ページ番号表示(s と同じ) help :ヘルプ表示(h と同じ) cancel:キャンセル ○ 落書き機能 ページ表示画面で Shift を押すか、タイトル一覧表示で pen ボタンを 押すと、ポインタの形状がペンに変わり線を描画できるようになります。 マウスの左ボタンと右ボタンでそれぞれ線を描画することができ、 中クリック(または、画面下部に表示される clear ボタン)で描画した 線を消去します。終了するときは もう一度 Shift を押します(または、 画面下部に表示される Return ボタンを押します)。 ■ ラベル一覧 title タイトルとサブタイトル item ◆ 箇条書き subitem ☆ 箇条書き subsubitem − 箇条書き subsubsubitem ・ 箇条書き left 左寄せ center 中揃え right 右寄せ pict 画像の表示 (gif 形式) symbol 記号 text 入力したテキストがそのまま表示される。 textbox 中央のボックスの中にテキストが表示される。 table 表の表示 animation gif 画像を連続表示する。 pause 表示の一時停止 ■ 環境設定 EWIPE 起動時のオプションの状態や、よく使うフォーマットの定義を 設定ファイルとして用意しておくことができます。 設定ファイルは、ホームディレクトリに .ewipe というファイル名で 用意します。dot.ewipe が .ewipe のサンプルとなっているので、こ れをコピーして使用して下さい。 設定ファイルの説明は、dot.ewipe をご覧下さい。 ■ オプションの保存 Option メニューの Save options を on にしておけば、編集ファイル 保存時にオプションも保存されます。ただし、オプションを保存した データファイルは WIPE (WIPE2) からは直接読み込むことができなく なります。WIPE (WIPE2) と互換性のあるデータファイルにしたい場合 は Save options を off にして、編集ファイルを保存して下さい。 ■ EWIPE Viewer と WIPE (WIPE2) の互換性 EWIPE Viewer は、ほぼ WIPE ライクな表示が可能ですが、文字の折り返し 幅や行間が若干異なっています。また、WIPE (WIPE2) で使用されていた label と message には制限があり、label で指定できるオプションは、 -text、-fg、-font、-kanjifont で、message で指定できるオプションは、 -text のみです。label と message を使用する場合は、それぞれデータ ファイルを直接編集して下さい。また、pp と rp の表示は可能ですが、 エディタで新たに作成することはできません。 そのほかに、WIPE では Tcl/Tk コマンドを直接記述して簡単なプログラム を埋め込むことが可能ですが、EWIPE Viewer では、それらのコマンドは 無視されます。 ■ EWIPE の最新バージョン EWIPE の最新バージョンは以下のホームページから入手できます。 http://www.jnet-jp.to/~sekisita/ewipe/ ■ WIPE メーリングリスト EWIPE の質問や議論などは、ふたみさんの WIPE メーリングリスト で行なわれています。 WIPE のメーリングリストに参加するには、 Majordomo@yrdc.mhi.co.jp に、本文が info wipe-ml というメールを送れば、案内が届きます。 ■ 著作権 EWIPE は GNU GENERAL PUBLIC LICENSE Version 2 に従います。 この文書 (README) の著作権は、著者が保有します。配布は自由ですが、 無保証であり、この文書から発生した損害に対し、著者は一切責任を負 いません。 ■ 謝辞 WIPE というツールを紹介して下さり、入力用エディタの作成を提案 して頂いた福田@東京農工大さんに感謝します。 EWIPE を試用し、問題点や改良点などをアドバイスして頂いた WIPE メーリングリストのメンバーのふたみさん、植木@東工大さん、 うめしまさん、石岡@東芝さん、八鍬@山口東京理科大さん、 いしい@ソニーさん、武藤@奈良高専さん、いとぢゅんさん、丹下さん、 その他 EWIPE を使用して下さっている方々に感謝します。 EWIPE の作成には、WIPE を参考にさせて頂きました。EWIPE の公開を 承諾して下さった WIPE 作者の歌代さんに感謝します。 EWIPE は WIPE-ML に参加している方々によって改良されてきました。 これからも WIPE-ML の中で改良され続けていくことを望んでいます。 ※ WIPE (Wide Instant Presentation Environment) は、IIJ の 歌代さんが作成したプレゼンテーションツールです。 ※ WIPE2 は、石岡@東芝さんによる WIPE の改良版です。 ewipe-1.2.0/definefont.tcl0100644000076400001440000000447507065161356015233 0ustar sekisitausers# # # definefont.tcl # # # # Copyright (C) 1997-2000 Hiromasa Sekishita # # # # This program conforms # # GNU GENERAL PUBLIC LICENSE Version 2. # # # # definitions of fonts # フォント定義 proc definefont {} { global deffonts global evfont global tcl_platform global Option # set deffonts {14 16 24} set deffonts {14 16 18 20 24 26} set evfont(C,default,14) a14 # set evfont(C,default,14) rk14 set evfont(C,default,16) a16 # set evfont(C,default,16) rk16 set evfont(C,default,18) a18 set evfont(C,default,20) a20 set evfont(C,default,24) a24 # set evfont(C,default,24) rk24 set evfont(C,default,26) a26 set evfont(ja,default,14) k14 set evfont(ja,default,16) k16 # set evfont(ja,default,16) kanji16 set evfont(ja,default,18) k18 set evfont(ja,default,20) k20 set evfont(ja,default,24) k24 # set evfont(ja,default,24) kanji24 set evfont(ja,default,26) k26 if {$tcl_platform(platform) == "windows"} { if {$Option(LANG) == "eng"} { set evfont(C,default,14) {{MS 明朝} 14 normal} set evfont(C,default,16) {{MS 明朝} 16 normal} set evfont(C,default,18) {{MS 明朝} 18 normal} set evfont(C,default,20) {{MS 明朝} 20 normal} set evfont(C,default,24) {{MS 明朝} 24 normal} set evfont(C,default,26) {{MS 明朝} 26 normal} set evfont(ja,default,14) {{MS 明朝} 14 normal} set evfont(ja,default,16) {{MS 明朝} 16 normal} set evfont(ja,default,18) {{MS 明朝} 18 normal} set evfont(ja,default,20) {{MS 明朝} 20 normal} set evfont(ja,default,24) {{MS 明朝} 24 normal} set evfont(ja,default,26) {{MS 明朝} 26 normal} } } ##### for tcl/tk 8.0 ##### if {$tcl_platform(platform) != "windows"} { for {set i 0 } {$i < [llength $deffonts]} { incr i } { set size [lindex $deffonts $i] catch { font create @evfont(default,$size) \ -compound "$evfont(C,default,$size) $evfont(ja,default,$size)" set evfont(C,default,$size) @evfont(default,$size) } } } } ewipe-1.2.0/dot.ewipe0100644000076400001440000000253507065161356014222 0ustar sekisitausers# Sample .ewipe # オプションの定義 # Option: ("option:",":end" の前後は改行) # オプション名 値 (スペースで区切る) # :end # option: lang jpn # 表示言語 (jpn:日本語 eng:英語) pagen 0 # ページ番号表示 (for Viewer) (0:off 1:on) time 0 # 時間表示 (0:off 1:on) timemode 1 # 時間の表示方法 (0: 時刻 1:経過時間) pathtype 1 # パスの形式 (0:絶対パス 1:相対パス) htmlcolor 0 # HTML 出力時の文字色 (0:モノクロ 1:カラー) htmlfont 0 # HTML 出力時の文字の大きさ (0:普通 1:大) viewersize 0 # Viewer サイズ (0:640x480 1:800x600) vredraw 1 # Viewer の自動再描画 (0:off 1:on) titletype 1 # タイトルの形式 (0 - 1) pointer normal # ポインタの名前 pointerfg white # ポインタの前景色 pointerbg black # ポインタの背景色 penleft white # 左のペンの色 penright red # 右のペンの色 saveoptions 1 # オプションの保存 (0:off 1:on) backup 1 # バックアップファイル作成 (0:しない 1:する) :end # 初期状態のページの定義 # startpage: ("startpage:",":end" の前後は改行) # ... (ページのデータは,EWIPE で出力されるデータ形式) # :end # startpage: { {center {}} {center {}} {center {}} {center {題名}} {center {}} {center {}} {center {著者名}} {center {}} {center {発表日}} } :end ewipe-1.2.0/edittable.tcl0100644000076400001440000001102007065161356015027 0ustar sekisitausers# # # edittable.tcl # # # # Copyright (C) 1997-2000 Hiromasa Sekishita # # # # This program conforms # # GNU GENERAL PUBLIC LICENSE Version 2. # # # proc ET_inittable {text} { global et_col global et_row global et_table set et_table {} if {$text != {}} { set n [llength $text] set et_col [llength [lindex $text 0]] lappend et_table [lindex $text 0] set et_row 1 for {set i 1} {$i < $n} {incr i} { set str [lindex $text $i] if {$str != "|" && $str != "_"} { incr et_row set tcol {} for {set j 0} {$j < [expr $et_col * 2]} {incr j 2} { lappend tcol [lindex $str [expr $j + 1]] } lappend et_table $tcol } } if {$et_row == 1} {set et_row 2} } else { set et_col 3 set et_row 3 set et_table {} } for {set j 0} {$j < 12} {incr j} { for {set i 0} {$i < 11} {incr i} { if {[winfo exists .table.c.e($i,$j)] == 1} { delete .table.c.e($i,$j) } } } ET_maketable } proc ET_settable {} { global et_col global et_row global et_text set text {} append text "\n " set def {} for {set i 0} {$i < $et_col} {incr i} { set s [.table.c.e($i,0) get] if {$s != "l" && $s != "c" && $s != "r"} { set s c } lappend def $s } lappend text $def append text "\n " lappend text "|" append text "\n " for {set j 1} {$j < $et_row} {incr j} { set tablec {} for {set i 0} {$i < $et_col} {incr i} { lappend tablec "|" lappend tablec [.table.c.e($i,$j) get] } lappend tablec "|" lappend text $tablec append text "\n " lappend text "|" append text "\n " } destroy .table set et_text $text } proc ET_maketable {} { global et_table global et_col global et_row set width [expr (600 - (5 * $et_col)) / $et_col] .table.c delete all for {set i 0} {$i < $et_col} {incr i} { if {[winfo exists .table.c.e($i,0)] == 1} { .table.c.e($i,0) configure -width [expr $width / 7] } else { entry .table.c.e($i,0) -width [expr $width / 7] set str [lindex [lindex $et_table 0] $i] if {$str == {}} {set str c} .table.c.e($i,0) insert 0 $str } set window [.table.c create window [expr $i * ($width + 5)] \ 10 -window .table.c.e($i,0) -anchor nw] } for {set j 1} {$j < $et_row} {incr j} { for {set i 0} {$i < $et_col} {incr i} { if {[winfo exists .table.c.e($i,$j)] == 1} { .table.c.e($i,$j) configure -width [expr $width / 7] } else { entry .table.c.e($i,$j) -width [expr $width / 7] set str [lindex [lindex $et_table $j] $i] .table.c.e($i,$j) insert 0 $str } set window [.table.c create window [expr $i * ($width + 5)] \ [expr $j * 25 + 20] -window .table.c.e($i,$j) -anchor nw] } } } proc edittable {text} { global et_col global et_row global et_text global message global Option toplevel .table wm title .table "table Editor" set et_text {} frame .table.fb1 button .table.fb1.bo -text $message(ok) -command ET_settable button .table.fb1.bc -text $message(cancel) -command {destroy .table} if {$Option(lang) == "jpn"} { set btn(addrow) "行追加" set btn(delrow) "行削除" set btn(addcol) "列追加" set btn(delcol) "列削除" } elseif {$Option(lang) == "eng"} { set btn(addrow) "addrow" set btn(delrow) "delrow" set btn(addcol) "addcolumn" set btn(delcol) "delcolumn" } frame .table.fb2 button .table.fb2.bar -text $btn(addrow) -command { incr et_row if {$et_row > 11} {set et_row 11} ET_maketable } button .table.fb2.bdr -text $btn(delrow) -command { incr et_row -1 if {$et_row < 2} {set et_row 2} ET_maketable } button .table.fb2.bac -text $btn(addcol) -command { incr et_col if {$et_col > 10} {set et_col 10} ET_maketable } button .table.fb2.bdc -text $btn(delcol) -command { incr et_col -1 if {$et_col < 1} {set et_col 1} ET_maketable } canvas .table.c -height 310 -width 600 pack .table.fb2.bar .table.fb2.bdr .table.fb2.bac .table.fb2.bdc \ -side left pack .table.fb1.bo .table.fb1.bc -side left pack .table.c .table.fb2 .table.fb1 wm minsize .table 600 370 wm maxsize .table 600 400 ET_inittable $text update focus .table.c grab .table tkwait window .table return $et_text } ewipe-1.2.0/ewipe0100755000076400001440000025363707065161356013453 0ustar sekisitausers#!/bin/sh # the next line restarts using wish \ exec wish "$0" "--" "$@" # # # EWIPE : Extended WIPE (Editor for WIPE) # # # # Copyright (C) 1997-2000 Hiromasa Sekishita # # # # This program conforms # # GNU GENERAL PUBLIC LICENSE Version 2. # # # # EWIPE Version 1.2.0 # # # # If you want to use this program in the # # other directory, please change the path as # # follows. # # ex. # # set PATH /usr/local/lib/ewipe # # # # (Japanese) # # ewipe のあるディレクトリ以外から使う場合 # # には、次の部分を設定を変更して下さい。 # # 例: # # set PATH /usr/local/lib/ewipe # # # set PATH . ################################################### # setting ewipe path if {[info exists env(EWIPEPATH)]} { set PATH $env(EWIPEPATH) } lappend auto_path $PATH # Tcl/Tk version check if {[info tclversion] < 7.6} { puts stderr "EWIPE requires Tcl7.6/Tk4.2" exit } # check arguments for ewipe proc argvcheck {} { global version global filename global filedir global argc argv global pwd global Viewmode global Option for {set i 0} {$i < $argc} {incr i} { set argi [lindex $argv $i] switch -regexp -- $argi { {^-(V|[Vv]ersion)$} { puts stderr "EWIPE Version $version" exit } {^-(h|help)$} { puts stderr "Usage: ewipe \[option\] \[filename\]" puts stderr "" puts stderr " -v, -view View Mode" puts stderr " -V, -Version, -version show version\ infomation" puts stderr " -e for English" puts stderr " -h, -help show this help" exit } {^-(v|view)$} { incr i if {$argc <= $i} { puts stderr "ewipe: option \`$argi\' requires a filename" exit } set filename [lindex $argv $i] if {[file exists $filename] != 1} { puts stderr "ewipe: Can't find \`$filename\'" exit } else { set Viewmode 1 set filedir [file dirname $filename] if {[catch {cd $filedir}] == 1} { puts stderr "ewipe: no such directory \`$filedir\'" exit } set filedir [pwd] cd $pwd break } } {^-e$} { set Option(LANG) eng } {^-} { puts stderr "ewipe: unknown option \`$argi\'" puts stderr "Try \`ewipe -h\' or \`ewipe -help\` for more\ information." exit } default { set filename $argi if {[file isdirectory $filename] == 1} { puts stderr "ewipe: \`$filename\' is a directory" exit } set filedir [file dirname $filename] if {[catch {cd $filedir}] == 1} { puts stderr "ewipe: no such directory \`$filedir\'" exit } set filedir [pwd] cd $pwd break } } } readfile } # ファイル読込み proc readfile {} { global filename global docpages global docpagesorg global tcl_platform global Option set docpages {} set docpagesorg {} wm title . "EWIPE - $filename" if {[file exists $filename] != 1} {return} set file [open $filename r] while {![eof $file]} { set line [gets $file] if {$line == "option:"} { set err 1 while {![eof $file]} { set line "[gets $file]" if {$line == ":end"} {set err 0; break} setoption $line } } else { append docpages "$line\n" } } close $file if {$Option(LANG) == "eng"} { set Option(lang) eng } if {[catch {llength $docpages}] == 1} { puts stderr "unmatched error \`\{\' or \`\}\'" set docpages {} } set docpagesorg $docpages if {$tcl_platform(platform) == "windows"} { set kcode {} catch {set kcode [kanji code $docpages]} if {$kcode == "EUC"} { set docpages [kanji conversion EUC SJIS $docpages] } } } # 設定ファイル読み込み proc readdotfile {} { global Option global env # デフォルト設定 set Option(lang) eng ;# 表示言語 (jpn:日本語 eng:英語) set Option(pagen) 0 ;# ページ番号表示 (for Viewer) (0:off 1:on) set Option(time) 0 ;# 時間表示 (0:off 1:on) set Option(timemode) 1 ;# 時間の表示方法 (0: 時刻 1:経過時間) set Option(pathtype) 1 ;# パスの形式 (0:絶対パス 1:相対パス) set Option(htmlcolor) 0 ;# HTML 出力時の文字色 (0:モノクロ 1:カラー) set Option(htmlfont) 0 ;# HTML 出力時の文字の大きさ (0:普通 1:大) set Option(viewersize) 0 ;# Viewer サイズ (0:640x480 1:800x600) set Option(vredraw) 0 ;# Viewer の自動再描画 (0:off 1:on) set Option(saveoptions) 1 ;# オプションの保存 (0:off 1:on) set Option(background) {} ;# 背景 set Option(bgtype) 0 ;# 背景の表示方法 (0:通常 1:背景を埋める) set Option(titletype) 0 ;# タイトルの形式 (0 - 1) set Option(pointer) normal ;# ポインタの名前 set Option(pointerfg) white ;# ポインタの前景色 set Option(pointerbg) black ;# ポインタの背景色 set Option(penleft) white ;# 左のペンの色 set Option(penright) red ;# 右のペンの色 set Option(backup) 1 ;# バックアップファイル作成 (0:しない 1:する) set Option(startpage) {} set Option(LANG) jpn ;# set filename "$env(HOME)/.ewipe" if {[file exists $filename] != 1} {return} set file [open $filename r] while {![eof $file]} { set str "[gets $file]" if {$str == "startpage:"} { set err 1 while {![eof $file]} { set str "[gets $file]" if {$str == ":end"} {set err 0; break} append Option(startpage) "$str\n" } if {$err == 1} { set Option(startpage) {} } } elseif {$str == "option:"} { set err 1 while {![eof $file]} { set str "[gets $file]" if {$str == ":end"} {set err 0; break} setoption $str } } } close $file } # オプション設定 proc setoption {str} { global Option set str0 [lindex $str 0] set str1 [lindex $str 1] switch $str0 { lang { if {$str1 == "jpn" || $str1 == "eng"} { set Option(lang) $str1 } } pagen { if {$str1 == 0 || $str1 == 1} { set Option(pagen) $str1 } } time { if {$str1 == 0 || $str1 == 1} { set Option(time) $str1 } } timemode { if {$str1 == 0 || $str1 == 1} { set Option(timemode) $str1 } } pathtype { if {$str1 == 0 || $str1 == 1} { set Option(pathtype) $str1 } } htmlcolor { if {$str1 == 0 || $str1 == 1} { set Option(htmlcolor) $str1 } } htmlfont { if {$str1 == 0 || $str1 == 1} { set Option(htmlfont) $str1 } } viewersize { if {$str1 == 0 || $str1 == 1} { set Option(viewersize) $str1 } } vredraw { if {$str1 == 0 || $str1 == 1} { set Option(vredraw) $str1 } } vredraw { if {$str1 == 0 || $str1 == 1} { set Option(saveoptions) $str1 } } background { set Option(background) $str1 } bgtype { if {$str1 == 0 || $str1 == 1} { set Option(bgtype) $str1 } } titletype { if {$str1 == 0 || $str1 == 1} { set Option(titletype) $str1 } } pointer { set Option(pointer) $str1 } pointerfg { set Option(pointerfg) $str1 } pointerbg { set Option(pointerbg) $str1 } penleft { set Option(penleft) $str1 } penright { set Option(penright) $str1 } backup { if {$str1 == 0 || $str1 == 1} { set Option(backup) $str1 } } } } # ビューウィンドウ表示 proc call_viewer {mode} { global Option global Viewmode global cp if {$mode == "view"} { wm withdraw . if {[winfo exists .view] == 0} { viewer $cp } else { view_showcanvas $cp } } elseif {$mode == "normal"} { if {$Viewmode == 0} { if {[winfo exists .view] == 0} { viewer $cp } else { view_showcanvas $cp } } } elseif {$mode == "pagen"} { if {[winfo exists .view] == 1} { if {$Option(pagen) == 1} { set Option(pagen) 0 } else { set Option(pagen) 1 } show_pagen } } elseif {$mode == "time"} { if {[winfo exists .view] == 1} { if {$Option(time) == 1} { set Option(time) 0 } else { set Option(time) 1 } toggle_time } } } # 新規作成 proc new {} { global filename global docpages global docpagesorg global message global Option if {$docpages != $docpagesorg} { set result [tk_dialog .d New $message(load) warning \ 0 $message(ok) $message(no)] if {$result == 1} {return} } set filename {} wm title . "EWIPE" init changelang $Option(lang) changesize if {[winfo exists .view] == 1} { resetview 0 } } # 読込み proc load {} { global filename global filedir global docpages global docpagesorg global maxp global cursor global mode global message global pwd global Option if {$docpages != $docpagesorg} { set result [tk_dialog .d Load $message(load) warning \ 0 $message(ok) $message(no)] if {$result == 1} {return} } set oldname $filename set filename [fileDialog . Load open wipe $pwd {}] if {$filename == {}} { set filename $oldname return } set filedir [file dirname $filename] init readfile set maxp [llength $docpages] changelang $Option(lang) changesize if {[winfo exists .view] == 1} { resetview 0 } } # 保存 proc save {} { global docpages global docpagesorg global filename global message global pwd global Option set oldname $filename if {$filename == {}} {set filename $pwd} set filename [fileDialog . Save save wipe $filename *.ewp] if {$filename == {}} { set filename $oldname return 0 } if {[file exists $filename] && $Option(backup) == 1} { exec cp $filename $filename~ } set file [open $filename w] output $file close $file wm title . "EWIPE - $filename" set docpagesorg $docpages return 1 } # 初期化 proc init {} { global docpages global docpagesorg global cp global maxp global cursor global mode global clip global Option set cp 0 set cursor {} set clip(line) {} set clip(page) {} ctrlbutton disabled readdotfile if {$Option(startpage) == {}} { set docpages {} } else { set docpages $Option(startpage) } set docpagesorg $docpages set maxp [llength $docpages] set mode page } # 出力 proc output {fd} { global commandlist global docpages global Option if {$Option(saveoptions) == 1} { puts $fd "option:" puts $fd " lang $Option(lang)" puts $fd " pagen $Option(pagen)" puts $fd " time $Option(time)" puts $fd " timemode $Option(timemode)" puts $fd " pathtype $Option(pathtype)" puts $fd " htmlcolor $Option(htmlcolor)" puts $fd " htmlfont $Option(htmlfont)" puts $fd " viewersize $Option(viewersize)" puts $fd " vredraw $Option(vredraw)" puts $fd " saveoptions $Option(saveoptions)" puts $fd " background $Option(background)" puts $fd " bgtype $Option(bgtype)" puts $fd " titletype $Option(titletype)" puts $fd " pointer $Option(pointer)" puts $fd " pointerfg $Option(pointerfg)" puts $fd " pointerbg $Option(pointerbg)" puts $fd " penleft $Option(penleft)" puts $fd " penright $Option(penright)" puts $fd ":end\n" } foreach i $docpages { puts $fd "{" foreach j $i { set str0 [lindex $j 0] if {[lsearch $commandlist $str0] != -1} { set str1 [lindex $j 1] set str2 [lindex $j 2] set str3 [lindex $j 3] if {$str3 != {}} { set str $str0 lappend str $str1 lappend str $str2 lappend str $str3 puts $fd " \{$str\}" } elseif {$str2 != {}} { set str $str0 lappend str $str1 lappend str $str2 puts $fd " \{$str\}" } else { set str $str0 lappend str $str1 puts $fd " \{$str\}" } } else { puts $fd " {$j}" } } puts $fd "}\n" } } # HTML 出力 proc outputHTML {} { global commandlist global docpages global message global Option global pwd set htmlfile [fileDialog . "Save as HTML" save html $pwd *.html] if {$htmlfile == {}} { return 0 } if {$Option(lang) == "jpn"} { set contents "目次" set next "次ページ" set prev "前ページ" } elseif {$Option(lang) == "eng"} { set contents "Table of Contents" set next "next" set prev "prev" } set list [split [string trim $htmlfile "/"] "/"] set s [expr [llength $list] - 1] set file [split [lindex $list $s] "."] set htmlname [lindex $file 0] set fd [open $htmlfile w] puts $fd "\n" puts $fd " $htmlname" puts $fd "" puts $fd "" } else { puts $fd ">" } puts $fd "" puts $fd "

$contents

" puts $fd "
    " set page 1 foreach i $docpages { set label [lindex [lindex $i 0] 0] if {[lsearch $commandlist $label] != -1} { if {$label != "text" && $label != "textbox"} { set title [lindex [lindex $i 0] 1] } else { set title {} } } else { set title {} } puts $fd "
  1. $title" incr page } puts $fd "
" puts $fd "
\n

" puts $fd "

" puts $fd " \[$next\]" puts $fd "
\n

" set maxpage [llength $docpages] set page 1 foreach i $docpages { puts $fd "" puts $fd "


\n

" if {$Option(htmlcolor) == 1} { puts $fd "" } else { puts $fd "" } puts $fd "

page $page / $maxpage
" puts $fd "\n

" if {$Option(htmlfont) == 1} { puts $fd "\n

" } foreach j $i { if {[lindex $j 0] == "move"} { set j [lindex $j 1] } set str0 [lindex [lindex $j 0] 0] set str1 [lindex $j 1] set str2 [lindex $j 2] set colormode 0 if {$Option(htmlcolor) == 1} { set color [name2rgb $str2 r] if {$color != -1} { set colormode 1 puts $fd "" } } switch $str0 { title { puts $fd "

" if {$Option(htmlcolor) == 1} { puts $fd "" } puts $fd "

$str1

" if {$str2 != {}} { if {$Option(htmlfont) == 1} { puts $fd "

$str2

" } else { puts $fd "

$str2

" } } if {$Option(htmlcolor) == 1} { puts $fd "
" } puts $fd "
" } item { puts $fd "
    " puts $fd "
  • $str1" puts $fd "
" } subitem { puts $fd "
    " puts $fd "
      " puts $fd "
    • $str1" puts $fd "
    " puts $fd "
" } subsubitem { puts $fd "
    " puts $fd "
      " puts $fd "
        " puts $fd "
      • $str1" puts $fd "
      " puts $fd "
    " puts $fd "
" } subsubsubitem { puts $fd "
    " puts $fd "
      " puts $fd "
        " puts $fd "
          " puts $fd "
        • $str1" puts $fd "
        " puts $fd "
      " puts $fd "
    " puts $fd "
" } left { puts $fd "$str1

" } center { puts $fd "

" puts $fd " $str1

" puts $fd "

" } right { puts $fd "
" puts $fd " $str1" puts $fd "
" } pict { puts $fd "
" puts $fd " \"$str1\"

" puts $fd "
" } animation { set str1 [lindex $str1 0] puts $fd "
" puts $fd " \"$str1\"

" puts $fd "
" } pp { puts $fd "$str1

" } rp { puts $fd "

" puts $fd " $str1" puts $fd "
" } symbol { if {$str1 == "uparrow"} { puts $fd "

" } elseif {$str1 == "downarrow"} { puts $fd "

" } elseif {$str1 == "updownarrow"} { puts $fd "

↑↓

" } elseif {$str1 == "cdot"} { puts $fd "

" } elseif {$str1 == "vdots"} { puts $fd "

" } } text { puts $fd "

"
		    set str1 [string trim $str1 "\n"]
		    set strlist [split $str1 "\n"]
		    foreach i $strlist {
			puts $fd "$i
" } puts $fd "
" puts $fd "

" } textbox { puts $fd "

"
		    set str1 [string trim $str1 "\n"]
		    set strlist [split $str1 "\n"]
		    foreach i $strlist {
			puts $fd "  $i
" } puts $fd "
" puts $fd "

" } message { set str1 [string trim $str1 "\n"] set strlist [split $str1 "\n"] foreach i $strlist { puts $fd " $i
" } puts $fd "

" } label { puts $fd "

" puts $fd " $str2

" puts $fd "

" } table { puts $fd "
" set define [lindex $str1 0] set define [view_cutcode $define] set col [expr [llength $define] * 2 + 1] set line [llength $str1] for {set i 0} {$i < [llength $define]} {incr i} { switch -exact [lindex $define $i] { l {set align($i) "left"} c {set align($i) "center"} r {set align($i) "right"} } } for {set i 2} {$i < $line} {incr i 2} { puts $fd " " set textlist [lindex $str1 $i] if {$textlist != {}} { for {set j 1} {$j < $col} {incr j 2} { set column 1 set nextj $j if {[lindex $textlist [expr $j + 1]] == "_"} { for {set k [expr $j + 1]} \ {[lindex $textlist $k] == "_" && $k < $col} \ {incr k 2} { incr column } set nextj [expr $k + 1] } set data [lindex $textlist $j] set pos [expr $j / 2] puts $fd " " set j $nextj } } puts $fd " " } puts $fd "
$data
" } } if {$colormode == 1} { puts $fd "
" } } if {$Option(htmlfont) == 1} { puts $fd "
\n

" } puts $fd "

\n


\n

" puts $fd "

" puts $fd " \[ $prev \]" puts $fd " \[ $contents \]" if {$page < $maxpage} { puts $fd " \[ $next \]" } puts $fd "
" incr page puts $fd "

" } puts $fd "\n" close $fd } # mgp 形式データ出力 proc outputMGP {} { global commandlist global docpages global message global Option global pwd set mgpfile [fileDialog . "Save as MGP" save mgp $pwd *.mgp] if {$mgpfile == {}} { return 0 } set list [split [string trim $mgpfile "/"] "/"] set s [expr [llength $list] - 1] set file [split [lindex $list $s] "."] set mgpname [lindex $file 0] set fd [open $mgpfile w] kanji outputCode $fd JIS puts $fd "%% This file is generated by EWIPE" puts $fd "%%" puts $fd {%include "default.mgp"} set maxpage [llength $docpages] set page 1 foreach i $docpages { puts $fd "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" puts $fd "%page" puts $fd {} set str [lindex $i 0] if {[lindex [lindex $str 0] 0] == "title"} { puts $fd [lindex $str 1] puts $fd {} if {[lindex $str 2] != {}} { puts $fd {} puts $fd [lindex $str 2] } } else { puts $fd {} puts $fd {} } set i [lreplace $i 0 0] foreach j $i { set str0 [lindex [lindex $j 0] 0] set str1 [lindex $j 1] set str2 [lindex $j 2] set str3 [lindex $j 3] switch $str0 { title { puts $fd "%center" puts $fd $str1 if {$str2 != {}} { puts $fd $str2 } puts $fd "%left" } item { e2m_colorsize $str2 $str3 $fd puts $fd "\t$str1" e2m_endcolorsize $fd } subitem { e2m_colorsize $str2 $str3 $fd puts $fd "\t\t$str1" e2m_endcolorsize $fd } subsubitem { e2m_colorsize $str2 $str3 $fd puts $fd "\t\t\t$str1" e2m_endcolorsize $fd } subsubsubitem { e2m_colorsize $str2 $str3 $fd puts $fd " - $str1" e2m_endcolorsize $fd } left { e2m_colorsize $str2 $str3 $fd puts $fd "%left" puts $fd $str1 e2m_endcolorsize $fd } center { e2m_colorsize $str2 $str3 $fd puts $fd "%center" puts $fd $str1 puts $fd "%left" e2m_endcolorsize $fd } right { e2m_colorsize $str2 $str3 $fd puts $fd "%right" puts $fd $str1 puts $fd "%left" e2m_endcolorsize $fd } pict { puts $fd "%center" puts $fd "%IMAGE \"$str1\"" puts $fd "%left" } pp { e2m_colorsize $str2 $str3 $fd puts $fd "%left" puts $fd $str1 e2m_endcolorsize $fd } rp { e2m_colorsize $str2 $str3 $fd puts $fd "%right" puts $fd $str1 puts $fd "%left" e2m_endcolorsize $fd } symbol { if {$str1 == "uparrow"} { puts $fd "%center" puts $fd "↑" puts $fd "%left" } elseif {$str1 == "downarrow"} { puts $fd "%center" puts $fd "↓" puts $fd "%left" } elseif {$str1 == "updownarrow"} { puts $fd "%center" puts $fd "↑↓" puts $fd "%left" } elseif {$str1 == "cdot"} { puts $fd "%center" puts $fd "・" puts $fd "%left" } elseif {$str1 == "vdots"} { puts $fd "%center" puts $fd ":" puts $fd "%left" } } text { puts $fd "%left" puts $fd $str1 } textbox { puts $fd "%left" puts $fd $str1 } table { } animation { puts $fd "%center" set count 0 foreach k $str1 { if {$count == 0} { puts $fd "%mark, image \"$k\"" puts $fd {} incr count } elseif {$count == 1} { puts $fd "%pause, again, mark, image \"$k\"" puts $fd {} incr count } else { if {$str2 == "-1"} { puts $fd "%pause, again, mark, image \"$k\"" } else { puts $fd "%again, mark, image \"$k\"" } puts $fd {} incr count } } puts $fd "%left" } move { e2m_colorsize [lindex $str1 2] [lindex $str1 3] $fd if {$str2 == "nw" || $str2 == "w" || $str2 == "sw" || \ $str2 == "n" || $str2 == "s"} { puts $fd "%lcutin" } else { puts $fd "%rcutin" } puts $fd [lindex $str1 1] e2m_endcolorsize $fd } pause { puts $fd "%pause" } exec { puts $fd "%xsystem \"$str1\"" } figure { } label { } message { } cleft { } prog { } } } } close $fd } # フォントサイズ、色設定 proc e2m_colorsize {color size fd} { if {$size != ""} { set fsize [expr [lindex $size 0] / 3] } else { set fsize 7 } if {$color == ""} { set color white } puts $fd "%SIZE $fsize,FORE \"$color\"" } # デフォルト色設定 proc e2m_endcolorsize {fd} { puts $fd "%SIZE 7,FORE \"white\"" } # 終了 proc exitewipe {} { global docpages global docpagesorg global message global view_ps global tcl_platform set s 1 if {$docpages != {} && $docpages != $docpagesorg} { set result [tk_dialog .d Exit $message(exit) warning \ 0 $message(save) $message(no) $message(cancel)] if {$result == 0} {set s [save]} if {$result == 1} {set s 1} if {$result == 2} {return} } if {$s == 1} { if {$tcl_platform(platform) != "windows"} { if {[info exists view_ps] == 1} { foreach i $view_ps(id) { if {[lsearch [exec ps] [lindex $view_ps(id) $i]] == -1} { exec kill $i } } } } exit } } # ラベル作成 proc makelabel {label} { global docpages global cp global maxp global cursor global newcursor set cursor $newcursor set curpage [lindex $docpages $cp] set curpage [linsert $curpage $cursor "$label {}"] if {[lindex $docpages $cp] != {}} { set docpages [lreplace $docpages $cp $cp $curpage] } else { lappend docpages $curpage incr maxp } if {$label != "pause"} { resetpage edittext } else { insertpause } } # テキスト入力 proc inputtext {x y m} { global docpages global cp global maxp global lnum global cursor global newcursor global scrY global Option global tcl_platform if {[winfo exists .fe] == 1} {return} if {$y != {}} { set x [.fc.c canvasx $x] set y [.fc.c canvasy $y] set wy $lnum for {set i 0} {$i < $lnum} {incr i} { if {$y < $scrY($i)} { set wy $i break } } set newcursor $wy } else { if {$cursor == {}} { set newcursor 0 } else { if {$m == 1} { set newcursor [expr $cursor + 1] } else { set newcursor $cursor } } } if {$newcursor == 0} { makelabel title } else { set x [winfo pointerx .] set y [winfo pointery .] .pmml post [expr $x - 5] [expr $y - 5] focus .pmml if {$tcl_platform(platform) == "windows"} { update tkwait visibility .pmml } bind .pmml { .pmml unpost } } } # edit ボタン処理 proc edittext {} { global cursor if {[lindex [.fc.c.lb1($cursor) configure -text] 4] == " "} { return } elseif {[lindex [.fc.c.lb1($cursor) configure -text] 4] == "title"} { changetitle } elseif {[lindex [.fc.c.lb1($cursor) configure -text] 4] == "pict"} { changefile } elseif {[lindex [.fc.c.lb1($cursor) configure -text] 4] == "symbol"} { update popupmenu symbol } elseif {[lindex [.fc.c.lb1($cursor) configure -text] 4] == "table"} { changetable } elseif {[lindex [.fc.c.lb1($cursor) configure -text] 4] == "animation"} { changeanimation } elseif {[lindex [.fc.c.lb1($cursor) configure -text] 4] == "pause"} { insertpause } else { changetext } } # テキスト変更 proc changetext {} { global docpages global cp global cursor global message global str2 str3 global deffonts global work set curpage [lindex $docpages $cp] set line [lindex $curpage $cursor] if {[lindex $line 0] == "move"} { set text [lindex [lindex $line 1] 1] } else { set text [lindex $line 1] } toplevel .fe wm title .fe edit text .fe.tt -width 56 -height 5 frame .fe.fb1 set str2 [lindex $line 2] if {$str2 == {}} { set str2 default } set str3 [lindex [lindex $line 3] 0] if {$str3 == {}} { set str3 default } tk_optionMenu .fe.fb1.mc str2 default white yellow green orange red \ skyblue gray eval [concat {tk_optionMenu .fe.fb1.mf str3 default} $deffonts] frame .fe.fb2 button .fe.fb2.bo -text $message(ok) -command { set str1 [.fe.tt get 1.0 "end - 1 chars"] set str1 [string trim $str1 "\n"] destroy .fe set curpage [lindex $docpages $cp] set line [lindex $curpage $cursor] if {[lindex $line 0] == "move"} { set str0 [lindex [lindex $line 1] 0] set strd {} lappend strd $str0 lappend strd $str1 set str2 [lindex [lindex $line 1] 2] if {$str2 != {}} { lappend strd $str2 } set str3 [lindex [lindex $line 1] 3] if {$str3 != {}} { lappend strd $str3 } set str [lindex $line 0] lappend str $strd lappend str [lindex $line 2] set curpage [lreplace $curpage $cursor $cursor $str] set docpages [lreplace $docpages $cp $cp $curpage] } else { set str0 [lindex $line 0] set str {} lappend str $str0 lappend str $str1 # set str2 [lindex $line 2] if {$str2 != "default"} { lappend str $str2 } else { if {$str3 != "default"} { lappend str {} } } # set str3 [lindex $line 3] if {$str3 != "default"} { lappend str $str3 } set curpage [lreplace $curpage $cursor $cursor $str] set docpages [lreplace $docpages $cp $cp $curpage] if {$str3 != "default"} { set work(fonts) $str3 changefont {} } } ctrlbutton normal ctrlcobutton $cursor resetpage } button .fe.fb2.bc -text $message(cancel) -command { destroy .fe ctrlbutton normal ctrlcobutton $cursor resetpage } pack .fe.fb1.mc .fe.fb1.mf -side left pack .fe.fb2.bo .fe.fb2.bc -side left if {[lindex $line 0] == "move"} { pack .fe.tt .fe.fb2 } else { pack .fe.fb1 .fe.tt .fe.fb2 } .fe.tt insert 1.0 $text wm withdraw .fe update idletasks set x [expr [winfo x .] + ([winfo width .] - [winfo reqwidth .fe]) / 2] set y [expr [winfo y .] + ([winfo height .] - [winfo reqheight .fe]) / 2] wm geometry .fe +$x+$y wm deiconify .fe focus .fe.tt update grab .fe tkwait window .fe } # タイトル変更 proc changetitle {} { global docpages global cp global cursor global message set curpage [lindex $docpages $cp] set text1 [lindex [lindex $curpage $cursor] 1] set text2 [lindex [lindex $curpage $cursor] 2] toplevel .fe wm title .fe title frame .fe.tt frame .fe.ts label .fe.tt.lb -text " title " label .fe.ts.lb -text "sub title" text .fe.tt.en -width 48 -height 2 text .fe.ts.en -width 48 -height 2 frame .fe.fb button .fe.fb.bo -text $message(ok) -command { set str1 [.fe.tt.en get 1.0 "end - 1 chars"] set str2 [.fe.ts.en get 1.0 "end - 1 chars"] set str1 [string trim $str1 "\n"] set str2 [string trim $str2 "\n"] destroy .fe set curpage [lindex $docpages $cp] if {$str2 == {}} { set str title lappend str $str1 set curpage [lreplace $curpage $cursor $cursor $str] } else { set str title lappend str $str1 lappend str $str2 set curpage [lreplace $curpage $cursor $cursor $str] } set docpages [lreplace $docpages $cp $cp $curpage] ctrlbutton normal ctrlcobutton $cursor resetpage } button .fe.fb.bc -text $message(cancel) -command { destroy .fe ctrlbutton normal ctrlcobutton $cursor resetpage } pack .fe.tt.lb .fe.tt.en -side left pack .fe.ts.lb .fe.ts.en -side left pack .fe.fb.bo .fe.fb.bc -side left pack .fe.tt .fe.ts .fe.fb .fe.tt.en insert 1.0 $text1 .fe.ts.en insert 1.0 $text2 wm withdraw .fe update idletasks set x [expr [winfo x .] + ([winfo width .] - [winfo reqwidth .fe]) / 2] set y [expr [winfo y .] + ([winfo height .] - [winfo reqheight .fe]) / 2] wm geometry .fe +$x+$y wm deiconify .fe focus .fe.tt.en update grab .fe tkwait window .fe } # ファイル変更 proc changefile {} { global filedir global docpages global cp global cursor global message global filedir global Option global pwd set curpage [lindex $docpages $cp] toplevel .fe wm title .fe pict entry .fe.en -width 60 frame .fe.fb button .fe.fb.bo -text $message(ok) -command { set str1 [.fe.en get] destroy .fe if {$str1 == {}} {return} set curpage [lindex $docpages $cp] set str0 [lindex [lindex $curpage $cursor] 0] set str $str0 lappend str $str1 set curpage [lreplace $curpage $cursor $cursor $str] set docpages [lreplace $docpages $cp $cp $curpage] resetpage ctrlbutton normal ctrlcobutton $cursor } button .fe.fb.bb -text $message(browse) -command { set initfile [.fe.en get] if {[file exists $initfile] == 0} { set initfile {} } else { set afile [file tail $initfile] cd [file dirname $initfile] set adir [pwd] cd $pwd set initfile $adir/$afile } set fname [fileDialog .fe "Select GIF File" open image $initfile {}] if {$fname != ""} { if {$Option(pathtype) == 1} { set fname [relativepath $filedir $fname] } .fe.en delete 0 end .fe.en insert 0 $fname } } button .fe.fb.bc -text $message(cancel) -command { destroy .fe } pack .fe.fb.bo .fe.fb.bb .fe.fb.bc -side left pack .fe.en .fe.fb set text [lindex [lindex $curpage $cursor] 1] .fe.en insert 0 $text wm withdraw .fe update idletasks set x [expr [winfo x .] + ([winfo width .] - [winfo reqwidth .fe]) / 2] set y [expr [winfo y .] + ([winfo height .] - [winfo reqheight .fe]) / 2] wm geometry .fe +$x+$y wm deiconify .fe focus .fe.en update grab .fe tkwait window .fe } # animation 設定 proc changeanimation {} { global filedir global docpages global cp global cursor global message global filedir global Option global pwd set curpage [lindex $docpages $cp] toplevel .fe wm title .fe animation entry .fe.en -width 60 frame .fe.fb button .fe.fb.bo -text $message(ok) -command { set str1 [.fe.en get] destroy .fe if {$str1 == {}} {return} set curpage [lindex $docpages $cp] set str0 [lindex [lindex $curpage $cursor] 0] set str $str0 lappend str $str1 set str2 [lindex [lindex $curpage $cursor] 2] if {$str2 != {}} { lappend str $str2 } set curpage [lreplace $curpage $cursor $cursor $str] set docpages [lreplace $docpages $cp $cp $curpage] resetpage ctrlbutton normal ctrlcobutton $cursor } button .fe.fb.bb -text $message(browse) -command { set initfile [lindex [.fe.en get] 0] if {[file exists $initfile] == 0} { set initfile {} } else { set afile [file tail $initfile] cd [file dirname $initfile] set adir [pwd] cd $pwd set initfile $adir/$afile } set fname [fileDialog .fe "Select GIF File" open image $initfile {}] if {$fname != ""} { if {$Option(pathtype) == 1} { set fname [relativepath $filedir $fname] } .fe.en insert end "$fname " } } button .fe.fb.bc -text $message(cancel) -command { destroy .fe } pack .fe.fb.bo .fe.fb.bb .fe.fb.bc -side left pack .fe.en .fe.fb set text [lindex [lindex $curpage $cursor] 1] .fe.en insert 0 $text wm withdraw .fe update idletasks set x [expr [winfo x .] + ([winfo width .] - [winfo reqwidth .fe]) / 2] set y [expr [winfo y .] + ([winfo height .] - [winfo reqheight .fe]) / 2] wm geometry .fe +$x+$y wm deiconify .fe focus .fe.en update grab .fe tkwait window .fe } # pause 挿入 proc insertpause {} { global docpages global cp global cursor set curpage [lindex $docpages $cp] set str pause set curpage [lreplace $curpage $cursor $cursor $str] set docpages [lreplace $docpages $cp $cp $curpage] resetpage ctrlbutton normal ctrlcobutton $cursor } # 選択メニュー表示 proc popupmenu {select} { global tcl_platform set x [winfo pointerx .] set y [winfo pointery .] switch $select { label { .pml post $x $y focus .pml if {$tcl_platform(platform) == "windows"} { update tkwait visibility .pml } bind .pml { .pml unpost } } color { .pmc post $x $y focus .pmc if {$tcl_platform(platform) == "windows"} { update tkwait visibility .pmc } bind .pmc { .pmc unpost } } font { .pmf post $x $y focus .pmf if {$tcl_platform(platform) == "windows"} { update tkwait visibility .pmf } bind .pmf { .pmf unpost } } symbol { .pms post $x $y focus .pms if {$tcl_platform(platform) == "windows"} { update tkwait visibility .pms } bind .pms { .pms unpost } } attr { .pma post $x $y focus .pma if {$tcl_platform(platform) == "windows"} { update tkwait visibility .pma } bind .pma { .pma unpost } } } } # 表作成 proc changetable {} { global docpages global cp global cursor set curpage [lindex $docpages $cp] set str1 [edittable [lindex [lindex $curpage $cursor] 1]] if {$str1 == {}} {return} set str table lappend str $str1 set curpage [lreplace $curpage $cursor $cursor $str] set docpages [lreplace $docpages $cp $cp $curpage] resetpage ctrlbutton normal ctrlcobutton $cursor } # ファイルダイアログ proc fileDialog {w title operation type initfile ext} { set file "" if {$type == "image"} { set types { {"Image Files" {.gif} } {"All Files" * } } } elseif {$type == "html"} { set types { {"HTML Files" {.html .htm} } {"All Files" * } } } elseif {$type == "mgp"} { set types { {"MGP Files" {.mgp} } {"All Files" * } } } elseif {$type == "wipe"} { set types { {"EWIPE Files" {.ewp .wipe} } {"All Files" * } } } elseif {$type == {}} { set types { {"All Files" * } } } if {[file exists $initfile] == 1} { if {[file isfile $initfile]} { set initd [file dirname $initfile] if {$initd == "."} {set initd {}} set initf [file tail $initfile] } else { set initd $initfile set initf $ext } } else { set initd [file dirname $initfile] if {$initd == "."} {set initd {}} set initf [file tail $initfile] } if {$operation == "open"} { set file [tk_getOpenFile -title $title -filetypes $types -parent $w \ -initialdir $initd] } elseif {$operation == "save" } { set file [tk_getSaveFile -title $title -filetypes $types -parent $w \ -initialdir $initd -initialfile $initf] } if {$file != ""} { return $file } } # ラベル変更 proc changelabel {x} { global commandlist global docpages global cp global cursor .fc.c.lb1($cursor) configure -text $x set curpage [lindex $docpages $cp] set str [lindex [lindex $curpage $cursor] 0] if {[lsearch $commandlist $str] != -1} { if {$str != $x} { set pattern [checklabel $str $x] } else { set pattern 2 } set str1 [lindex [lindex $curpage $cursor] 1] set str2 [lindex [lindex $curpage $cursor] 2] set str3 [lindex [lindex $curpage $cursor] 3] if {$pattern == 0} { set str $x lappend str {} } elseif {$pattern == 1} { set str $x lappend str $str1 } elseif {$pattern == 2} { set str $x lappend str $str1 if {$str2 != {}} { lappend str $str2 } if {$str3 != {}} { lappend str $str3 } } } else { set str $x lappend str {} } set curpage [lreplace $curpage $cursor $cursor $str] set docpages [lreplace $docpages $cp $cp $curpage] resetpage ctrlbutton normal ctrlcobutton $cursor } # ラベルチェック proc checklabel {old new} { if {$old == "title" || $old == "textbox"} { if {$new == "table" || $new == "pict" || $new == "symbol" \ || $new == "animation"} { return 0 } else { return 1 } } elseif {$old == "table" || $old == "pict"|| $old == "symbol" \ || $old == "animation"} { return 0 } else { if {$new == "table" || $new == "pict" || $new == "symbol" \ || $new == "animation"} { return 0 } elseif {$new == "title" || $new == "textbox"} { return 1 } else { return 2 } } } # ラベル詳細設定 proc setlabelopt {} { global docpages global cp global cursor global message set curpage [lindex $docpages $cp] set line [lindex $curpage $cursor] set text [lindex [lindex $line 0] 1] toplevel .fe wm title .fe label text .fe.tt -width 40 -height 1 frame .fe.fb button .fe.fb.bo -text $message(ok) -command { set str1 [.fe.tt get 1.0 "end - 1 chars"] set str1 [string trim $str1 "\n"] destroy .fe set curpage [lindex $docpages $cp] set line [lindex $curpage $cursor] set str0 [lindex [lindex $line 0] 0] set str $str0 lappend str $str1 set line [lreplace $line 0 0 $str] set curpage [lreplace $curpage $cursor $cursor $line] set docpages [lreplace $docpages $cp $cp $curpage] ctrlbutton normal ctrlcobutton $cursor resetpage } button .fe.fb.bd -text $message(default) -command { destroy .fe set curpage [lindex $docpages $cp] set line [lindex $curpage $cursor] set str [lindex [lindex $line 0] 0] set line [lreplace $line 0 0 $str] set curpage [lreplace $curpage $cursor $cursor $line] set docpages [lreplace $docpages $cp $cp $curpage] ctrlbutton normal ctrlcobutton $cursor resetpage } button .fe.fb.bc -text $message(cancel) -command { destroy .fe ctrlbutton normal ctrlcobutton $cursor resetpage } pack .fe.fb.bo .fe.fb.bd .fe.fb.bc -side left pack .fe.tt .fe.fb .fe.tt insert 1.0 $text wm withdraw .fe update idletasks set x [expr [winfo x .] + ([winfo width .] - [winfo reqwidth .fe]) / 2] set y [expr [winfo y .] + ([winfo height .] - [winfo reqheight .fe]) / 2] wm geometry .fe +$x+$y wm deiconify .fe focus .fe.tt update grab .fe tkwait window .fe } # アイテム変更 proc changeitem {x} { global docpages global cp global cursor set curpage [lindex $docpages $cp] set str [lindex [lindex $curpage $cursor] 0] set str0 [lindex [lindex $curpage $cursor] 0] set str1 [lindex [lindex $curpage $cursor] 2] set str $str0 lappend str $x if {$str1 != {}} { lappend str $str1 } set curpage [lreplace $curpage $cursor $cursor $str] set docpages [lreplace $docpages $cp $cp $curpage] resetpage ctrlbutton normal ctrlcobutton $cursor } # 文字色変更 proc changecolor {x} { global docpages global cp global cursor set curpage [lindex $docpages $cp] set color [lindex [lindex $curpage $cursor] 2] if {$color == {}} { set color white } if {$x == "etc"} { set x [tk_chooseColor -initialcolor $color] } if {$x == {}} return set str0 [lindex [lindex $curpage $cursor] 0] set str1 [lindex [lindex $curpage $cursor] 1] set str3 [lindex [lindex $curpage $cursor] 3] if {$x == "white" && $str3 == {}} { set str {} lappend str $str0 lappend str $str1 set curpage [lreplace $curpage $cursor $cursor $str] } else { set str {} lappend str $str0 lappend str $str1 lappend str $x if {$str3 != {}} { lappend str $str3 } set curpage [lreplace $curpage $cursor $cursor $str] } set docpages [lreplace $docpages $cp $cp $curpage] resetpage ctrlbutton normal ctrlcobutton $cursor } # フォントチェック proc checkfont {} { global docpages global cp global cursor global work set curpage [lindex $docpages $cp] set str0 [lindex [lindex $curpage $cursor] 0] set str3 [lindex [lindex $curpage $cursor] 3] if {$str3 == {}} { if {$str0 == "text" || $str0 == "textbox"} { set work(fonts) 16 set work(fontt) rm set work(kfonts) 16 set work(kfontt) mc } else { set work(fonts) 24 set work(fontt) rm set work(kfonts) 24 set work(kfontt) mc } } else { set work(fonts) [lindex $str3 0] set work(fontt) [lindex $str3 1] set work(kfonts) [lindex $str3 2] set work(kfontt) [lindex $str3 3] } } # フォント変更 proc changefont {x} { global docpages global cp global cursor global work global Str global Str2 global message set curpage [lindex $docpages $cp] set fontlist [lindex [lindex $curpage $cursor] 3] set work(fontt) [lindex $fontlist 1] set work(kfontt) [lindex $fontlist 3] set work(fontsold) [lindex $fontlist 0] set work(kfontsold) [lindex $fontlist 2] if {$x == "etc"} { toplevel .fe wm title .fe font frame .fe.en1 frame .fe.en2 label .fe.en1.lb -text "ascii font " label .fe.en2.lb -text "kanji font " entry .fe.en1.en -width 40 entry .fe.en2.en -width 40 frame .fe.fb button .fe.fb.bo -text $message(ok) -command { set Str [.fe.en1.en get] set Str2 [.fe.en2.en get] if {$Str == {} && $Str2 == {}} {return} destroy .fe } button .fe.fb.bc -text $message(cancel) -command { set Str {} set Str2 {} destroy .fe } pack .fe.en1.lb .fe.en1.en -side left pack .fe.en2.lb .fe.en2.en -side left pack .fe.fb.bo .fe.fb.bc -side left pack .fe.en1 .fe.en2 .fe.fb .fe.en1.en delete 0 end if {$work(fontsold) == "u"} { .fe.en1.en insert 0 $work(fontt) } .fe.en2.en delete 0 end if {$work(kfontsold) == "u"} { .fe.en2.en insert 0 $work(kfontt) } wm withdraw .fe update idletasks set wx [expr [winfo x .] + ([winfo width .] - \ [winfo reqwidth .fe]) / 2] set wy [expr [winfo y .] + ([winfo height .] - \ [winfo reqheight .fe])/2] wm geometry .fe +$wx+$wy wm deiconify .fe update focus .fe.en1.en grab .fe tkwait window .fe } else { set Str def } if {$Str == {} && $Str2 == {}} { return } else { if {$x == "etc"} { set work(fonts) u set work(fontt) $Str set work(kfonts) u set work(kfontt) $Str2 } else { set work(fontt) rm set work(kfonts) $work(fonts) set work(kfontt) mc } } set str0 [lindex [lindex $curpage $cursor] 0] set str1 [lindex [lindex $curpage $cursor] 1] set str2 [lindex [lindex $curpage $cursor] 2] set changed 0 if {$str0 == "text" || $str0 == "textbox"} { if {$work(fonts) != 16} { set changed 1 } } else { if {$work(fonts) != 24} { set changed 1 } } if {$changed == 1} { set str3 "$work(fonts) $work(fontt) $work(kfonts) $work(kfontt)" set str {} lappend str $str0 lappend str $str1 if {$str2 == {}} {set str2 "white"} lappend str $str2 lappend str $str3 } else { set str {} lappend str $str0 lappend str $str1 if {$str2 != {} && $str2 != "white"} { lappend str $str2 } } set curpage [lreplace $curpage $cursor $cursor $str] set docpages [lreplace $docpages $cp $cp $curpage] resetpage ctrlbutton normal ctrlcobutton $cursor } # 属性変更 proc changeattr {x} { global docpages global cp global cursor set curpage [lindex $docpages $cp] set line [lindex $curpage $cursor] set str0 [lindex $line 0] if {$str0 == "move"} { set line [lindex $line 1] } if {$x != "none"} { set str0 [lindex $x 0] set str1 $line set str2 [lindex $x 1] set str $str0 lappend str $str1 lappend str $str2 } else { set str $line } set curpage [lreplace $curpage $cursor $cursor $str] set docpages [lreplace $docpages $cp $cp $curpage] resetpage ctrlbutton normal ctrlcobutton $cursor } # 背景選択 proc selectbg {} { global message global filedir global Option global pwd toplevel .fe wm title .fe background entry .fe.en -width 60 frame .fe.fb button .fe.fb.bo -text $message(ok) -command { set Option(background) [.fe.en get] destroy .fe changebg } button .fe.fb.bb -text $message(browse) -command { set initfile [.fe.en get] if {[file exists $initfile] == 0} { set initfile $pwd } else { set afile [file tail $initfile] cd [file dirname $initfile] set adir [pwd] cd $pwd set initfile $adir/$afile } set fname [fileDialog . "Select Background" open image $initfile {}] if {$fname != ""} { if {$Option(pathtype) == 1} { set fname [relativepath $filedir $fname] } .fe.en delete 0 end .fe.en insert 0 $fname } } button .fe.fb.bc -text $message(cancel) -command { destroy .fe } pack .fe.fb.bo .fe.fb.bb .fe.fb.bc -side left pack .fe.en .fe.fb .fe.en insert 0 $Option(background) wm withdraw .fe update idletasks set x [expr [winfo x .] + ([winfo width .] - [winfo reqwidth .fe]) / 2] set y [expr [winfo y .] + ([winfo height .] - [winfo reqheight .fe]) / 2] wm geometry .fe +$x+$y wm deiconify .fe focus .fe.en update grab .fe tkwait window .fe } # 背景変更 proc changebg {} { global cp if {[winfo exists .view] == 1} { resetview $cp } } # 行削除・ページ削除 proc deleteline {} { global docpages global cp global maxp global cursor global mode global clip if {$mode == "page"} { set x $cursor set curpage [lindex $docpages $cp] set clip(line) [lindex $curpage $x] set curpage [lreplace $curpage $x $x] set docpages [lreplace $docpages $cp $cp $curpage] if {[lindex $docpages $cp] == {}} { set docpages [lreplace $docpages $cp $cp] incr maxp -1 if {$maxp == 0} { set cp 0 } elseif {$cp >= $maxp} { set cp [expr $maxp - 1] } } resetpage } elseif {$mode == "contents"} { set clip(page) [lindex $docpages $cursor] set docpages [lreplace $docpages $cursor $cursor] incr maxp -1 showtitle } } # 行ペースト proc pasteline {} { global docpages global lnum global cp global maxp global cursor global mode global clip if {$mode == "page"} { set curpage [lindex $docpages $cp] if {$clip(line) == {}} {return} set str $clip(line) set curpage [linsert $curpage $cursor $str] set docpages [lreplace $docpages $cp $cp $curpage] resetpage ctrlbutton normal ctrlcobutton $cursor } elseif {$mode == "contents"} { if {$clip(page) == {}} {return} set str $clip(page) set docpages [linsert $docpages $cursor $str] incr maxp showtitle } } # 行交換 proc exchangeline {s e} { global docpages global cp set curpage [lindex $docpages $cp] set sline [lindex $curpage $s] set eline [lindex $curpage $e] set curpage [lreplace $curpage $s $s] set curpage [linsert $curpage $s $eline] set curpage [lreplace $curpage $e $e] set curpage [linsert $curpage $e $sline] set docpages [lreplace $docpages $cp $cp $curpage] resetpage } # 移動 proc move {n} { global lnum global cursor global mode if {$mode == "page"} { if {$n == "up"} { if {$cursor == 0} {return} incr cursor -1 exchangeline [expr $cursor+1] $cursor } elseif {$n == "down"} { if {$cursor == [expr $lnum-1]} {return} incr cursor exchangeline [expr $cursor-1] $cursor } } elseif {$mode == "contents"} { if {$n == "up"} { if {$cursor == 0} {return} incr cursor -1 exchangepage [expr $cursor+1] $cursor } elseif {$n == "down"} { if {$cursor == [expr $lnum-1]} {return} incr cursor exchangepage [expr $cursor-1] $cursor } } } # ページ交換 proc exchangepage {s e} { global docpages global cp global cursor set spage [lindex $docpages $s] set epage [lindex $docpages $e] set docpages [lreplace $docpages $s $s] set docpages [linsert $docpages $s $epage] set docpages [lreplace $docpages $e $e] set docpages [linsert $docpages $e $spage] set cursor $e set cp $e showtitle } # ページ移動 proc movepage {s e} { global docpages global cp global cursor set spage [lindex $docpages $s] if {$s < $e} { set docpages [linsert $docpages $e $spage] set docpages [lreplace $docpages $s $s] set cursor [expr $e-1] set cp $cursor } else { set docpages [lreplace $docpages $s $s] set docpages [linsert $docpages $e $spage] set cursor $e set cp $cursor } showtitle } # ページ作成 proc createpage {m} { global docpages global cp global maxp global cursor if {[winfo exists .fe] == 1} {return} if {$maxp != 0} { if {$m == 1} { incr cp } lappend curpage "title {}" set docpages [linsert $docpages $cp $curpage] incr maxp } else { set curpage {} set curpage [linsert $curpage 0 "title {}"] lappend docpages $curpage incr maxp } ctrlbutton normal set cursor 0 resetpage ctrlbutton normal ctrlcobutton $cursor changetitle } # ページジャンプ proc jumppage {} { global cp global maxp global cursor global mode set err 0 set jp [.fb2.ep get] set jp [lindex [split $jp "/"] 0] if {[regexp {[a-z]+} $jp]} { set err 1 } set jp [string trimleft $jp 0] if {$jp == {}} {set jp 0} if {[llength $jp] > 3} { set err 1 } if {$err == 0} { set jp [expr $jp-1] } if {$jp >= 0 && $jp < $maxp && $err == 0} { set cp $jp if {$mode == "contents"} { .fb2.bi configure -state normal .fb2.ba configure -state normal .fb2.bn configure -state normal .fb2.bp configure -state normal .fb2.bt configure -text index -command showtitle set cursor {} set mode page ctrlbutton disabled } resetpage } else { resetpage } } # 次・前ページ表示 proc nextpage {n} { global cp global maxp global cursor if {$n == 1} { if {$cp < [expr $maxp-1]} { incr cp set cursor {} ctrlbutton disabled initpage showpage } } elseif {$n == -1} { if {$cp > 0} { incr cp -1 set cursor {} ctrlbutton disabled initpage showpage } } } # ページ再表示 proc resetpage {} { global view_skip set view_skip 1 initpage showpage } # ページ初期化 proc initpage {} { global lnum global cp global maxp .fb2.ep delete 0 end if {$maxp == 0} { .fb2.ep insert 0 "0/0" } else { .fb2.ep insert 0 "[expr $cp+1]/[expr $maxp]" } for {set i 0} {$i < $lnum} {incr i} { if {[winfo exists .fc.c.lb1($i)]} {destroy .fc.c.lb1($i)} if {[winfo exists .fc.c.lb2($i)]} {destroy .fc.c.lb2($i)} if {[winfo exists .fc.c.titletext]} {destroy .fc.c.titletext} } .fc.c delete all set lnum 0 focus . } # ウィンドウサイズ変更 proc changesize {} { global Option if {$Option(viewersize) == 1} { .fc.c configure -height 500 wm geometry . {} wm minsize . 590 580 wm maxsize . 640 620 } else { .fc.c configure -height 400 wm geometry . {} wm minsize . 590 480 wm maxsize . 640 520 } if {[winfo exists .view] == 1} { setval call_viewer normal } ctrlbutton disabled resetpage } # ページ表示 proc showpage {} { global commandlist global docpages global lnum global cp global maxp global cursor global mode global scrY global Id1 Id2 global message global Option .fb2.bt configure -text $message(contents) -command showtitle set page [lindex $docpages $cp] set scrY(0) 20 set width 56 set wlen 392 foreach i $page { set line $i set str0 [lindex [lindex $line 0] 0] if {[lsearch $commandlist $str0] != -1} { if {$str0 == "move"} { set text "move [lindex $line 2]" set line [lindex $line 1] set str0 [lindex $line 0] .fc.c create text 510 $scrY($lnum) -text $text \ -anchor nw -fill yellow } if {$str0 == "text" || $str0 == "textbox" || $str0 == "table" \ || $str0 == "animation"} { set str1 [string range [lindex $line 1] 0 [expr $width - 1]] } else { set str1 [lindex $line 1] } set color [lindex $line 2] if {$str0 == "title"} { set color yellow set str2 [lindex $line 2] if {$str2 != {}} { set str1 "$str1 - $str2" } } if {$str0 == "animation"} {set color white} if {$color == {}} {set color white} regsub -all "\[\t\n\]" $str1 { } str1 regsub -all "\ +\ *" $str1 { } str1 set str1 [string trim $str1 { }] set n [string length $str1] set l [expr $n / ($width + 1) + 1] label .fc.c.lb1($lnum) -width 10 -text $str0 \ -anchor w -bg RoyalBlue4 -fg white label .fc.c.lb2($lnum) -relief raised -width $width -heigh $l \ -wraplength $wlen -text $str1 -justify left -anchor w \ -bg RoyalBlue4 -fg $color .fc.c create window 10 $scrY($lnum) -window .fc.c.lb1($lnum) \ -anchor nw .fc.c create window 100 $scrY($lnum) -window .fc.c.lb2($lnum) \ -anchor nw set dy [expr 30 + ($l-1) * 15] } else { set str [string range $line 0 [expr $width - 1]] label .fc.c.lb1($lnum) -width 10 -text " " \ -anchor w -bg RoyalBlue4 -fg white label .fc.c.lb2($lnum) -relief raised -width $width -height 1 \ -text $str -anchor nw -justify left -bg RoyalBlue4 \ -fg white .fc.c create window 10 $scrY($lnum) -window .fc.c.lb1($lnum) \ -anchor nw .fc.c create window 100 $scrY($lnum) -window .fc.c.lb2($lnum) \ -anchor nw set dy 30 } set Id1(.fc.c.lb1($lnum)) $lnum set Id2(.fc.c.lb2($lnum)) $lnum setbind $lnum $str0 incr lnum set scrY($lnum) [expr $scrY([expr $lnum-1]) + $dy] } .fc.c configure -scrollregion "0 0 560 [expr $scrY($lnum) + 10]" if {$cursor != {} && $cursor >= $lnum && $lnum != 0} { set cursor [expr $lnum -1] set mw .fc.c.lb2($cursor) } if {$lnum == 0} { set cursor {} ctrlbutton disabled } if {$cursor != {}} { .fc.c.lb2($cursor) configure -bg #A9A9A9 .fc.c.lb1($cursor) configure -bg #A9A9A9 } bind .fc.c { inputtext %x %y 0 } if {$Option(vredraw) == 1} { call_viewer normal } ctrlpabutton } # バインド設定 proc setbind {n label} { global docpages global cp global Id1 global Id2 global lnum bind .fc.c.lb1($n) <1> { set mw %W focus $mw if {$cursor == {}} { $mw configure -bg #A9A9A9 .fc.c.lb2($Id1($mw)) configure -bg #A9A9A9 set cursor $Id1($mw) ctrlbutton normal ctrlcobutton $Id1($mw) } elseif {$cursor != $Id1($mw)} { $mw configure -bg #A9A9A9 .fc.c.lb2($Id1($mw)) configure -bg #A9A9A9 .fc.c.lb2($cursor) configure -bg RoyalBlue4 .fc.c.lb1($cursor) configure -bg RoyalBlue4 set cursor $Id1($mw) ctrlbutton normal ctrlcobutton $Id1($mw) } } bind .fc.c.lb1($n) <3> { set mw %W focus $mw if {$cursor == $Id1($mw)} { set str [lindex [$mw configure -text] 4] if {$str == "item" || $str == "subitem" || $str == "subsubitem" \ || $str == "subsubsubitem"} { if {[lindex [lindex [lindex $docpages $cp] $Id1($mw)] 0] \ != "move"} { setlabelopt return } } $mw configure -bg RoyalBlue4 .fc.c.lb2($Id1($mw)) configure -bg RoyalBlue4 set cursor {} ctrlbutton disabled } } bind .fc.c.lb2($n) <1> { set mw %W focus $mw if {$cursor == {}} { $mw configure -bg #A9A9A9 .fc.c.lb1($Id2($mw)) configure -bg #A9A9A9 set cursor $Id2($mw) ctrlbutton normal ctrlcobutton $Id2($mw) } elseif {$cursor != $Id2($mw)} { $mw configure -bg #A9A9A9 .fc.c.lb1($Id2($mw)) configure -bg #A9A9A9 .fc.c.lb2($cursor) configure -bg RoyalBlue4 .fc.c.lb1($cursor) configure -bg RoyalBlue4 set cursor $Id2($mw) ctrlbutton normal ctrlcobutton $Id2($mw) } } bind .fc.c.lb2($n) <3> { set mw %W focus $mw if {$cursor == $Id2($mw)} { $mw configure -bg RoyalBlue4 .fc.c.lb1($Id2($mw)) configure -bg RoyalBlue4 set cursor {} ctrlbutton disabled } } bind .fc.c.lb2($n) { edittext } if {[lindex [lindex [lindex $docpages $cp] $n] 0] != "move"} { bind .fc.c.lb1($n) { popupmenu label } } } # タイトル表示 proc showtitle {} { global docpages global lnum global cp global maxp global cursor global mode global Id global message if {$maxp == 0} { .fb2.bp configure -state normal .fb2.bn configure -state normal .fb2.bi configure -state normal .fb2.ba configure -state normal .fb2.bt configure -text $message(contents) -command showtitle set cp 0 set mode page ctrlbutton disabled resetpage return } if {$cp == $maxp} {set cp [expr $maxp - 1]} set mode contents set cursor $cp ctrlbutton normal .fb2.bp configure -state disabled .fb2.bn configure -state disabled .fb2.bi configure -state disabled .fb2.ba configure -state disabled .fb2.bt configure -text $message(page) -command { .fb2.bp configure -state normal .fb2.bn configure -state normal .fb2.bi configure -state normal .fb2.ba configure -state normal .fb2.bt configure -text $message(contents) -command showtitle set cp $cursor set cursor {} set mode page ctrlbutton disabled resetpage return } bind .fc.c < "" initpage .fb2.ep delete 0 end .fb2.ep insert 0 [expr $cursor + 1] set p [llength $docpages] set col [expr ($p-1) / 10 + 1] set tw [expr 530 / $col] label .fc.c.titletext -width 54 -anchor w -bg black -fg white .fc.c create window 60 20 -window .fc.c.titletext -anchor w foreach page $docpages { set str [lindex [lindex $page 0] 1] regsub -all "\[\t\n\]" $str { } str regsub -all "\ +\ *" $str { } str set str [string trim $str { }] label .fc.c.lb1($lnum) -relief raised -width [expr 68/$col-2] \ -text $str -anchor w -bg white if {$p <= 50} { .fc.c create text [expr $lnum/10 * $tw + 10] \ [expr 60+($lnum%10)*30] -text [expr $lnum+1] \ -anchor nw -fill white } else { if {[expr $lnum % 10] == 0} { .fc.c create text [expr $lnum/10 * $tw + 30] 40 \ -text [expr $lnum+1] -anchor nw -fill white } } .fc.c create window [expr $lnum/10 * $tw + 30] \ [expr 60+($lnum%10)*30] -window .fc.c.lb1($lnum) -anchor nw set Id(.fc.c.lb1($lnum)) $lnum bind .fc.c.lb1($lnum) <1> { set mw %W if {$Id($mw) != $cursor} { $mw configure -bg #A9A9A9 .fc.c.lb1($cursor) configure -bg white set cursor $Id($mw) set cp $cursor .fb2.ep delete 0 end .fb2.ep insert 0 [expr $cp + 1] set str [lindex [lindex [lindex $docpages $cp] 0] 1] regsub -all "\[\t\n\]" $str { } str regsub -all "\ +\ *" $str { } str set str [string trim $str { }] .fc.c.titletext configure -text $str } } bind .fc.c.lb1($lnum) <2> { set mw %W movepage $cursor $Id($mw) } bind .fc.c.lb1($lnum) { set mw %W .fb2.bp configure -state normal .fb2.bn configure -state normal .fb2.ba configure -state normal .fb2.bi configure -state normal .fb2.bt configure -text index -command showtitle set cp $cursor set cursor {} set mode page ctrlbutton disabled resetpage } incr lnum } if {$cursor >= $lnum && $lnum != 0} { set cursor [expr $lnum -1] set mw .fc.c.lb1($cursor) } if {$lnum == 0} { set cursor {} ctrlbutton disabled } if {$cursor != {}} { .fc.c.lb1($cursor) configure -bg #A9A9A9 set str [lindex [lindex [lindex $docpages $cp] 0] 1] regsub -all "\[\t\n\]" $str { } str regsub -all "\ +\ *" $str { } str set str [string trim $str { }] .fc.c.titletext configure -text $str } } # ボタン状態制御 proc ctrlbutton {state} { global cursor global mode if {$mode == "page"} { .fb1.bl configure -state $state .fb1.bi configure -state normal .fb1.ba configure -state normal .fb1.be configure -state $state .fb1.bo configure -state $state .fb1.bf configure -state $state .fb1.bt configure -state $state } elseif {$mode == "contents"} { .fb1.bl configure -state disabled .fb1.bi configure -state disabled .fb1.ba configure -state disabled .fb1.be configure -state disabled .fb1.bo configure -state disabled .fb1.bf configure -state disabled .fb1.bt configure -state disabled } .fb1.bc configure -state $state .fb1.bp configure -state $state .fb1.bu configure -state $state .fb1.bd configure -state $state } # カラー変更ボタン & フォント変更ボタン制御 proc ctrlcobutton {n} { global docpages global cp set str [lindex [.fc.c.lb1($n) configure -text] 4] if {$str == "title" || $str == "pict" || $str == "textbox" \ || $str == "animation" || $str == "pause" \ || $str == " "} { .fb1.bo configure -state disabled } if {$str == "title" || $str == "pict" || $str == "symbol" \ || $str == "animation" || $str == "pause" \ || $str == " "} { .fb1.bf configure -state disabled } if {$str == "title" || $str == "pict" || $str == "symbol" \ || $str == "table" || $str == "animation" \ || $str == "text" || $str == "textbox" || $str == "pause" \ || $str == " "} { .fb1.bt configure -state disabled } set str [lindex [lindex [lindex $docpages $cp] $n] 0] if {$str == "move"} { .fb1.bl configure -state disabled .fb1.bo configure -state disabled .fb1.bf configure -state disabled } } # ページ変更ボタン制御 proc ctrlpabutton {} { global cp global maxp if {$maxp == 0 || $maxp == 1} { .fb2.bp configure -state disabled .fb2.bn configure -state disabled } elseif {$cp == 0} { .fb2.bp configure -state disabled .fb2.bn configure -state normal } elseif {$cp == ($maxp-1)} { .fb2.bp configure -state normal .fb2.bn configure -state disabled } else { .fb2.bp configure -state normal .fb2.bn configure -state normal } if {$maxp == 0} { .fb2.bt configure -state disabled } else { .fb2.bt configure -state normal } } # Viewer の bind 制御 proc viewredraw {} { global Option if {[winfo exists .view] == 1} { view_setbind 1 } } # メニューの制御 proc checkmenu {} { global Option if {$Option(background) == {}} { .fm.mbo.m entryconfigure 8 -state disabled } else { .fm.mbo.m entryconfigure 8 -state normal } if {$Option(LANG) == "eng"} { .fm.mbo.m entryconfigure 0 -state disabled } else { .fm.mbo.m entryconfigure 0 -state normal } } # 表示言語変更 proc changelang {lang} { global message global Option global deffonts global work set Option(lang) $lang if {$lang == "jpn"} { set message(page) "頁表示" set message(contents) " 目次 " set message(ok) 了解 set message(cancel) キャンセル set message(no) いいえ set message(save) 保存 set message(browse) 参照... set message(select) 選択 set message(etc) その他 set message(default) デフォルト set message(load) "編集中の内容は破棄されますがよろしいですか?" set message(exit) "終了する前にファイルに保存しますか?" # メニュー .fm.mbf configure -text ファイル .fm.mbf.m delete 0 end .fm.mbf.m add command -label 新規作成 -command new .fm.mbf.m add command -label 読込み -command load .fm.mbf.m add command -label 保存 -command save .fm.mbf.m add separator .fm.mbf.m add command -label "HTML 形式で保存" -command outputHTML .fm.mbf.m add command -label "MGP 形式で保存" -command outputMGP .fm.mbf.m add separator .fm.mbf.m add command -label "EWIPE について" -command aboutEWIPE .fm.mbf.m add separator .fm.mbf.m add command -label 終了 -command exitewipe .fm.mbo configure -text オプション .fm.mbo.m delete 0 end .fm.mbo.m add cascade -label 表示言語 -menu .fm.mbo.m.lang .fm.mbo.m.lang delete 0 end .fm.mbo.m.lang add command -label 日本語 -command "changelang jpn" .fm.mbo.m.lang add command -label 英語 -command "changelang eng" .fm.mbo.m add cascade -label パスのタイプ -menu .fm.mbo.m.path .fm.mbo.m.path delete 0 end .fm.mbo.m.path add radiobutton -label 絶対パス -value 0 \ -variable Option(pathtype) .fm.mbo.m.path add radiobutton -label 相対パス -value 1 \ -variable Option(pathtype) .fm.mbo.m add separator .fm.mbo.m add cascade -label ページ番号 -menu .fm.mbo.m.pnum .fm.mbo.m.pnum delete 0 end .fm.mbo.m.pnum add radiobutton -label off -value 0 \ -variable Option(pagen) -command "call_viewer pagen" .fm.mbo.m.pnum add radiobutton -label on -value 1 \ -variable Option(pagen) -command "call_viewer pagen" .fm.mbo.m add cascade -label "時間" -menu .fm.mbo.m.time .fm.mbo.m.time delete 0 end .fm.mbo.m.time add radiobutton -label off -value 0 \ -variable Option(time) -command "call_viewer time" .fm.mbo.m.time add radiobutton -label on -value 1 \ -variable Option(time) -command "call_viewer time" .fm.mbo.m add cascade -label "時間のタイプ" -menu .fm.mbo.m.timetype .fm.mbo.m.timetype delete 0 end .fm.mbo.m.timetype add radiobutton -label "時刻" -value 0 \ -variable Option(timemode) .fm.mbo.m.timetype add radiobutton -label "経過時間" -value 1 \ -variable Option(timemode) .fm.mbo.m add command -label ポインタ -command setpointer .fm.mbo.m add command -label "背景選択" -command selectbg .fm.mbo.m add cascade -label "背景のタイプ" -menu .fm.mbo.m.bgtype .fm.mbo.m.bgtype delete 0 end .fm.mbo.m.bgtype add radiobutton -label 普通 -value 0 \ -variable Option(bgtype) -command changebg .fm.mbo.m.bgtype add radiobutton -label タイル -value 1 \ -variable Option(bgtype) -command changebg .fm.mbo.m add cascade -label "タイトルのタイプ" \ -menu .fm.mbo.m.titletype .fm.mbo.m.titletype delete 0 end .fm.mbo.m.titletype add radiobutton -label box -value 0 \ -variable Option(titletype) \ -command "set view_skip 1; call_viewer normal" .fm.mbo.m.titletype add radiobutton -label line -value 1 \ -variable Option(titletype) \ -command "set view_skip 1; call_viewer normal" .fm.mbo.m add separator .fm.mbo.m add cascade -label "HTML カラー" -menu .fm.mbo.m.htmlc .fm.mbo.m.htmlc delete 0 end .fm.mbo.m.htmlc add radiobutton -label モノクロ -value 0 \ -variable Option(htmlcolor) .fm.mbo.m.htmlc add radiobutton -label カラー -value 1 \ -variable Option(htmlcolor) .fm.mbo.m add cascade -label "HTML サイズ" -menu .fm.mbo.m.htmls .fm.mbo.m.htmls delete 0 end .fm.mbo.m.htmls add radiobutton -label 普通 -value 0 \ -variable Option(htmlfont) .fm.mbo.m.htmls add radiobutton -label 大 -value 1 \ -variable Option(htmlfont) .fm.mbo.m add separator .fm.mbo.m add cascade -label "Viewer サイズ" -menu .fm.mbo.m.vsize .fm.mbo.m.vsize delete 0 end .fm.mbo.m.vsize add radiobutton -label 640x480 -value 0 \ -variable Option(viewersize) -command changesize .fm.mbo.m.vsize add radiobutton -label 800x600 -value 1 \ -variable Option(viewersize) -command changesize .fm.mbo.m add cascade -label "Viewer 再描画" -menu .fm.mbo.m.view .fm.mbo.m.view delete 0 end .fm.mbo.m.view add radiobutton -label off -value 0 \ -variable Option(vredraw) -command viewredraw .fm.mbo.m.view add radiobutton -label on -value 1 \ -variable Option(vredraw) -command viewredraw .fm.mbo.m add command -label "View モード" -command "call_viewer view" .fm.mbo.m add separator .fm.mbo.m add cascade -label "オプション保存" -menu .fm.mbo.m.save .fm.mbo.m.save delete 0 end .fm.mbo.m.save add radiobutton -label off -value 0 \ -variable Option(saveoptions) .fm.mbo.m.save add radiobutton -label on -value 1 \ -variable Option(saveoptions) # 編集コマンドボタン .fb1.bl configure -text ラベル .fb1.bi configure -text 挿入 .fb1.ba configure -text 追加 .fb1.bc configure -text 削除 .fb1.bp configure -text 貼付 .fb1.be configure -text 編集 .fb1.bu configure -text 上 .fb1.bd configure -text 下 .fb1.bo configure -text 色 .fb1.bf configure -text 文字 .fb1.bt configure -text 属性 # ページ操作ボタン .fb2.bv configure -text Viewer .fb2.bt configure -text $message(contents) .fb2.bp configure -text 前頁 .fb2.bn configure -text 次頁 .fb2.bi configure -text 頁挿入 .fb2.ba configure -text 頁追加 } elseif {$lang == "eng"} { set message(page) " page " set message(contents) "contents" set message(ok) Ok set message(cancel) Cancel set message(no) No set message(save) Save set message(browse) Browse... set message(select) Select set message(etc) etc set message(default) default set message(load) "File modified, do you want to load (new) ?" set message(exit) "Do you want to save before exit ?" # メニュー .fm.mbf configure -text File .fm.mbf.m delete 0 end .fm.mbf.m add command -label New -command new .fm.mbf.m add command -label Load -command load .fm.mbf.m add command -label Save -command save .fm.mbf.m add separator .fm.mbf.m add command -label "Save as HTML" -command outputHTML .fm.mbf.m add command -label "Save as MGP" -command outputMGP .fm.mbf.m add separator .fm.mbf.m add command -label "About EWIPE" -command aboutEWIPE .fm.mbf.m add separator .fm.mbf.m add command -label Exit -command exitewipe .fm.mbo configure -text Option .fm.mbo.m delete 0 end .fm.mbo.m add cascade -label Language -menu .fm.mbo.m.lang .fm.mbo.m.lang delete 0 end .fm.mbo.m.lang add command -label Japanese -command "changelang jpn" .fm.mbo.m.lang add command -label English -command "changelang eng" .fm.mbo.m add cascade -label "Path type" -menu .fm.mbo.m.path .fm.mbo.m.path delete 0 end .fm.mbo.m.path add radiobutton -label "absolute path" -value 0 \ -variable Option(pathtype) .fm.mbo.m.path add radiobutton -label "relative path" -value 1 \ -variable Option(pathtype) .fm.mbo.m add separator .fm.mbo.m add cascade -label "Page number" -menu .fm.mbo.m.pnum .fm.mbo.m.pnum delete 0 end .fm.mbo.m.pnum add radiobutton -label off -value 0 \ -variable Option(pagen) -command "call_viewer pagen" .fm.mbo.m.pnum add radiobutton -label on -value 1 \ -variable Option(pagen) -command "call_viewer pagen" .fm.mbo.m add cascade -label "Time" -menu .fm.mbo.m.time .fm.mbo.m.time delete 0 end .fm.mbo.m.time add radiobutton -label off -value 0 \ -variable Option(time) -command "call_viewer time" .fm.mbo.m.time add radiobutton -label on -value 1 \ -variable Option(time) -command "call_viewer time" .fm.mbo.m add cascade -label "Time type" -menu .fm.mbo.m.timetype .fm.mbo.m.timetype delete 0 end .fm.mbo.m.timetype add radiobutton -label "time" -value 0 \ -variable Option(timemode) .fm.mbo.m.timetype add radiobutton -label "passed time" -value 1 \ -variable Option(timemode) .fm.mbo.m add command -label "Pointer" -command setpointer .fm.mbo.m add command -label "Select background" -command selectbg .fm.mbo.m add cascade -label "Background type" -menu .fm.mbo.m.bgtype .fm.mbo.m.bgtype delete 0 end .fm.mbo.m.bgtype add radiobutton -label normal -value 0 \ -variable Option(bgtype) -command changebg .fm.mbo.m.bgtype add radiobutton -label tiled -value 1 \ -variable Option(bgtype) -command changebg .fm.mbo.m add cascade -label "Title type" \ -menu .fm.mbo.m.titletype .fm.mbo.m.titletype delete 0 end .fm.mbo.m.titletype add radiobutton -label box -value 0 \ -variable Option(titletype) \ -command "set view_skip 1; call_viewer normal" .fm.mbo.m.titletype add radiobutton -label line -value 1 \ -variable Option(titletype) \ -command "set view_skip 1; call_viewer normal" .fm.mbo.m add separator .fm.mbo.m add cascade -label "HTML color" -menu .fm.mbo.m.htmlc .fm.mbo.m.htmlc delete 0 end .fm.mbo.m.htmlc add radiobutton -label Mono -value 0 \ -variable Option(htmlcolor) .fm.mbo.m.htmlc add radiobutton -label Color -value 1 \ -variable Option(htmlcolor) .fm.mbo.m add cascade -label "HTML size" -menu .fm.mbo.m.htmls .fm.mbo.m.htmls delete 0 end .fm.mbo.m.htmls add radiobutton -label Normal -value 0 \ -variable Option(htmlfont) .fm.mbo.m.htmls add radiobutton -label Large -value 1 \ -variable Option(htmlfont) .fm.mbo.m add separator .fm.mbo.m add cascade -label "Viewer size" -menu .fm.mbo.m.vsize .fm.mbo.m.vsize delete 0 end .fm.mbo.m.vsize add radiobutton -label 640x480 -value 0 \ -variable Option(viewersize) -command changesize .fm.mbo.m.vsize add radiobutton -label 800x600 -value 1 \ -variable Option(viewersize) -command changesize .fm.mbo.m add cascade -label "Viewer redraw" -menu .fm.mbo.m.view .fm.mbo.m.view delete 0 end .fm.mbo.m.view add radiobutton -label off -value 0 \ -variable Option(vredraw) -command viewredraw .fm.mbo.m.view add radiobutton -label on -value 1 \ -variable Option(vredraw) -command viewredraw .fm.mbo.m add command -label "View mode" -command "call_viewer view" .fm.mbo.m add separator .fm.mbo.m add cascade -label "Save options" -menu .fm.mbo.m.save .fm.mbo.m.save delete 0 end .fm.mbo.m.save add radiobutton -label off -value 0 \ -variable Option(saveoptions) .fm.mbo.m.save add radiobutton -label on -value 1 \ -variable Option(saveoptions) # 編集コマンドボタン .fb1.bl configure -text label .fb1.bi configure -text insert .fb1.ba configure -text add .fb1.bc configure -text cut .fb1.bp configure -text paste .fb1.be configure -text edit .fb1.bu configure -text up .fb1.bd configure -text down .fb1.bo configure -text color .fb1.bf configure -text font .fb1.bt configure -text attr # ページ操作ボタン .fb2.bv configure -text Viewer .fb2.bt configure -text $message(contents) .fb2.bp configure -text prev .fb2.bn configure -text next .fb2.bi configure -text insertpage .fb2.ba configure -text addpage } .pml delete 0 end .pml add command -label title -command "changelabel title" .pml add command -label item -command "changelabel item" .pml add command -label subitem -command "changelabel subitem" .pml add command -label subsubitem -command "changelabel subsubitem" .pml add command -label subsubsubitem -command "changelabel subsubsubitem" .pml add separator .pml add command -label left -command "changelabel left" .pml add command -label center -command "changelabel center" .pml add command -label right -command "changelabel right" .pml add separator .pml add command -label pict -command "changelabel pict" .pml add command -label symbol -command "changelabel symbol" .pml add command -label text -command "changelabel text" .pml add command -label textbox -command "changelabel textbox" .pml add command -label table -command "changelabel table" .pml add command -label animation -command "changelabel animation" .pml add separator .pml add command -label $message(cancel) .pmml delete 0 end .pmml add command -label title -command "makelabel title" .pmml add command -label item -command "makelabel item" .pmml add command -label subitem -command "makelabel subitem" .pmml add command -label subsubitem -command "makelabel subsubitem" .pmml add command -label subsubsubitem -command "makelabel subsubsubitem" .pmml add separator .pmml add command -label left -command "makelabel left" .pmml add command -label center -command "makelabel center" .pmml add command -label right -command "makelabel right" .pmml add separator .pmml add command -label pict -command "makelabel pict" .pmml add command -label symbol -command "makelabel symbol" .pmml add command -label text -command "makelabel text" .pmml add command -label textbox -command "makelabel textbox" .pmml add command -label table -command "makelabel table" .pmml add command -label animation -command "makelabel animation" .pmml add separator .pmml add command -label pause -command "makelabel pause" .pmml add separator .pmml add command -label $message(cancel) .pmc delete 0 end .pmc add command -label white -command "changecolor white" .pmc add command -label yellow -command "changecolor yellow" .pmc add command -label green -command "changecolor green" .pmc add command -label orange -command "changecolor orange" .pmc add command -label red -command "changecolor red" .pmc add command -label skyblue -command "changecolor skyblue" .pmc add command -label gray -command "changecolor gray" .pmc add separator .pmc add command -label $message(etc) -command "changecolor etc" .pmc add separator .pmc add command -label $message(cancel) .pmf delete 0 end foreach i $deffonts { .pmf add radiobutton -label $i -variable work(fonts) \ -value $i -command "changefont {}" } .pmf add separator .pmf add radiobutton -label $message(etc) -variable work(fonts) \ -value u -command "changefont etc" .pmf add separator .pmf add command -label $message(cancel) .pms delete 0 end .pms add command -label downarrow -command "changeitem downarrow" .pms add command -label uparrow -command "changeitem uparrow" .pms add command -label updownarrow -command "changeitem updownarrow" .pms add command -label cdot -command "changeitem cdot" .pms add command -label vdots -command "changeitem vdots" .pms add separator .pms add command -label $message(cancel) .pma delete 0 end .pma add command -label none -command "changeattr none" .pma add separator .pma add command -label "move nw" -command "changeattr {move nw}" .pma add command -label "move n" -command "changeattr {move n}" .pma add command -label "move ne" -command "changeattr {move ne}" .pma add command -label "move w" -command "changeattr {move w}" .pma add command -label "move e" -command "changeattr {move e}" .pma add command -label "move sw" -command "changeattr {move sw}" .pma add command -label "move s" -command "changeattr {move s}" .pma add command -label "move se" -command "changeattr {move se}" .pma add separator .pma add command -label $message(cancel) } # 色名 ←→ RGB 形式変換 (mode n:rgb → name r:name → rgb) proc name2rgb {color mode} { set colormap {{white #FFFFFF} {yellow #FFFF00} {green #00FF00} \ {orange #FFA500} {red #FF0000} {skyblue #88CEEB} \ {gray #BEBEBE} {RoyalBlue4 #27408B}} set rcolor -1 if {$mode == "n"} { foreach i $colormap { if {[lindex $i 1] == $color} { set rcolor [lindex $i 0] break } } } elseif {$mode == "r"} { foreach i $colormap { if {[lindex $i 0] == $color} { set rcolor [lindex $i 1] break } } } return $rcolor } # absolute -> relative proc relativepath {abspath absfile} { set pathlist [split $abspath "/"] set filelist [split $absfile "/"] for {set i 0} {$i < [expr [llength $pathlist] ]} {incr i} { lappend newlist ".." } for {set i 0} {$i < [llength $filelist]} {incr i} { if {[lindex $filelist $i] == [lindex $pathlist $i]} { set newlist [lreplace $newlist 0 0] } else { set p $i break } } for {set i $p} {$i < [llength $filelist]} {incr i} { lappend newlist [lindex $filelist $i] } foreach i $newlist { append relpath "$i/" } set relpath [string trimright $relpath "/"] return $relpath } # EWIPE バージョン情報 proc aboutEWIPE {} { global message global version toplevel .fe wm title .fe "about EWIPE" frame .fe.ft -relief raised -borderwidth 2 label .fe.ft.tt1 -text "EWIPE Version $version" label .fe.ft.tt2 -text "Copyright (C) 1997-2000 Hiromasa Sekishita" button .fe.bo -text $message(ok) -command { destroy .fe } pack .fe.ft.tt1 .fe.ft.tt2 -padx 5 -pady 5 pack .fe.ft .fe.bo -padx 5 -pady 5 wm withdraw .fe update idletasks set x [expr [winfo x .] + ([winfo width .] - [winfo reqwidth .fe]) / 2] set y [expr [winfo y .] + ([winfo height .] - [winfo reqheight .fe]) / 2] wm geometry .fe +$x+$y wm deiconify .fe focus .fe.bo update grab .fe tkwait window .fe } wm title . "EWIPE" # メニュー frame .fm -relief raised -bd 2 menubutton .fm.mbf -text File -menu .fm.mbf.m menu .fm.mbf.m -tearoff 0 menubutton .fm.mbo -text Option -menu .fm.mbo.m menu .fm.mbo.m -tearoff 0 -postcommand checkmenu menu .fm.mbo.m.lang -tearoff 0 menu .fm.mbo.m.pnum -tearoff 0 menu .fm.mbo.m.time -tearoff 0 menu .fm.mbo.m.timetype -tearoff 0 menu .fm.mbo.m.path -tearoff 0 menu .fm.mbo.m.htmlc -tearoff 0 menu .fm.mbo.m.htmls -tearoff 0 menu .fm.mbo.m.vsize -tearoff 0 menu .fm.mbo.m.view -tearoff 0 menu .fm.mbo.m.save -tearoff 0 menu .fm.mbo.m.bgtype -tearoff 0 menu .fm.mbo.m.titletype -tearoff 0 pack .fm.mbf .fm.mbo -side left pack .fm -side top -fill x # 編集コマンドボタン frame .fb1 button .fb1.bl -command "popupmenu label" button .fb1.bi -command "inputtext {} {} 0" button .fb1.ba -command "inputtext {} {} 1" button .fb1.bc -command deleteline button .fb1.bp -command pasteline button .fb1.be -command edittext button .fb1.bu -command "move up" button .fb1.bd -command "move down" button .fb1.bo -command "popupmenu color" button .fb1.bf -command "popupmenu font" button .fb1.bt -command "popupmenu attr" pack .fb1.bl .fb1.bi .fb1.ba .fb1.bc .fb1.bp .fb1.be .fb1.bu \ .fb1.bd .fb1.bo .fb1.bf .fb1.bt -side left menu .pml -tearoff 0 menu .pmml -tearoff 0 menu .pmc -tearoff 0 menu .pmf -tearoff 0 -postcommand checkfont menu .pms -tearoff 0 menu .pma -tearoff 0 # 表示画面 frame .fc canvas .fc.c -height 400 -width 590 -bg RoyalBlue3 \ -yscrollcommand ".fc.vs set" -scrollregion "0 0 590 400" scrollbar .fc.vs -orient vertical -command ".fc.c yview" pack .fc.c .fc.vs -side left -fill y # ページ操作ボタン frame .fb2 button .fb2.bv -command "call_viewer normal" button .fb2.bt -command showtitle entry .fb2.ep -width 7 -justify center button .fb2.bp -command "set view_skip 1; nextpage -1" button .fb2.bn -command "set view_skip 1; nextpage 1" button .fb2.bi -command "createpage 0" button .fb2.ba -command "createpage 1" pack .fb2.bv .fb2.bt .fb2.ep .fb2.bp .fb2.bn .fb2.bi .fb2.ba \ -side left pack .fb1 .fc .fb2 -fill x # 初期設定 set commandlist {title item subitem subsubitem subsubsubitem \ right center left pict symbol text textbox table \ pp rp animation move pause} set lnum 0 ;# 行数 set cp 0 ;# 表示しているページ set cursor {} ;# 選択行 set clip(line) {} ;# カット行記憶用 set clip(page) {} ;# カットページ記憶用 set pwd [pwd] ;# 起動ディレクトリ set filedir [pwd] ;# 編集ファイルディレクトリ set Viewmode 0 ;# モード (1: Viewer only) set view_skip 0 set version "1.2.0" ;# EWIPE Version readdotfile set filename {} ;# ファイル名 set docpages {} if {$argv != ""} { argvcheck } definefont if {$docpages == {}} { if {$Option(startpage) == {}} { set docpages {} } else { set docpages $Option(startpage) } set docpagesorg $docpages } set maxp [llength $docpages] ;# ページ数 set mode page ;# 表示モード changelang $Option(lang) ;# 表示言語 changesize if {$Viewmode == 1} { call_viewer view } ctrlbutton disabled bind .fb2.ep "jumppage" ewipe-1.2.0/sample/0040750000076400001440000000000007065161356013653 5ustar sekisitausersewipe-1.2.0/sample/a1.gif0100644000076400001440000000540407065161356014650 0ustar sekisitausersGIF87a, H*\醗|#JH陰3j榿隠 CI欧(S\媛ニ0cI界8s袍紐@ J寒傳H*]粉哥PJJ紀妍Xj殃徽廸`K喬抒h唔]剖朷p稱K勲飮x鼕殍君濘 L鍵畸+^霧宴#KL慌緞3k淕抗舅CM佐蚌S^雄給廾cM散轉s諳[6濱 N叱驛"_> 鼇B>p窄萠[腮鋤uO昭鼈哽@籐WO諸竇馬_s w~Ug!xp XR'oE!6]Dh}[w"祭Cf(]敞+#D4W駻枴述w=齶/=_踞/>覲{8 Z1sf鵄京%E3F3 桶遲qD 3?P x .TH%j X@ 0q. Mw * sX4u蜃?,6D罅/3! もNh窘F端MQaD$phD'MLKK#ЗL枠6'Ky$ B+p%IHM"J${s雰Me. 魏#}|(C'ARi &sK!Y∽ySr@冩椶1乕TsKf雜]}Ll%38XqV癰篳=g lD[Y~b@ JN eQP{2 g( H(QP焚n.鐙IIZpbT'N%(6n1FJ'HX:=zt* F驩P2sXE9~q>I Q池T#rXOKSl規[)1 J4t4uBWeU<$忱充|A ∬記T,\Zzo1豎JM薄霞,@zXN2V8jt P k&岾"Q+O儷m\ 杲.挺mfX.7纃KD殺h*[?(WVw荻T;鷙v^huy=]孟)mf玟qW舜jy;eW亅h/Z濆%%b曼4^DM+.裾k`5愡r屍5j1-l廈-q{J惠-&t80檜S6o Fx:;`8BF^} 澹Q^,[efyBMD逅^習ID&ehY溝~Qmk.歌p%%\4嬪w.2rhAT尻B9|輯#几5Izq雑捉,S}Uz=a掠GM V匯t4g=sy舸bb3`'TF0l祕&PoMj[旒龍況絡n{梳係Mr樊N刑徑v寺汾キ主Mz椦滾侶穣酪~言NO限齢;墐'N% ;ewipe-1.2.0/sample/a2.gif0100644000076400001440000001074007065161356014650 0ustar sekisitausersGIF87a!!))1199BBJJRRZZcckkss{{ゥ亀十篤領嶽湎艸闖, H*\醗|#JH陰3j榿隠 CI欧(S\媛ニ0cI界8s袍紐@ J寒傳H*]粉哥PJJ紀妍Xj殃徽廸`K喬抒h唔]剖朷p稱K勲飮x鼕殍君濘 L鍵畸+^霧宴#KL慌緞3k淕抗舅CM佐蚌S^雄給廾cM散轉s諳;6濱 N叱驛"_> 鼇B.p窄_腮鋤8@~|y鰲O=諠@|鴆?0<蘿B }h2}]T_N9HUs1y]Xv%+bGE&:GHQK"bcJ;QI-6$%bEG圓T'ezSJyXNdUfQz揣?[f7&b9^jbfvqvi]睛蔘'yls9(zhz>C.)"pNJi:6Jo╋Z荅テzj*鮭祗咽k*+Z+Lk,). Rl mJK汗FK躓n覘虐zm灸+%n紅存邯 9*至-遵fBk妙K 險o霏h粟 [貊 1蜘fD17"7搾X訴 骸鯀瑳2*\|確倍D)龕火酷C46{穡M竚saガA/c讐Rc花"o3?藍YO宍W欟E6M-m#6M7/.xx&冷m4+G項4_浹:~吉財mL峡:~n{欟^谺k$隙H}草O|蘿h鯢'<齧6麕M諸 =n_<鮹dP罕鞣/2隧燉鯒晶Olk?O}_Q: 6爲>eq (B &` 8 a Uh/晟+c乎B巨! !w8QENQv*ZW`J.ZP^"h0Qcf"ひ愿2d篶 \x治飄@迹y ;#" ELt$ >・箸&7  JQrt)EUR $cI用,ut彬]RGrbLL1w &bML M7Rsn2WL2&whYd蚓Jrb'伉ybj?gGy 奧1y^恐TB 厶HL *@Z槇藻G&zR4 iEf冫;)J=ヒB乾HI 竒6莱MUSKI@)蟠SUD)j圈jGE&T幽"DJ] (責zn讓O建娉rUib%Y岾nDkj樅 VO冲a繍[%VN ,`W7 vM`' `%lc>Zq,d挌6 k`}N犂Mmj全V軌etZ旒v協ma掟V9上D-本:Wl*汞Zw些nu]扨Hnu3+溷r脅-z幌jU|絆岸蒐~K nw嵩V7n&p`H18状p T齢w {x岼釈諦8`Xc.q&WxU6srL擇 @l!y闘={c ;J2(VΣr,eqY遽cL?6s9'j>l畍Y-V3mょ>Y貰f0H6院*/kf5JwY@7Ngz9畿剏RM頼Dl5&kQеゾp裔旄Mlb 6kl\J拯i6=lK"[斟況mc觝Dvt~#m@@祭v?nvw川z[槃^轄o|Gw甚M 'x~px栩 |'Nq傘h呼-gg 嫁 r猫 -"|y=杣8yr<苡 |@>:H^槇罵M舅s\tJu峽u_]謫邵惱3yhG:7?渚k wOh@滸常z止w]|O wy qL>:7煎{o声?O.}O/z@=_y墨漑@C=/灌~x_髟!]{|kHK寄 西u{1 _i痿M迎骼?%/@蚣頗W~2}* }H(J G 3xA} 0') 2H#*2u8(&HN1q3(@>HBh-M'NO'I=QxVFY^Rq#XgD@ qssRz(|@tlthXPzq8HqRh&hnp7x#! 駅!h`r錯絹18!HQ 標便8o煕)8輪nDh&HωhX独 蠍fh/(X qh鼈5瞶Z `y c(Yyh7ihf腮)鏝t-$(*6(,9>7I%#IVJ-JTRSYL9qX(Z [0moIn91rx@w da9~ ei})帑G r)1m91I)2Y{yi!Ι)ォ)9Lii`,v拷辛$)9)q礦yZ到拮>ド楾班$  h +"A2$*7瞋5賊#+0厭j!:山<朿>@;覬:+AC$BB{)J朶=bNR惨VkouY晦x桔1"^{rd[Oi散襲-}t[v{xz桟|朷~;[{燦杆;[{珊杞頃;困[墾{恨昏産杠紺参;惨[散;ewipe-1.2.0/sample/a3.gif0100644000076400001440000001065307065161356014654 0ustar sekisitausersGIF87a))1199BBJJRRZZcckkss{{ゥ亀十篤領嶽湎艸闖, H*\醗|#JH陰3j榿隠 CI欧(S\媛ニ0cI界8s袍紐@ J寒傳H*]粉哥PJJ紀妍Xj殃徽廸`K喬抒h唔]剖朷p稱K勲飮x鼕殍君濘 L鍵畸+^霧宴#KL慌緞3k淕抗舅CM佐蚌S^雄給廾cM散轉s諳[6濱 N叱驛"_> 鼇C.p窄_腮鋤O昭鼈哽_@籐 疹|_憐'~]壥Up 0俥FVHFAa茵廉$:H]Bfx!v"!4Hhc<掌!x0 DiH&Y$悄dQ:U墓G(`Ne[ifL.@k局nt g扎V帷gx2:i($'q攅r庠~N:t裼*(p**D φZ*yj~ +及]+N:5 l果*{+pF{*V+-H-嚇:W躋l兼m{mZ;&究Kf哉Tk鐔vK/状/頗> 霎鵈齒 p+o;,oS 'pq {L酖so(|r)w\霪!2談2 磧C^x堺D豌.A.訣紗~歃仕城+|錚.痔緤G?z;.装g=釉豊汞j_炯緇~w?FVH?銷+菴g`+P}赧Gz/NGz ]zY&L/霑バ5{a '罔'篶_W > b!ZLHbツ$ HhDQ"st&qgHF2~qdeLF5珂=k&G8強ed"徃0洒 IHAq] @!9H?t9HFf$Mf^QiRP品T罔|)_Vbl.Y]昨/0- s"{fb団4cJ3s6)ql6M+畆2_w g;/牆nz$髷|>蛉>ysU>iyBO2t5CY酊F杞Qf_Pチ<変v4も$JO衫YuTi,-LkfV臥J?*=RUG点QAb4P5*JUVuKZTUrUWmV霜YuLR欣mUjSVT濯rk"J垳5r_G愎b彡渾-\sぷ@揖f7, gベVmfGw斟妛貴京lc枉6GUe滲況5X|捫7r榱6疑s栩N限u*6Y蔦mP0O9=o諒YiJ|I漿7升bGC}/}蝸_娵宣M$垪嵬.wコ[U齢Q$癘V^r,8!pP,6-岼X 瞑6 F Q3X杜N1;d Lv?6!Fd9EXS*O硫-[紘t/9{惧V祕}3s嶽xk|g5廳kN-lA傾8FQ V64}IKZr- 41魂%t+jzヨW}iJ規gMZk諌5`}kZ恫6w~-l曖猶Ce;^<3:jS旄偶m:2盒9DmUbT榕f卦mtキ祉m∇7=o|o止兔-ZC蛹叛 Np1"o~灼C!%!K H2畿8!/跣o陂E歴<;wjMr7?u[鮗 9R=qTidp剽検{晄4? [X_Xua-}蟶妁iDA;聯la 凍=F%サs徹(aHX~k;瑯3C*>rqDrhi &姻sGUsy~}=z啝m曙9_較>.a瘢OB攷z情/~7|≫'?楚鰯級改陞|bPV[ +H~b烝狙?朦gLH~^@燬寿{倣z>9嵩鶻_C  =竺;Gc吟5X抗<5H;8"hsh1<[7618y7C((J7vE8Z3QL8G:A1 c5誑^14_fh/53l蠶]/".B|,5p{xXA+b,,羨h*GX)r)n(&(?(J9頑RHX3h齬8x怪 #匕*8XoAXx殀YQ&OYB2`,hH?駢羌\=bワ #w(B Y 瓠竅 N賺3ViG9Y3y#y(Y( 3I397)JQ368IVD1Y@Y5sHжM2i[ PW9YWX9/ZbiBy2l5c9O hi^) |~:4@)Ci~} jI?#3}iぉ5x`yiCJ $制9Iy邪^暼曰4櫞5爰/395y贐y%p91Z3J3i:: 9@ Y`澄:福%jJ)(5J*0Z:zq箱:zZDEJCJ^I擇F:ぃ磴3OjSZbGN擒灰ZjスHZH困吹[ GH弗D螟nr擘ve^vq蕃x/s*'u*J恨摘PqjJ懇擧蟋;JC┤│ZJ#が 舉減Zb1 *@:Zj分Zbz:x3忱j^雖籀乘R隰 *zjZ::JD 早擯c" 朧R;[央噴 $霸 ";$覬c蝦儕%%+p. 2[6T:Z# 4+山D[寛yJ;yyソR;T[V{XZ撒\杁^`b;d[f{hj散l朸npr;t[v{xz桟|朷~;[{燦杆;T;ewipe-1.2.0/sample/a4.gif0100644000076400001440000001100207065161356014642 0ustar sekisitausersGIF87aBBJJRRZZcckkss{{ゥ亀十篤領嶽湎艸闖, H*\醗|#JH陰3j榿隠 CI欧(S\媛ニ0cI界8s袍紐@ J寒傳H*]粉哥PJJ紀妍Xj殃徽廸`K喬抒h唔]剖朷p稱K勲飮x鼕殍君濘 L鍵畸+^霧宴#KL慌緞3k淕抗舅CM佐蚌S^雄給廾cM散轉s諳[6濱 N叱驛"_> 鼇B>p窄萠[鍜鋤u@~|y鰲O=諠@|_}>~_B罕 HP F~].98p !hb( @'\+嶷"u屎聰6Hp咏#? H#v74FY"'XBd1^紊aIf9e揣AN号ncxt勉& |6 @)&}読Α6ZE)iRJV J揄Z秤ΔJ*2蕭*j j五 *褸螯長:込u l擡獲-朶nZJ 躔柆隙Rk畍罹細zn詞\告6駲踪網誌W蜜蟐k$蠕 鄲lKpOL1wym 26夏L貶,[e末Z 麑 3歩依-3蕨擧2.Lt2偐NG4別B沐VK-5Zg]Lo]プ]#MQe[)d]QmGM久>+tx膈w>澂径{侶 cx~+7;蛯b`@w憐3z邱n:s{N崎O啀+蹕>掩涎sn@臙 9稈^%駝/;D首k署7?u廬諸冬叙%鐚萇w$燼竟p冢|晒飲_棍C毋籃?俗{+`xs泉e_1> O%;A(滝%D ShB4%!fBj A"?$碆板#衾! 4H%zTlh,:q Ж0-fQ}R瞎@D6S#惴71j<馮G:Z,~|HH9fL;ac 4[lc&組LZql#$AIJq+%)P22%,aFDZn魅.'yHSmT0i1]Rm2D.3|&/y法 2畝6撹Ml2]}擘8脂K"9s"dd;畊k拓燼P~gJP>=A-2m&D Z./P@4変z苅 ':J&%MGQ災扎4{I)SB-H@UXOoQu$誉I Za3B3蝸%季G=裔1Q酋P;圸.5H]Xqr`綺堙u愼N6f3{ 干g$嬾mIigv!'nmW蚫F虎b勾汾キ主Mo}溥Xxy豬)p毎7wN柮~$N[錫晋3{x書D-уg8蝋w<$霍A.#|>9瑤臥P:倭&ud 印s[彷hE;領]輛n;Y>v貢r_8^w鰻=誦O帯7wH+A膤! 湎!3例hv|4?X_守時j鰯y\o=o {[逮師n1C/ IZ潁)> 縷x_@棄{_筐{燵{杉廉恠W謎'@g舅n  H!q  xFh18X%"(e+#*8H6w1':"X2XZ XFH7vL8PGX'SxHXh=[Uf0exfeX2Cxhj(v(tXw{^qsH%C齋秦688h80gCE8~xxx竿6X2集;c文妨;使`XX柳惡h$檜U{^紲8:A舳ャxH8ラレ/ンhh` yXOh! tyY ` +i'I *49-9:u)9S?#)81=iMOi| 'NYPIVWO`dY#YWR(L oo hu )st)0{z&yY| }qin9Yw [6 =i^89Xn姻Y+7&T3y*郊Y紘8)#Y微f\@印 'U"'HE『LY[ajBbCm=9)999I)yZ閂m實{7| 嶝YZE I#*4I、i=-*Zy /幽t稗<@n蕋M7BRC =困BJH蝪gK LぽX+7KA[j!`:`fY淵f)tJ5)9x*I 7y擂+q|:A|Zv:s Ю#=8煦-?曩Sェ=@8"]物`勘及・暢(4z苓碑亙茗z`s添(姜"%疂喨fz*佃鯤混#J齲*g誰 UH朦苫覩)e+{k[鈎鉛8霸'k歯- 9);.K([?T0?= ;莖$!A惨Ck+k-朶L覲顏S+T+\撒&!_b;\`hbXd散#袈dmnrOv?p祇y桂qp~k[y8j欺姥杆;[{珊杞頃;困[墾{恨昏産杠紺参;惨[散{燦産算勺讃酸実;篠[柴{屡縞纂黙^;ewipe-1.2.0/sample/blue1.gif0100755000076400001440000017672507065161356015401 0ustar sekisitausersGIF87a @@@@@@@ @@@d``@ll@ll@lx@@@l@`l@l ll`l,@l l@ ll@ lxxlxlx@ll@@`l@@l@@ll@@ll@l@ll@@l@`xl@@xl@ l`ll仞@l誓l@@l誓l@l誓誓l@,@@l@@l@@@@l@@l@@l@@@l@xllll`l@l萓蓙先x`@ @萓蓙先@`x萓蓙蓙先l@@@l@@誓@@l@@@@l@@誓@@l@@l@@誓@誓@@l@llllllxll l l蓙@@l@@萓@蓙@先@@l@@@@l@@萓@蓙@先@@l@@l@@萓@蓙@蓙@先@@llll誓llllll誓llll誓l誓l`l蓙lll萓l蓙l先llllll萓l蓙l先lxll萓l蓙l蓙l先l誓誓誓誓誓萓蓙先萓蓙先萓蓙蓙先誓蓙誓萓先萓先萓蓙蓙,38B4(!6l8Q1JxF 1ど(KLニ#I s8qf@0PDqti哥OO0:Xf戯徽廰@z f=6m[pb.楾x盲w/淇%0^D +N1秡#K&Rr篳E*[N9gC.rdt#S{.Mk圻QM[v攘k考{6N叱qn楷Q|xr翹?_失pg象:D}`E7Z\1{gH2JStd1剛MSMATOG!`SBCQU VUje(\hVYn]+U]~E} f )eqfmiEニi圧FlRZl甑屮m]oy\tgR'uA&s彭iv殄Fy'胚彦u4y蝓R}!zD呈~+M>T`ZO& *uTL!E瓸PeVzhUnduZ&h*xr%谿0沸祓>#ABvBvf%符O>酵6%i劫宏)y羯j&l巍N陪孚)AG{%|!!}F肴KI ?YJ` 県 *Z*Р \]jWZ!b)s\.[葬%官:(c@6,肝R;dhv躑XwZja釁9ωg聆i6\倒{寫kvy6wyn2l_ 7h#k* O~)J +eMjyR9Qi瘉場"Zs6z;:~\#`DcaK7ld&逕fO_mIY5gP:搓iu`mcivv緊 кs嗟]x?糢{*葯?口W i_\iXxandEJe2路JU. b!euUpE"彭ECKK|&BcYzi%MxNkGはDM[X; 契典oy+6B擺{d:W崙超]9+e欠 !c麼oAXH Eps?ヘq;@:hsxS慇.UWT*検U`VmAnu",v:!a%w(T℃B-fxL鬥FgOJ裲用局.7」旃:c稀ph廚臺;pKyE袒Bv鉄by'河}4%M磽zv?%}rR;@,sjj:i詢wto}: 倖> #N停[#YU-.7Z^雖V+YK|bM:傾w|&RT6,'/q戔JZ'TOiGr zm@>t<緝U[-Rg3窗q履骸HE3h }蝿MBWV^)wlVtt%q嗽Cry俵.鍠弃[蕉6}3.Bk_eo鰹 秣碕Y@貎*&.rjf>`uO傳9S粁?拓z6刑Fj隧q KOK妬=b ?:9k)kiWVX "E5#^/la2,dx-kb呷HV并E1/K(冶7a^m4f.*j!3D(Oe3wl将Y緊mY-naqkg#%oL蒋1Ec7WQR弸ua醜%姆6<61撮)q>(~Orr奪厳靨`aと aNM7flK3 7Cu厘~:[痞b+V/h3w茜"4~b冤Ma[tC潔~: 覆吁扱:廴{K桁{3滔mM_c磴8Q吋沾桂`跛Ι饉G q<:#|8[ZkカavR屎5?)/ 湲磑轟F`QR6bz藷Bt3n7$oтz7uz6{X[WX%v^7pv&n^e/F/'F_SX8eve;}iSFlF#xwTH5~@ r'r1H寔x*[H週A]sT\B;D4'z-b0,J'<"]#5屏zVscz Z!7)$M@(G禕rDs+3daヽsYyyOIYItI3hb8oV]wJi8V{ QZDv'j^RRx>0|樢wq_I?0RM嫩8x~T~7[{DgXaDy3:B腑P紘+in7]組#tRR%宇i){I$j索9w/QFsk2(X]eCFd_z7`? 8E9TfGr嶺f腓PYa!害2aVY8gyZ%7bSXI )En治uPnec%読JA5 j!IjBXqph^Kqj/j'U60hJQw}達衂q@%df擇`Zr鞅lN%g+wxN~mxZs4]9ZVFPIc1Wd-*CkuC漏Ww B{`{H寢D>Nfvt#榴w礦L9kU(>j}}6D%T I扎T *g*7fs3(h { 〔n/k5cr8圖:{!)=x5u恣{ РxeRae3 z r:B[lF:7ZF岐粥9ajHT[鵄9yC"\+}!&*c^XL袈5峩Wj4{Q鱗Q$Jip}x慍S'eL37[Tk'F窕LYFb2鋼W8-O+sV帰80#患澡<礇ZbXdIuC*WEn擽 oi#良{h+慌sR労tk/5稟9+w膤:1廴(F`4r~笏醸IIV:Olq 蘓UH; LLgMPM'C6e粒52;K_G^Iv6z臥d寤^;k;S\fkqLh >Z`-xF杖茫@箱 随W+c混G根耽憾dz躯&ehυ$H姪o}JJBf|~IRv巡{R槃R:t\,LK_=JM5<xtN)2:|LQ 京[DAbW覈:Z * 麓oc顫B翌J4W],p !YXVKxj@>+Kj,LSf噐15d]6u剌醋` f<媼f傾F*峨+}-#yUJ3蚊宜Jt {<.ょq寐lC匝\>mxiy)j=簽\灣i^恬q 嬲敝寒\}ロ=whTGJr]談憧<<[K9VNQoAaц恋y;V_#隅yaZ);t~eヅj闡o景{=^喩|v懈鋺xh歿濶83H阯~嬉錙呰莵卦yg/Aj^H]U7歐8t&IF鷲IyDX俥AD1醗B2\aE`a敍 QB.eNSGBP寢Uj妬 _n v aU[#!Wd鑾k件淇#H\w0 N1稠#L1e5#量sf弌1>t葭O6浦衵_vM6m 籤什訣歇O&樢q篁Y瑠翳_醜u耿k'}`w'OP|BZ6Z)?[T?^I%`)A)(OZ)'dB7B = V霜JEL5EXtQ健r塰y埀by{Q倒FNG|VYgZI'[箟v[XM堀7.-ls72僂^粭v3溯筅`獣 oN樟Ж癨o\DQr樞.gNjcX┨S(+#腸TUtr`!彭j-群嬶z3暾lX+\!秣-wK -/ZY^>T-[棹$.r6Iケ丱 ]kcs>讎o_諠⌒'`1u3/>Gf0$pLI(=s >O5Hd13Ml採d*^3h'aS|8$8Kb諒$c/tzjP;"Ot-K5H ++*!J; WACh`pxTD'j$駮F5糞)J疂(vi"P /5 3;o欟SI6%Xg(MSqii PGE*虹>┐癘VQ2U?I支Yv-d'qG 浴vi/j汁zK閲aK6瓩]Rlb{&'}S1L撒5 Z@~f,\12Z1#QH@RJ=倏:6M-s亀桧JO燼]芙llDgMZ嬖M乙B莟にP癜┏藤v/癖Zl廳4懃11zIvηS~,擧}矼 " ;pM GvS#,aP8R:7瓣\d -RH qe]j愁UnZkKGJA,xRC*1遍yH<盡d9l)b挧Iy奉=&&[熾綏裾SA+??%$Ps}fCAnv簧99K5&80ΒNIP{6=+A眈c=L8BJ*w錦殪 蹕-;M藥VK uh^)d[傚GdIfkYZL岔M蹉eJ-/bi-Bl5`yZ埔RΜ}muR9n=\[e醋d6蚌=鼇耀蹉殳v4F4=楫^{H~kx叙LN,,WMf;5sN#Z3y憊pU%~6@9QmCaY囲齡"Bj耋1敕@恥I6=xu!*uGZ罠яoo%{pMJ[pd&NV堂f嵩橙芍A{lA! Vc\ja.黠LdV歐鵙QbEHG駲K礇K. 4e后開鶸0齋!(R蟇sY,X3ウ[箱*b礁r>次k&#A#5blB7dc;皆6+; 堆お o[4+H$(Gc.1[=QZk fYNCj顱W( ,:"#*  _R_CY/:y"淡蕊/f/a-,3[[6pRKi訌:?#=nKU*{$37b1 (r+x曚茯+7j1#+鋩74LCS+n1臥)C楢W+鐘怪C}{F>#槻8q■9F紳 #:?93J?oCSY李( =u斬*(Nj天*H%E|朶J!^$^/6 乾3a侯加; Y8-z謎蓋=iAB\130yCK9{3Xbt5∧Z>戝\5`5.Ki曾Kd#5鞍1Gd IDJy漫$yおAPL.41I79厩F+!z;H1:t% 眦 )`\"bv@);!A|泳耜;蓴5脣;底+-D閣#唾茶E[*v'w$< 庁腎!r{,:~J"=J#bB7Xl Z箚$―2M礙L俘%庵@ L8ddP輝5"&l祉8;_;l0莠畛3{6<H3s簓陳 c'y9$;OLFZ蔑:$丕JlEkBHqt踊\\t*馘_@#Hr,)偈 黍K 轍#制兩江l4rIA9jGN#'低6"楪萩唸D下z<'s放 Ml咾!(z+*@11重}産~張@%;/玉'dN\88K>竺&鷂z#4礒 t3AQk3>砧S頌[3>0j0D@ZGd " }'$耀Kj`OJY{ヅ"佩u斷5Dp(qi]}]も5 =5Y>y捐裕@<1 6MV * 6V5N a葱淒蚤- v卯|E:哇5Smj 仇lU8tN2L↑フ[KiyΦ[#IF/.0纒L$8dEco呀 '辻r紺 嫩vJn9辣*e榮mJ[1=z.u〉aE@j┯\殫筱萌s聨&.%ZY@VR6e匹lUneX璢A 礬3[<=mr6 樹0V剌V \K痂iT熬稍%慣?華f4d!匯嬢峇)d3|舉~]SHjY%X2盾5:>=F|>g!#6 0S蛹;*rr跖immkk<導乗MkЦf肆y.Wi6t楮綺$%W"RJT=UqvHiVvf2<懾挫oA+暸~|j^ 6竺貉jdKmrND[L醋Jl $N3>4GB]a4rC;d籖)of pF*&t醪M骰'sz援Fμfef茆CπF2+F'h{`hc菎VMl姚m^=hp怙rk-7怎*~YD那3l7]nB疹廝ts7G竪nV'M5)ブzme杆`+pj{始隣w槃/{l淇 ?,Q~F|g/11N甸驗zLr┌ T.螽b姙N88膽:2:4]8EccY{B.k箚UOKfu有-kb;v惘{6娟kpiWt藺't諂沽u-pB/L}2%vy9B葱Ga > -ipI 裕唆kX D.蝠ig&$r[x{R/$7(v羈20&$礬gA? MnHmm/W郊>5牒C9脚ddLd朗ner+JUF#(A wJ寂EI$JXR薀雙任N03瀕n.-脛鬢Y蠖mhvDjJA.% 3eU_&U*f恐`W2bW($zEU3f!(_JYw}]8T2拌4^^ID*1ヲ}答 O淡hW05h聨%-A0Xg2sP!y3亠細=K0Ru絖;/R=hvh<]}扉"5鷦QkLL,.掖'.|チSKFL)旨Yy沂.邯`%G*8U^[>{P@C鬘*?xn僥>_TDケs5晄5tMZ啀]q 痙}M輾^lTo](IM]槎K}Q納HeA栫|H熹掟X溽7 QO 8=妣xmMUhoq_]>$肯\[s儻X匕曖^袞CU諄gy+附q b-掏]v`紂廊%g]g-t[UP!5NlE☆mN %RI倫 a^] 欅` &Tv}aCIFT}Z}Hay^^JdIK}5_MIKC 6Jy\~t# N磔 mb芟%! 品憚p萬*L`Z '^ 5M 翌 UZ春P_eZ^F峽籤yV攪^Z5{WJ鴣!5R\` n  O∵莫巖%Hq疋#kh<]n W惓bu? (KuP.n忖/rxY$a%5J0]1 bV5 MD圓4y4Y1"逃V9I[ 冪]L膜e( 鷲 V&@R@%!$鄒B襃NCP<夛qa e$#iFNO5]dHQO椌!Z3 zDYE QeQQl`Q*.S襟hS鱒'Z淮 W=)Rq娶 b]+Y[o6$]PqfM)[JaE`U船 槨跂u}I}a糠来f)xN$肺G8jiI{大a9;*^睛coA予i卻hEWe&!l&軼@&哦X2dY )bZF]pWbvh=O!1"掫R/furQLn# 6崘d8f凪8]`R~&vmX葫妖UZ^)XZ*c@剰佝][%B(u= o^[^ qBqjGM1z5遏e猴v胱g!鈔lu 6矜t4囗%&6e'fNk2c聟Y_@k] &$,l鉋fYObME^勞懸] a揣z&晦hu甬eV5W&*!(VNFi%援:6U挾]隆UgRP*">歌qi紋f6蓙`6 f愁JTUDih/f沁u0sr,2e華鋲祐RK`Mugx mV!(第GbPa啀iSg:2疳QbRb[$ r{`wm1謁!- H y扉a`V賎峰-a^獵|xc犨O.黯yQe$_S~ 聒cV h蓆艱?r)b-選' )GDrW劇艣(G瀧.K苟q,{aQ毋$c屋預pUQ6| f^&v訳6{vnv[蕭VfF*蕈2bT I駻欄窒jZ暼pZ0>k恙釖T2已sed Φ~00LCC00ヲ 桾ud句>"潺kfexG關腮:m茆>U驫@%開4 3厂慴扉;G駲]4kF壅ZQ,sl22+T//Am_(R#2aw`WSo}ncRd/a3 籠5h甫bV婬U1Ksmi939%q*遯n火_=_*緕/畋e廩\zZtee茜i庵Aceagi Zd6場g]"n嗜!.龜X 田0"n Nn2Y.6EpkU~KrW#%晞|mrX溯,"墸NcoVPqnRp26.q6h?#RZ`J2膝~-*XC4∠]楓&#e  +f'o&'up5kz"?zi吩`鞄躊_)2Tv腦odR)拝,))Hv-q`Bc0%_LuQ8t'Etc&ZS陛諠R|r9gG e'T 絅貫2oJ_ 物巖B;OW渫a関VT7*軽RC-I2tI.`牒 F}cYw6群67l1 xZEOb%uYS'uX#S 怦u :waa'{r !b嘯茄^!PヘGz$q,紿穢_J}{h?{;瀑(wO$lsX蟇 蚓mg士W"+g隱排幼=小X妍温k`xi2XYR6,!h∀ofQ|{黎掘O ~ & эSw岱"  6(`60 D#>8#3j榿cH$F$I矮+QTdK3[Y 9Q裘sMCz皋Ku2]刊RRV戯U Yr}V'j幀[m -[m殯n^D 瘠o_5pbaL1瀏 7vl2f97>rsG{&MZ蚪?i}攀袒G旆m6轆q歹濮kn8鰾+7ytW; 抬wN]!B7py)n兔G?HdHaT&z*'R@B(J 束4 +歌"丹 -BK-個z-Z+添Q/ 覗nT/Q 錆寡 ;2L3D 揺't辺NKJ峇K\四K0骨勿+88舳9葯t郢躇s黄< [(= m=8哉x*O>H?O$q*p&x'UB厥BTS娟訥AUDWL\[5Fm 1 #愿1"-拱\Y&C3 閣[,閲0施MLp M瀘<3L氤{s8NN:觴麥蠍祿資毘P[onEh>I'ヴ'K刺@*AQ?ePQ#式MEBZuUCA4QVWa槙UFuhbk版Y#D3jk蕉片花purC7wf]74^y觸NF5cL霎-7AR聴eV~9罧嬉JiYy烈W鈴{,vedh斂>[>K ,Q彊推養/s#3戻f85忿襟>8>給W郎$8AM鄂D!嘗癩x髴c|c{cTM@) sCYFUaPiW^"f*哩b+侫NE!\h`0C瘢u4MYMkV(|5l,&mtズ @Q( J=@ssP!I"Y}Λ>:|作g杢^S.f0A, J*Cy$Fi[},_K+zMW闇6]6g K%>_\ 2y枢=&P?R権B?o樔答茎PgBU掠 j;afA莊\$:HHeu黎 iB"v>*ZADW#5-j5nn!U lxQ1さM冂XD{"V 7{n珥~拇v{mhHEmO@Tc.(V5J(HSr*竓*8,d]蕭晃hSkN牽J囁zS8[S5r Ul掉K&t{,鬩/鑢 /o苹,{*8辿├=涕牽J*-\PQ)#U&AYt'piOG綸/擂 + ,攪1刋I禝7夥霄J!R#7^v遶k*:孔wn逕_>慇fF3o~;凍HGM$P8 Y壗:Rm;do鰌qud1V[Xh凰j;mYC5 dl+6悗FTk(O9odk-n9)l0OflSPL[f%轄Qp*@{;#.畦磔z[+qZ宸un 杪u12\()害Ex窪Q#y[Z<=u1嵎id誚|怒<+7廷脩XF5*xn磋l7|@z|E6U>b釖X=gR"Qp&臾~莎SF??W蕚4Ywz壼 QBk@鐃C]{+}]豌! 誄#z]/+YZ?'n){>4}z0J?◯F絋xr`m=鶉L(衡褸 yyL'n5告6[Jnmi柏繩粁$ l」f\Bj孀$m00 NtI皙0K惇萠e木~GQ%b RH@"'Or範A4踰"O砌頏.HDNvV妄圻FdLX硴0w 2m8j h2 6*~(p厭綵`蹐fゼД韜{.i}|)E/莫8L9臙ミm舂裸Nt Mg@/zパ`q(逕KY 覈zgNj%#Q).Fq$a{E$Qq%[nvdPL惴 ~ (KbL()遥"O 鱈*浜 G'+ 蔭X+ wMV. 哦E6# G者倬h)伏鬘KP2下蠹蹐c_DI&o1=e2s'}抱 Rgo鞐>9>$g丁3) U乘T *僮0腔lB'm"‥tJtHlyB9g4*]sqM|j丙_v勇or"D訐`0JK3M/,j\nI覓葮iKVR@航@O!荳tXJ役GRtQ貶ejvj> /搴 廱$佞1┗~蛄禳泳G稍L t2Ra(枳>",\KS[N罨F&tF\冱 Eqi0抛|I轂K9p;Q滑7 P GI~|b遺R鐸>0 ^3跣4msliォrT` ! EWGn!B["m"MXD]NK$0疊Y(UP*oN(,邁#<3J0寐1~B+0\脾p2黻垉>j楜 h^鵺樗L曰TU*(`U俣Bv繹動ToW= 『2.%C;S 2U笆逅O3ommU[池|頬楠 EbgePq(q H&g4рR*+UQj6fs`澂MaS-_沐覿mD{LィcO4c8U.)qT)O爪w'59o語F7!'ix骨,5IBus.CC8wQ湿# 廉l$nW: yQ1evW\籌3gz7u) SGS^}1~EGtO,踞 oe葬汾Og剩歳gHv 鳶vc暑%$%8OWn臆s幺;V膏蝎UVx_X{QFNW>/qs:c架)!/憖 !9fU~^~a5!?/^VN(,-F.rb[*/9nN{kP皙Pe/ WG\{R女T初u0)+)尢I-srXfW_9 wK)jYugD頴XRk}黨W.7xΔ8R9赴^YFL.懋晞ZEUT%%zYst幸O w ,{qyv3)%8S夫]{6G?[堺-K4塁 igQ:)M"g 忘8E觚Nn/+M2dw ]RnipJИW明$R脂{qh=];U/L摎^qN 鶲t++t犀9g腔:I^wwdwvQ゜ZTC?ewcL4xzXジZV0_蟀]荊O7X]qYf=}Hq誤斐0]j;:R屎Rt UEzzFiqsKs0郁8.W9 U9w谿z8T{Z起yuWQ#Q抒5*1%S7驟bN}拔4拮AJ6貞/TV.,訓姐-"雑鋸w0tC8lUzomx 黷綉g懋F QyTT ("T/|Ui発T#Yt7Vw:K` x$M置XNxcG軆s/]E非S1膰2Q匰9\m来鸛yh Y=5T弥5頤s埴$~慌]Q冽YVa 化l[柢Z3U#破狢9*y瘧s9闕|嗔[得/s匝(WSY]拓羂y:s8[e5AW胴違t亙蒭L*wZW XsQ3~欺Gt漢セS[7%W2:]br3GO倅14'JoP莚ち\胛I9C7Hg~UyE+穴U兄扞愧[杓穏 0Xm―/vN9G~id萼R23U6啜鏤qGq旺孝$g8hPq3&汰\AVT95s徊9KU[6 Jk u粘hu蛉`|嘲鰊w扶+j 4&畫 0D倚n&Vh奄Em6v壽&と#4)%I7Z| e2_f@f :w銀s<Jh劵#6] u嗇>j誑Zv%!, X {抖l0ab,\f痒};勲歃|=a_>qqbr2dK<掩5{h僉I}Z皷姆[~ 4岾e肋M糜楔k龠 <8"E~'Nq簓;=昨#立 $>鞍u袙Na驍\…舸O|xb?帛疂*S_O.DQ@)ER?AaNYTUImW[iWayuXYbE"]m燈[s曳^|疸~%]藤<6X`@Xeeve=g= c6ehIIejY迩ZmqlbIpf\nh\j ]s=培tu^艚uy~YAz^ 漉^}%_r'{膏N7県"`PFS JX!WCQリfu葎U$b'-裙"q辣w_)曖D>;deJ屬eI"cPNYiZk[ne弘帙dV 窪q妊\叙Y'汨'i(~ZQJ G) H}1}#y:L8q樮P"x*R"^Ear0皚SZb妾智+]知(_悴a?*MミF[$L6郊S綏ァkZ^).l筅曠n^网.f冐!閊pG'vW年障 ,0筴7^zW.漓僥hFRJ(YzRtS=}跚D'C`T喬鬩1W!7&+7,C荏K:>純卍WK簽T3YfY?_%廝Enk.攤mj掛四?q;wu觧/7~CTg'-b\IH9e dK@%河}JtBYVE\U+喨\斯筆v: {"hy,,KiAj yQ:im[XWH3.讚KKd瞿棟M*炳f上nN続~i~X光= = r3`*e9} sJ(&P的DjB,#Ad")2 妁e2-L!df oxD255#Q&I?a%ラMolWBb,x%6bXE餘^SN1冂;Y'3E@QP+X国ぜiR*!8Ar#S!+ j薗B -?yeb侫X捌'cxCg4aawheyNH%+2\b.E/{77=|r:&'<熟O}#4 G倖 嚀6%59bu$Qy9qNs5 BGFTL22 qe安'YZUr-暇 W煢rP!%t:4)U絞 VZqEe棒5I偵.c帳&+t^/}&3gfg#c默C屶擺@架 丿S7粂:&Q dRH Zp*=?U}UeYI掩W.D uP=TGkcS2V+/叉IO叨G 觸tm殲{61-u*Eg4 eF]CKfS{{RT)K%B;炬[MIA]`C01bt.s^愨o%%W-4{ ^b!_OT予$^竏 !讓]-I#FkaE6澳e JLcSn c2knV&M 排]\7尤>xR0RaT(朶RL"1縄鴨簿v嶼TA$ygcx eP逧M鴪SzkVr_0瓮e8=^躓'2 銘M柴n)I$c凅T \膩G7n*[M謳I樅裴+m4YW4亟TF詑噂? e%m=r擲4|Jf|CjO5lv|#k竃=/7_eLk炊/濮7}"lef qFFl8Ag &m2Gy){m8w OzsA'tCg:'2Zzb3;\B6P6#ihcW4rujQ5dDeDDQ茎5}e'qJGwR{kXD}gYx}vx:f?nTl冰~ufy579gP2b['zWhY:ct%Do X{e{=&Je帙Pt凅~&旌"r8z:k0遽Fy1GEa'肌G*g*AHTnG^Ao学t%b9c#7" 4WUWwEI|蝕QipEXB.tee=xR>&嵎uuxf8U`?xoG`T$vsへgラP)期 bs:!2*\邏t8\+Iho邪u]d_{a't(bVzFh4乾-翊iiDt{寅;w]斬'v-倨RFtn拶訶X&},y>|/rq,F7}&c0{1T9Gi'-ジK敞NaB:Gz73o菴`{=[#蘇^伺YZ鷸 R{喉Uqhy_h(+uY}{c*Z3MZ5(r&H<@*m穣:&嚼HKkШS篇 )$┻;CeC景7dE6ff =$(6嶝^zJATE]V_[sL几9f9j恕F;m屯rL)exg[0 O"V:-痕i\Z際0f+脂l5JJQg杙 WW|{&悔~8}e/Wx&i-(豼鋤3嗽s46|忝{殯僚~ tghD7ZzA]3L,季撻2iE涓jPuEibCdk;`#QTfq7儼 Yh_翰"q{椋==x#詛Ctf%MGп|沮岐J庁UiX ;,.of 薛]件B_塲%R價'Yfy? rM囑k鉱ヒT8P&&l5>NWwieomx;v荅$o 冀+^3e腆JэEYR*4_3Il3.2l嫗!~峠ZjTHz羝.Ad+!izUWjV"z賈湲@sI)oLWaЮD GD*?NV;Lw6_縊+]_=賢房瑾cg73櫁JHs0`9W~= ?b蘯!Y:Ph:泄洵 hi0>L埆 e.v独f[hX\鴿Tm.親r桎M_Z0E涛~倏z80.q1'mjywIZ g躡 /惱UO韜乾OcOV/酉a@$ ,hB‖ k]p+X"d-;VZEエ}5[o衱W涅{梃屁`G`?nfd)OFe7vth僊GkZj ~桾j攀3lP{去| \鞜#G樵乞#o<削耨~徐占惱{A0<緲#lX=zF凾蚫聾QIY4dril2&oIА┘&螽 j*P)>+++偉J訪楽←典R+.場 葦0周KS0!!#格2"豎l3BR)A-丘f[-琴欧茎| 72o64LL+n降:8ヽ:蕾珠o<鯡竡朔; K譲#I#H銖O+4p%O\pArJ丼S)dC.*[鰍PCI*D_b1_Ei影酒 6y\0+2#跛n7c叨'=J*?r30i5-e 7572n7w:螯s釼蔕$`@ B MRT>F!x!@??5R=]Y拜$(X'B[ip腦v鬱D>v6icak抻u6j擶超HD勹$鍑rN7]垈棆].尽rz學 n1觸w_視<怜x禄 Vt=qMz无濤仆qM杠鬟}椙v'=馼~_F}`鞠!X 絮I1#G49$.X緜Z !+r5(,S%/"づE4hX#e9x硲鬨6j]kkDVd""a"j鵐刊m3&6M无qЮO$y4=n\Ow@i$?YDFPST6HSAD]Q紐YQCa>{vB --RZ8I/x涓Jj欄K+wpiza"FQ$r\Kg展o耐m`_3?m屆Gf1uss t`9$卯,tDFh飴搴dIh ;拌 i."% fJ5o<>A(0zD[\行H)&|+"妬)疑_Oy BnH:ny圍脣# ?ltT伜Cκ(bHnjp;weAVnM鰲5TRu,5I$_?6餘 sID1羽Mfc;?\凋gY!.X{M62*X15N,JE@*AT-;)OE^-pJ板aUaS散pRx$A曵仆辧?zh{d-_攤槿 磁YWH市D{2}T{7xo狢?oa哦k  *i+gG5p幽Em:N雉-;W&OI誼}#e UE%.銕, T=rk2]1*U父M+jrY{沒滸_郁 NYo覆3橘;e j搾+shfnfJr聚Nyz&筧jWu8P玖UBh!Z莞4t'>(弸kSud戯Zk烽恃$S`eV-EIv+sL*`lTuz&SV I2;#!RZ 栞4F n%#茮 O{z栩涅1n蕭E迄5TMl`w\免|M^OaK{耜NJngrndpk5BJW61J4`y_a=OZJK.擶 杤#8+%B]J;h22癶f存+64-A *[ '<"Lt uBe";謫/8RDb[C9b巾&q尉b?t?QQ腿wR$B  頃+継病D"+wc[J=7i全|+噴%盾."C\星I2'j拒A/>5 @>Dl0ADm#vl6今K "0 腔儚Q (E夷+B#: EK4E娚E/!K=@_l%5<5CS内H[脂2p|魏剗s|km:0&Y3gc?s O旦仏沖y体-蛎+lH~".$q祭7d:1=}存d%T+Dd腐3j√KA, o槇蝪A箝8B鋲,3J団p ,'Р<{?  C$VJ哥晉J'M枋G#説y7I/L7羆=茎H`5bKY""貮4T3/< ,q+l8o堤`Dζ#,FA46巣)D4LCK共?k JMc+E-9C苅Qv[HC.蓄y麝R毎73税 @2l忠衷f /冀*z佳牛D"^郎+L1巴AOCt-@RGx|9\JEQR}t<供 P-#r9{?格s+<6x(0UL:嘶K uIM 黍Sj ,;S史$N:(砦 ymア)-jd2."O循舷A1眈Q:l鬧wT9帽艇%#E$G飛牛黜=_\尿syRy疱O E啅 JZ] Z,嗷3]bibA叉58天72 +!I#C57x楠肯ktY*ad."蛩D港19v=N刀pO匣%戯F4=5c6$_L%咐舘t%=6;6窖p.gW$lv眷'UUMX;HS37|^慟茄vjcUj=疾2~N,臆騾Mr五xI=D剴@Vv徒&酷庁}3兌廃PJo+X嫣簽i≪n]tsw=y1群!U隷縊gm `)j蛹F5,m"uCo歹'/:9D翠E.嘖 怒靉ln^L{TU\U 3EEmsBVR8O溌&dHG3/と.VSi+繿1RCK?M^織fLmum迚e均;OTf;_infTY_FW*t飲D#40苺TPRvΗs溺S(@;?`fC!2L 4a4^滿2YKw)Du尭Um楸Y5;8"%da%5nD>Jv3GT統d楹W-攬_д3PSq)蹤|[剖+v笘]t@WN`a楮Dt7Lt駸n6ro2肬EMn)P_aw>橇ボ{ZU_u藍DVZn~ 0脾Z甚 _艤美\涜Q^bvTn折tSU翕L7 7裃j嗷v]&鉦oB]&DT>lY~YA=^L(Qh 繆?翊ku4 房\*~?z| #H.s燧嫡?Pp3q14`奎4]4(R A`l(a+R<1a?j#nJvtsナ.朏l%M5U臓 ''n2 *4@t)咫n5TOB悠#抹fE杁Z$松\q瀘w歉~80狄&x1cH|"d'S ye1o 糂僂袂Y2$lCf]n檪s.|8驕DIy鱠7.}z" N ?~ax ZhqAfQ|S可尋$油6}SK;MMUTPH!SS TReBZVY![aXm葉\u租/UW冽a4*Fv5cXeQg禁e1ydjZF丸&[o春imfq)\t]W]uurr芸v獸A 5{jtG#]H剽}WRL*wLh8yZI-(MAUVXVXQ検~Wbuk&ィ"]*旁"或%#Z5"#a8Vb; XJ*hrdMJ蕕Vfiel札洪y鉱揣oerAwn&9|'q艚?C=B取|B(waI$L7F%4:懺U:!戊UkVV振茴"錆厥鬥cN瀏XX"匹gIr$Tdk{湘帙j i[鐚m2雀褶]湍^w+ yIp^HYDI]qO昊9rK6HT-s/Za56k$ t嬰4 4格*朏PGMQ堀A\{朖TNmj稙杠搦椁Kr.'7qx-尖帽.C1l^_柱)qH1Ia?Mh@"T.B^揖fz齎!LW鞄U^d,+X廠a5Oj@2滂惹iy晁ZRc=az*[6鏥-8Q7nq,#相Э)a: F乃=#(9堀dSk`長9HA`b檪G,Dg液 ]8刈 EG;  參xH"QHJJ輯]辿bH5I8裁禁/:熟N+堵%l< { e6Q1JU*檜慕?S> dDS3f昃!U!$ID\Q菻Bnr/QvtQ OZ*i.]Euqo[渕f!8p#O eZ6qqf粨[3;'ILIP;A"gK}>'{ 2wk,途甦P9淕0yk塊[ZjI昧z"T.d2ee:2si耕8G~ぽ5F彎V{c79ZryEDs殿"{Hoeu6GD;.~,弯 QCxゝGk['u/mt6%\ O3u>贐=jЫ效Q3bp|(V輩~SmohhGpttm:N滂U8Qvm%Ac/消k^wC億m2yk)?偽rHK-開厩授|&O2M侍Y 霹$cOK T9K耻f{0)E-5鰤n;$藝nI'R1>nY]チ胙嚔9 ==,狃CQ]CUO躬T;c殴^l_S;鈷Q[}{"嘱e+ZV!円糢co>X爛r蔑wcQ,)\NgT3ZB'Qbb初哺 蒋力lZW^W0 E!Y<`!毓`捩痊蠶5W]X!瓠Spp_!)q=e絅b EU%aA墟@4Yrゐ冨E _H 罧蚋董皷0溽滾-[Tim&6坑TlA^× 路_9%j^o腹茣f*胎0rWeAr[PXABDF釛\ +jzI-!JrI5耙K抉i1b$8#9$f#Bb{T矜hRU里VM<縅A?門 R勁@A@f/j]mj莖偵q鏐Gzd9gRu} 4 &b fqQ} eY* IbBQ'焙Q~j>Z^( (B%~e$网чNEd/^(^G"'氤9)V}`I( J 6NM&噫5*9Y[2f%局V=寐}X^f.!M U>RXiA*fZm猴n釖Qhza9N`Z1aNah}4 &宿bbM yZ&+gPaR燥RuS簗M~V T~@U$s毟B沂[罟]尹 0~)r.'fl榎vlJJ詒評cb! *Sdj澹縄 ePP>}Q=>99Ae(ZUhqiq讀柊@*N\Ym翠螯γ]蘇%当P%屬恣hNHQ5岶c,h'零)1h爬`縫)i鏘M1佝xF.際+ aiUf."qY5XeN] M螫.蛄v]z[ k)4r捕NgV苡K5叺雍欄T),貌 }+9滝O.薬ajva矣罕z&醤蕋W儕慴""mn$.Cj卓"Y(B/6O1鮪Q Y^:{,IAQJZl"f ?&k6[N"Ji踊暴\f0R:7R^溂i:X膈&EX%h蒐HC2d=!┘鄂%/ +楪Frh, du鰄Iieap$rY>呼豺gURb P禮+Q8Ix盞EnTj6^Q!以φ閾"跛v}RりUF%)u2M臼Z32*0.nd }騷' t O5f熾 訓Y前T-!rT*WL-孑JNqf迯/Z箝駆&試C痩iG&匈B ivuf\詩O6~b^返KNZu滉T瑜2#10# $NT4囲晏=nt 廱}4Hj鐘井頃l6UJ&瓔"&vラZIR;)7媛uyM>q /hQx洵鷆q^V/4柚gzl"Ug")wl淇|註眛q緻Gg~\zu>~酸#_|yko%壑S!翹o★邀(?@@L/@R卮4&uR隍/iO)( 3)PUDC2DiEzQk煮彎MlGxLLXa,H r$[角Mr(c{)レ-盆v鷆7盧28篳L935卵試隲薯t/O<<莉Uh#7h?.B壤E!e%eRtS r倔CPQzjZUCT勒k*羌V\1/\cq道v孥a5巴Hf5cY#7竚YД64vmJ,迎匐&%徊ut7]1匹N]4msN躇碍M閹孥N(阨匯3@ -KxQF[J 假!粕c q<篷GFj嫐KPee9,d. 蝶f寔vE轤Em$偶aS &R蕋) j?証賂-lРn,忝+有>猷#]轉][5兄7鉐龜Nn訣涛肋OQC顰`Ri髷T)5S 脹,UbQ>巧8ps(uhYVw3NulwB梔XB##9kiw<\ JP妛諜,iMK2bn76MG:Q灌=o:Go{皈>G♯?)%b\8qJcAskRUA選U#:]=菫vkfgBFi {Gh--xM j(寮Z9t探簔 h[腕要%6y-舵uK顔Rm恙G/釈_\["濛QT Z 険;q) ` %Gu/c!1X%V7SQxコ]g$NX4`2i1Le8喇HJJ)(M5Y{.蛛mIuImロ約-<端[喙c}念ESI$剛q懌*@碌SKUHA?\ [wD芫 }けv賃.0狽CMziC:(ACJ%Y 5@lF畿. 奥蔘B.'jQ4)R狐+n.0 巳Ge(パ#=uO%mqI2U@}lB*M+蘢3!鬩"W:|G&壙%F俐i0$(*ve$X6z {.[Kuc捷k+M_L 橡嘘OV?Rb Ik)Z-rr$Rpo-*wr0,+"GH帋肯Ma s婬nB4CQM)CN+慚QKaz碍[ '=)(('t測`蠹)PtNj`8嫣m&O樹`=Js 槻NUJ2]pK杯-!$a$KO5'欧+C H+iF姦uFF^彈G^..1+:"JV|r77%蛙娘)35mTm綴紋K'HMPP"TTWン*,.譁Z外E^niG4堪t\*We%劭址)O掲 QiHt&興敬q億bMYi冰z梺L700'uh0aQBT 贏&rUmIN痢d~圧杞X必D^-i 4w?]蚕<&]K殉h|竦w伽i^-ゑz{;7aQ,,.eo錮翡gji鮨8j BVjO 猝崹黷sp 廱'6RHg<`&N$BAIo窩5z濫Jmi5皚`v[/>5{]歡錙ヵ遍'^綏gg .X舉XM()`4R/jab%迴T+Ot逢8辮OSBFhLオ,l賂Yo'b4 E h NVVNbh]庖ii8@pdpN'H E 縉&鞋 h+2掩6P将+& E萸 !- 軌摘邦`Y&l4J#e$/0,睾ыo}瀁_毎&Fg辟J hc2 靴j昜l"TQv2 fl &虍R^ g(-s炎擴 N箍:饉BR$KM$ch%jm0}}d苛< )uIMas GL N juV,-m矢=8zqs7X{x^p(x#_*;xmO1P,e/Z2-bけGHqK|{gps1V篭h覽V胴&T[1 W7厠7-MBy士a絧踟.U赭@tmnnXck_O偬oO~縁\嶷樊Q袒19R?BY胡It]e絅-u蹕 g 4闢P_/i~k1Ye 7PJ呪kqMSb: 幀4n=lsn咢E,Q'82mbw{=cKwす>0 鵈I=京D專/姿 ANji,X-86l/zCV/XY'虚&幄1GodA言q匝梱X戸iRR*|'Wh]S[Sses9sii+LN"Ruvw刳Vc|蔓 vs椥;tz9;勒\HT.E_曄或1萎 xqc@H峨-!2d; 顔哦S)z3"WM;6m弋s9R7閘=\x驛A|鞴7|狎袂k肋从|py77c迩-qOoi嚊K2刋 P5RD5UHQ%TcQUU\5XjxeuV[mW]#^*聽"ahXa来`YehY1&I禽hf$iKEl摶l]積ly%gQs]Wvmn'%dx}WyA4|Q|g~%!~ N<(iO$!X)都N !F5YeY*Z(%+[V季"-W_~挌`y-X=+$A^lgF"hIyΕe;[\薀o&ay&捻椹j&w臂 yB}唱GRt*営hV\?])z) >%UTJ衂逆┣*↓xE0皖k虻怪}lCぱ.[F O偽TkmXFe[_[釋邵iuj[or~'7wsoy{^A'pA^d鞐 !M>ccExleEctfbdhzv旆峩6%r<峽y-e絽h\kB]s&Txx-Q}(GoTx!畄諦G1LZN. !dUh*^)8L-&:僵HD+指f>{Qv v]dpiN>#5()y彬ZbMz柧5蝶mO|HL盪mG|粃C酉~迚裔(dd~J擅,kT/(c ):*)%3GW! jC+ +BNfl]p,F,=;^VBQH甞bX"OZ7a婀fz顱C/I{ax孀vT>堯 b浙7!楞亟|grj-pzGSZPZV:.V`u3\5Rv"bvB]2ka 玩5P(wrk級a#Gl,,枦&ι{ow/;t!脛寒 w89,b+c?L '#dF櫞T&AuΜ+釣.X"xP筋YdEv ,NEZP▽k*Sy5lF>`it%Gt悧% N"-_/JD,])?鯏|QP夢5F畷t{ch(斟r#YR堤P%U *恨.u壜[b}0儲]`U`IrH嗔Y6$/‘{4<05Vt]q\[%qc&M ErKz-n颯c,汰oO(L奪$?mg枷F微gc6x制 B#p9eK@>Um蜜N 晝X]{F;紘4$K %(K6IJu妁給7壽Ek.wmlb蕕'鴪|帰\ 茅杵3薪E期Ci6本9=Zt┣竕D葎sC8\流v;xぼ裳,a陲;h汾a攀?r8NRU†圓K]^w  l=.}>~h 7bc陸P,悔m泯 .U劉勠<査簡~Ωgw. OY2[[iZk*"W稷7R%K灑a摂K^:_&\E abみ愕迎5$lf收JmaUEt!QH>#蜊wd &}D丐 /Q'UsS.鑷游nT"醺+/ 浹i膝fE*fq"贄[2-+圉W盡錨啗H梹悴XB@;:s&P70貅確}'4@?攜]鈞HB+uxwk務誑/!5鵄GX$式AI篥S頌 S暁xs紺*j^u )拘盪絽N 's殃 娑@tR|髴zwE%羚殿MYEjn叺I(1p5JC-z^CoKof^FK6pp{&/Rg0v闢pQkeeq?=u`qpqw 2%GwrcN!_.21[RgV3弑"?3Cyh(P糜#Cfc單nn"St$\UIih5孀wヴPSzWGDZW^絹ohS{殲Q身=q8E独X%evhLuCSn8臨e?`F}GG!Z|'"*8l6g客a4mxvOLmbPX,CBsbhHw<TcuW5dfi~J.lXyxBvx->L$Y|)YG 49wG2x2uxT范ATgFb8sx=;+Vhn\ cH EZciB f{o隅o^4>tLhL蔆>'?芙_(8\F匏k9 }EUl!lmGT耡IgAXsVB_#j44i6]LgJf[`{%KJ左w{弦^&RM6wCe蒙v玲%0fH<5p4fYiY@4r[r肄rs(O'H+{U^:IO(Chb c6z6zM暎t8灌o顔ョBeKk(/貪FEx7e+X|r8'9u(FsGMhZ:a}*jft xo6簀GBC8U 'iyE;7IxhMヲtKWT#_)6矼z%DVf=5{L&K3!iL右g[6MS_%*)7  t1A[F諄HF)E:hH廩Oy-P n;$oOz)=A&.9幹=q3Rij7;  {XaYgkeX`ze`焙 klf>Npa謂H袒7r+Y4OiRycVic:P熙WE姐8%X紘第|'pjeYYYf8w +攻|iwA)J)EZ衍G('eH~d6s宍mW\企JG#hhUAJN 印Ρd \WXmDf h/P_鞳X沸#FtYS#wm(k6@qT6借1*;LgNaAJ;1m蟶bfONI菖K5鴿<]ofQ撹iUKΟ/'E L%S}HF狸$|q$1):焚#s1[~r~1AA(xみkyNWKt-F; 5$JUsUQv畏i+[jfX{h eUwbc+|Y|q9A-l碇`h.[x(-79Z>c.殉+y$fb2lI>Гb乎J[ cZWyK=iN > j堺sjb'+!免%Y蜂kv`u瀞uT2 Vn矛V[=!x>)xHmL旗箸hU<%LbLk]PB闇F6^g飴j2正X (7ナ Fe&([d7xr継7 mM喉HtG[菷W`zD1}c9KlKZK>x7jhwvEu抻`*SSеH e`t3汎6*觴9A<愀r4kx~;歛dI8&b扎匱4VPX(tm-?5hCeツY{[u歟r悧}8zeK輳%+/yr}sX} H筝肄aMm9KsBY;豺Uぱ狩O4W9l皇3I簒5W]Ab?TW+d}取df廢<_ぬ7r]譟(擔8酒}M>挿Xq丐Cフ毎Ru95掲莉@m 倫NID嗅凋WcYHc鴿衵淵嗽Mゆh層R7v~3卆畿e+fQM娉+K{ [%:5Z:3~f#$I:y7|OddmV-%Q-% d Z畿iwD衲宜' KzR+.柄2旗Q茄^gX葦I宜鎮溥pLVjnZrkYMJ-}qOm)8杲Z.KTxO>Uoq3zl梟zstL蕪y^裴FYcn擯痃5mulXP盗\v{NU9*6淘#:eJ想s植臍:[>X属-"AR.b<"We齬劔慟K"mx'KiLi* 櫻d腰遊8;X[ut'終 XzkeR%揉Mu腕Hkk踏%xs仄,+g蜃莞\AYmC8CA2F$$4V呪eaV> 鬥錠.?MEe)TRs2}bp Y緑BW0\?`s6螽J冂aW4c堂Vi]最超%S鳧m奏z榾━蛾tV徊vmW6榻,s湃6_85N98藷鈑覲NAFoDV=[O磑洸c稈b.xNQ %K&YsV紿TUC=fgPV\aYYWyzV+ieoЙFlgz/v螽e貳m I羌埼s妹3)Lnmx怡4;_7&鏤>_児錮BkxQXlR麪1ed@"姆8G弍jU,T9VK \嬢Wb kw4eF.J鮪~4j1#5"=IY&KB爪営%Q{会尺>{|)_汕$kN#(?e:Tjp qX&f1B r狷R@S麻M胴6B"dB: lf6E蝶%X'D孫w|Wh=08D^ctx笈RA^悽d-%K[∋x禽Ol眈邉>9G\譬70~e<?8p{##}d?宴;1 XUA2B4,ず[jCJJ+X&大eI銀G,QtCO2x!`J00z>蟀>叢f{#z0mrKo:-#s紐9餠781*D觴楚G#=浩4N粉脈閇.0自~"q 砂q%-.苑(鞄+l;,:| 6視覃A闢Ab9筒A90匐│#,む2梗[1\$斑9{l'B;瑛k]YCVtE,Lら 2L顱FUc5類 d/'rfC5IIT).JAld32-dCp名RhCG械搨:[壁-l│9@ z耳oK体# ' s駅T|z決+\!zE,rH悖RF))稟d<)8g+読C]kI"36;T 把*nI霖|稿+J"1J@断;$p杣茸=亀hN+;cUrAAOO鶯JU:汰LR*糠[ L?O6SM只L 隙uUaYJL 芳朷D@`+/ SD5cT了|:T{8塾}壹2D;L1bE%諂踈側逶I2< eG里Dルvx-孀t{<~4i4縞擡7]e=_Hn /55S s@WZ騒}T牽FA,/>hrTRq%<$8 L 3:偏舶鶻淙9瘧O(eUxBG"+H+M @(娚!OK I `@∪飮]e]っ)-)A"V[淇殷LT \誂>q}閉G\G0lGLA竺$E'訳-z%Zヵ cJ慊RB+5]I辰{E/哭}担7惶|喀 ケ屍%f}恋j4Q-c)鬻Si$LSKeR紿=OcO&vl硬劃aK MbJR9 R_{ T}潯O~RJ MB],BM押嶝7綾:B2 b=8免2c[3;唐S4[ Β尻8iIImmC 9E4A遷As軮&;DCiFぇ,.咆=R冤dMb呶?jbZDH0殳N歎)`5H3ヘ個=&又Z[ |i,5.A-`B8c,yd"a^sLH窓輛d #粮Yk啌\*McH64*+瓰*];乖+罫U..Eg畄%k1CBC鯊5 D⊥K8dm8習g,e[欷28B|CD|E$s&箕xu9W盲9?&s>PEP~gK鵲碍LZ #|V悸`,f旱:点d毆\v^繕C肛j偲;n譱耨J\躓L6$vu*$-y]CSB*U7zUJ?mP=X{UMX+VK68宸=[b蒙.i/羲2f皀ND j辟j;祉f衫DO -p\#d訥踴tovN*FK=軅ge_& =4|c篥,ke鬯lvo(XcCr璢縲%档,徇0[^蚫V:*G汝4OIM9Aカ~\ -\=K_m伺D2s~З,ut+欄.Ug豬r:躄TV^!g4<[]Z&92:V頒/ar綉&;;&躯枡cv直m#s0搖FOL5u糢榜ぺ1HB擇7パZ4jg)KяUYe6黍4a%k`Gу 7ui峇Q; >LQ.R1;@cd鴃hgrSokr>.kkCN蘂\fWt*5O\返樹=l汢N滕:Xy累Zx+Q鰄1 [S{v]o楕jo淌v3^@緒,朦Y;y>羆vQ純Hk-'>酌sょTGnD)L{揉h0ZvTF>y3G &J+R4郤f30 N粽%JuM;/]bW{KK挨q]D^d@!D)H B2lHH#>hE7r貳 G)RdH#UlyねH-枷I%1q晝薐Aij(RA*]h哥R歙C姨r !`~j, 2欹m[l娉kW-渕z1B_7 <0畭3A托秣$Ovw2f7s}贓&nv李7@x)>\辜嘱9t CO7^]CKn};鞨,/p+!_|羞0ra6鬥GPbntI,@qc@斥,S猊8(H堊  l 1y9耶hX!dY:4X叮癇+9瓣g1i{M^f6zG韋繦俔E鏑^lV擾=z始F4ojkB1:*q\%D9QSI溌 2使.!#i岳K0;\8-&Yヾ>+:L^){xD諸軌1q9F祟y'mWw>|MYB`四Еfl G8i.% K8 P[倔ェ1US}TB嬾=郤爲R&*F3h2%g#¢(2n4怖/ZIBmHJT27Ss^n-;S策tjjvxIvm薐bK発~a&Ff>oJX脚=,o )@0本m(立歩Y:UrX9ev+pぶcws]\P疸z妍]遍fSF k愧1l_c楓F%en1yf*`v~23Z1q._J KecmGrRcU;Ae=Y繙< U8]c5&曵Py h"兵*E鐚U鵯z{縦峅\Kh|G E]j^鶫Y/}q 擴g档7棗A顯|螳#o<倨dT9cU琅&TR騙sSN*m^gZ:慧]|%]輪n}+俐N鮓察ぶV骼kH&+3:=2a霆%>8遥^)b~/wOA對:N0@mb+曚濤C孔S<VMl抒\dU槽、4"9cM 箚&ux2l兩nI[IfF&1E廻eJe\v怱荒1鋸觧 O<隶Z脹dQ 傲^@描探衆omN9E{1;Ax 係^^泡u邦7*aZ>J囎匂L7y刊 x*%W医=GkV7iu}Kj)3钁0;7.=%m骼2 l[並」m`>kD檜岼j麟? hQ抔廩[刹脣傚H)墾s)B‥U済> ^%Pz協fp^`;Cv[*Q{!H嫋vi碼z>椽作未藾WZn];xiG c{y皚m撫7漠o*_>h瓷s3:sXA 赴T m彎[^=R_zR{%Z揄R敝1擇e轅fiA$U桾N攪H<離HTQH:u缸h;寔)q  ``t`%YR1v ^!ly廰X@Ga|cA~9Q]~}Gq烝IOOkQM6am@S]QS悃斌!!=】l疳?0奏Y< ^L望Mxa`遶 Qa)G,-峭 4dRe {hQgyV8S9zYb);OAJiRY]\Y)NYY`^Au)R5Z裼 /猷$v !1~R *ulP>cpQcbU}0gd歡 M3MNA!k$^倨J(nA)U\妍 Bナp衞"YDtEDaA赴I] Y> 銛I紹檗代V65|y楲ほ 8S $dLQ窰O5[k 旬Hn)V2aVS*uY Cv!EN[T[bYB]椒Z U]DIIY`j`3K2V1XcTN" 操:mf4u^吻R Ulq>fS=E9o薦+e++""瓲Cn ぅ^oNWd/ZRF帙]勗RHR("d&b!Vn証y'}7:K]zf\ Xd~TN-U}PybP:!!M9yp螺 %.ぃ5?/f\冗Am}]1^OH ]M6c3d4~{灸&_)0xN~'fWzP]a![ yS'!>DTRNF標&"殆!Q疚の))[裄ZY汁AAqN(%M^飃掀MGm(d UcB褥IzgYqOqRj65)T:)臾J=漱$l~+ )h0d^AZど逵_ `me嘩ia^TJfMIc _y犇RG6JIWyW6 ^ 2VG:L\S角=&j甄<^e (k:qlzimJJ=(鬨察$I@-kGZ^^fF*KBXlw%襄\cZfA!2姙 iHhJ!USj8柏#)~:IEWri<刳)b!sI(.~mVd% Α^%庠u岼(l貴5r'-繹b]zWfQF鄲苅^A[Z妍TQjuF姜J萋聽iUALnnmy辷E$ y$Al%i(f]]e5$UIRg溯!AYHu'6&_N_z呑#iejO Rシ&i>裨咥舐h榛VjA"(j4莽m>$b瘡\"g\!'s Y董3n`鎹({Y竦塘 ~]黶dN8NO,Mk 2 C邁A&.r]L~V悸V[Fm9Ek菠ti%t2zNi.^jg\-fZ",w=x`/ ,/pp.y+鞁ap笑]hVkj02emySJ%抽荀3蝉&O「s-!_*貉=徠b/F巍 ,腎)dWZ.w0俵4埋0Z挑/銭~ 2+9fν L$5Zb"萩IN!h.mn(. hRびリ|;煌X裏fu,婦^^"1&I~iI` &,饗1.淀0M$y^&b3e r筧Y9h孱3(BL/VsbV僞[er>駻/m*7按]恐上%(R)mlFNkadУ.-槍>HOX7Z\*"瞎礪l{V函肌QQ0j-igir3iLS5T掉倶R Ym'3 u(GJ蝮j悽蜊↓E*;牛G:夬YtぶeJj滕I+脉Y]85n嚮矜jh4 а嫌*em !噛I71盞QUn n, uxYR[% zG@CpBr侶I劉yVjj_gh06 (x"sGc閊,D"襁[;8J";!O~齲j7wt6/J*8X<"際rx7%2"S++v(1R0>Ur/#VG!X5>xvZ^"突j:k#綱測1準y彊檗竈7Iq 啓&w~F曚綬_$/傀q8:3or砌掴3# mR ')Ι蹈ug;+8aN'p ZДs I疔l恂tt視dd*3%漾c浜u}Qk=eSN !tcN9s``7&OC|o3ちs#);;e[z{我姆將wC'i(,セd%/ja8膜^G+QJ3QnI閠醴}拘#鶺終9y.S%.誤Yl7:h%%{Y 0kp*u\nvh^2笠]u;j#u協5:6uE|cR8h Y鱗{~瑜k鞘*N╋RM}q8M&q[7*R& {PX}r)hP` lhp!D$$V4Hq$8r榴dH&Dh欧 +Q %K3i<薗DN7s槞hPA9a頑H6eziRQ♀t妁Vju+cKl!D豫=m杁l疇桔業]E鴟屠/.<q#]|箟c)C|s翹m,s醋6CMuj妝n歹雷廳[5贓y o7/!r睚Cp釟xtS`u輾N飲w驀w<5琴qD驛S器H9♯$ j∫&堤'lbP(J*R*'螽 ,DJJU jQ/X峠 +/l把|T滅L2詞!5[2Dl肝r(O[M休VM7.a枕. 互7Kヘ5|3:讎梹詞 oN霄駐賜jh:%禄S=辷#F 豹Zp@ ;aHD+8稠Atc  oSNgZeE ZepCVUe孛O祭-fiА滂Fj 馳H漂n淅庵vJ) +N\袴e6鐡嗣琲mo縱7No~?O宣L\a? (b3h>*W)e%J9O B.{YPE!}$篤Mr H喟l P圈.f\U! 妾DPE)L疳zbj坦剔韮8+k徠!記IzC,*#r/l{DL|瞻綻+rg:醒'>}~止C?=sE'2 ,v?GsdYT2H%RvXYVDFjW'$Z]罠,擶'COR-yY ンwJJ搏峺V辻l|js"狂Mゐ[7eo腿"w/IjL孑Q> MyS@tc緋XtbP|@ CK8*怏l 貳H,`mb(Y3墹84&41zh怦5TB {t弧Q桐m,樛R{7UIE5IOxK觀L!P4MsjYS>kO(nbJS烹Qh:藉P:U(!嵌\}V謝;JR,Yg患厥V#(\oCSk;+扁紬V2m~,3騁Rp叟_V'[g" ~hS7>=]#i9W`z A SkQ}.ld ufpU}nw[ygX誅P-ZJ/》CRh3Ku62>Z籤r#e{_v1~%8jdPm(%m \LusGU'N7;蟻彊m7ap]繆迺 I隈EF方g]R\"5%\VHH+Ui]惑鮃nIKd:課72-Κ'K_峻画A7L[oY諌 辟"58&03霰\l>LE'SGgNjnuK船"qEByhc$ 5Yuj5|1t充j9zZ鏘vHQ,-ZD46u3_b騁.{K5| 7W囂e@ %GG霎.-QZn"Kg u{'謖x(B覈 帙N'b0LBsiH7撻7+c"bo5瞻(+0u]_/dE7-rb肩G綿" P ak3Zsb9u5C"f0ocC`In鬟yoO4束慯D氣y{瞻jd覚茱1貽晁PI渙qDSWj=X7真.黷2cG_捶7&Og`)]5xL並皙Yz&K}mn l鴿凅喚XD~乎毅弼n't朏sN"LI褂[hlJ唳\Dm l獎む跛/`簽\褶劭碚+訪O8+b4cタD 謡j隕Vnt"藩Od桝I 肘jrhE+E桐LE K登て+>X螽ZgPz褓'{:M|+ KゐoSJG"霾,ヨ凥i?.^P遭d8fdnPBRfT@e\.oT罌b輩,OWBB靉謫.蝋 j|PrPy03Kfl$pk諚*nHo浮g)p0a=j~螫P /s霑^t* M旡幅`苒>,l鹹j- UG 儉f 0註 柏3 8P8^Nn簧|if閉#) 邊跪O;KH^i髏"h`+e橸掵18.飫DDGh&P蔬\茗 j-‥昏Kkb/ h丶"c(肯1PMN轢Hrq/N1F逝Q4創啄霪/Hз"$ICQ7,)會己rn梺 qgTqw Йx !HZ阨宅mI闇"2,--s/mv池e2萎e;D:LR<瓲pd*⊃蝴L挙  0E'11^Q()$33/罸鳧靸轉F?J愚??l_l7!2"/蹉7-< #蒜LK.%%+R:%_貰c(E粗r娜eJ2剌2g諄r潘2-+翰nXi5Ko4yf鴛X册忍嗣曇悟t/K$P6NC錺跏偬<;PZ蠑hkpn 陞2y:lG薨杳Slロ3鵺mE$If*WQX3xJ6g qI憤,*L#5 L赳R^螢#tME靜):幤詈 且l;GE9Q(fRF(3柎RSSIJ 6J&s5 4 oQUjs\)`u售6|速謂a#V:%$9.駲辭 :Am1.d梭υHETZ6o竿Pcr==厠m"A額vg ?K TIsKn_`R cOl競UQ[胃k 豫lT XCNw舂/;嵎+b陞恫&HPsFiP?G -Q(mfM晄|V KR# S5FsEUs壽Mkhy tj7ut|KuSF8sUW%.S9Q5%鷁柁DE7кxKv?6Xy鴛M<)3( w荅i\祓=}H s麟c!Mh Z3o醴C%7i花正瀉~*k`z&Sj砿V[?怯吏n1p「賓i$迸}=琳=}5蝉` '- 网Vg<:eAi68D砦!kvB|糞G`QG,へ S}制x/JP|> r6"]-B1\BW:dO:Z#9KIeJS峺!&~F廟# e?R#{6eIm横`N8"&amr%b>7hE rRXf] &%[~薈ex$(飾 l安Kl影l科.l確> m諌NKm丘^m筋n豊;ewipe-1.2.0/sample/sample.ewp0100644000076400001440000000755307065161356015665 0ustar sekisitausersoption: lang jpn pagen 0 time 0 timemode 1 pathtype 1 htmlcolor 0 htmlfont 0 viewersize 0 vredraw 1 saveoptions 1 background blue1.gif bgtype 0 titletype 0 pointer normal pointerfg white pointerbg black penleft white penright red :end { {title title {title (sub)}} {item item} {subitem subitem} {subsubitem subsubitem} {subsubsubitem subsubsubitem} {left left} {center center} {right right} } { {title color} {center {}} {center white} {center yellow yellow} {center green green} {center orange orange} {center red red} {center skyblue skyblue} {center gray gray} } { {title font} {center {}} {center {14 font 漢字フォント} white {14 rm 14 mc}} {center {14 font 漢字フォント} white {14 rm 14 mc}} {center {16 font 漢字フォント} white {16 rm 16 mc}} {center {16 font 漢字フォント} white {16 rm 16 mc}} {center {24 font 漢字フォント}} {center {24 font 漢字フォント}} } { {title {text,textbox のサンプル}} {text {text return space tab space tab tab space}} {textbox textbox} {textbox {EWIPE usage : ewipe filename EWIPE Viewer usage: ewipe -v filename}} } { {title {pict のサンプル}} {pict logo.gif} } { {title {symbol のサンプル}} {center 下向き矢印} {symbol downarrow} {center 上向き矢印} {symbol uparrow} {center 両方向矢印} {symbol updownarrow} {center cdot} {symbol cdot} {center vdots} {symbol vdots} } { {title 表のサンプル} {center {}} {table { {l c r} | {| 左寄せ | 中揃え | 右寄せ |} | {| A | あ | 100 |} | {| AB | あい | 1000 |} | {| ABC | あいう | 10000 |} | {| ABCD | あいうえ | 100000 |} | {| A | {} | 0 |} | {| {} | {} | {} |} | }} } { {title アニメーション} {center {}} {animation {a1.gif a2.gif a3.gif a4.gif a1.gif}} {center {}} {item {複数の gif 形式のファイルを連続して表示させています}} } { {title 文字の移動} {move {center 文字の移動ができます} n} {center {}} {move {center 右からの移動} e} {move {center 左からの移動} w} {move {center 下からの移動} s} {move {item 斜めも可能 skyblue} se} {move {item {left,right,center,item,subitem,subsubitem,subsubsubitem で使えます} yellow} sw} } { {title {move の編集}} {center {}} {item {属性から move xx を選択します}} {center {}} {text {方向は (xx) は, nw n ne w e sw s se です} white {24 rm 24 mc}} } { {title 任意の記号を指定できる箇条書き} {center {}} {{item ""} 記号を消すこともできます} {{item " "} 空白を入れることもできます} {{subsubitem A.} subsubitem} {{subsubsubitem (a)} subsubsubitem} {{subsubsubitem (b)} subsubsubitem} {{subsubitem B.} subsubitem} } { {title 箇条書きの記号の編集} {center {}} {{item 1.} 編集する行を選択してラベルの部分を右クリックします} {{item 2.} 入力ウィンドウが開くので,箇条書きの記号にする文字を入力します} {{item 3.} 何も入力せずに了解(Ok)にした場合は,記号が消えます} {{item 4.} もとの状態にするには,デフォルト(default)にします} } { {title 自動ナンバリング} {{item n} {箇条書きの記号を入力するときに "n" を入力します}} {item 次の行は、自動的に数字が割り当てられます} {left {}} {subitem {"n" が入力された行以降の箇条書きは、すべてナンバリングされます}} {subitem ナンバリングは、そのページ内で有効です} } { {title 表示の一時停止} {center {}} {item マウスを左クリックすると,次の部分が表示されます} {pause {}} {center {}} {center このように,} {pause {}} {center 少しずつ表示させていくことができます} } { {title アニメーションのコマ送り} {item アニメーションのコマ送りもできます} {center {}} {animation {a1.gif a2.gif a3.gif a4.gif a1.gif} -1} {center {}} } ewipe-1.2.0/sample/test.ewp0100644000076400001440000000344407065161356015356 0ustar sekisitausersoption: lang jpn pagen 0 time 0 timemode 1 pathtype 1 htmlcolor 0 htmlfont 0 viewersize 0 vredraw 1 saveoptions 1 background blue1.gif bgtype 0 titletype 1 pointer normal pointerfg white pointerbg black penleft white penright red :end { {title テスト中の機能のサンプル} {center {}} {item {このサンプルで使われている cleft, figure, exec は、まだテスト中のコマンドです}} {item {EWIPE エディタで編集することはできません}} {item 直接ファイルに記述します} {item 使い方はこのファイルを参考にしてください} } { {title 文途中の文字の色と大きさ} {center {}} {center {}} {cleft 文字の white {24 rm 24 mc} {{色 yellow} {を途中で} {変える orange} {ことができます}}} {cleft 文字の white {24 rm 24 mc} {{大きさ yellow {16 rm 16 mc}} {も途中で} {変える orange {16 rm 16 mc}} {ことができます}}} } { {title {データ形式 (cleft)}} {center {}} {textbox {{cleft テキスト 文字色 フォント {{テキスト 文字色 フォント} {テキスト 文字色 フォント} ... }}}} {item {cleft は仮名で、今後変更するかもしれません}} } { {title {figure のサンプルとデータ形式}} {figure logo.gif l {{"figure"を使うと,このように画像の横に文字を表示することができます}}} {figure logo.gif r {{文字は画像の右側または左側に表示させることができます}}} {center {}} {textbox {{figure 画像の表示位置 {テキスト 文字色 フォント}} 画像の表示位置: l=左 r=右}} } { {title 外部プログラムの実行} {center {}} {item ページを表示するときに,外部プログラムを実行することができます} {item {このページが表示されるときに,xclock が起動されます}} {exec xclock} } { {title {データ形式 (exec)}} {center {}} {textbox { {exec コマンド} }} {center {}} {item {exec で起動されたコマンドを終了するには,k を押してコマンド名を選択してください}} } ewipe-1.2.0/sample/tutorial-e.ewp0100644000076400001440000000433607065161356016465 0ustar sekisitausersoption: lang eng pagen 0 time 0 timemode 1 pathtype 0 htmlcolor 0 htmlfont 0 viewersize 0 vredraw 1 saveoptions 1 background bgtype 0 titletype 0 pointer normal pointerfg white pointerbg black penleft white penright red :end { {center {}} {center {}} {center {}} {center {How to use EWIPE Viewer} yellow} {center {}} {center {}} {center {Hiromasa Sekishita}} {center {}} {center 1998.1.12 white {16 rm 16 mc}} } { {title {How to run}} {item {Do presentation with EWIPE Viewer}} {textbox {ewipe -v }} {item {Edit file with EWIPE}} {textbox {ewipe }} {item {View the version of EWIPE}} {textbox {ewipe -V}} {item {View brief help of EWIPE}} {textbox {ewipe -h}} } { {title {Next Page}} {item {Using Mouse}} {center {Left Click}} {center {}} {item {Using Keyboard}} {center {Right Arrow Key}} {center {Space Bar}} {center {'n' Key}} } { {title {Previous Page}} {item {Using Mouse}} {center {Right Click}} {center {}} {item {Using Keyboard}} {center {Left Arrow Key}} {center {Delete Key }} {center {Back Space Key}} {center {'p' Key}} } { {title {View Title List}} {item {Using Mouse}} {center {Center Click}} {center {}} {item {Using Keyboard}} {center {Return Key}} } { {title {Controls on Title List}} {item {Using Mouse}} {subitem {Jump to selected page by Left Double Click}} {subitem {Cancel by Right Double Click}} {center {}} {item {Using Keyboard}} {subitem {Select page by Up/Down Arrow Keys}} {subitem {Jump to selected page by Return Key}} {subitem {Cancel by ESC key}} } { {title Miscellaneous} {item {View/Hide Editor}} {center {'e' Key}} {item {View Help}} {center {'h' Key}} {item {View/Hide Page Number}} {center {'s' Key}} {item {Close EWIPE Viewer(or quit if editor is not opened)}} {center {'q' Key}} } { {title Graffiti} {item {Toggle Normal/Graffiti mode}} {center {Shift Key}} {center {}} {item {Draw Lines}} {center {Right Drag(white line)/Left Drag(red line)}} {item {Delete Lines}} {center {Center Click}} } ewipe-1.2.0/sample/tutorial.ewp0100644000076400001440000000442007065161356016235 0ustar sekisitausersoption: lang jpn pagen 0 pathtype 0 htmlcolor 0 htmlfont 0 viewersize 0 vredraw 1 saveoptions 1 background bgtype 0 pointer normal pointerfg white pointerbg black penleft white penright red :end { {center {}} {center {}} {center {}} {center {EWIPE Viewer の使い方} yellow} {center {}} {center {}} {center {関下 浩正}} {center {}} {center {1998 年 1 月 12 日} white {16 rm 16 mc}} } { {title 起動方法} {item {EWIPE Viewer を使ってプレゼンテーションをする場合}} {textbox {ewipe -v ewipeファイル}} {item {EWIPE でファイルを編集する場合}} {textbox {ewipe ewipeファイル}} {item {EWIPE のバージョンを表示する}} {textbox {ewipe -V}} {item {EWIPE の簡易ヘルプを表示する}} {textbox {ewipe -h}} } { {title 次のページを表示する} {item マウスを使う場合} {center 左クリック} {center {}} {item キーボードを使う場合} {center {'→' キー }} {center {スペース キー }} {center {'n' キー }} } { {title 前のページを表示する} {item マウスを使う場合} {center 右クリック} {center {}} {item キーボードを使う場合} {center {'←' キー }} {center {Delete キー }} {center {Back space キー }} {center {'p' キー }} } { {title タイトル一覧を表示する} {item マウスを使う場合} {center 中クリック} {center {}} {item キーボードを使う場合} {center {リターン キー}} } { {title タイトル一覧での操作} {item マウスを使う場合} {subitem 左ダブルクリックで選択したページにジャンプ} {subitem 右クリックでキャンセル} {center {}} {item キーボードを使う場合} {subitem {'↑' キー,'↓' キーでページ選択}} {subitem {リターン キーで選択したページにジャンプ}} {subitem {ESC キーでキャンセル}} } { {title その他の操作} {item エディタを表示/非表示する} {center {'e' キー}} {item ヘルプを表示する} {center {'h' キー}} {item ページ番号を表示/非表示する} {center {'s' キー}} {item {EWIPE Viewer を閉じる(エディタが非表示のときは終了)}} {center {'q' キー}} } { {title 落書き機能} {item 通常モードと落書きモードの切替え} {center {Shift キー}} {center {}} {item 線の描画} {center マウスの左ボタン,右ボタン} {item 描画した線の消去} {center マウスの中クリック} } ewipe-1.2.0/setpointer.tcl0100644000076400001440000001543507065161356015304 0ustar sekisitausers# # # setpointer.tcl # # # # Copyright (C) 1997-2000 Hiromasa Sekishita # # # # This program conforms # # GNU GENERAL PUBLIC LICENSE Version 2. # # # # ポインタ種類設定 proc setpointertype {type} { .pointer.po.en delete 0 end .pointer.po.en insert 0 $type setpointertest } # ポインタ色設定 proc setpointercolor {n color} { switch $n { 0 { .pointer.pof.en delete 0 end .pointer.pof.en insert 0 $color } 1 { .pointer.pob.en delete 0 end .pointer.pob.en insert 0 $color } 2 { .pointer.penl.en delete 0 end .pointer.penl.en insert 0 $color } 3 { .pointer.penr.en delete 0 end .pointer.penr.en insert 0 $color } } setpointertest } # ポインタ種類選択メニュー proc setpointermenu {} { global message .pointer.pmp delete 0 end .pointer.pmp add command -label normal -command "setpointertype normal" .pointer.pmp add command -label arrow -command "setpointertype arrow" .pointer.pmp add command -label top_left_arrow \ -command "setpointertype top_left_arrow" .pointer.pmp add command -label dot -command "setpointertype dot" .pointer.pmp add command -label hand1 -command "setpointertype hand1" .pointer.pmp add command -label hand2 -command "setpointertype hand2" .pointer.pmp add separator .pointer.pmp add command -label $message(cancel) set x [winfo pointerx .pointer] set y [winfo pointery .pointer] .pointer.pmp post $x $y focus .pointer.pmp bind .pointer.pmp { .pointer.pmp unpost } } # ポインタ色選択メニュー proc setpointermenuc {n} { global message .pointer.pmp delete 0 end .pointer.pmp add command -label white -command "setpointercolor $n white" .pointer.pmp add command -label yellow -command "setpointercolor $n yellow" .pointer.pmp add command -label green -command "setpointercolor $n green" .pointer.pmp add command -label orange -command "setpointercolor $n orange" .pointer.pmp add command -label red -command "setpointercolor $n red" .pointer.pmp add command -label skyblue -command \ "setpointercolor $n skyblue" .pointer.pmp add command -label gray -command "setpointercolor $n gray" .pointer.pmp add command -label black -command "setpointercolor $n black" .pointer.pmp add separator .pointer.pmp add command -label $message(cancel) set x [winfo pointerx .pointer] set y [winfo pointery .pointer] .pointer.pmp post $x $y focus .pointer.pmp bind .pointer.pmp { .pointer.pmp unpost } } # ポインタテスト proc setpointertest {} { global tcl_platform set type [.pointer.po.en get] set fg [.pointer.pof.en get] set bg [.pointer.pob.en get] if {$type == "" || $type == "normal"} { .pointer configure -cursor {} if {[winfo exists .view] == 1} { .view.c configure -cursor {} } } else { if {$tcl_platform(platform) == "windows"} { if {[catch {.pointer configure -cursor $type}]} { .pointer configure -cursor {} } if {[winfo exists .view] == 1} { if {[catch {.view.c configure -cursor $type}]} { .view.c configure -cursor {} } } } else { if {[catch {.pointer configure -cursor "$type $fg $bg"}]} { .pointer configure -cursor {} } if {[winfo exists .view] == 1} { if {[catch {.view.c configure -cursor "$type $fg $bg"}]} { .view.c configure -cursor {} } } } } } # ポインタ設定 proc setpointer {} { global message global Option toplevel .pointer wm title .pointer "Setting pointer" if {$Option(lang) == "jpn"} { set lb(test) "テスト" set lb(po) "ポインタ " set lb(pof) "前景色 " set lb(pob) "背景色 " set lb(penl) "左のペンの色" set lb(penr) "右のペンの色" } elseif {$Option(lang) == "eng"} { set lb(test) "Test" set lb(po) "pointer " set lb(pof) "foreground color" set lb(pob) "background color" set lb(penl) "left pen color " set lb(penr) "right pen color " } frame .pointer.po label .pointer.po.lb -text $lb(po) entry .pointer.po.en -width 20 button .pointer.po.bt -text $message(select) -command "setpointermenu" frame .pointer.pof label .pointer.pof.lb -text $lb(pof) entry .pointer.pof.en -width 20 button .pointer.pof.bt -text $message(select) -command "setpointermenuc 0" frame .pointer.pob label .pointer.pob.lb -text $lb(pob) entry .pointer.pob.en -width 20 button .pointer.pob.bt -text $message(select) -command "setpointermenuc 1" frame .pointer.penl label .pointer.penl.lb -text $lb(penl) entry .pointer.penl.en -width 20 button .pointer.penl.bt -text $message(select) -command "setpointermenuc 2" frame .pointer.penr label .pointer.penr.lb -text $lb(penr) entry .pointer.penr.en -width 20 button .pointer.penr.bt -text $message(select) -command "setpointermenuc 3" frame .pointer.fb button .pointer.fb.bt -text $lb(test) -command setpointertest button .pointer.fb.bo -text $message(ok) -command { set Option(pointer) [.pointer.po.en get] set Option(pointerfg) [.pointer.pof.en get] set Option(pointerbg) [.pointer.pob.en get] set Option(penleft) [.pointer.penl.en get] set Option(penright) [.pointer.penr.en get] destroy .pointer } button .pointer.fb.bc -text $message(cancel) -command "destroy .pointer" menu .pointer.pmp -tearoff 0 pack .pointer.po.lb .pointer.po.en .pointer.po.bt -side left -padx 2 pack .pointer.pof.lb .pointer.pof.en .pointer.pof.bt -side left -padx 2 pack .pointer.pob.lb .pointer.pob.en .pointer.pob.bt -side left -padx 2 pack .pointer.penl.lb .pointer.penl.en .pointer.penl.bt -side left -padx 2 pack .pointer.penr.lb .pointer.penr.en .pointer.penr.bt -side left -padx 2 pack .pointer.fb.bt .pointer.fb.bo .pointer.fb.bc -side left pack .pointer.po .pointer.pof .pointer.pob .pointer.penl .pointer.penr \ .pointer.fb -pady 5 wm geometry .pointer {} wm minsize .pointer 350 250 wm maxsize .pointer 350 250 .pointer.po.en delete 0 end .pointer.po.en insert 0 $Option(pointer) .pointer.pof.en delete 0 end .pointer.pof.en insert 0 $Option(pointerfg) .pointer.pob.en delete 0 end .pointer.pob.en insert 0 $Option(pointerbg) .pointer.penl.en delete 0 end .pointer.penl.en insert 0 $Option(penleft) .pointer.penr.en delete 0 end .pointer.penr.en insert 0 $Option(penright) setpointertest update focus .pointer grab .pointer tkwait window .pointer if {[winfo exists .view] == 1} { changepointer } } ewipe-1.2.0/tclIndex0100644000076400001440000001133507065161356014074 0ustar sekisitausers# Tcl autoload index file, version 2.0 # This file is generated by the "auto_mkindex" command # and sourced to set up indexing information for one or # more commands. Typically each line is a command that # sets an element in the auto_index array, where the # element name is the name of a command and the value is # a script that loads the command. set auto_index(definefont) [list source [file join $dir definefont.tcl]] set auto_index(ET_inittable) [list source [file join $dir edittable.tcl]] set auto_index(ET_settable) [list source [file join $dir edittable.tcl]] set auto_index(ET_maketable) [list source [file join $dir edittable.tcl]] set auto_index(edittable) [list source [file join $dir edittable.tcl]] set auto_index(setpointertype) [list source [file join $dir setpointer.tcl]] set auto_index(setpointercolor) [list source [file join $dir setpointer.tcl]] set auto_index(setpointermenu) [list source [file join $dir setpointer.tcl]] set auto_index(setpointermenuc) [list source [file join $dir setpointer.tcl]] set auto_index(setpointertest) [list source [file join $dir setpointer.tcl]] set auto_index(setpointer) [list source [file join $dir setpointer.tcl]] set auto_index(EV_title) [list source [file join $dir viewer.tcl]] set auto_index(EV_left) [list source [file join $dir viewer.tcl]] set auto_index(EV_right) [list source [file join $dir viewer.tcl]] set auto_index(EV_item) [list source [file join $dir viewer.tcl]] set auto_index(EV_subitem) [list source [file join $dir viewer.tcl]] set auto_index(EV_subsubitem) [list source [file join $dir viewer.tcl]] set auto_index(EV_subsubsubitem) [list source [file join $dir viewer.tcl]] set auto_index(EV_center) [list source [file join $dir viewer.tcl]] set auto_index(EV_pict) [list source [file join $dir viewer.tcl]] set auto_index(EV_wipe_pp) [list source [file join $dir viewer.tcl]] set auto_index(EV_wipe_rp) [list source [file join $dir viewer.tcl]] set auto_index(EV_wipe_label) [list source [file join $dir viewer.tcl]] set auto_index(EV_wipe_message) [list source [file join $dir viewer.tcl]] set auto_index(EV_table) [list source [file join $dir viewer.tcl]] set auto_index(EV_symbol) [list source [file join $dir viewer.tcl]] set auto_index(EV_text) [list source [file join $dir viewer.tcl]] set auto_index(EV_textbox) [list source [file join $dir viewer.tcl]] set auto_index(EV_animation) [list source [file join $dir viewer.tcl]] set auto_index(animplay) [list source [file join $dir viewer.tcl]] set auto_index(EV_move) [list source [file join $dir viewer.tcl]] set auto_index(EV_cleft) [list source [file join $dir viewer.tcl]] set auto_index(colortext) [list source [file join $dir viewer.tcl]] set auto_index(EV_pause) [list source [file join $dir viewer.tcl]] set auto_index(EV_exec) [list source [file join $dir viewer.tcl]] set auto_index(EV_prog) [list source [file join $dir viewer.tcl]] set auto_index(EV_figure) [list source [file join $dir viewer.tcl]] set auto_index(view_cutcode) [list source [file join $dir viewer.tcl]] set auto_index(add_x) [list source [file join $dir viewer.tcl]] set auto_index(add_scrY) [list source [file join $dir viewer.tcl]] set auto_index(setval) [list source [file join $dir viewer.tcl]] set auto_index(setfont) [list source [file join $dir viewer.tcl]] set auto_index(selectfont) [list source [file join $dir viewer.tcl]] set auto_index(selectkfont) [list source [file join $dir viewer.tcl]] set auto_index(view_titlelist) [list source [file join $dir viewer.tcl]] set auto_index(view_showcanvas) [list source [file join $dir viewer.tcl]] set auto_index(view_nextpage) [list source [file join $dir viewer.tcl]] set auto_index(pushpage) [list source [file join $dir viewer.tcl]] set auto_index(jump_pushed_page) [list source [file join $dir viewer.tcl]] set auto_index(toggle_rakugaki_mode) [list source [file join $dir viewer.tcl]] set auto_index(killsubps) [list source [file join $dir viewer.tcl]] set auto_index(toggle_time) [list source [file join $dir viewer.tcl]] set auto_index(timer) [list source [file join $dir viewer.tcl]] set auto_index(reset_time) [list source [file join $dir viewer.tcl]] set auto_index(show_pagen) [list source [file join $dir viewer.tcl]] set auto_index(quitviewer) [list source [file join $dir viewer.tcl]] set auto_index(view_showhelp) [list source [file join $dir viewer.tcl]] set auto_index(view_setbind) [list source [file join $dir viewer.tcl]] set auto_index(changepointer) [list source [file join $dir viewer.tcl]] set auto_index(movepointer) [list source [file join $dir viewer.tcl]] set auto_index(movestick) [list source [file join $dir viewer.tcl]] set auto_index(hideeditor) [list source [file join $dir viewer.tcl]] set auto_index(resetview) [list source [file join $dir viewer.tcl]] set auto_index(viewer) [list source [file join $dir viewer.tcl]] ewipe-1.2.0/viewer.tcl0100644000076400001440000014600007065161356014402 0ustar sekisitausers# # # viewer.tcl (EWIPE Viewer) # # # # Copyright (C) 1997-2000 Hiromasa Sekishita # # # # This program conforms # # GNU GENERAL PUBLIC LICENSE Version 2. # # # ##### WIPE (WIPE2) コマンド ##### # title proc EV_title {label title {subtitle ""}} { global coord global strwidth global view_cw global view_scrY global Option set fg yellow setfont font kfont {24 rm 24 mc} # title set title [view_cutcode $title] if {$view_scrY == 24} { if {$Option(titletype) == 1} { set item [.view.c create text $coord(left) 21 \ -text $title -anchor nw -fill $fg \ -font $font -width $strwidth(title)] catch { .view.c itemconfigure $item -kanjifont $kfont } add_scrY $item set list [.view.c bbox $item] set sy [expr [lindex $list 1] - 5] set ey [expr [lindex $list 3] + 5] .view.c create line [expr $coord(left) - 20] $ey \ [expr $coord(right) + 20] $ey -fill white -width 3 .view.c create line [expr $coord(left) - 18] [expr $ey + 3] \ [expr $coord(right) + 22] [expr $ey + 3] \ -fill black -width 3 .view.c raise $item } else { set item [.view.c create text $coord(center) 21 \ -text $title -anchor n -fill $fg \ -font $font -width $strwidth(title)] catch { .view.c itemconfigure $item -kanjifont $kfont } add_scrY $item set list [.view.c bbox $item] set sy [expr [lindex $list 1] - 5] set ey [expr [lindex $list 3] + 5] .view.c create rectangle $coord(left) $sy $coord(right) \ $ey -fill Black -outline white .view.c raise $item } } else { set item [.view.c create text $coord(center) $view_scrY -text $title \ -anchor n -fill $fg \ -font $font -width $strwidth(title)] catch { .view.c itemconfigure $item -kanjifont $kfont } add_scrY $item } # subtitle set subtitle [view_cutcode $subtitle] if {$subtitle != ""} { if {$Option(titletype) == 1} { set item [.view.c create text [expr $coord(left) + 48] \ $view_scrY -text $subtitle -anchor nw -fill $fg \ -font $font -width $strwidth(title)] catch { .view.c itemconfigure $item -kanjifont $kfont } add_scrY $item } else { set item [.view.c create text $coord(center) \ $view_scrY -text $subtitle -anchor n -fill $fg \ -font $font -width $strwidth(title)] catch { .view.c itemconfigure $item -kanjifont $kfont } add_scrY $item } } else { set view_scrY [expr $view_scrY + 5] } } # left proc EV_left {label text {color white} {fontlist {24 rm 24 mc}}} { global coord global strwidth global view_scrY set text [view_cutcode $text] setfont font kfont $fontlist set item [.view.c create text $coord(left) $view_scrY -text $text \ -anchor nw -fill $color -font $font \ -width $strwidth(pp)] catch { .view.c itemconfigure $item -kanjifont $kfont } add_scrY $item return $item } # right proc EV_right {label text {color white} {fontlist {24 rm 24 mc}}} { global coord global strwidth global view_scrY set text [view_cutcode $text] setfont font kfont $fontlist set item [.view.c create text $coord(right) $view_scrY -text $text \ -anchor ne -fill $color -font $font \ -width $strwidth(rp)] catch { .view.c itemconfigure $item -kanjifont $kfont } add_scrY $item return $item } # item proc EV_item {label text {color white} {fontlist {24 rm 24 mc}}} { global coord global strwidth global view_scrY global item_c sitem_c ssitem_c sssitem_c global Option set text [view_cutcode $text] setfont font kfont $fontlist set type [lindex $label 1] if {[llength $label] == 1} { if {$Option(LANG) == "jpn"} { set type "◆" } else { set type "*" } } if {$type == "n" || $item_c > 0} { if {$type == "n"} { set item_c 1 } else { incr item_c } set sitem_c 0 set ssitem_c 0 set sssitem_c 0 set type $item_c. } else { set item_c 0 set sitem_c 0 set ssitem_c 0 set sssitem_c 0 } set item1 [.view.c create text $coord(left) $view_scrY -text $type \ -anchor nw -fill $color -font $font] catch { .view.c itemconfigure $item1 -kanjifont $kfont } set x [add_x $item1] set item2 [.view.c create text $x $view_scrY \ -text $text -anchor nw -fill $color \ -font $font -width $strwidth(item)] catch { .view.c itemconfigure $item2 -kanjifont $kfont } add_scrY $item2 return $item2 } # subitem proc EV_subitem {label text {color white} {fontlist {24 rm 24 mc}}} { global coord global strwidth global view_scrY global item_c sitem_c ssitem_c sssitem_c global Option set text [view_cutcode $text] setfont font kfont $fontlist set type [lindex $label 1] if {[llength $label] == 1} { if {$Option(LANG) == "jpn"} { set type "☆" } else { set type "#" } } if {$type == "n" || $item_c > 0 || $sitem_c > 0} { if {$type == "n"} { set sitem_c 1 set item_c 0 } else { incr sitem_c } set ssitem_c 0 set sssitem_c 0 set type $sitem_c. } else { set item_c 0 set sitem_c 0 set ssitem_c 0 set sssitem_c 0 } set item1 [.view.c create text [expr $coord(left) + 24] $view_scrY \ -text $type -anchor nw -fill $color -font $font] catch { .view.c itemconfigure $item1 -kanjifont $kfont } set x [add_x $item1] set item2 [.view.c create text $x $view_scrY \ -text $text -anchor nw -fill $color \ -font $font -width $strwidth(subitem)] catch { .view.c itemconfigure $item2 -kanjifont $kfont } add_scrY $item2 return $item2 } # subsubitem proc EV_subsubitem {label text {color white} {fontlist {24 rm 24 mc}}} { global coord global strwidth global view_scrY global item_c sitem_c ssitem_c sssitem_c global Option set text [view_cutcode $text] setfont font kfont $fontlist set type [lindex $label 1] if {[llength $label] == 1} { if {$Option(LANG) == "jpn"} { set type "−" } else { set type "-" } } if {$type == "n" || $item_c > 0 || $sitem_c > 0 || $ssitem_c > 0} { if {$type == "n"} { set ssitem_c 1 set item_c 0 set sitem_c 0 } else { incr ssitem_c } set sssitem_c 0 set type $ssitem_c. } else { set item_c 0 set sitem_c 0 set ssitem_c 0 set sssitem_c 0 } set item1 [.view.c create text [expr $coord(left) + 48] $view_scrY \ -text $type -anchor nw -fill $color -font $font] catch { .view.c itemconfigure $item1 -kanjifont $kfont } set x [add_x $item1] set item2 [.view.c create text $x $view_scrY \ -text $text -anchor nw -fill $color \ -font $font -width $strwidth(subsubitem)] catch { .view.c itemconfigure $item2 -kanjifont $kfont } add_scrY $item2 return $item2 } # subsubsubitem proc EV_subsubsubitem {label text {color white} {fontlist {24 rm 24 mc}}} { global coord global strwidth global view_scrY global item_c sitem_c ssitem_c sssitem_c global Option set text [view_cutcode $text] setfont font kfont $fontlist set type [lindex $label 1] if {[llength $label] == 1} { if {$Option(LANG) == "jpn"} { set type "・" } else { set type "+" } } if {$type == "n" || $item_c > 0 || $sitem_c > 0 || $ssitem_c > 0} { if {$type == "n"} { set sssitem_c 1 set item_c 0 set sitem_c 0 set ssitem_c 0 } else { incr sssitem_c } set type $sssitem_c. } else { set item_c 0 set sitem_c 0 set ssitem_c 0 set sssitem_c 0 } set item1 [.view.c create text [expr $coord(left) + 72] $view_scrY \ -text $type -anchor nw -fill $color -font $font] catch { .view.c itemconfigure $item1 -kanjifont $kfont } set x [add_x $item1] set item2 [.view.c create text $x $view_scrY \ -text $text -anchor nw -fill $color \ -font $font -width $strwidth(subsubsubitem)] catch { .view.c itemconfigure $item2 -kanjifont $kfont } add_scrY $item2 return $item2 } # center proc EV_center {label text {color white} {fontlist {24 rm 24 mc}}} { global coord global strwidth global view_cw global view_scrY set text [view_cutcode $text] setfont font kfont $fontlist set item [.view.c create text $coord(center) $view_scrY -text $text \ -anchor n -fill $color \ -font $font -width $strwidth(center)] catch { .view.c itemconfigure $item -kanjifont $kfont } add_scrY $item return $item } # pict (WIPE2) proc EV_pict {label imagefile} { global coord global view_cw global view_scrY global filedir global pwd global imagelist global evfont set imagefile [view_cutcode $imagefile] cd $filedir if {[file exists $imagefile]} { if {[lsearch [image names] image($imagefile)] == -1} { set err [catch {image create photo image($imagefile) \ -file $imagefile}] if {$err == 0} { lappend imagelist image($imagefile) } } } cd $pwd if {[lsearch [image names] image($imagefile)] != -1} { .view.c create image $coord(center) $view_scrY \ -image image($imagefile) -anchor n set imageheight [image height image($imagefile)] } else { .view.c create text $coord(center) $view_scrY -text $imagefile \ -anchor n -fill white -font $evfont(C,default,16) set imageheight 16 } set view_scrY [expr $view_scrY + $imageheight + 12] } # pp proc EV_wipe_pp {command} { eval EV_left left [lreplace $command 0 0] } # rp (WIPE2) proc EV_wipe_rp {command} { eval EV_right right [lreplace $command 0 0] } # label proc EV_wipe_label {command} { global view_cw global view_scrY global evfont set text "" set color white set font $evfont(C,default,24) set kfont $evfont(ja,default,24) set s [lsearch $command "-text"] if {$s != -1} { set text [lindex $command [expr $s+1]] set text [view_cutcode $text] } set s [lsearch $command "-fg"] if {$s != -1} { set color [lindex $command [expr $s+1]] } set s [lsearch $command "-font"] if {$s != -1} { set font [lindex $command [expr $s+1]] } set s [lsearch $command "-kanjifont"] if {$s != -1} { set kfont [lindex $command [expr $s+1]] } set item [.view.c create text [expr $view_cw/2] $view_scrY -text $text \ -anchor n -fill $color -font $font] catch { .view.c itemconfigure $item -kanjifont $kfont } set view_scrY [expr $view_scrY + 36 + 2] } # message proc EV_wipe_message {command} { global coord global strwidth global view_cw global view_scrY global evfont set text "" set font $evfont(C,default,16) set kfont $evfont(ja,default,16) set s [lsearch $command "-text"] if {$s != -1} { set text [lindex $command [expr $s+1]] set text [string trim $text "\n"] } set s [lsearch $command "-font"] if {$s != -1} { set font [lindex $command [expr $s+1]] } set s [lsearch $command "-kanjifont"] if {$s != -1} { set kfont [lindex $command [expr $s+1]] } set item [.view.c create text $coord(left) [expr $view_scrY + 16]\ -text $text -anchor nw -fill black \ -font $font -width $strwidth(text)] catch { .view.c itemconfigure $item -kanjifont $kfont } add_scrY $item set list [.view.c bbox $item] set sy [expr [lindex $list 1] - 8] set ey [expr [lindex $list 3] + 8] if {$text != {}} { .view.c create rectangle [expr $coord(left) - 8] $sy \ [expr $coord(right) + 8] $ey -fill white -outline white .view.c raise $item } } ########## ##### EWIPE 拡張コマンド ##### # table # # コマンドは, # table {表本体} # という形式です. # 表本体は,最初の部分(1 行目)が項目数と位置で,例えば {l c r} の # ときは,項目が 3 つでそれぞれ,左寄せ,中揃え,右寄せとなります. # # 次の部分以降(2 行目以降)は,実際の表の記述で,項目の間と両端は # 縦罫線の有無を指定します. # 1 行目で上記のように項目を 3 つに設定した場合は,{| A | B | C |} # のように 7 つの要素を記述しなければいけません. # 縦罫線の有無は,|:有 _:無 です. # 横罫線が必要な場合は,行と行の間に | を記述します.横罫線が不要な # 場合は,行を続けて記述するか,_ を記述します. # proc EV_table {label table {color white} {fontlist {16 rm 16 mc}}} { global view_cw global view_scrY global evfont setfont font kfont $fontlist set fsize [lindex $fontlist 0] if {$fsize < [lindex $fontlist 2]} { set fsize [lindex $fontlist 2] } set define [lindex $table 0] set define [view_cutcode $define] set col [expr [llength $define] * 2 + 1] set line [llength $table] for {set i 0} {$i < $col} {incr i} { set strlen($i) 0 set anchor($i) {} if {[expr $i % 2] == 1} { set anchor($i) [lindex $define [expr $i / 2]] } } for {set i 1} {$i < $line} {incr i} { set textlist [lindex $table $i] if {$textlist != {}} { for {set j 0} {$j < $col} {incr j} { set text [lindex $textlist $j] if {[string length $text] > $strlen($j)} { set strlen($j) [string length $text] } } } } set strlensum 0 for {set i 0} {$i < $col} {incr i} { if {$anchor($i) != "|" && $anchor($i) != {}} { set strlensum [expr $strlensum + $strlen($i)] } } set lx [expr $strlensum * ($fsize/2) + ($col / 2) * $fsize - 7] set tablex [expr ($view_cw - $lx) / 2] set y $view_scrY for {set i 1} {$i < $line} {incr i} { set textlist [lindex $table $i] if {$textlist == "|"} { set x $tablex .view.c create line [expr $x - 8] [expr $y - 4] \ [expr $x + $lx] [expr $y - 4] -fill white } elseif {$textlist == "_"} { } else { set x $tablex for {set j 0} {$j < $col} {incr j} { set textlist [lindex $table $i] set text [lindex $textlist $j] if {$anchor($j) == "l"} { set item [.view.c create text $x $y \ -text $text -anchor nw -fill $color \ -font $font] catch { .view.c itemconfigure $item -kanjifont \ $kfont } set x [expr $x + $strlen($j) * $fsize / 2 + $fsize] } elseif {$anchor($j) =="c"} { set cx [expr $x + ($strlen($j) * $fsize / 2) / 2] set item [.view.c create text $cx $y \ -text $text -anchor n -fill $color \ -font $font] catch { .view.c itemconfigure $item -kanjifont \ $kfont } set x [expr $x + $strlen($j) * $fsize / 2 + $fsize] } elseif {$anchor($j) =="r"} { set rx [expr $x + $strlen($j) * $fsize / 2] set item [.view.c create text $rx $y \ -text $text -anchor ne -fill $color \ -font $font] catch { .view.c itemconfigure $item -kanjifont \ $kfont } set x [expr $x + $strlen($j) * ($fsize / 2) + $fsize] } else { if {$text == "|"} { .view.c create line [expr $x - 8] [expr $y - 4] \ [expr $x - 8] [expr $y + 20 + 4] -fill white } elseif {$text == "_"} { } } } set y [expr $y + 20 + 8] } } set view_scrY [expr $y + 8] } # symbol proc EV_symbol {label symbol {color white}} { global coord global view_cw global view_scrY switch $symbol { downarrow { .view.c create line $coord(center) $view_scrY \ $coord(center) [expr $view_scrY + 24] \ -fill $color -width 5 -arrow last -arrowshape {7 10 5} set view_scrY [expr $view_scrY + 36] } uparrow { .view.c create line $coord(center) $view_scrY \ $coord(center) [expr $view_scrY + 24] \ -fill $color -width 5 -arrow first -arrowshape {7 10 5} set view_scrY [expr $view_scrY + 36] } updownarrow { .view.c create line $coord(center) [expr $view_scrY - 4] \ $coord(center) [expr $view_scrY + 28] \ -fill $color -width 5 -arrow both -arrowshape {7 10 5} set view_scrY [expr $view_scrY + 36] } cdot { .view.c create oval [expr $coord(center) - 3] \ [expr $view_scrY + 9] [expr $coord(center) + 3] \ [expr $view_scrY + 15] \ -fill $color -outline $color set view_scrY [expr $view_scrY + 36] } vdots { for {set i 0} {$i < 3} {incr i} { .view.c create oval [expr $coord(center) - 2] \ [expr $view_scrY + $i * 10] \ [expr $coord(center) + 2] \ [expr $view_scrY + $i * 10 + 4] \ -fill $color -outline $color } set view_scrY [expr $view_scrY + 36] } default { set view_scrY [expr $view_scrY + 36] } } } # text proc EV_text {label text {color white} {fontlist {16 rm 16 mc}}} { global coord global strwidth global view_cw global view_scrY set text [string trim $text "\n"] setfont font kfont $fontlist set item [.view.c create text $coord(left) $view_scrY \ -text $text -anchor nw -fill $color \ -font $font -width $strwidth(text)] catch { .view.c itemconfigure $item -kanjifont $kfont } add_scrY $item } # textbox proc EV_textbox {label text {color white} {fontlist {16 rm 16 mc}}} { global coord global strwidth global view_cw global view_scrY set text [string trim $text "\n"] setfont font kfont $fontlist set item [.view.c create text $coord(center) [expr $view_scrY + 16] \ -text $text -anchor n -fill black \ -font $font -width $strwidth(textbox)] catch { .view.c itemconfigure $item -kanjifont $kfont } add_scrY $item set view_scrY [expr $view_scrY + 12] set list [.view.c bbox $item] set sx [expr [lindex $list 0] - 8] set sy [expr [lindex $list 1] - 8] set ex [expr [lindex $list 2] + 8] set ey [expr [lindex $list 3] + 8] if {$text != {}} { .view.c create rectangle $sx $sy $ex $ey -fill $color -outline $color .view.c raise $item } } # animation proc EV_animation {label animlist {wait 100}} { global coord global view_scrY global filedir global pwd global view_anim global view_animlist global view_wait global evfont lappend view_wait $wait set frame [llength $animlist] set view_anim {} cd $filedir for {set i 0} {$i < $frame} {incr i} { if {$i == 0} { if {[file exists [lindex $animlist 0]]} { set err 0 if {[lsearch [image names] image([lindex $animlist 0])] \ == -1} { set err [catch {image create photo \ image([lindex $animlist $i]) \ -file [lindex $animlist $i]}] } if {$err == 0} { set imagewidth [image width \ image([lindex $animlist 0])] set imageheight [image height \ image([lindex $animlist 0])] } } else { break } } else { if {[file exists [lindex $animlist $i]]} { if {[lsearch [image names] image([lindex $animlist $i])] \ == -1} { image create photo image([lindex $animlist $i]) \ -width $imagewidth -height $imageheight set err [catch {image create photo image(temp) \ -file [lindex $animlist $i] \ -width $imagewidth -height $imageheight}] image([lindex $animlist $i]) copy image(temp) -to 0 0 \ $imagewidth $imageheight image delete image(temp) } } } if {[lsearch [image names] image([lindex $animlist $i])] != -1} { set item [.view.c create image $coord(center) \ $view_scrY -image image([lindex $animlist $i]) -anchor n] lappend view_anim $item } .view.c raise [lindex $view_anim 0] } cd $pwd if {[lsearch [image names] image([lindex $animlist 0])] == -1} { .view.c create text $coord(center) $view_scrY \ -text [lindex $animlist 0] -anchor n -fill white \ -font $evfont(C,default,16) set imageheight 16 } else { lappend view_animlist $view_anim } set view_scrY [expr $view_scrY + $imageheight + 12] if {[lindex $view_wait 0] < 0} { animplay [lindex $view_animlist 0] set view_animlist [lreplace $view_animlist 0 0] set view_wait [lreplace $view_wait 0 0] } } # アニメーション処理 proc animplay {anim} { global view_wait view_setbind 0 for {set j 0} {$j < [llength $anim]} {incr j} { .view.c raise [lindex $anim $j] if {[lindex $view_wait 0 ] < 0} { EV_pause pause {} } else { after [lindex $view_wait 0] } update } if {[lindex $view_wait 0 ] >= 0} { set view_wait [lreplace $view_wait 0 0] } view_setbind 1 } # move proc EV_move {label command dir} { global view_cw global view_ch global view_movewait view_setbind 0 focus .view grab .view bind .view <3> { set view_movewait 0 } bind .view { set view_movewait 0 } if {[lsearch {item subitem subsubitem subsubsubitem \ left center right} [lindex [lindex $command 0] 0]] == -1} return set str [lindex [lindex $command 0] 0] set item [eval EV_$str $command] set orgx [lindex [.view.c coords $item] 0] set orgy [lindex [.view.c coords $item] 1] set organchor [lindex [.view.c itemconfigure $item -anchor] 4] set ex [lindex [.view.c bbox $item] 0] set ey [lindex [.view.c bbox $item] 1] set sx $ex set sy $ey if {$dir == "nw" || $dir == "w" || $dir == "sw"} { set sx [expr $ex - [lindex [.view.c bbox $item] 2]] } if {$dir == "ne" || $dir == "e" || $dir == "se"} { set sx $view_cw } if {$dir == "nw" || $dir == "n" || $dir == "ne"} { set sy [expr $ey - [lindex [.view.c bbox $item] 3]] } if {$dir == "sw" || $dir == "s" || $dir == "se"} { set sy $view_ch } set dx [expr ($sx-$ex) / 10.0] set dy [expr ($sy-$ey) / 10.0] .view.c itemconfigure $item -anchor nw .view.c coords $item $sx $sy for {set i 1} {$i <= 10} {incr i} { set x [expr $sx - $dx * $i] set y [expr $sy - $dy * $i] .view.c coords $item $x $y if {$view_movewait != 0} { after $view_movewait update } } .view.c itemconfigure $item -anchor $organchor .view.c coords $item $orgx $orgy bind .view <1> "" bind .view "" view_setbind 1 grab release .view } # cleft (仮) proc EV_cleft {label text {color white} {fontlist {24 rm 24 mc}} addtext} { global coord global strwidth global view_scrY # set text [view_cutcode $text] # setfont font kfont $fontlist lappend textlist "{$text} $color {$fontlist}" set textlist [concat $textlist $addtext] set view_scrY [colortext $textlist $coord(left) $view_scrY] } # 文字単位で描画 proc colortext {textlist x y} { global coord set orgx $x set orgy $y set dylist {} set dy 0 set defcolor [lindex [lindex $textlist 0] 1] set deffontlist [lindex [lindex $textlist 0] 2] foreach text $textlist { set str [lindex $text 0] set color [lindex $text 1] set fontlist [lindex $text 2] if {$color == {}} { set color $defcolor } if {$fontlist == {}} { set fontlist $deffontlist } setfont font kfont $fontlist set err [catch {set len [kanji string length $str]}] if {$err == 1} { set len [string length $str] } for {set i 0} {$i < $len} {incr i} { set err [catch {set ch [kanji string index $str $i]}] if {$err == 1} { set ch [string index $str $i] } set dummy [.view.c create text $x 0 -text $ch -anchor nw \ -font $font] catch { .view.c itemconfigure $dummy -kanjifont $kfont } set x [lindex [.view.c bbox $dummy] 2] set cy [lindex [.view.c bbox $dummy] 3] .view.c delete $dummy if {$cy > $dy} { set dy $cy } if {$x > $coord(right)} { set x $orgx lappend dylist $dy set dy 0 } } } lappend dylist $dy set x $orgx set y [expr $y + [lindex $dylist 0]] set dylist [lreplace $dylist 0 0] foreach text $textlist { set str [lindex $text 0] set color [lindex $text 1] set fontlist [lindex $text 2] if {$color == {}} { set color $defcolor } if {$fontlist == {}} { set fontlist $deffontlist } setfont font kfont $fontlist set err [catch {set len [kanji string length $str]}] if {$err == 1} { set len [string length $str] } for {set i 0} {$i < $len} {incr i} { set err [catch {set ch [kanji string index $str $i]}] if {$err == 1} { set ch [string index $str $i] } set item [.view.c create text $x $y -text $ch -fill $color \ -anchor sw -font $font] catch { .view.c itemconfigure $item -kanjifont $kfont } set x [expr [lindex [.view.c bbox $item] 2] - 2] if {$x > $coord(right)} { set x $orgx set y [expr $y + [lindex $dylist 0]] set dylist [lreplace $dylist 0 0] } } } return [expr $y + 12] } # pause proc EV_pause {label pause} { global view_pause global view_skip global view_scrY global view_cw if {$view_skip == 1} return view_setbind 0 set view_pause 1 set tmp [.view.c create line [expr $view_cw - 10] [expr $view_scrY - 15] \ [expr $view_cw - 10] [expr $view_scrY + 5] \ -arrow last -fill yellow -width 3] focus .view update bind .view <1> { set view_pause 0 } bind .view { set view_pause 0 } bind .view n { set view_pause 0 } bind .view { set view_pause 0 } tkwait variable view_pause .view.c delete $tmp update view_setbind 1 } # exec proc EV_exec {label command} { global view_ps global tcl_platform if {$tcl_platform(platform) == "windows"} {return} set new_psid $view_ps(id) set new_psname $view_ps(name) for {set i 0} {$i < [llength $view_ps(id)]} {incr i} { if {[lsearch [exec ps] [lindex $view_ps(id) $i]] == -1} { set new_psid [lreplace $view_ps(id) $i $i] set new_psname [lreplace $view_ps(name) $i $i] } } set view_ps(id) $new_psid set view_ps(name) $new_psname if {[lsearch $view_ps(name) $command] == -1} { lappend view_ps(id) [exec $command &] lappend view_ps(name) $command } } # prog proc EV_prog {label source} { set self .view.prog frame .view.prog source $source .view.c create window 120 60 -window $self -anchor nw } # figure proc EV_figure {label imagefile {locate l} {textlist ""}} { global coord global view_cw global view_scrY global filedir global pwd global imagelist global evfont set text [lindex $textlist 0] set color [lindex $textlist 1] if {$color == {}} { set color white } set fontlist [lindex $textlist 2] if {$fontlist == {}} { set fontlist {16 rm 16 mc} } setfont font kfont $fontlist set ix $coord(right) set ian ne if {$locate == "r"} { set ix $coord(right) set ian ne } else { set ix $coord(left) set ian nw } set imagefile [view_cutcode $imagefile] cd $filedir if {[file exists $imagefile]} { if {[lsearch [image names] image($imagefile)] == -1} { set err [catch {image create photo image($imagefile) \ -file $imagefile}] if {$err == 0} { lappend imagelist image($imagefile) } } } cd $pwd if {[lsearch [image names] image($imagefile)] != -1} { .view.c create image $ix $view_scrY \ -image image($imagefile) -anchor $ian set imageheight [image height image($imagefile)] set imagewidth [image width image($imagefile)] set iw [expr $coord(right) - $imagewidth - $coord(left) - 8] if {$locate == "r"} { set tx $coord(left) } else { set tx [expr $coord(left) + $imagewidth + 8] } set item [.view.c create text $tx $view_scrY -text $text \ -anchor nw -fill $color -font $font \ -width $iw] catch { .view.c itemconfigure $item -kanjifont $kfont } set view_scrY [expr $view_scrY + $imageheight + 12] } else { if {$locate == "r"} { set tx $coord(left) } else { set tx [expr $coord(left) + $imagewidth + 8] } set iw [expr $coord(right) - $coord(left)] set item [.view.c create text $tx $view_scrY -text $text \ -anchor nw -fill $color -font $font \ -width $iw] catch { .view.c itemconfigure $item -kanjifont $kfont } add_scrY $item } } ########## # 不要文字コードの除去 proc view_cutcode {text} { regsub -all "\[\t\n\]" $text { } text regsub -all "\ +\ *" $text { } text set text [string trim $text { }] return $text } # x 座標加算(ラベルーテキスト間) proc add_x {item} { global view_scrY set list [.view.c bbox $item ] return [expr [lindex $list 2] + 12] } # y 座標加算 proc add_scrY {item} { global view_scrY set list [.view.c bbox $item ] set view_scrY [expr [lindex $list 3] + 12] } # 各種変数設定 proc setval {} { global view_cw global view_ch global coord global strwidth global strlen global Option global rakugaki_mode if {$Option(viewersize) == 1} { set view_cw 800 set view_ch 600 .view.c configure -width $view_cw -height $view_ch wm geometry .view {} wm minsize .view $view_cw $view_ch wm maxsize .view $view_cw $view_ch set coord(left) 40 set coord(right) [expr $view_cw - 40] set coord(center) [expr $view_cw / 2] set strwidth(title) [expr 24 * 26] set strwidth(pp) [expr 24 * 28] set strwidth(center) [expr 24 * 28] set strwidth(rp) [expr 24 * 28] set strwidth(item) [expr 24 * 28] set strwidth(subitem) [expr 24 * 27] set strwidth(subsubitem) [expr 24 * 26] set strwidth(subsubsubitem) [expr 24 * 25] set strwidth(text) [expr 16 * 44] set strwidth(textbox) [expr 16 * 42] } else { set view_cw 640 set view_ch 480 .view.c configure -width $view_cw -height $view_ch wm geometry .view {} wm minsize .view $view_cw $view_ch wm maxsize .view $view_cw $view_ch set coord(left) 40 set coord(right) [expr $view_cw - 40] set coord(center) [expr $view_cw / 2] set strwidth(title) [expr 24 * 20] set strwidth(pp) [expr 24 * 22] set strwidth(center) [expr 24 * 22] set strwidth(rp) [expr 24 * 22] set strwidth(item) [expr 24 * 22] set strwidth(subitem) [expr 24 * 21] set strwidth(subsubitem) [expr 24 * 20] set strwidth(subsubsubitem) [expr 24 * 19] set strwidth(text) [expr 16 * 34] set strwidth(textbox) [expr 16 * 32] } set rakugaki_mode 0 } # フォント設定 proc setfont {font kfont fontlist} { upvar $font lcfont upvar $kfont lckfont set lcfont [selectfont [lindex $fontlist 0] [lindex $fontlist 1]] set lckfont [selectkfont [lindex $fontlist 2] [lindex $fontlist 3]] if {[lindex $fontlist 0] == "u"} { catch { set lcufont "[lindex $fontlist 1]:[lindex $fontlist 3]" if {[lsearch [font names] "@evfont(C,user,$lcufont)"] == -1} { font create @evfont(C,user,$lcufont) \ -compound "$lcfont $lckfont" } set lcfont @evfont(C,user,$lcufont) } } } # フォント # size 14,16,24 選択可能なフォント # u ユーザ定義のフォント # type rm roman # bf bold # it italic # bi bold italic # その他 size=u のときは直接フォント名 proc selectfont {size type} { global evfont switch -regexp $size { ^[0-9][0-9]*$ { switch $type { rm { set font $evfont(C,default,$size) } default { set font $evfont(C,default,$size) } } } ^u$ { set err [catch {set tmp [.view.c create text 0 0 -font $type]}] if {$err == 1} { set font $evfont(C,default,24) } else { set font $type .view.c delete $tmp } } default { set font $evfont(C,default,24) } } return $font } # 漢字フォント # type mc mincho # gt gothic proc selectkfont {size type} { global evfont switch -regexp $size { ^[0-9][0-9]*$ { set font $evfont(ja,default,$size) } ^u$ { set err [catch {set tmp [.view.c create text 0 0 \ -font $type]}] if {$err == 1} { set font $evfont(ja,default,24) } else { set font $type .view.c delete $tmp } } default { set font $evfont(ja,default,24) } } return $font } # タイトル一覧表示 proc view_titlelist {} { global docpages global view_cw global view_ch global view_commandlist global view_cp global cp global Option global rakugaki_mode global view_skip global Viewmode if {[llength $docpages] == 0} {return} view_setbind 0 set orgcp $view_cp frame .view.c.ft -relief raised -borderwidth 3 frame .view.c.ft.fl listbox .view.c.ft.fl.list -height 10 -width 40 \ -yscrollcommand ".view.c.ft.fl.scroll set" scrollbar .view.c.ft.fl.scroll -command ".view.c.ft.fl.list yview" pack .view.c.ft.fl.list .view.c.ft.fl.scroll -side left -fill both set mode mouse if {$mode == "mouse"} { if {$Option(lang) == "jpn"} { set lb(pen) "ペン " set lb(page) "ページ" set lb(help) "ヘルプ" set lb(cancel) "キャンセル" } elseif {$Option(lang) == "eng"} { set lb(pen) "pen " set lb(page) "page " set lb(help) "help " set lb(cancel) " cancel " } frame .view.c.ft.fb -relief raised -borderwidth 1 button .view.c.ft.fb.bp -text $lb(pen) -command { set view_cp $view_cp toggle_rakugaki_mode } button .view.c.ft.fb.bn -text $lb(page) -command { set view_cp $view_cp show_pagen } button .view.c.ft.fb.bh -text $lb(help) -command { set view_cp $view_cp destroy .view.c.ft view_showhelp } button .view.c.ft.fb.bc -text $lb(cancel) -command { set view_cp $view_cp destroy .view.c.ft } pack .view.c.ft.fb.bp .view.c.ft.fb.bn .view.c.ft.fb.bh \ .view.c.ft.fb.bc -side left -padx 2 -pady 2 pack .view.c.ft.fl .view.c.ft.fb -padx 2 -pady 5 } else { pack .view.c.ft.fl } pack .view.c.ft for {set i 0} {$i < [llength $docpages]} {incr i} { set page [lindex $docpages $i] set title [lindex $page 0] set str0 [lindex $title 0] if {[lsearch $view_commandlist $str0] != -1} { if {$str0 == "pict"} { set text " 図" } elseif {$str0 == "table"} { set text " 表" } elseif {$str0 == "symbol"} { set text {} } else { set text [lindex $title 1] } } else { set text {} } .view.c.ft.fl.list insert end [format "%3d %s" [expr $i+1] $text] } set window [.view.c create window [expr $view_cw/2] [expr $view_ch/2] \ -window .view.c.ft -anchor center] .view.c.ft.fl.list activate $view_cp .view.c.ft.fl.list see $view_cp .view.c.ft.fl.list selection set $view_cp $view_cp bind .view.c.ft.fl.list { set view_cp [.view.c.ft.fl.list curselection] } bind .view.c.ft.fl.list { set view_cp [.view.c.ft.fl.list curselection] } bind .view.c.ft.fl.list <3> { set view_cp $view_cp } bind .view.c.ft.fl.list { set view_cp $view_cp } .view.c configure -cursor {} update focus .view.c.ft.fl.list grab .view.c.ft tkwait variable view_cp if {[winfo exists .view.c.ft] == 1} { destroy .view.c.ft } if {$view_cp != $orgcp} { set cp $view_cp set cursor {} if {$Viewmode == 1 || $Option(vredraw) == 0} { view_showcanvas $view_cp } else { ctrlbutton disabled set view_skip 0 initpage showpage focus .view } } if {$rakugaki_mode == 0} { view_setbind 1 changepointer } } # ページ表示 proc view_showcanvas {cp} { global docpages global view_cp global view_cw global view_ch global view_commandlist global view_scrY global Option global view_movewait global view_animlist global view_skip global pagepush global timeitem global item_c sitem_c ssitem_c sssitem_c set curpointer [lindex [.view.c configure -cursor] 4] .view.c configure -cursor watch set pagepush 0 set view_cp $cp .view.c delete all set view_animlist {} set view_wait {} if {[lsearch [image names] image(back)] != -1} { set item [.view.c create image [expr $view_cw / 2] \ [expr $view_ch / 2] -image image(back) -anchor center] } if {[llength $docpages] == 0} { set text "0 / 0" } else { set text "[expr $view_cp + 1 ] / [llength $docpages]" } wm title .view "EWIPE Viewer \[ $text \]" if {$Option(pagen) == 1} { set Option(pagen) 0 show_pagen } set timeitem [.view.c create text 16 [expr $view_ch - 8] \ -text {} -fill yellow -anchor sw -width [expr 24 * 18] \ -font -*-times-bold-r-normal--*-180-*-*-*-*-*-*] if {$Option(time) == 1} { timer } if {$view_skip == 1} { set view_movewait 0 } else { set view_movewait 50 } set view_scrY 24 set item_c 0 set sitem_c 0 set ssitem_c 0 set sssitem_c 0 set page [lindex $docpages $cp] foreach i $page { set str [lindex [lindex $i 0] 0] switch $str { label { EV_wipe_label $i } message { EV_wipe_message $i } pp { EV_wipe_pp $i } rp { EV_wipe_rp $i } pause { .view.c configure -cursor $curpointer eval EV_$str $i .view.c configure -cursor watch } default { if {[lsearch $view_commandlist $str] != -1} { eval EV_$str $i } } } } .view.c configure -cursor $curpointer global stick set Option(stick) 0 if {$Option(stick) == 1} { bind .view "movestick %x %y" set stick(1) [.view.c create line 0 0 0 0 -width 2 -fill black] set stick(2) [.view.c create line 0 0 0 0 -width 2] if { [catch {.view.c itemconfigure $stick(2) -fill $Option(pointerfg)}] } {.view.c itemconfigure $stick(2) -fill white} } } # 次・前ページ proc view_nextpage {n} { global Option global Viewmode global cp global view_cp global docpages global view_animlist global view_skip if {[llength $view_animlist] > 0} { animplay [lindex $view_animlist 0] set view_animlist [lreplace $view_animlist 0 0] } else { set view_skip 0 if {$Viewmode == 1 || $Option(vredraw) == 0} { if {$n == 1} { if {$view_cp < [expr [llength $docpages]-1]} { incr view_cp view_showcanvas $view_cp view_setbind 1 } } elseif {$n == -1} { if {$view_cp > 0} { incr view_cp -1 view_showcanvas $view_cp view_setbind 1 } } } else { if {$n == 1} { nextpage 1 focus .view } elseif {$n == -1} { nextpage -1 focus .view } } } } # ページジャンプ proc pushpage {num} { global pagepush set pagepush [expr "$pagepush * 10 + $num"] } proc jump_pushed_page {} { global pagepush global cp global view_cp global Option global view_skip global docpages global Viewmode if {$pagepush < 1 || $pagepush > [llength $docpages]} { set pagepush 0 return } set view_cp [expr $pagepush - 1] set cp $view_cp set cursor {} if {$Viewmode == 1 || $Option(vredraw) == 0} { view_showcanvas $view_cp } else { ctrlbutton disabled set view_skip 0 initpage showpage focus .view } } # 通常モード <-> 落書きモード proc toggle_rakugaki_mode {} { global rakugaki_mode global pointx global pointy global Option global view_cw global view_ch if {$rakugaki_mode == 0} { set rakugaki_mode 1 set lcolor $Option(penleft) set rcolor $Option(penright) set pointer "pencil $lcolor $rcolor" set err [catch {.view.c configure -cursor $pointer}] if {$err == 1} { catch {.view.c configure -cursor "pencil white red"} set lcolor white set rcolor red } view_setbind 0 bind .view e "hideeditor" bind .view q "quitviewer" bind .view "toggle_rakugaki_mode" bind .view "toggle_rakugaki_mode" bind .view "movepointer %x %y %W $lcolor" bind .view "movepointer %x %y %W $rcolor" bind .view <1> { set pointx %x set pointy %y } bind .view <3> { set pointx %x set pointy %y } bind .view <2> ".view.c delete penline" set pointx {} set pointy {} if {$Option(lang) == "jpn"} { set lb(clear) "消去" set lb(return) "戻る" } elseif {$Option(lang) == "eng"} { set lb(clear) "clear" set lb(return) "Return" } frame .view.c.penwindow button .view.c.penwindow.bc -text $lb(clear) \ -command ".view.c delete penline" button .view.c.penwindow.br -text $lb(return) \ -command toggle_rakugaki_mode pack .view.c.penwindow.bc .view.c.penwindow.br -side left .view.c create window [expr $view_cw - 100] [expr $view_ch - 2] \ -window .view.c.penwindow -anchor se } else { destroy .view.c.penwindow set rakugaki_mode 0 set pointx {} set pointy {} view_setbind 1 changepointer } } # サブプロセス終了 proc killsubps {} { global view_ps global view_cw global view_ch global Option view_setbind 0 frame .view.c.ft -relief raised -borderwidth 3 frame .view.c.ft.fl listbox .view.c.ft.fl.list -height 5 -width 30 \ -yscrollcommand ".view.c.ft.fl.scroll set" scrollbar .view.c.ft.fl.scroll -command ".view.c.ft.fl.list yview" pack .view.c.ft.fl.list .view.c.ft.fl.scroll -side left -fill both set mode mouse if {$mode == "mouse"} { if {$Option(lang) == "jpn"} { set lb(cancel) "キャンセル" } elseif {$Option(lang) == "eng"} { set lb(cancel) " cancel " } frame .view.c.ft.fb button .view.c.ft.fb.bc -text $lb(cancel) -command { set tmp 0 } pack .view.c.ft.fb.bc pack .view.c.ft.fl .view.c.ft.fb -padx 2 -pady 5 } else { pack .view.c.ft.fl } pack .view.c.ft for {set i 0} {$i < [llength $view_ps(id)]} {incr i} { if {[lsearch [exec ps] [lindex $view_ps(id) $i]] != -1} { set text [lindex $view_ps(name) $i] .view.c.ft.fl.list insert end $text } } set window [.view.c create window [expr $view_cw/2] [expr $view_ch/2] \ -window .view.c.ft -anchor center] .view.c.ft.fl.list activate 0 .view.c.ft.fl.list see 0 .view.c.ft.fl.list selection set 0 0 bind .view.c.ft.fl.list { set kps [.view.c.ft.fl.list curselection] if {$kps != {}} { exec kill [lindex $view_ps(id) $kps] set view_ps(id) [lreplace $view_ps(id) $kps $kps] set view_ps(name) [lreplace $view_ps(name) $kps $kps] } set tmp 0 } bind .view.c.ft.fl.list { set kps [.view.c.ft.fl.list curselection] if {$kps != {}} { exec kill [lindex $view_ps(id) $kps] set view_ps(id) [lreplace $view_ps(id) $kps $kps] set view_ps(name) [lreplace $view_ps(name) $kps $kps] } set tmp 0 } bind .view.c.ft.fl.list <3> { set tmp 0 } bind .view.c.ft.fl.list { set tmp 0 } update focus .view.c.ft.fl.list grab .view.c.ft tkwait variable tmp destroy .view.c.ft view_setbind 1 } # 時間表示設定 proc toggle_time {} { global Option global timeitem if {$Option(time) == 0} { set Option(time) 1 timer } else { set Option(time) 0 .view.c itemconfigure $timeitem -text {} } } # 時間表示 proc timer {} { global Option global timeitem global view_stime if {$Option(time) == 0} {return} if {[winfo exists .view] != 1} {return} set ctime [clock seconds] if {$Option(timemode) == 0} { set text [clock format $ctime -format %T] } else { set text [clock format [expr $ctime - $view_stime] -format %T -gmt 1] } .view.c itemconfigure $timeitem -text $text .view.c raise $timeitem after 1000 timer } # 経過時間リセット proc reset_time {} { global view_stime set view_stime [clock seconds] } # ページ番号表示 proc show_pagen {} { global Option global rakugaki_mode global pageitem global view_cw global view_ch global docpages global view_cp if {$Option(pagen) == 0} { if {[llength $docpages] == 0} { set text "0 / 0" } else { set text "[expr $view_cp + 1 ] / [llength $docpages]" } set pageitem [.view.c create text [expr $view_cw - 8] \ [expr $view_ch - 8] -text $text -fill yellow -anchor se \ -width [expr 24 * 18] \ -font -*-times-bold-r-normal--*-180-*-*-*-*-*-*] set Option(pagen) 1 } else { if {[info exists pageitem] == 1} { .view.c delete $pageitem set Option(pagen) 0 } } if {$rakugaki_mode == 1} { toggle_rakugaki_mode changepointer } } # 終了処理 proc quitviewer {} { global Viewmode global view_ps global tcl_platform if {$Viewmode == 1 || [wm state .] == "withdrawn"} { exitewipe } else { if {$tcl_platform(platform) != "windows"} { foreach i $view_ps(id) { if {[lsearch [exec ps] [lindex $view_ps(id) $i]] == -1} { exec kill $i } } } destroy .view } } # ヘルプ表示 proc view_showhelp {} { global message global view_cw global view_ch global Option view_setbind 0 if {$Option(lang) == "jpn"} { set help "\n\ 次ページ表示 : n, →, スペース, 左クリック\n\ 前ページ表示 : p, ←, Del, BS, 右クリック\n\ タイトル一覧の表示 : リターン, 中クリック\n\ エディタ表示切替え : e\n\ ページ番号表示 : s\n\ 時間表示 : t\n\ 経過時間リセット : r\n\ EWIPE Viewer を閉じる : q\n\n\ このヘルプの表示 : h" } elseif {$Option(lang) == "eng"} { set help "\n\ show next page : n, ->, Space, click left\n\ show previous page : p, <-, Del, BS, click right\n\ show title list : Enter, click center\n\ show/hide Editor : e\n\ show page number : s\n\ show time : t\n\ reset time : r\n\ close EWIPE Viewer : q\n\n\ show this help : h" } frame .view.c.fh -relief raised -borderwidth 2 label .view.c.fh.tt -width 54 -height 12 -relief raised \ -justify left -text $help button .view.c.fh.bo -text $message(ok) -command { destroy .view.c.fh } pack .view.c.fh.tt .view.c.fh.bo -padx 5 -pady 5 set window [.view.c create window [expr $view_cw/2] [expr $view_ch/2] \ -window .view.c.fh -anchor center] bind .view.c.fh.bo { destroy .view.c.fh } .view.c configure -cursor {} update focus .view.c.fh.bo grab .view.c.fh tkwait window .view.c.fh view_setbind 1 changepointer } # キーバインドの設定 proc view_setbind {n} { global Option global tcl_platform if {$n == 1} { bind .view <1> "view_nextpage 1" bind .view "view_nextpage 1" bind .view n "view_nextpage 1" bind .view "view_nextpage 1" bind .view <3> "view_nextpage -1" bind .view "view_nextpage -1" bind .view p "view_nextpage -1" bind .view "view_nextpage -1" bind .view <2> "view_titlelist" bind .view "view_titlelist" bind .view e "hideeditor" bind .view h "view_showhelp" bind .view s "show_pagen" bind .view t "toggle_time" bind .view r "reset_time" if {$tcl_platform(platform) != "windows"} { bind .view k "killsubps" } else { bind .view k "" } bind .view q "quitviewer" bind .view "" bind .view "" bind .view "toggle_rakugaki_mode" bind .view "toggle_rakugaki_mode" for {set i 0} {$i <= 9} {incr i} { bind .view $i "pushpage %A" } bind .view g "jump_pushed_page" } else { bind .view <1> "" bind .view "" bind .view n "" bind .view "" bind .view <3> "" bind .view "" bind .view p "" bind .view "" bind .view <2> "" bind .view "" bind .view e "" bind .view h "" bind .view s "" bind .view t "" bind .view k "" bind .view r "" bind .view q "" bind .view "" bind .view "" bind .view "" bind .view "" for {set i 0} {$i <= 9} {incr i} { bind .view $i "" } bind .view g "" } } # ポインタ変更 proc changepointer {} { global Option global rakugaki_mode global tcl_platform set type $Option(pointer) set fg $Option(pointerfg) set bg $Option(pointerbg) if {$type == {} || $type == "normal"} { .view.c configure -cursor {} } else { if {$tcl_platform(platform) == "windows"} { set pointer $type if {[catch {.view.c configure -cursor $pointer}]} { if {[catch {.view.c configure -cursor $type}]} { .view.c configure -cursor {} } } } else { set pointer "$type $fg $bg" if {[catch {.view.c configure -cursor $pointer}]} { if {[catch {.view.c configure -cursor "$type white black"}]} { .view.c configure -cursor {} } } } } if {$rakugaki_mode == 1} { toggle_rakugaki_mode } } # ポインタ移動 proc movepointer {x y w color} { global pointx global pointy if {$pointx == {}} return if {$w != ".view.c"} return set item [.view.c create line $pointx $pointy $x $y -fill $color -width 2] .view.c addtag penline withtag $item set pointx $x set pointy $y } # stick proc movestick {x y} { global stick global view_cw global view_ch .view.c coords $stick(1) $x [expr $y+1] [expr $view_cw-10] $view_ch .view.c coords $stick(2) $x $y $view_cw [expr $view_ch-10] } # エディタ非表示 proc hideeditor {} { global Viewmode global cp global view_cp global view_skip if {[wm state .] == "normal"} { set Viewmode 1 wm withdraw . } else { set Viewmode 0 wm deiconify . set view_skip 1 ctrlbutton disabled set cp $view_cp initpage showpage focus .view } } # 再表示 proc resetview {page} { global view_cp global view_cw global view_ch global filedir global pwd global Option global imagelist global view_stime global view_ps .view.c delete all if {[info exists imagelist] == 1} { foreach i $imagelist { image delete $i set s [lsearch $imagelist $i] if {$s != -1} { set imagelist [lreplace imagelist $s $s] } } } cd $filedir if {$Option(viewersize) == 1} { set wx 800 set wy 600 } else { set wx 640 set wy 480 } # set view_stime [clock format [clock seconds] -format %T] set view_stime [clock seconds] set view_ps(id) {} set view_ps(name) {} if {[file exists $Option(background)]} { if {[lsearch [image names] image(back)] == -1} { if {$Option(bgtype) == 0} { set err [catch {image create photo image(back) \ -file $Option(background)}] } else { set err [catch {image create photo image(temp) \ -file $Option(background)}] image create photo image(back) -width $wx -height $wy if {$Option(bgtype) == 1} { image(back) copy image(temp) -to 0 0 $wx $wy image delete image(temp) } else { # 2: zoom } } if {$err == 0} { lappend imagelist image(back) } } } cd $pwd set view_cp $page view_showcanvas $view_cp view_setbind 1 changepointer } # EWIPE Viewer main proc viewer {page} { global view_cw global view_ch global view_commandlist toplevel .view set view_cw 640 set view_ch 480 set view_commandlist {title item subitem subsubitem subsubsubitem \ left center right pict symbol table textbox text \ animation move cleft pause exec figure} canvas .view.c -width $view_cw -height $view_ch -bg RoyalBlue4 pack .view.c setval resetview $page }