commit 87496f7fb09f3a44a3affc97651c59106fc1215f Author: svk28 Date: Thu Jul 13 12:45:37 2017 +0300 Initial commit diff --git a/CHANGELOG b/CHANGELOG new file mode 100755 index 0000000..5841231 --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,330 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Home page: http//conero.lrn.ru +###################################################### + + +1.0.3 + +21/09/2004 +- Fixed work with directory and files included brakespace into names +- Image thumbnails support now was stable =) + +16/09/2004 +- Added thumbnails support into text widget for \includegraphics - unstable +- Fixed preview bugs + +24/08/2004 +- Fixed bug with differents beetwen system encoding and LaTeX encoding +- Added encode.lst where writing encoding equivalent +- Fixed scroling text window + + +1.0.2 +20/04/2004 +- Word wrapping fixed (when cursor-arrow pressed) +- Added users command files like as toolbar files but without "button" command (~/.tle/gui/hotkeys) +- Fixed duble lines into toolbar-menus + +27/02/2004 +- Fix problem with close debug node +- Fix problem with many included files + + +1.0.1 + +09/10/2003 +- Fix closed file if opened included files (\input, \include) +- Fix problem with finding tags like \section*{} + +08/10/2003 +- Fix problem with close inserted files + +26/09/2003 +- Fix bug with create new doc from template +- Fixed bugs with tree selection get +- Fixed bug with node rise procedure + +14/04/2003 +- Added "Insert curent date" command + + +1.0.0 + +06/02/2003 +- Fixed some error with Text Reneder procedure +- Fixed error with reading toolbar files + +27/01/2003 +- Added HotKeys setup in toolbar files +- Small change spellcheck dialog +- Change GUI of "Create new file from template" procedure +- Change text and formulas rendering procedure - now reading current document header +and used all needed package and instructions +- Added removing selected text into other document (file) and include them with \include{} +- Added saving selected text as file +- Added saving selected text as image +- Added users working directories, now tle reading user defined files after main files: +command - for user defined command list +gui/toolbar - for user defined toolbars +modules - for user module files +tenmplate - for user defined template files +- Added new popup menus for selected text +- Added "Select All" and "Unselect All" in "Edit" menu + +10/01/2003 + +- Changed preview text and formulas keys Alt-T and Alt-F +- Changed tabbar rised if file was closed +- Some changes with FilesTree +- Changed NoteBook tab switcher now used "Ctrl-PgUp" and "Ctrl+PgDown" +- Fixed error with delete file declaration from \input{file} if file was opened in editor +- Fixed refresh structure if changed \input{} \include{} files +- Fixed error with opened included files if them location in different directory + +09/01/2003 +- Some fixes in Encoding procedure +- Change encoding clipboard +- Fixed error with editing file after close any file +- Fixed incorrect search on structure tree +- Change documentation +- Change compile and preview procedure with included files (\iput{}) + +08/01/2003 +- Fixed some error with \input \include declaration if file dosn't exists +- Added creating new file in current dir +- Added selected text rendering procedure and convert them into image +- Changed tle.conf file - added new parameters + +03/01/2003 +- Mathematical formulas preview added + +01/01/2003 +- Added popup menus for file, text and tabs +- Added readline procedure for compile process +- Some bugs fixed + +31/12/2002 +- Chage GUI replace static scrollbar on dynamic +- Added NoteBook Tabs Specifies the side where to place the label of the pages into tle.conf "gui(tabsLabel)" + +30/12/2002 +- Command line support usage> tle you_doc_file.tex +- Multi encoding support added + +0.2.5 +17/12/2002 +- Help dialog (F1 key) fixed +- F5 (convert to dvi), F6 (convert to ps), F7 (convert to pdf) keys fixed +09/12/2002 +- Fixed error with bookmarks file if file was remove +- Remove "Print..." and "Preview" from File menu +02/12/2002 +- Fixed error with %dirName macros +- Added new function AddTextMath - for include math mode (changed /gui/toolbar/math) + +0.2.4 +20/11/2002 +- Added %dirName macros for converting command in tle.conf file + +19/11/2002 +- Fixed error with refresh structure if editing file was closed +- Added command line dialog for converting option, runing from menu +- Fixed memmory leaks in timers + +18/11/2002 +- Added view full path to edit file in main window title +- Added autosave opened files +- Added autorefresh document structure +- Change gui/toolbar/main toolbar file +- Added mouse wheel support into Labels List +- Added new commands files in lib/command/ + +15/11/2002 +- Added \ref{} and \pageref{} tags into label tree +- Added \input{} and \include{} tags into files tree + +10/11/2002 +- Added theme support for toolbar icons +- Added theme Stroke (by Const) +- Added Separator command for toolbars files +- Change relief variable - added relief(btn) for buttons and relief(menu) for menu buttons +- Added main window geometry setting into tle.conf +- Rename work directory ~/.tle +- Reorganize menu - remove "Make" menu and added submenu into "Document" menu +- New external programms (modules) checking procedure + +0.2.3 +04/11/2002 +- Fixed error with "Insert image" procedure (thanks Igor Didkovsky ) +- Added temporary files deleted procedure +- Update README file + +28/10/2002 +- Remove "locale" variable, now used system locale + +0.2.2 +25/10/2002 +- Added new comman list - more then 1850 commands (main_cmd.lst) (by Const) + +21/10/2002 +- Fixed AutoWraping string if length = $editor(strLen) and string have't space + +0.2.1 +18/10/2002 +- Added latex2html support +- Stored toolbar on/off status into tle.conf +- Added few botton into "main" toolbar + +0.2.0 +17/10/2002 +- Overwrite procedure added (Insert press) +- Open file dialog added path to last opened file directory +- Fixed Close unsaved file procedure ("Cancel" button press) + +01/10/2002 +- Fixed correctly location files on save procedure + +17/09/2002 +- Fixed On/Off toolbar into "View" menu + +16/09/2002 +- Change highlight procedure (comments tag removing now) + +13/09/2002 +- Now working files from any location +- Added error highlightning and location in text widget + +04/09/2002 +- Saving files on close TLE +- Remember opened files and cursor position on close TLE and open them on start TLE in next time +- Change color tab title if file was modified + +0.1.10 +15/07/2002 +- Added word wrapping for actual string size + +0.1.9 +28/06/2002 +- Small GUI chages (toolbar buttons view) + +0.1.8 +21/06/2002 +- Added GUI coloring (by Constantin Mikhailenko) + +20/06/2002 +- Fixed "Close"/"Save AS"/"Undo"/"Preview" proceduires if could't opened files + +0.1.7 +29/05/2002 +- Fix some error in autocomplit procedure + +28/05/2002 +- Added support commands like "section{}" into autocomplitition procedure + +16/05/2002 +- Added HELP dialog + +23/05/2002 +- Added AutoComplitition procedure + +0.1.6 + +15/05/2002 +- Fixed problem with loading external modules + +0.1.5 + +08/05/2002 +- Added BackUp file created procedure + +07/05/2002 +- Added external modules support (tkcvs,tkdiff) +- Added label navigation + +0.1.3 +30.04/2002 +- Create Config file tle.conf +- Fixed small bugs with key press event +- Added many mathematical symbols (by Const) in toolbar + +29/04/2002 +- Fixed PageTab procedure for Ctrl+M key +- Fixed calling Replace Dialog from menu + +0.1.1 +27/04/2002 +- Fixed Edit Menu errors +- Fixed Create New File procedure + +26/04/2002 +- Toolbar fixed + +0.0.12 +24/04/2002 +- Added spellcheck procedure (thanks Vitus) + +0.0.11 +23/04/2002 +- Added Insert Table dialog and procedure +- Fixed Refresh Document structure tree + +0.0.9 +17/04/2002 + +- Fixed structure navagation procedure + + +0.0.6 +16/04/2002 +- Some bugs fixed in highligtning procedure +- Add Structure Tree navigator +- Add status bar, cursor position, file attributes +- Add Insert Section, Subsection, e.t.c, dialog +- Fixed bug into Add Enumerate and Itemaze procedures + + +0.0.5 + +11/04/2002 +- Added Document Structure Viewer +- Added Included Package dialog + +0.0.4 + +09/04/2002 +- Added toolbar and many command +- Fix comment highlightning + +0.0.1 +03/04/2002 +- Beginning the project + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/COPYING b/COPYING new file mode 100755 index 0000000..04ebc56 --- /dev/null +++ b/COPYING @@ -0,0 +1,8 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Home page: http//conero.lrn.ru +###################################################### + + diff --git a/INSTALL b/INSTALL new file mode 100755 index 0000000..04ebc56 --- /dev/null +++ b/INSTALL @@ -0,0 +1,8 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Home page: http//conero.lrn.ru +###################################################### + + diff --git a/KNOWBUG b/KNOWBUG new file mode 100755 index 0000000..2420444 --- /dev/null +++ b/KNOWBUG @@ -0,0 +1,17 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +###################################################### + + +еслт я использую нестандартный пакет +(который кладу в тот же каталог, где и редактируемый файл), +препросмотр -- естественно -- не работает, ругается... + + + + + + diff --git a/README b/README new file mode 100755 index 0000000..7bdf9f8 --- /dev/null +++ b/README @@ -0,0 +1,39 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Home page: http//conero.lrn.ru +###################################################### + + +1. ABOUT + +Tk LaTeX Editor is a powerful LaTeX editor. It supports code highlighting, a document structure navigator, a project and file manager, spellchecking, command autocompletion, convert to PS/PDF/HTML support, and much more. + +2. REQUIREMENTS + +For LINUX (Unix) +Tcl/Tk http://www.tcl-tk.org +BWidget http://sourceforge.net/projects/tcllib +TeTeX + +For WINDOWS +ActiveTCL http://tcl.activestate.com +MiKTeX http://www.miktex.org +GhostScript http://www.cs.wisc.edu/~ghost/ + +3. INSTALL + +Install any requirements on your system. +Unpack archive and execute tle.tcl + +4. CREDITS + +Sergey Kalinin (aka Banzaj) - main project programmer and coordinator +banzaj@lrn.ru http://conero.lrn.ru + +Constantin I Mikhailenko (aka Const) const@mail.ru + + + + diff --git a/THANKS b/THANKS new file mode 100755 index 0000000..d87494e --- /dev/null +++ b/THANKS @@ -0,0 +1,11 @@ +######################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +######################################################### + + +Belimov Dmitri +Igor Didkovsky http://langos.lrn.ru +Oleh Nykyforchyn diff --git a/TODO b/TODO new file mode 100755 index 0000000..4166dd1 --- /dev/null +++ b/TODO @@ -0,0 +1,44 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Home page: http//conero.lrn.ru +###################################################### + + +рекурсивное обновление струткуры для всех открытых вложенных файлов + + +Сделать проверку на наличие пакетов включенных в тексте на этапе открытия документа + +20. Установка курсора в положение где найдена ошибка при компиляции!!! + + +folding + +Скролинг в окне автодобивки с клавиатуры + +Обработка кликов мыши в окне автодобивки и клавиш управления курсором + + +3. better support for the labels feature - include support for the bibliography environment & the \bibitem \cite... commands. + + +структура +|->start.tex + |-> file1.tex + |-> file1-1.tex + + работаю с файлом 1-1 + перескакиваю в start внести исправления, сохраняю его, возвращаюсь в 1-1, компилю -- ругается. тупо смотрю. потом умно смотрю. потом замечаю, что структура стала + |-> start.tex + | |-> file1.tex + |-> file1-1.tex + + Перескакиваю в файл 1 -- структура магическим образом восстанавливается ;) + + +и изображения формул + + + diff --git a/TODO_v2 b/TODO_v2 new file mode 100755 index 0000000..b249991 --- /dev/null +++ b/TODO_v2 @@ -0,0 +1,37 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (aka BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2005, http://conero.lrn.ru +###################################################### + +Список задач для второй версии программы + + +1. Работа с деревом +- единая процедура для вставки нод +-- параметры { + fileFullPath - полное имя файла +} +- обработка вложенности документов (документы сложной структуры) + +2. текстовый виджет +- списки отмены\повтора { + .txt -undo true - режим отмены\повтора + .txt -autoseparators true - атоматическое разделение символов для undo + .txt edit redo - повтор + .txt edit undo - отмена + bind .txt {.txt edit separator} - флаг для режима отмены\повтора +} +- поиск по регулярным выражениям { + .txt search -regexp + в диалог поиска вставить вызов tkregexp и возможность экспорта созданного выражения в строку поиска + далог отображения результатов поиска (или кнопку навигации по ним + (использовать переменную varName, содержащую список индексов [.txt search -count VarName] ) +} + +3. Работа с файлами +- выбор нескольких файлов при открытии { + tk_getOpenFile -multiple +} + diff --git a/config.tcl b/config.tcl new file mode 100755 index 0000000..0741583 --- /dev/null +++ b/config.tcl @@ -0,0 +1,8 @@ +###################################################### +# Inventory DataBase +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@altlinux.ru +# Copyright (c) "Dal Telecom Int", 2005, http://conero.lrn.ru +###################################################### + +set dbname inventory diff --git a/doc/tle_api_guide.tex b/doc/tle_api_guide.tex new file mode 100755 index 0000000..a187405 --- /dev/null +++ b/doc/tle_api_guide.tex @@ -0,0 +1,68 @@ +%---------------------------------------- +% TkTeXEditor | +%---------------------------------------- + +\documentclass[12pt]{article} +\usepackage[koi8-r]{inputenc} +\usepackage[english,russian]{babel} + +\usepackage{graphicx} + +\begin{document} +\title{Tk \LaTeX Editor Programming Guide} +\maketitle +\author{Sergey Kalinin (aka BanZaj) 17/06/2002} +\section{Подключение модуля} + +Для загрузки нового модуля необходимо файл скрипта (filename.tcl) разместить в каталоге lib/modules/. Файл будет загружен автоматически при старте программы. + +\section{Глобальные переменные} +\subsection{Расположение файлов} +Для описания каталогов используется массив переменных \textit{dir}: +\begin{itemize} +\item dir(mod) - Каталог с модулями программы (modules) (сдесь и далее в скобках указано значение по умолчанию) +\item dir(gui) - файлы настройки панелей инструментов (gui) +\item dir(img) - каталог изображений (img) +\item dir(msg) - каталог сообщений (msg), используется для локализации пользовательского интерфейса программы +\item dir(tmpl) - шаблоны документов (template) +\item dir(work) - рабочий каталог (~/.tktexeditor) +\end{itemize} + +\subsection{Определение шрифтов} +Для определения шрифтов для интерфейса и редактора используется массив переменных \textit{}: +\begin{itemize} +\item font(normal) - Обычный шрифт +\item font(bold) - жирный шрифт +\item font(editNormal) - обычный шрифт в редакторе +\item font(editBold) - жирный шрифт в редакторе +\end{itemize} + +\subsection{Определение цветовой гаммы} +Для определения цветовой гаммы интерфейса и подсветки кода в редакторе определен массив \textit{color} + +\subsubsection{Остальные переменные} +\begin{itemize} +\item \textit{tree} - имя Tree виджета +\item \textit{nb} - имя NoteBook виджета редактра +\item \textit{treeStruct} - имя Tree для структуры документа +\item \textit{lblList} - имя списка меток +\item \textit{module()} - массив переменных содержащий полные имена внешних модулей (см lib/modules/module.tcl) +\item files() - массив переменных с именами открытых файлов +\item \textit{activeFile} - имя активной ноды +Например для извлечения имени активного файла необходимо : +\begin{verbatim} + if {$activeFile == ""} {return} <-- проверка + set text "$nb.f$activeFile.f.text" <-- имя текстового виджета + set fullPath [lindex $files($activeFile) 0] <-- полный путь к файлу +\end{verbatim} + +\end{itemize} + + + +\end{document} + + + + + diff --git a/doc/tle_api_guide/index.html b/doc/tle_api_guide/index.html new file mode 100755 index 0000000..fa266d4 --- /dev/null +++ b/doc/tle_api_guide/index.html @@ -0,0 +1,145 @@ + + + + + +Tk LATEXEditor Programming Guide + + + + + + + + + + + + + + + +

Tk LATEXEditor Programming Guide

+

Sergey Kalinin (aka BanZaj) 17/06/2002

+ +

+Подключение модуля +

+ +

+Для загрузки нового модуля необходимо файл скрипта (filename.tcl) разместить в каталоге lib/modules/. Файл будет загружен автоматически при старте программы. + +

+ +

+Глобальные переменные +

+ +

+Расположение файлов +

+Для описания каталогов используется массив переменных dir: + +
    +
  • dir(mod) - Каталог с модулями программы (modules) (сдесь и далее в скобках указано значение по умолчанию) +
  • +
  • dir(gui) - файлы настройки панелей инструментов (gui) +
  • +
  • dir(img) - каталог изображений (img) +
  • +
  • dir(msg) - каталог сообщений (msg), используется для локализации пользовательского интерфейса программы +
  • +
  • dir(tmpl) - шаблоны документов (template) +
  • +
  • dir(work) - рабочий каталог ( /.tktexeditor) +
  • +
+ +

+ +

+Определение шрифтов +

+Для определения шрифтов для интерфейса и редактора используется массив переменных : + +
    +
  • font(normal) - Обычный шрифт +
  • +
  • font(bold) - жирный шрифт +
  • +
  • font(editNormal) - обычный шрифт в редакторе +
  • +
  • font(editBold) - жирный шрифт в редакторе +
  • +
+ +

+ +

+Определение цветовой гаммы +

+Для определения цветовой гаммы интерфейса и подсветки кода в редакторе определен массив color + +

+ +

+Остальные переменные +

+ +
    +
  • tree - имя Tree виджета +
  • +
  • nb - имя NoteBook виджета редактра +
  • +
  • treeStruct - имя Tree для структуры документа +
  • +
  • lblList - имя списка меток +
  • +
  • module() - массив переменных содержащий полные имена внешних модулей (см lib/modules/module.tcl) +
  • +
  • files() - массив переменных с именами открытых файлов +
  • +
  • activeFile - имя активной ноды +Например для извлечения имени активного файла необходимо : +
    +    if {$activeFile == ""} {return} <-- проверка
    +    set text "$nb.f$activeFile.f.text" <-- имя текстового виджета
    +    set fullPath [lindex $files($activeFile) 0] <-- полный путь к файлу
    +
    + +

    +

  • +
+ +

+ +

+Об этом документе ... +

+ Tk LATEXEditor Programming Guide

+This document was generated using the +LaTeX2HTML translator Version 2K.1beta (1.57) +

+Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
+Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

+The command line arguments were:
+ latex2html -no_navigation -split 0 /home/kalinin/projects/tcl/tle/doc/tle_api_guide.tex +

+The translation was initiated by on 2002-12-26 +


+
+ +2002-12-26 +
+ + diff --git a/doc/tle_api_guide/labels.pl b/doc/tle_api_guide/labels.pl new file mode 100755 index 0000000..936fad6 --- /dev/null +++ b/doc/tle_api_guide/labels.pl @@ -0,0 +1,13 @@ +# LaTeX2HTML 2K.1beta (1.57) +# Associate labels original text with physical files. + + +1; + + +# LaTeX2HTML 2K.1beta (1.57) +# labels from external_latex_labels array. + + +1; + diff --git a/doc/tle_api_guide/tle_api_guide.css b/doc/tle_api_guide/tle_api_guide.css new file mode 100755 index 0000000..d1824af --- /dev/null +++ b/doc/tle_api_guide/tle_api_guide.css @@ -0,0 +1,30 @@ +/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ +.MATH { font-family: "Century Schoolbook", serif; } +.MATH I { font-family: "Century Schoolbook", serif; font-style: italic } +.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } + +/* implement both fixed-size and relative sizes */ +SMALL.XTINY { font-size : xx-small } +SMALL.TINY { font-size : x-small } +SMALL.SCRIPTSIZE { font-size : smaller } +SMALL.FOOTNOTESIZE { font-size : small } +SMALL.SMALL { } +BIG.LARGE { } +BIG.XLARGE { font-size : large } +BIG.XXLARGE { font-size : x-large } +BIG.HUGE { font-size : larger } +BIG.XHUGE { font-size : xx-large } + +/* heading styles */ +H1 { } +H2 { } +H3 { } +H4 { } +H5 { } + +/* mathematics styles */ +DIV.displaymath { } /* math displays */ +TD.eqno { } /* equation-number cells */ + + +/* document-specific styles come next */ diff --git a/doc/tle_api_guide/tle_api_guide.html b/doc/tle_api_guide/tle_api_guide.html new file mode 100755 index 0000000..fa266d4 --- /dev/null +++ b/doc/tle_api_guide/tle_api_guide.html @@ -0,0 +1,145 @@ + + + + + +Tk LATEXEditor Programming Guide + + + + + + + + + + + + + + + +

Tk LATEXEditor Programming Guide

+

Sergey Kalinin (aka BanZaj) 17/06/2002

+ +

+Подключение модуля +

+ +

+Для загрузки нового модуля необходимо файл скрипта (filename.tcl) разместить в каталоге lib/modules/. Файл будет загружен автоматически при старте программы. + +

+ +

+Глобальные переменные +

+ +

+Расположение файлов +

+Для описания каталогов используется массив переменных dir: + +
    +
  • dir(mod) - Каталог с модулями программы (modules) (сдесь и далее в скобках указано значение по умолчанию) +
  • +
  • dir(gui) - файлы настройки панелей инструментов (gui) +
  • +
  • dir(img) - каталог изображений (img) +
  • +
  • dir(msg) - каталог сообщений (msg), используется для локализации пользовательского интерфейса программы +
  • +
  • dir(tmpl) - шаблоны документов (template) +
  • +
  • dir(work) - рабочий каталог ( /.tktexeditor) +
  • +
+ +

+ +

+Определение шрифтов +

+Для определения шрифтов для интерфейса и редактора используется массив переменных : + +
    +
  • font(normal) - Обычный шрифт +
  • +
  • font(bold) - жирный шрифт +
  • +
  • font(editNormal) - обычный шрифт в редакторе +
  • +
  • font(editBold) - жирный шрифт в редакторе +
  • +
+ +

+ +

+Определение цветовой гаммы +

+Для определения цветовой гаммы интерфейса и подсветки кода в редакторе определен массив color + +

+ +

+Остальные переменные +

+ +
    +
  • tree - имя Tree виджета +
  • +
  • nb - имя NoteBook виджета редактра +
  • +
  • treeStruct - имя Tree для структуры документа +
  • +
  • lblList - имя списка меток +
  • +
  • module() - массив переменных содержащий полные имена внешних модулей (см lib/modules/module.tcl) +
  • +
  • files() - массив переменных с именами открытых файлов +
  • +
  • activeFile - имя активной ноды +Например для извлечения имени активного файла необходимо : +
    +    if {$activeFile == ""} {return} <-- проверка
    +    set text "$nb.f$activeFile.f.text" <-- имя текстового виджета
    +    set fullPath [lindex $files($activeFile) 0] <-- полный путь к файлу
    +
    + +

    +

  • +
+ +

+ +

+Об этом документе ... +

+ Tk LATEXEditor Programming Guide

+This document was generated using the +LaTeX2HTML translator Version 2K.1beta (1.57) +

+Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
+Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

+The command line arguments were:
+ latex2html -no_navigation -split 0 /home/kalinin/projects/tcl/tle/doc/tle_api_guide.tex +

+The translation was initiated by on 2002-12-26 +


+
+ +2002-12-26 +
+ + diff --git a/doc/tle_usr_manual.aux b/doc/tle_usr_manual.aux new file mode 100755 index 0000000..603ad13 --- /dev/null +++ b/doc/tle_usr_manual.aux @@ -0,0 +1,27 @@ +\relax +\catcode`"\active +\select@language{russian} +\@writefile{toc}{\select@language{russian}} +\@writefile{lof}{\select@language{russian}} +\@writefile{lot}{\select@language{russian}} +\@writefile{toc}{\contentsline {section}{\numberline {1}\IeC {\CYRN }\IeC {\cyra }\IeC {\cyrz }\IeC {\cyrn }\IeC {\cyra }\IeC {\cyrch }\IeC {\cyre }\IeC {\cyrn }\IeC {\cyri }\IeC {\cyre }}{1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}\IeC {\CYRO }\IeC {\cyrp }\IeC {\cyri }\IeC {\cyrs }\IeC {\cyra }\IeC {\cyrn }\IeC {\cyri }\IeC {\cyre } \IeC {\cyrf }\IeC {\cyru }\IeC {\cyrn }\IeC {\cyrk }\IeC {\cyrc }\IeC {\cyri }\IeC {\cyrishrt }}{1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}\IeC {\CYRN }\IeC {\cyre }\IeC {\cyro }\IeC {\cyrb }\IeC {\cyrh }\IeC {\cyro }\IeC {\cyrd }\IeC {\cyri }\IeC {\cyrm }\IeC {\cyro }\IeC {\cyre } \IeC {\CYRP }\IeC {\CYRO }}{2}} +\@writefile{toc}{\contentsline {section}{\numberline {2}\IeC {\CYRN }\IeC {\cyra }\IeC {\cyrch }\IeC {\cyra }\IeC {\cyrl }\IeC {\cyro } \IeC {\cyrr }\IeC {\cyra }\IeC {\cyrb }\IeC {\cyro }\IeC {\cyrt }\IeC {\cyrery }}{2}} +\@writefile{toc}{\contentsline {section}{\numberline {3}\IeC {\CYRR }a\IeC {\cyrb }\IeC {\cyro }\IeC {\cyrt }\IeC {\cyra } \IeC {\cyrs } \IeC {\cyrd }\IeC {\cyro }\IeC {\cyrk }\IeC {\cyru }\IeC {\cyrm }\IeC {\cyre }\IeC {\cyrn }\IeC {\cyrt }\IeC {\cyro }\IeC {\cyrm }}{3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}\IeC {\CYRR }\IeC {\cyre }\IeC {\cyrd }\IeC {\cyra }\IeC {\cyrk }\IeC {\cyrt }\IeC {\cyri }\IeC {\cyrr }\IeC {\cyro }\IeC {\cyrv }\IeC {\cyra }\IeC {\cyrn }\IeC {\cyri }\IeC {\cyre }}{3}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.1}\IeC {\CYRV }\IeC {\cyrs }\IeC {\cyrt }\IeC {\cyra }\IeC {\cyrv }\IeC {\cyrk }\IeC {\cyra } \IeC {\cyrt }\IeC {\cyre }\IeC {\cyrg }\IeC {\cyro }\IeC {\cyrv }}{3}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.2}\IeC {\CYRP }\IeC {\cyro }\IeC {\cyri }\IeC {\cyrs }\IeC {\cyrk } \IeC {\cyri } \IeC {\cyrz }\IeC {\cyra }\IeC {\cyrm }\IeC {\cyre }\IeC {\cyrn }\IeC {\cyra } \IeC {\cyrt }\IeC {\cyre }\IeC {\cyrk }\IeC {\cyrs }\IeC {\cyrt }\IeC {\cyra }}{4}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}\IeC {\CYRP }\IeC {\cyre }\IeC {\cyrr }\IeC {\cyre }\IeC {\cyrk }\IeC {\cyro }\IeC {\cyrd }\IeC {\cyri }\IeC {\cyrr }\IeC {\cyro }\IeC {\cyrv }\IeC {\cyra }\IeC {\cyrn }\IeC {\cyri }\IeC {\cyre }}{4}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}\IeC {\CYRP }\IeC {\cyrr }\IeC {\cyre }\IeC {\cyrd }\IeC {\cyrp }\IeC {\cyrr }\IeC {\cyro }\IeC {\cyrs }\IeC {\cyrm }\IeC {\cyro }\IeC {\cyrt }\IeC {\cyrr } \IeC {\cyrt }\IeC {\cyre }\IeC {\cyrk }\IeC {\cyrs }\IeC {\cyrt }\IeC {\cyra } \IeC {\cyri } \IeC {\cyrf }\IeC {\cyro }\IeC {\cyrr }\IeC {\cyrm }\IeC {\cyru }\IeC {\cyrl }}{4}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}\IeC {\CYRP }\IeC {\cyrr }\IeC {\cyro }\IeC {\cyrv }\IeC {\cyre }\IeC {\cyrr }\IeC {\cyrk }\IeC {\cyra } \IeC {\cyro }\IeC {\cyrr }\IeC {\cyrf }\IeC {\cyro }\IeC {\cyrg }\IeC {\cyrr }\IeC {\cyra }\IeC {\cyrf }\IeC {\cyri }\IeC {\cyri }}{5}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.5}\IeC {\CYRP }\IeC {\cyrr }\IeC {\cyre }\IeC {\cyro }\IeC {\cyrb }\IeC {\cyrr }\IeC {\cyra }\IeC {\cyrz }\IeC {\cyro }\IeC {\cyrv }\IeC {\cyra }\IeC {\cyrn }\IeC {\cyri }\IeC {\cyre } \IeC {\cyrv } \IeC {\cyrr }\IeC {\cyra }\IeC {\cyrz }\IeC {\cyrl }\IeC {\cyri }\IeC {\cyrch }\IeC {\cyrn }\IeC {\cyrery }\IeC {\cyre } \IeC {\cyrf }\IeC {\cyro }\IeC {\cyrr }\IeC {\cyrm }\IeC {\cyra }\IeC {\cyrt }\IeC {\cyrery }}{5}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.6}\IeC {\CYRP }\IeC {\cyrr }\IeC {\cyre }\IeC {\cyrd }\IeC {\cyrv }\IeC {\cyra }\IeC {\cyrr }\IeC {\cyri }\IeC {\cyrt }\IeC {\cyre }\IeC {\cyrl }\IeC {\cyrsftsn }\IeC {\cyrn }\IeC {\cyrery }\IeC {\cyrishrt } \IeC {\cyrp }\IeC {\cyrr }\IeC {\cyro }\IeC {\cyrs }\IeC {\cyrm }\IeC {\cyro }\IeC {\cyrt }\IeC {\cyrr } \IeC {\cyrd }\IeC {\cyro }\IeC {\cyrk }\IeC {\cyru }\IeC {\cyrm }\IeC {\cyre }\IeC {\cyrn }\IeC {\cyrt }\IeC {\cyra }}{6}} +\@writefile{toc}{\contentsline {section}{\numberline {4}\IeC {\CYRN }\IeC {\cyra }\IeC {\cyrs }\IeC {\cyrt }\IeC {\cyrr }\IeC {\cyro }\IeC {\cyrishrt }\IeC {\cyrk }\IeC {\cyra }}{6}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}\IeC {\CYRK }\IeC {\cyro }\IeC {\cyrn }\IeC {\cyrf }\IeC {\cyri }\IeC {\cyrg }\IeC {\cyru }\IeC {\cyrr }\IeC {\cyra }\IeC {\cyrc }\IeC {\cyri }\IeC {\cyro }\IeC {\cyrn }\IeC {\cyrn }\IeC {\cyrery }\IeC {\cyrishrt } \IeC {\cyrf }\IeC {\cyra }\IeC {\cyrishrt }\IeC {\cyrl }}{6}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}\IeC {\CYRP }\IeC {\cyra }\IeC {\cyrn }\IeC {\cyre }\IeC {\cyrl }\IeC {\cyre }\IeC {\cyrishrt } \IeC {\cyri }\IeC {\cyrn }\IeC {\cyrs }\IeC {\cyrt }\IeC {\cyrr }\IeC {\cyru }\IeC {\cyrm }\IeC {\cyre }\IeC {\cyrn }\IeC {\cyrt }\IeC {\cyro }\IeC {\cyrv }}{9}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.1}\IeC {\CYRO }\IeC {\cyrp }\IeC {\cyri }\IeC {\cyrs }\IeC {\cyra }\IeC {\cyrn }\IeC {\cyri }\IeC {\cyre } \IeC {\cyrf }\IeC {\cyru }\IeC {\cyrn }\IeC {\cyrk }\IeC {\cyrc }\IeC {\cyri }\IeC {\cyrishrt }}{9}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.2}\IeC {\CYRN }\IeC {\cyra }\IeC {\cyri }\IeC {\cyrm }\IeC {\cyre }\IeC {\cyrn }\IeC {\cyro }\IeC {\cyrv }\IeC {\cyra }\IeC {\cyrn }\IeC {\cyri }\IeC {\cyre } \IeC {\cyrf }\IeC {\cyra }\IeC {\cyrishrt }\IeC {\cyrl }\IeC {\cyra }}{10}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.3}\IeC {\CYRF }\IeC {\cyro }\IeC {\cyrr }\IeC {\cyrm }\IeC {\cyra }\IeC {\cyrt } \IeC {\cyrf }\IeC {\cyra }\IeC {\cyrishrt }\IeC {\cyrl }\IeC {\cyra }}{10}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.4}\IeC {\CYRP }\IeC {\cyrr }\IeC {\cyri }\IeC {\cyrm }\IeC {\cyre }\IeC {\cyrr }}{10}} +\@writefile{toc}{\contentsline {section}{\numberline {5}"\IeC {\CYRG }\IeC {\cyro }\IeC {\cyrr }\IeC {\cyrya }\IeC {\cyrch }\IeC {\cyri }\IeC {\cyre }" \IeC {\cyrk }\IeC {\cyrl }\IeC {\cyra }\IeC {\cyrv }\IeC {\cyri }\IeC {\cyrsh }\IeC {\cyri }}{11}} diff --git a/doc/tle_usr_manual.dvi b/doc/tle_usr_manual.dvi new file mode 100755 index 0000000..87ac8c5 Binary files /dev/null and b/doc/tle_usr_manual.dvi differ diff --git a/doc/tle_usr_manual.tex b/doc/tle_usr_manual.tex new file mode 100755 index 0000000..e6c4cf2 --- /dev/null +++ b/doc/tle_usr_manual.tex @@ -0,0 +1,532 @@ +%---------------------------------------- +% TkTeXEditor | +%---------------------------------------- + +\documentclass[12pt]{article} +\usepackage[koi8-r]{inputenc} +\usepackage[english,russian]{babel} + +\title{Расширенный \LaTeX{} редактор} +\author{Сергей Калинин, Константин Михайленко} +\date{} + +\begin{document} +\maketitle + +\section{Назначение} +Программа предназначена для создания и редактирования файлов в рамках издательской системы \TeX{} (\LaTeX). +\subsection{Описание функций} +Ниже представлен список основных функций редактора: + +Одновременное редактирование нескольких файлов. + +Создание нового документа из шаблона. + +Отображение структуры документа ввиде дерева. + +Отображение ввиде дерева включенных внешних документов. + +Вывод списка меток и ссылок. + +Подсветка синтаксиса. + +Поиск и замена текста. + +Автодобивка команд. + +Преобразование .tex файла в dvi, ps, pdf, html (при помощи внешних программ) и просмотр полученного +документа. + +Отображение процесса компиляции и преобразования документа и вывод ошибок. + +Печать исходного кода. + +Настраиваемые панели инструментов. + +Вставка настраиваемых готовых конструкций кода. + +Интерактивная проверка орфографии (при помощи ispell). + +Автоматический перенос строк при достижении определенной в конфигурации длинны. + +Авто-сохранение документа через определённый промежуток времени. + +Сохранение позиции редактирования в открытых файлах при выходе из программы и возобновление +редактирования этих файлов при следующем запуске программы. + +Возможность подключения дополнительных внешних программ. + +Настраиваемые цветовые схемы и графические темы панелей инструментов. + +Подключение внешнего редактора. + +Простой механизм локализации интерфейса программы. В данный момент редактор локализован на русском +и английском языках. + +Предпросмотр математических формул и любых частей текста а также сохранение их как изображения. + +Поддерживается множество кодировок и перекодировка из одной в другую. + +Автоматическое подключение нужной кодировки при использовании декларации пакета \emph{inputenc}. + +\subsection{Необходимое ПО} +Программа написана на интерпретируемом языке Tcl/Tk поэтому Вам потребуется установить +интерпретатор языка tcl. Его Вы можете найти у себя в дистрибутиве (для unix-подобных систем) или +взять в сети Internet (для систем Windows). Например http://www.activestate.com +Также необходимо установить набор графических компонент BWidget (он входит в состав activeTCL) +Для полноценной работы с \LaTeX-документами необходимо установить дистрибутив издательской системы +\LaTeX{} (например TeTeX или MkiTeX). Для просмотра и преобразования документов желательно установить +пакеты tetex-dvips, ghostscript, ImageMagic, latex2html, xdvi, acroread (xpdf) - все , или почти +все эти программы присутствуют в последних дистрибутивах линукс (например ALT Linux Master). +О настройке данных программ будет рассказано ниже. + +\section{Начало работы} +Программа запускается командой \emph{/usr/bin/tle} - если она установлена из rpm-пакета, или +запускается файл \emph{tle.tcl} из дистрибутивного комплекта. +После запуска в домашнем каталоге создается рабочая папка \emph{.tle} содержащая конфигурационные +файлы. + +Далее можете приступать к редактированию файлов. Можно открыть уже существующие документы +\textit{Файл - Открыть} либо создавать новые \textit{Файл - Новый}. Программа, также, +поддерживает создание документов из заранее заданных шаблонов \textit{Файл - Новый - Создать из +шаблона}, которые, Вы можете создавать самостоятельно, в появившимся диалоге выбирете нужный шаблон +и введите требуемое имя и нажмите кнопку \textit{Создать} + +Tk \LaTeX{} Editor позволяет редактировать множество файлов, переключаясь между закладками +редактора. + +Сохранение документа производиться нажатием кнопки на панели инструментов, либо в меню \emph{Файл - +Сохранить} либо нажатием сочетания клавиш \emph{Ctrl - S}, либо автоматически, согласно установкам +в конфигурационном файле. + + +\section{Рaбота с документом} + +\subsection{Редактирование} + +При редактировании текста доступны режимы ввода и замены символов, переключаемые клавишей +\emph{Insert}. При вводе текста есть возможность ограничить длину строки текста определённым +количеством символов, которое задаётся в конфигурационном файле, так же как и включение и +выключение режима автопереноса. Т.е. при достижении длины строки текста в заданное количество +символов, редактор автоматически начнет ввод со следующей строки. +Также есть возможность перемещения курсора на строку с заданным номером - \emph{Ctrl - G}. + +\subsubsection{Вставка тегов} +Для облегчения и ускорения процесса вёрстки документа редактор TLE позволяет вставлять готовые +конструкции, используя настраиваемые панели инструментов. +Например конструкции вида \verb"\textsl{Редактирование}" можно вставлять, предварительно выделив +требуемый текст, нажав соответствующую кнопку панели инструментов. Также при добавлении элементов +списка \verb"\item" есть возможность автоматической вставки тега \(следующего элемента списка\) в +начале следующей строки при нажатии клавиши \emph{Enter} в конце ввода строки текста. + +Также, есть возможность добивки команд по начальным буквам - для этого, необходимо, после набора +первых буква команды, нажать \emph{ALT-C} и, из появившегося списка, выбрать требуемое. +Списки команд соответствуют пакетам системы \LaTeX. И могут быть дополнены пользователем. + +В панели инструментов имеются диалоги для вставки изображения и таблицы, и многих других. В +отдельную панель выделены математические символы и режимы. + +\subsubsection{Поиск и замена текста} + +Редактор TLE позволяет производить поиск и поиск с заменой текста в открытом документе. Данные +функции доступны через меню \emph{Редактирование} или при нажатии клавиш \emph{Ctrl-F} и +\emph{Ctrl-R} соответственно. Для простого поиска ведется история. + +\subsection{Перекодирование} +TLE поддерживает работу с множеством различных кодировок. При открытии \LaTeX-документа происходит +считывание данных о кодировке документа, если используется пакет \emph{inputenc}. Если документ не +содержит данных о кодовой странице то он будет отображен с использованием системной кодировки. В +случае не совпадения кодовой страницы документа и Вашей системы документ будет отображён +некорректно. Но это можно исправить, указав кодировку документа через меню \emph{Вид - +Кодировка}. + +Если Вы хотите сохранить документ в кодировке отличной от исходной то необходимо выбрать нужную +кодовую страницу через меню \emph{Документ - Кодировка} и файл будет перекодирован при сохранении. + +В случае если Вы используете пакет \emph{inputenc} но не правильно указали кодировку документа в +описании пакета либо текущая кодировка документа не соответствует требуемой, при сохранении будет +выдано предупреждение о не соответствии кодовых страниц. + +\subsection{Предпросмотр текста и формул} +При наличии в системе дополнительных программ, становится доступна функция предварительного +просмотра математических формул и произвольных частей документа. +Для осуществления данной операции необходимо в редактируемом документе выделить текст формулы, либо +её часть, и нажать сочетание клавиш \emph{Alt-V}. Также можно выбрать пункт \emph{Показать формулу} +в меню \emph{Редактирование} или при помощи всплывающего меню. + +Для произвольного фрагмента текста операция идентична предыдущей с той лишь разницей, что необходимо +нажать \emph{Alt-B} или меню \emph{Редактирование - Показать Текст} + +\subsection{Проверка орфографии} +Для проверки орфографии используется программа ispell. +Вам необходимо выбрать в меню \emph{Документ - Орфография} или нажать кнопку в панели инструментов. +В появившимся диалоге надо выбрать требуемый словарь и режим проверки - весь документ или с +текущей позиции. При несовпадении слов в тексте и в словаре Вам будет предложен список возможных +вариантов из которых можно выбрать нужный и заменить неправильное слово. + +\subsection{Преобразование в различные форматы} +Для преобразования файла в различные форматы используются внешние программы. +Команды для их запуска описаны в конфигурационном файле tle.conf: + +\begin{verbatim} +set convert_cmd(dvi) "latex" +set convert_cmd(ps) "dvips -Pwww -j0 -ta4 -o %fileName.ps %fileName.dvi" +set convert_cmd(pdf) "ps2pdf %name.ps" +set convert_cmd(html) "latex2html -no_navigation -split 0" +\end{verbatim} + +Если в команде встречается макрос \emph{\%fileName} то программа подставит вместо него имя текущего +файла без расширения. + +Вызов команд производиться как через меню \textit{Документ} - \textit{Преобразовать} так и через +панель инструментов. +Разница заключается лишь в том, что при вызове команды через меню будет вызван диалог, в котором +можно изменить опции командной строки, заданной по умолчанию. +А при вызове команды через панель инструментов будет использована последняя заданная команда для +операции преобразования. + +\subsection{Предварительный просмотр документа} +После преобразования документа станет доступна возможность просмотра полученного результата. +Команды для просмотра заданы в конфигурационном файле tle.conf, аналогично и командам конвертации. + +\begin{verbatim} +## PREVIEW ## +set preview_cmd(dvi) "xdvi" +set preview_cmd(ps) "gv" +set preview_cmd(pdf) "acroread" +set preview_cmd(html) "mozilla" +\end{verbatim} + +Вызвать команды просмотра можно как через меню \textit{Документ} - \textit{Предварительный просмотр} +так и при помощи кнопок на панели инструментов. + +\section{Настройка} + +\subsection{Конфигурационный файл} + +\textbf{Локализация} + +\emph{set locale "en"} - установка языка интерфейса программы + +\textbf{Временные файлы} + +\emph{set backup(create) "Yes"} - создание резервных копий файлов + +\emph{set backup(del) "No"} - удалять резервные копии + +\emph{set backup(autosave) "Yes"} - автосохранение документа + +\textbf{Встроенная Помощь} + +\emph{set help(encode) "koi8-r"} - язык файлов помощи + +\textbf{Параметры для ispell} + +\emph{set ispell\_lib /usr/lib/ispell} + +\emph{set ispell\_startindex "1.0"} + +\textbf{Рабочие каталоги} + +каталог для временных файлов + +\begin{verbatim} set dir(tmp) [file join $env(HOME) tmp] +\end{verbatim} + +каталог для документов по умолчанию + +\begin{verbatim} set dir(doc) [file join $env(HOME) doc my] +\end{verbatim} + +\textbf{Таймеры в миллисекундах} + +\emph{set timers(refresh) 60000} - время автообновления структуры документа + +\emph{set timers(autosave) 300000} - время автосохранения документа + +\textbf{Настройки Интерфейс} + +\emph{set gui(geometry) "750x550+0+0"} - установка геометрии основного окна + +\emph{set gui(tabsLabel) "top"} - расположение заголовков закладок "top" или "bottom" + +\emph{set theme "default" }- тема для панелей инструментов "default" или "stroke" + +\textbf{Установка шрифтов} + +\emph{set font(normal) "Arial 10 normal roman"} - нормальный шрифт интерфейса + +\emph{set font(bold) "Arial 10 bold roman"} - жирный шрифт интерфейса + +\textbf{Установка цветовых схем} + +\emph{set color(selectbg) "\#55c4d1"} - цвет выделенной области + +\emph{set color(bg) "\#bbbbbb"} - фон элементов интерфейса + +\emph{set color(editBg) "\#cccccc"} - фон элементов редактирования + + +\emph{set color(editFg) "\#000000"} - цвет шрифта элементов редактирования + +\emph{set color(editTitleNormal) "\#000000"} - цвет заголовка закладки редактора нормальный + +\emph{set color(editTitleModify) "\#0021ff"} - цвет заголовка закладкиредактора изменённый + +\textbf{Подсветка текста} + +\emph{set color(procName) "\#0021ff"} - процедуры + +\emph{set color(operator) "\#0000a8"} - операторы + +\emph{set color(keyWord) "\#0000a8"} - ключевые слова + +\emph{set color(param) "\#6a0082" }- параметры + +\emph{set color(subParam) "\#008282"} - подпараметры + +\emph{set color(comments) "\#9b9b9b"} - коментарий + +\emph{set color(var) "\#e50000"} - переменная + + +\emph{set color(string) "\#168400"} - строка заключённая в кавычки + +\emph{set color(brace) "\#d33434"} - скобка + +\emph{set color(braceBG) "\#000000"} - фон подсвеченной скобки + +\emph{set color(braceFG) "\#00feff"} - цвет подсвеченной скобки + +\emph{set color(percent) "\#a500c6"} - знак процента + +\emph{set color(bindKey) "\#a500c6"} - ключи + +\textbf{Рельеф кнопок и элементов интерфейса} + +доступны flat, groove, raised, ridge, solid, sunken or link + +\emph{set relief(btn) link} - кнопки + +доступны flat, groove, raised, ridge, solid, or sunken + +\emph{set relief(menu) groove }- меню + +\textbf{Включение панелей инструментов} + +При добавлении своей панели инструментов необходимо прописать её в конфигурационном файле в формате +\textit{tool(toolbar\_file\_name) flag} +где flag = 0 - скрыть, 1- показать + +\emph{set tool(main) 1} - основная панель + +\emph{set tool(insert) 1} - панель для вставки элементов + +\emph{set tool(math) 0} - математическая панель + +\emph{set tool(format) 1} - панель форматирования + +\textbf{Установки редактора} + +\emph{set font(editNormal) "fixed"} - нормальный шрифт + +\emph{set font(editBold) "fixed"} - полужирный шрифт + +\emph{set editor(extern) "No"} - использовать внешний редактор + +\emph{set editor(prog) "/usr/bin/emacs"} - внешний редактор + +\emph{set editor(wrap) "word"} - автоперенос слов при отображении текста, доступно none, word or char + +\emph{set editor(strWrap) "Yes"} - автоперенос текста при редактировании + +\emph{set editor(strLen) 100} - количество символов в строке + +\textbf{Опции преобразования документа и просмотра} + +\emph{\%fileName} - имя текущего файла + +\emph{\%dirName} - имя текущего каталога + +\textbf{Преобразование latex в dvi} + +\emph{set convert\_cmd(dvi) "latex"} + +\textbf{Преобразование dvi в ps (PostScript)} + +\emph{set convert\_cmd(ps) "dvips -Pwww -j0 -ta4 -o \%dirName/\%fileName.ps +\%dirName/\%fileName.dvi"} + +\textbf{Преобразование ps в pdf} + +\emph{set convert\_cmd(pdf) "ps2pdf \%dirName/\%fileName.ps"} + +\textbf{Преобразование latex в html} + +\emph{set convert\_cmd(html) "latex2html -no\_navigation -split 0"} + +\textbf{Преобразование ps в графическое изображение} + +\emph{set convert\_cmd(img) "convert"} + +\textbf{Просмотр результатов преобразования} + +\emph{set preview\_cmd(dvi) "xdvi"} + +\emph{set preview\_cmd(ps) "gv"} + +\emph{set preview\_cmd(pdf) "acroread"} + +\emph{set preview\_cmd(html) "mozilla"} + +\textbf{Параметры отображения формул и частей текста} + +\emph{set render(res) "150x150"} - разрешение картинки + +\emph{set render(format) "gif"} - формат файла изображения + +\emph{set render(bg) "white"} - цвет фона + +\emph{set render(fg) "black"} - цвет шрифта + +\emph{set render(trans) 0} - включение прозрачности + +\emph{set render(aa) 1} - включение антиалиасинга + + +\subsection{Панелей инструментов} +Вы можете самостоятельно настраивать панели инструментов, т.е. добавлять кнопки и меню. +Описание панелей инструментов (тул-баров) храниться в каталоге \texttt{share/gui/toolbar/} + +\subsubsection{Описание функций} +Для команд определяемых пользователем есть несколько функций для добавления тэгов в текст. + +\begin{description} +\item[\textit{\textbf{AddTextFont}}]~--- добавляет тэги вида <<\verb"\tiny{}">>. +Формат вызова функции +\begin{verbatim} + AddTextFont Имя_Тэга +\end{verbatim} +\item[\textit{\textbf{AddTextDouble}}]~--- добавляет тэги вида <<\verb"\begin{center}" \ldots \verb"\end{center}">>. +\begin{verbatim} + AddTextDouble Начальный_Тег Наименование конечный_Тег +\end{verbatim} +\item[\textit{\textbf{AddTextCommand}}]~--- для добавления простых тэгов вида <<\verb"\beta">>. +\begin{verbatim} + AddTextCommand Имя_Тэга +\end{verbatim} +\end{description} +В командах начальный слэш следует опускать, он добавляется автоматически + +\subsubsection{Наименование файла} +Для создания новой панели инструментов создайте в каталоге \texttt{toolbar} файл с любым именем без +расширения кроме main (это зарезервированное слово под основную панель) + +\subsubsection{Формат файла} +Строки начинающиеся на <<\verb"#">> являются комментарием и игнорируются так же как и пустые строки + +Для создания меню: +\begin{verbatim} + ключевое_слово иконка "Текст подсказки" +\end{verbatim} + +Для создания команд в меню: +\begin{verbatim} + ключевое_слово "команда" "Текст подсказки" иконка +\end{verbatim} + +Параметр \textit{иконка} не является обязательным если он не указан то в меню будет вставлен текст +если указан - то изображение + +Для создания кнопки: +\begin{verbatim} + ключевое_слово "команда" Иконка "Текст подсказки" +\end{verbatim} + +\subsubsection{Пример} +\begin{verbatim} +menu font_width.gif "Font type" { + cmd "AddTextFont texttt" "Typewriter Typeset" + imagecmd "AddTextFont textit" "Typewriter Typeset" file.gif + cmd separator +} +button "AddTextFont emph" font_emph.gif "Emphasise" +\end{verbatim} + +Здесь +\texttt{menu}, \texttt{button}, \texttt{cmd}, \texttt{imagecmd}~--- ключевые слова для создания +соотвественно меню, кнопки меню и кнопки с изображением; +\texttt{cmd~separator}~--- добавление в меню разделителя + + +\section{"Горячие" клавиши} + +\emph{Ctrl + A} - Сохранить файл под другим именем. + +\emph{Ctrl + C} - Команда копирует выделенный в окне редактора текст в буфер обмена. + +\emph{Ctrl + F} - Поиск заданного выражения в тексте. + +\emph{Ctrl + G} - Перейти к строке с заданным номером. + +\emph{Ctrl + N} - Создать новый файл. Команда вызывает диалог создания файла. + +\emph{Ctrl + O} - Открыть файл. + +\emph{Ctrl + P} - Печать файла (кода). + +\emph{Ctrl + Q} - Выход. + +\emph{Ctrl + R} - Поиск и замена заданного выражения в тексте. + +\emph{Ctrl + S} - Сохранить файл. Сохраняется файл, который открыт в текущем окне редактора. + +\emph{Ctrl + T} - Поменять местами два символа, стоящих до и после курсора. + +\emph{Ctrl + U} - Перемещает курсор на соответствующую открытую или закрытую скобку. + +\emph{Ctrl + V} - Вставка фрагмента текста из буфера обмена, скопированного предыдущей командой. + +\emph{Ctrl + W} - Закрыть файл. Команда закрывает файл открытый в текущем окне редактора. + +\emph{Ctrl + X} - Вырезать выделенный фрагмент текста в буфер обмена. + +\emph{Ctrl + Z} - Отменить операцию + +\emph{Ctrl + PageUp} - Переключение закладок (окон редактора) назад (к предыдущему открытому файлу). + +\emph{Ctrl + PageDown} - Переключение закладок (окон редактора) вперед (к следующему открытому файлу). + +\emph{F1} - Вызов системы помощи по программе и по языку. Если в тексте выделить команду и нажать +данную клавишу то будет выведена на экран подсказка по этой команде. + +\emph{F2} - Разделение окна редактора + +\emph{F3} - Повторный поиск, команда работает с последним введенным выражением в диалоговом окне +поиска + +\emph{F5} - Компиляция файла в DVI формат + +\emph{F6} - Конвертирование DVI файла в PS. + +\emph{F7} - Конвертирование DVI файла в PDF. + +\emph{Alt + T} - Предпросмотр выделенного участка текста + +\emph{Alt + C} - Автодобивка команд. + +\emph{Alt + F} - Предпросмотр математической формулы + +\end{document} + + + + + + +cnt ghbdt + + + + + diff --git a/doc/tle_usr_manual/index.html b/doc/tle_usr_manual/index.html new file mode 100755 index 0000000..fec2bfc --- /dev/null +++ b/doc/tle_usr_manual/index.html @@ -0,0 +1,432 @@ + + + + + +Расширенный LATEXредактор + + + + + + + + + + + + + + +

Расширенный LATEXредактор

+

Сергей Калинин, Константин Михайленко

+ +

+ +

+Назначение +

+Программа предназначена для создания и редактирования файлов в рамках издательской системы TEX (LATEX). + +

+Описание функций +

+Одновременное редактирование нескольких файлов. +Создание нового документа из шаблона. +Отображение структуры документа ввиде дерева. +Отображение ввиде дерева включенных внешних документов. +Вывод списка меток и ссылок. +Подсветка синтаксиса. +Поиск и замена текста. +Автодобивка команд. +Преобразование .tex файла в dvi, ps, pdf, html (при помощи внешних программ) и просмотр полученного +документа. +Отображение процесса компиляции и преобразования документа и вывод ошибок. +Печать исходного кода. +Настраиваемые панели инструментов. +Вставка настраиваемых готовых конструкций кода. +Интерактивная проверка орфографии (при помощи ispell). +Автоматический перенос строк при достижении определенной в конфигурации длинны. +Автосохранение документа через определённый промежуток времени. +Сохранение позиции редактирования в открытых файлах при выходе из программы и возобновление +редактирования этих файлов при следующем запуске программы. +Возможность подключения дополнительных внешних программ. +Настраиваемые цветовые схемы и графические темы панелей инструментов. +Подключение внешнего редактора. +Простой механизм локализации интерфейса программы. В данный момент редактор локализован на русском +и английском языках. +Предпросмотр математических формул и любых частей текста а также сохранение их как изображения. +Поддерживается множество кодировок и перекодировка из одной в другую. +Автоматическое подключение нужной кодировки при использовании декларации пакета inputenc. + +

+ +

+Необходимое ПО +

+Программа написана на интерпретируемом языке Tcl/Tk поэтому Вам потребуется установить +интерпретатор языка tcl. Его Вы можете найти у себя в дистрибутиве (для unix-подобных систем) или +взять в сети Internet (для систем Windows). Например http://www.activestate.com +Также необходимо установить набор графических компонент BWidget (он входит в состав activeTCL) +Для полноценныой работы с LaTeX-документами необходимо установить дистрибутив издательской системы +LaTeX (например TeTeX или MkiTeX). Для просмотра и преобразования документов желательно установить +пакеты tetex-dvips, ghostscript, ImageMagic, latex2html, xdvi, acroread (xpdf) - все , или почти все эти программы +присутсвуют в последних дистрибутивах линукс (например ALT Linux Master). +О настройке данных программ будет рассказано ниже. + +

+ +

+Начало работы +

+Программа запускается командой /usr/bin/tle - если она установлена из rpm-пакета, или +запускается файл tle.tcl из дистрибутивного комплекта. +После запуска в домашнем каталоге создается рабочая папка .tle содержащая конфигурационные файлы. + +

+Далее можете приступать к редактированию файлов. Можно открыть уже существующие документы +Файл - Открыть либо создавать новые Файл - Новый. Программа, также, +поддерживает создание документов из заранее заданных шаблонов Файл - Новый - Создать из +шаблона, которые, Вы можете создавать самостоятельно, в появившимся диалоге выбирете нужный шаблон +и введите требуемое имя и нажмите кнопку Создать + +

+Tk LaTeX Editor позволяет редактировать множество файлов, переключаясь между закладками +редактора. + +

+Сохранение документа производиться нажатием конпки на панели инструментов, либо в меню Файл - +Сохранить либо нажатием сочитания клавиш Ctrl - S, либо автоматически, согласно установкам +в конфигурационном файле. + +

+ +

+Настройка Панелей инструментов +

+Вы можете самостоятельно настраивать панели инструментов, т.е. добавлять кнопки и меню. +Описание панелей инструментов (тул-баров) храниться в каталоге share/gui/toolbar/ + +

+ +

+Описание функций +

+Для команд определяемых пользователем есть несколько функций для добавления тэгов в текст. + +

+

+
AddTextFont
+
 -- добавляет тэги вида «\tiny{}». +Формат вызова функции +
+     AddTextFont Имя_Тэга
+
+
+
AddTextDouble
+
 -- добавляет тэги вида «\begin{center}" \ldots \verb"\end{center}». +
+     AddTextDouble Начальный_Тег Наименование конечный_Тег
+
+
+
AddTextCommand
+
 -- для добавления простых тэгов вида «\beta». +
+     AddTextCommand Имя_Тэга
+
+
+
+В командах начальный слэш следует опускать, он добавляется автоматически + +

+ +

+Наименование файла +

+Для создания новой панели инструментов создайте в каталоге toolbar файл с любым именем без +расширения кроме main (это зарезервированное слово под основную панель) + +

+ +

+Формат файла +

+Строки начинающиеся на «#» являются комментарием и игнорируются так же как и пустые строки + +

+Для создания меню: +

+     ключевое_слово иконка "Текст подсказки"
+
+ +

+Для создания команд в меню: +

+     ключевое_слово "команда" "Текст подсказки" иконка
+
+ +

+Параметр иконка не является обязательным если он не указан то в меню будет вставлен текст +если указан - то изображение + +

+Для создания кнопки: +

+     ключевое_слово "команда" Иконка "Текст подсказки"
+
+ +

+ +

+Пример +

+
+menu font_width.gif "Font type" {
+    cmd "AddTextFont texttt" "Typewriter Typeset"
+    imagecmd "AddTextFont textit" "Typewriter Typeset" file.gif
+    cmd separator
+}
+button "AddTextFont emph" font_emph.gif "Emphasise"
+
+ +

+Здесь +menu, button, cmd, imagecmd -- ключевые слова для создания +соотвественно меню, кнопки меню и кнопки с изображением; +cmd separator -- добавление в меню разделителя + +

+ +

+Рaбота с документом +

+ +

+ +

+Редактирование +

+ +

+ +

+Перекодирование +

+TLE поддерживает работу с множеством различных кодировок. При открытии latex-документа происходит +считывание данных о кодировке документа, если используется пакет inputenc. Если документ не +содержит данных о кодовой странице то он будет отображён с использованием системной кодировки. В +случае не совпадения кодовой страницы документа и Вашей системы документ будет отображён +некорректно. Но это можно исправить, указав кодировку документа через меню Вид - +Кодировка. + +

+Если Вы хотите сохранить документ в кодировке отличной от исходной то необходимо выбрать нужную +кодовую страницу через меню Документ - Кодировка и файл будет перекодирован при сохранении. + +

+В случае если Вы используете пакет inputenc но не правильно указали кодировку документа в +описании пакета либо текущая кодировка документа не соответсвет требуемой, при сохранении будет +выдано предупреждение о не соответствии кодовых страниц. + +

+ +

+Предпросмотр текста и формул +

+При наличии в системе дополнительных программ, становится доступна функция предварительного +просмотра математических формул и произвольных частей документа. +Для осуществления данной операции необходимо в редактируемом документе выделить текст формулы, либо +её часть, и нажать сочитание клавиш Alt-V. Также можно выбрать пункт Показать формулу +в меню Редактирование или при помощи всплывабщего меню. + +

+Для произволного фрагмента текста операция идентична предыдущей с той лишь разницей, что необходимо +нажать Alt-B или меню Редактирование - Показать Текст + +

+ +

+Проверка орфографии +

+Для проверки орфографии используется программа ispell. +Вам необходимо выбрать в меню Документ - Орфография или нажать кнопку в панели инструментов. +В появившимся диалоге надо выбрать требуемый словарь и режим проверки - весь документ или с +текущей позиции. При несовпадении слов в тексте и в словаре Вам будет предложен список возможных +вариантов из которых можно выбрать нужный и заменить неправильное слово. + +

+ +

+Преобразование в различные форматы +

+Для преобразования файла в различные форматы используются внешние программы. +Команды для их запуска описаны в конфигурационном файле tle.conf: + +

+

+set convert_cmd(dvi) "latex"
+set convert_cmd(ps) "dvips -Pwww -j0 -ta4 -o %fileName.ps %fileName.dvi"
+set convert_cmd(pdf) "ps2pdf %name.ps"
+set convert_cmd(html) "latex2html -no_navigation -split 0"
+
+ +

+Если в команде встречается макрос %fileName то программа подставит вместо него имя текущего +файла без расширения. + +

+Вызов команд производиться как через меню Документ - Преобразовать так и через +панель инструментов. +Разница заключается лишь в том, что при вызове команды через меню будет вызван диалог, в котором +можно изменить опции командной строки, заданной по умолчанию. +А при вызове команды через панель инструментов будет использована последняя заданная команда для +операции преобразования. + +

+ +

+Предварительный просмотр документа +

+После преобразования документа станет доступна возможность просмотра полученного результата. +Команды для просмотра заданы в конфигурационном файле tle.conf, аналогично и командам конвертации. + +

+

+## PREVIEW ##
+set preview_cmd(dvi) "xdvi"
+set preview_cmd(ps) "gv"
+set preview_cmd(pdf) "acroread"
+set preview_cmd(html) "mozilla"
+
+ +

+Вызвать команды просмотра можно как через меню Документ - Предварительный просмотр +так и при помощи кнопок на панели инструментов. + +

+ +

+"Горячие" клавиши +

+ +

+Ctrl + A - Сохранить файл под другим именем. + +

+Ctrl + C - Команда копирует выделенный в окне редактора текст в буфер обмена. + +

+Ctrl + F - Поиск заданного выражения в тексте. + +

+Ctrl + G - Перейти к строке с заданным номером. + +

+Ctrl + J - Вывести список функций с именами полностью или частично совпадающими с введенным. + +

+Ctrl + L - Вывести список слов, полностью или частично совпадающих с введенным. + +

+Ctrl + M - Переключение между открытыми файлами (между окнами редактора). + +

+Ctrl + N - Создать новый файл. Команда вызывает диалог создания файла. + +

+Ctrl + O - Открыть файл. + +

+Ctrl + P - Печать файла (кода). + +

+Ctrl + Q - Выход. + +

+Ctrl + R - Поиск и замена заданного выражения в тексте. + +

+Ctrl + S - Сохранить файл. Сохраняется файл, который открыт в текущем окне редактора. + +

+Ctrl + T - Поменять местами два символа, стоящих до и после курсора. + +

+Ctrl + U - Перемещает курсор на соответствующую открытую или закрытую скобку. + +

+Ctrl + V - Вставка фрагмента текста из буфера обмена, скопированного предыдущей командой. + +

+Ctrl + W - Закрыть файл. Команда закрывает файл открытый в текущем окне редактора. + +

+Ctrl + X - Вырезать выделенный фрагмент текста в буфер обмена. + +

+Ctrl + Z - Отменить операцию + +

+F1 - Вызов системы помощи по программе и по языку. Если в тексте выделить команду и нажать +данную клавишу то будет выведена на экран подсказка по этой команде. + +

+F2 - Разделение окна редактора + +

+F3 - Повторный поиск, команда работает с последним введенным выражением в диалоговом окне +поиска + +

+F5 - Компиляция файла в DVI формат + +

+F6 - Конвертирование DVI файла в PS. + +

+F7 - Конвертирование DVI файла в PDF. + +

+F9 - Выполнение ("компиляция") текущего (активного) проекта. + +

+Alt + B - Предпросмотр выделенного участка текста + +

+Alt + C - Автодобивка команд. + +

+Alt + V - Предпросмотр математической формулы + +

+ +

+Об этом документе ... +

+ Расширенный LATEXредактор

+This document was generated using the +LaTeX2HTML translator Version 2K.1beta (1.57) +

+Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
+Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

+The command line arguments were:
+ latex2html -no_navigation -split 0 /home/banzaj/projects/tcl/tle/doc/tle_usr_manual.tex +

+The translation was initiated by on 2003-01-08 +


+
+ +2003-01-08 +
+ + diff --git a/doc/tle_usr_manual/labels.pl b/doc/tle_usr_manual/labels.pl new file mode 100755 index 0000000..936fad6 --- /dev/null +++ b/doc/tle_usr_manual/labels.pl @@ -0,0 +1,13 @@ +# LaTeX2HTML 2K.1beta (1.57) +# Associate labels original text with physical files. + + +1; + + +# LaTeX2HTML 2K.1beta (1.57) +# labels from external_latex_labels array. + + +1; + diff --git a/doc/tle_usr_manual/tle_usr_manual.css b/doc/tle_usr_manual/tle_usr_manual.css new file mode 100755 index 0000000..d1824af --- /dev/null +++ b/doc/tle_usr_manual/tle_usr_manual.css @@ -0,0 +1,30 @@ +/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ +.MATH { font-family: "Century Schoolbook", serif; } +.MATH I { font-family: "Century Schoolbook", serif; font-style: italic } +.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } + +/* implement both fixed-size and relative sizes */ +SMALL.XTINY { font-size : xx-small } +SMALL.TINY { font-size : x-small } +SMALL.SCRIPTSIZE { font-size : smaller } +SMALL.FOOTNOTESIZE { font-size : small } +SMALL.SMALL { } +BIG.LARGE { } +BIG.XLARGE { font-size : large } +BIG.XXLARGE { font-size : x-large } +BIG.HUGE { font-size : larger } +BIG.XHUGE { font-size : xx-large } + +/* heading styles */ +H1 { } +H2 { } +H3 { } +H4 { } +H5 { } + +/* mathematics styles */ +DIV.displaymath { } /* math displays */ +TD.eqno { } /* equation-number cells */ + + +/* document-specific styles come next */ diff --git a/doc/tle_usr_manual/tle_usr_manual.html b/doc/tle_usr_manual/tle_usr_manual.html new file mode 100755 index 0000000..fec2bfc --- /dev/null +++ b/doc/tle_usr_manual/tle_usr_manual.html @@ -0,0 +1,432 @@ + + + + + +Расширенный LATEXредактор + + + + + + + + + + + + + + +

Расширенный LATEXредактор

+

Сергей Калинин, Константин Михайленко

+ +

+ +

+Назначение +

+Программа предназначена для создания и редактирования файлов в рамках издательской системы TEX (LATEX). + +

+Описание функций +

+Одновременное редактирование нескольких файлов. +Создание нового документа из шаблона. +Отображение структуры документа ввиде дерева. +Отображение ввиде дерева включенных внешних документов. +Вывод списка меток и ссылок. +Подсветка синтаксиса. +Поиск и замена текста. +Автодобивка команд. +Преобразование .tex файла в dvi, ps, pdf, html (при помощи внешних программ) и просмотр полученного +документа. +Отображение процесса компиляции и преобразования документа и вывод ошибок. +Печать исходного кода. +Настраиваемые панели инструментов. +Вставка настраиваемых готовых конструкций кода. +Интерактивная проверка орфографии (при помощи ispell). +Автоматический перенос строк при достижении определенной в конфигурации длинны. +Автосохранение документа через определённый промежуток времени. +Сохранение позиции редактирования в открытых файлах при выходе из программы и возобновление +редактирования этих файлов при следующем запуске программы. +Возможность подключения дополнительных внешних программ. +Настраиваемые цветовые схемы и графические темы панелей инструментов. +Подключение внешнего редактора. +Простой механизм локализации интерфейса программы. В данный момент редактор локализован на русском +и английском языках. +Предпросмотр математических формул и любых частей текста а также сохранение их как изображения. +Поддерживается множество кодировок и перекодировка из одной в другую. +Автоматическое подключение нужной кодировки при использовании декларации пакета inputenc. + +

+ +

+Необходимое ПО +

+Программа написана на интерпретируемом языке Tcl/Tk поэтому Вам потребуется установить +интерпретатор языка tcl. Его Вы можете найти у себя в дистрибутиве (для unix-подобных систем) или +взять в сети Internet (для систем Windows). Например http://www.activestate.com +Также необходимо установить набор графических компонент BWidget (он входит в состав activeTCL) +Для полноценныой работы с LaTeX-документами необходимо установить дистрибутив издательской системы +LaTeX (например TeTeX или MkiTeX). Для просмотра и преобразования документов желательно установить +пакеты tetex-dvips, ghostscript, ImageMagic, latex2html, xdvi, acroread (xpdf) - все , или почти все эти программы +присутсвуют в последних дистрибутивах линукс (например ALT Linux Master). +О настройке данных программ будет рассказано ниже. + +

+ +

+Начало работы +

+Программа запускается командой /usr/bin/tle - если она установлена из rpm-пакета, или +запускается файл tle.tcl из дистрибутивного комплекта. +После запуска в домашнем каталоге создается рабочая папка .tle содержащая конфигурационные файлы. + +

+Далее можете приступать к редактированию файлов. Можно открыть уже существующие документы +Файл - Открыть либо создавать новые Файл - Новый. Программа, также, +поддерживает создание документов из заранее заданных шаблонов Файл - Новый - Создать из +шаблона, которые, Вы можете создавать самостоятельно, в появившимся диалоге выбирете нужный шаблон +и введите требуемое имя и нажмите кнопку Создать + +

+Tk LaTeX Editor позволяет редактировать множество файлов, переключаясь между закладками +редактора. + +

+Сохранение документа производиться нажатием конпки на панели инструментов, либо в меню Файл - +Сохранить либо нажатием сочитания клавиш Ctrl - S, либо автоматически, согласно установкам +в конфигурационном файле. + +

+ +

+Настройка Панелей инструментов +

+Вы можете самостоятельно настраивать панели инструментов, т.е. добавлять кнопки и меню. +Описание панелей инструментов (тул-баров) храниться в каталоге share/gui/toolbar/ + +

+ +

+Описание функций +

+Для команд определяемых пользователем есть несколько функций для добавления тэгов в текст. + +

+

+
AddTextFont
+
 -- добавляет тэги вида «\tiny{}». +Формат вызова функции +
+     AddTextFont Имя_Тэга
+
+
+
AddTextDouble
+
 -- добавляет тэги вида «\begin{center}" \ldots \verb"\end{center}». +
+     AddTextDouble Начальный_Тег Наименование конечный_Тег
+
+
+
AddTextCommand
+
 -- для добавления простых тэгов вида «\beta». +
+     AddTextCommand Имя_Тэга
+
+
+
+В командах начальный слэш следует опускать, он добавляется автоматически + +

+ +

+Наименование файла +

+Для создания новой панели инструментов создайте в каталоге toolbar файл с любым именем без +расширения кроме main (это зарезервированное слово под основную панель) + +

+ +

+Формат файла +

+Строки начинающиеся на «#» являются комментарием и игнорируются так же как и пустые строки + +

+Для создания меню: +

+     ключевое_слово иконка "Текст подсказки"
+
+ +

+Для создания команд в меню: +

+     ключевое_слово "команда" "Текст подсказки" иконка
+
+ +

+Параметр иконка не является обязательным если он не указан то в меню будет вставлен текст +если указан - то изображение + +

+Для создания кнопки: +

+     ключевое_слово "команда" Иконка "Текст подсказки"
+
+ +

+ +

+Пример +

+
+menu font_width.gif "Font type" {
+    cmd "AddTextFont texttt" "Typewriter Typeset"
+    imagecmd "AddTextFont textit" "Typewriter Typeset" file.gif
+    cmd separator
+}
+button "AddTextFont emph" font_emph.gif "Emphasise"
+
+ +

+Здесь +menu, button, cmd, imagecmd -- ключевые слова для создания +соотвественно меню, кнопки меню и кнопки с изображением; +cmd separator -- добавление в меню разделителя + +

+ +

+Рaбота с документом +

+ +

+ +

+Редактирование +

+ +

+ +

+Перекодирование +

+TLE поддерживает работу с множеством различных кодировок. При открытии latex-документа происходит +считывание данных о кодировке документа, если используется пакет inputenc. Если документ не +содержит данных о кодовой странице то он будет отображён с использованием системной кодировки. В +случае не совпадения кодовой страницы документа и Вашей системы документ будет отображён +некорректно. Но это можно исправить, указав кодировку документа через меню Вид - +Кодировка. + +

+Если Вы хотите сохранить документ в кодировке отличной от исходной то необходимо выбрать нужную +кодовую страницу через меню Документ - Кодировка и файл будет перекодирован при сохранении. + +

+В случае если Вы используете пакет inputenc но не правильно указали кодировку документа в +описании пакета либо текущая кодировка документа не соответсвет требуемой, при сохранении будет +выдано предупреждение о не соответствии кодовых страниц. + +

+ +

+Предпросмотр текста и формул +

+При наличии в системе дополнительных программ, становится доступна функция предварительного +просмотра математических формул и произвольных частей документа. +Для осуществления данной операции необходимо в редактируемом документе выделить текст формулы, либо +её часть, и нажать сочитание клавиш Alt-V. Также можно выбрать пункт Показать формулу +в меню Редактирование или при помощи всплывабщего меню. + +

+Для произволного фрагмента текста операция идентична предыдущей с той лишь разницей, что необходимо +нажать Alt-B или меню Редактирование - Показать Текст + +

+ +

+Проверка орфографии +

+Для проверки орфографии используется программа ispell. +Вам необходимо выбрать в меню Документ - Орфография или нажать кнопку в панели инструментов. +В появившимся диалоге надо выбрать требуемый словарь и режим проверки - весь документ или с +текущей позиции. При несовпадении слов в тексте и в словаре Вам будет предложен список возможных +вариантов из которых можно выбрать нужный и заменить неправильное слово. + +

+ +

+Преобразование в различные форматы +

+Для преобразования файла в различные форматы используются внешние программы. +Команды для их запуска описаны в конфигурационном файле tle.conf: + +

+

+set convert_cmd(dvi) "latex"
+set convert_cmd(ps) "dvips -Pwww -j0 -ta4 -o %fileName.ps %fileName.dvi"
+set convert_cmd(pdf) "ps2pdf %name.ps"
+set convert_cmd(html) "latex2html -no_navigation -split 0"
+
+ +

+Если в команде встречается макрос %fileName то программа подставит вместо него имя текущего +файла без расширения. + +

+Вызов команд производиться как через меню Документ - Преобразовать так и через +панель инструментов. +Разница заключается лишь в том, что при вызове команды через меню будет вызван диалог, в котором +можно изменить опции командной строки, заданной по умолчанию. +А при вызове команды через панель инструментов будет использована последняя заданная команда для +операции преобразования. + +

+ +

+Предварительный просмотр документа +

+После преобразования документа станет доступна возможность просмотра полученного результата. +Команды для просмотра заданы в конфигурационном файле tle.conf, аналогично и командам конвертации. + +

+

+## PREVIEW ##
+set preview_cmd(dvi) "xdvi"
+set preview_cmd(ps) "gv"
+set preview_cmd(pdf) "acroread"
+set preview_cmd(html) "mozilla"
+
+ +

+Вызвать команды просмотра можно как через меню Документ - Предварительный просмотр +так и при помощи кнопок на панели инструментов. + +

+ +

+"Горячие" клавиши +

+ +

+Ctrl + A - Сохранить файл под другим именем. + +

+Ctrl + C - Команда копирует выделенный в окне редактора текст в буфер обмена. + +

+Ctrl + F - Поиск заданного выражения в тексте. + +

+Ctrl + G - Перейти к строке с заданным номером. + +

+Ctrl + J - Вывести список функций с именами полностью или частично совпадающими с введенным. + +

+Ctrl + L - Вывести список слов, полностью или частично совпадающих с введенным. + +

+Ctrl + M - Переключение между открытыми файлами (между окнами редактора). + +

+Ctrl + N - Создать новый файл. Команда вызывает диалог создания файла. + +

+Ctrl + O - Открыть файл. + +

+Ctrl + P - Печать файла (кода). + +

+Ctrl + Q - Выход. + +

+Ctrl + R - Поиск и замена заданного выражения в тексте. + +

+Ctrl + S - Сохранить файл. Сохраняется файл, который открыт в текущем окне редактора. + +

+Ctrl + T - Поменять местами два символа, стоящих до и после курсора. + +

+Ctrl + U - Перемещает курсор на соответствующую открытую или закрытую скобку. + +

+Ctrl + V - Вставка фрагмента текста из буфера обмена, скопированного предыдущей командой. + +

+Ctrl + W - Закрыть файл. Команда закрывает файл открытый в текущем окне редактора. + +

+Ctrl + X - Вырезать выделенный фрагмент текста в буфер обмена. + +

+Ctrl + Z - Отменить операцию + +

+F1 - Вызов системы помощи по программе и по языку. Если в тексте выделить команду и нажать +данную клавишу то будет выведена на экран подсказка по этой команде. + +

+F2 - Разделение окна редактора + +

+F3 - Повторный поиск, команда работает с последним введенным выражением в диалоговом окне +поиска + +

+F5 - Компиляция файла в DVI формат + +

+F6 - Конвертирование DVI файла в PS. + +

+F7 - Конвертирование DVI файла в PDF. + +

+F9 - Выполнение ("компиляция") текущего (активного) проекта. + +

+Alt + B - Предпросмотр выделенного участка текста + +

+Alt + C - Автодобивка команд. + +

+Alt + V - Предпросмотр математической формулы + +

+ +

+Об этом документе ... +

+ Расширенный LATEXредактор

+This document was generated using the +LaTeX2HTML translator Version 2K.1beta (1.57) +

+Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
+Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

+The command line arguments were:
+ latex2html -no_navigation -split 0 /home/banzaj/projects/tcl/tle/doc/tle_usr_manual.tex +

+The translation was initiated by on 2003-01-08 +


+
+ +2003-01-08 +
+ + diff --git a/errors b/errors new file mode 100644 index 0000000..8662e01 --- /dev/null +++ b/errors @@ -0,0 +1,7 @@ +Error in startup script: cannot use geometry manager pack inside .frmBody.frmList.nBook.flblList.f which already has slaves managed by grid + while executing +"pack $lblList -side left -fill both -expand yes" + (file "/home/ksv/Projects/tcl/tle/lib/modules/gui.tcl" line 230) + invoked from within +"source [file join $dir(mod) gui.tcl]" + (file "/home/ksv/Projects/tcl/tle/tle.tcl" line 121) diff --git a/lib/command/afterpage.lst b/lib/command/afterpage.lst new file mode 100755 index 0000000..a574982 --- /dev/null +++ b/lib/command/afterpage.lst @@ -0,0 +1 @@ +\afterpage{} \ No newline at end of file diff --git a/lib/command/amsbsy.lst b/lib/command/amsbsy.lst new file mode 100755 index 0000000..2c7b01a --- /dev/null +++ b/lib/command/amsbsy.lst @@ -0,0 +1,2 @@ +\boldsymbol +\pmb{} \ No newline at end of file diff --git a/lib/command/amscd.lst b/lib/command/amscd.lst new file mode 100755 index 0000000..abb620a --- /dev/null +++ b/lib/command/amscd.lst @@ -0,0 +1,6 @@ +@((( +@))) +@<<< +@>>> +@AAA +@VVV diff --git a/lib/command/amsfonts.lst b/lib/command/amsfonts.lst new file mode 100755 index 0000000..861dcc8 --- /dev/null +++ b/lib/command/amsfonts.lst @@ -0,0 +1,2 @@ +\mathbb +\mathfrac \ No newline at end of file diff --git a/lib/command/amsmath.lst b/lib/command/amsmath.lst new file mode 100755 index 0000000..9842ec4 --- /dev/null +++ b/lib/command/amsmath.lst @@ -0,0 +1,59 @@ +\\* +\\ +\Big +\big +\Bigg +\bigg +\biggl +\Biggr +\biggr +\bigl +\Bigm +\binom{}{}{}{}{}{} +\cfrac[]{}{} +\dbinom{}{}{}{}{}{} +\ddddot{} +\dddot{} +\ddots{} +\dfrac{}{} +\dots +\dotsb +\dotsc +\dotsi +\dotsm +\fracwithdelims()[] +\genfrac{}{}{}{}{}{} +\idotsint +\leftroot +\measuredangle +\mod +\nolimits +\operatorname{} +\overset +\pmod +\pod +\rVert +\rvert +\xrightarrow +\sideset +\smash\spbreve +\spcheck +\spdddot +\spddot +\spdot +\special +\sphat +\sptilde +\stackrel +\tag{} +\tag*{} +\tbinom{}{}{}{}{}{} +\tfrac +\uproot +\varinjlim +\varliminf +\varlimsup +\varprojlim +Vmatrix +vmatrix + diff --git a/lib/command/amssymb.lst b/lib/command/amssymb.lst new file mode 100755 index 0000000..0add9f0 --- /dev/null +++ b/lib/command/amssymb.lst @@ -0,0 +1,486 @@ +\{ +\| +\} +\aleph +\hat +\check +\acute +\grave +\bar +\vec +\dot +\ddot +\breve +\tilde +\allowdisplaybreaks +\alpha +\angle +\approx +\approxeq +\arccos +\arcsin +\arctan +\arg +\Arrowvert +\arrowvert +\ast +\asymp +\backepsilon +\backprime +\backsim +\backsimeq +\backslash +\barwedge +\Bbbk +\because +\beta +\beth +\between +\bigcap +\bigcirc +\bigcup +\bigodot +\bigoplus +\bigotimes +\bigsqcup +\bigstar +\bigstrutjot +\bigtriangledown +\bigtriangleup +\biguplus +\bigvee +\bigwedge +\blacklozenge +\blacksquare +\blacktriangle +\blacktriangledown +\blacktriangleleft +\blacktriangleright +\bot +\bowtie +\Box +\boxdot +\boxminus +\boxplus +\boxtimes +\bracevert +\bullet +\Bumpeq +\bumpeq +\Cap +\cap +\cdot +\cdots +\centerdot +\chi +\circ +\circeq +\circlearrowleft +\circlearrowright +\circledast +\circledcirc +\circleddash +\circledS +\clubsuit +\complement +\cong +\coprod +\cos +\cosh +\cot +\coth +\csc +\Cup +\cup +\curlyeqprec +\curlyeqsucc +\curlyvee +\curlywedg +\curvearrowleft +\curvearrowright +\dagger +\daleth +\dashleftarrow +\dashrightarrow +\dashv +\ddagger +\deg +\Delta +\delta +\det +\diagdown +\diagup +\Diamond +\diamond +\diamondsuit +\digamma +\dim +\div +\divideontimes +\dot +\doteq +\doteqdot +\dotplus +\doublebarwedge +\Downarrow +\downarrow +\downdownarrows +\downharpoonleft +\downharpoonright +\ell +\emptyset +\epsilon +\eqcirc +\eqslantgtr +\eqslantless +\equiv +\eta +\eth +\exists +\exp +\fallingdotseq +\Finv +\flat +\forall +\frac +\frown +\Game +\Gamma +\gamma +\gcd +\geq +\geqq +\geqslant +\gg +\ggg +\gimel +\gnapprox +\gneq +\gneqq +\gnsim +\grave +\gtrapprox +\gtrdot +\gtreqless +\gtreqqless +\gtrless +\gtrsim +\gvertneqq +\hat +\hbar +\heartsuit +\hom +\hookleftarrow +\hookrightarrow +\hslash +\iiiint +\iiint +\iint +\Im +\imath +\in +\inf +\infty +\int +\intercal +\iota +\jmath +\Join +\kappa +\ker +\Lambda +\lambda +\langle +\lceil +\ldots +\le +\Leftarrow +\leftarrow +\leftarrowtail +\leftharpoondown +\leftharpoonup +\leftleftarrows +\Leftrightarrow +\leftrightarrow +\leftrightarrows +\leftrightharpoons +\leftrightsquigarrow +\leftthreetimes +\leq +\leqq +\leqslant +\lessapprox +\lessdot +\lesseqgtr +\lesseqqgtr +\lessgtr +\lesssim +\lfloor +\lg +\lgroup +\lhd +\lim +\liminf +\limsup +\ll +\llcorner +\Lleftarrow +\lll +\lmoustache +\ln +\lnapprox +\lneq +\lneqq +\lnsim +\log +\Longleftarrow +\longleftarrow +\Longleftrightarrow +\longleftrightarrow +\longmapsto +\Longrightarrow +\longrightarrow +\looparrowleft +\looparrowright +\lozenge +\lrcorner +\Lsh +\lltimes +\lvertneqq +\mapsto +\mathbb +\max +\mho +\mid +\min +\models +\mp +\mu +\multimap +\nabla +\natural +\ncong +\nearrow +\neg +\neq +\nexists +\ngeq +\ngeqq +\ngeqslant +\ngtr +\ni +\nLeftarrow +\nleftarrow +\nLeftrightarrow +\nleftrightarrow 258 +\nleq +\nleqq +\nleqslant +\nless +\nmid +\nparallel +\nprec +\npreceq +\nRightarrow +\nrightarrow +\nshortmid +\nshortparallel +\nsim +\nsubseteq +\nsucc +\nsucceq +\nsupseteq +\nsupseteqq +\ntriangleleft +\ntrianglelefteq +\ntriangleright +\ntrianglerighteq +\nu +\numberwithin +\nVDash +\nvDash +\nvdash +\nwarrow +\odot +\oint +\Omega +\omega +\ominus +\oplus +\oslash +\otimes +\overbrace +\overleftarrow +\overline +\overrightarrow +\parallel +\partial +\perp +\Phi +\phi +\Pi +\pi +\pitchfork +\pm +\pmb +\Pr +\prec +\precapprox +\preccurlyeq +\preceq +\precnapprox +\precnsim +\precsim +\prime +\prod +\propto +\Psi +\psi +\rangle +\rceil +\Re +\real +\rfloor +\rgroup +\rhd +\rho +\Rightarrow +\rightarrow +\rightarrowtail +\rightharpoondown +\rightharpoonup +\rightleftarrows +\rightleftharpoons +\rightrightarrows +\rightsquigarrow +\rightthreetimes +\risingdotseq +\rmoustache +\Rsh +\rtimes +\Xi +\xi +\zeta +\wedge +\widehat +\widetilde +\wp +\wr +\searrow +\sec +\setminus +\sharp +\shortmid +\shortparallel +\Sigma +\sigma +\sim +\simeq +\sin +\sinh +\smallfrown +\smallsetminus +\smallsmile +\smile +\spadesuit +\sphericalangle +\sqcap +\sqcup +\sqrt +\sqsubset +\sqsubseteq +\sqsupset +\sqsupseteq +\square +\star +\Subset +\subset +\subseteq +\subseteqq +\subsetneq +\subsetneqq +\succ +\succapprox +\succcurlyeq +\succeq +\succnapprox +\succnsim +\succsim +\sum +\Supset +\supset +\supseteq +\supseteqq +\supsetneq +\supsetneqq +\surd +\swarrow +\sup +\tan +\tanh +\tau +\therefore +\Theta +\theta +\thickapprox +\thicksim +\tilde +\time +\times +\top +\triangle +\triangledown +\triangleleft +\trianglelefteq +\triangleq +\triangleright +\trianglerighteq +\twoheadleftarrow +\twoheadrightarrow +\ulcorner +\underbrace +\underleftarrow +\underleftrightarrow +\underline +\underrightarrow +\unlhd +\unrhd +\Uparrow +\uparrow +\Updownarrow +\updownarrow +\upharpoonleft +\upharpoonright +\uplus +\Upsilon +\upsilon +\upuparrows +\urcorner +\varepsilon +\varkappa +\varnothing +\varphi +\varpi +\varpropto +\varrho +\varsigma +\varsubsetneq +\varsubsetneqq +\varsupsetneq +\varsupsetneqq +\vartheta +\vartriangle +\vartriangleleft +\vartriangleright +\Vdash +\vDash +\vdash +\vdots +\vec +\vee +\veebar +\Vvdash + + + + diff --git a/lib/command/amsxtra.lst b/lib/command/amsxtra.lst new file mode 100755 index 0000000..c0760a7 --- /dev/null +++ b/lib/command/amsxtra.lst @@ -0,0 +1,2 @@ +\accentedsymbol{} +\actualchar \ No newline at end of file diff --git a/lib/command/array.lst b/lib/command/array.lst new file mode 100755 index 0000000..9b800e9 --- /dev/null +++ b/lib/command/array.lst @@ -0,0 +1 @@ +\firsthline \ No newline at end of file diff --git a/lib/command/babel.lst b/lib/command/babel.lst new file mode 100755 index 0000000..e69de29 diff --git a/lib/command/bar.lst b/lib/command/bar.lst new file mode 100755 index 0000000..d3fe523 --- /dev/null +++ b/lib/command/bar.lst @@ -0,0 +1,17 @@ +\bar{}{}[] +\hlineon +\legend{}{} +\sethspace{} +\setlinestyle{} +\setdepth{} +\setnumberpos{} +\setprecision{} +\setstretch{} +\setstyle{} +\setwidth{} +\setxaxis{}{}{} +\setxname{} +\setxvaluetyp{} +\setyaxis[]{}{}{} +\setyname{} + diff --git a/lib/command/bezier.lst b/lib/command/bezier.lst new file mode 100755 index 0000000..22a9f2c --- /dev/null +++ b/lib/command/bezier.lst @@ -0,0 +1,2 @@ +\bezier{}(,)(,)(,) +\qbezier[](,)(,)(,) \ No newline at end of file diff --git a/lib/command/calc.lst b/lib/command/calc.lst new file mode 100755 index 0000000..1cfcf9b --- /dev/null +++ b/lib/command/calc.lst @@ -0,0 +1,13 @@ +\addtocounter{}{} +\advance +\Alph{} +\alph{} +\arabic{} +\divide +\equal +\fnsymbol{} +\multiply +\newcounter{}[] +\setcounter{}{} +\stepconnter{} +\the \ No newline at end of file diff --git a/lib/command/changebar.lst b/lib/command/changebar.lst new file mode 100755 index 0000000..766e20e --- /dev/null +++ b/lib/command/changebar.lst @@ -0,0 +1,9 @@ +\cbdelete[] +\cbend +\cbstart +changebargrey +\changebarsep +\changebarwidth +\deletebarwidth +\nochangebars +\outerbarstrue \ No newline at end of file diff --git a/lib/command/chicago.lst b/lib/command/chicago.lst new file mode 100755 index 0000000..8162654 --- /dev/null +++ b/lib/command/chicago.lst @@ -0,0 +1,3 @@ +\citeA{} +\citeN{} +\citeyear{} diff --git a/lib/command/cite.lst b/lib/command/cite.lst new file mode 100755 index 0000000..92e348f --- /dev/null +++ b/lib/command/cite.lst @@ -0,0 +1,6 @@ +\@cite +\cite{} +\citen +\shortcite +\shortciteA +\shortciteN diff --git a/lib/command/color.lst b/lib/command/color.lst new file mode 100755 index 0000000..e69de29 diff --git a/lib/command/curves.lst b/lib/command/curves.lst new file mode 100755 index 0000000..1e18c68 --- /dev/null +++ b/lib/command/curves.lst @@ -0,0 +1,6 @@ +\closecurve +\curve[]() +\curvedashes{} +\curvesymbol{} +\tagcurve[]() +\scaleput(){} \ No newline at end of file diff --git a/lib/command/doc.lst b/lib/command/doc.lst new file mode 100755 index 0000000..36aed48 --- /dev/null +++ b/lib/command/doc.lst @@ -0,0 +1,50 @@ +\* +\@idxitem +\AltMacroFont +\bslash +\changes{}{}{} +\CharacterTable{} +\CheckModules +\CheckSum{} +\CodelineIndex +\CodelineNumbered +\DeleteShortVerb +\DescribeEnv{} +\DescribeMacro{} +\DisableCrossrefs +\docdate +\DocInput{} +\DocstyleParms +\DoNotIndex +\DontCheckModules{} +\lndexlnput{} +\IndexMin +\IndexParms +\indexPrologue{} +\levelchar +\MacrocodeTopsep +\MacroFont +\MacroIndent +\MacroTopsep +\main +\MakePrivateLetters +\MakeShortVerb{} +\meta{} +\Module +\PrintChanges +\PrintDescribeEnv +\PrintDescribeMacro +\PrintIndex +\PrintMacroName +\ps@titlepage +\quotechar +\RecordChanges +\SortIndex +\SpecialEnvIndex +\SpecialEscapechar +\SpecialIndex +\SpecialMainIndex +\SpecialUsageIndex +\StopEventually +\theCodelineNo +\verbatimchar \ No newline at end of file diff --git a/lib/command/eclbip.lst b/lib/command/eclbip.lst new file mode 100755 index 0000000..246dbb4 --- /dev/null +++ b/lib/command/eclbip.lst @@ -0,0 +1,3 @@ +\brush{} +\leftnode[]{} +\match \ No newline at end of file diff --git a/lib/command/ecltree.lts b/lib/command/ecltree.lts new file mode 100755 index 0000000..5d6f24a --- /dev/null +++ b/lib/command/ecltree.lts @@ -0,0 +1,5 @@ +\chunk[]{} +\GapDepth +\GapWidth +\drawwith{} +\EdgeLabelSep \ No newline at end of file diff --git a/lib/command/eepic.lst b/lib/command/eepic.lst new file mode 100755 index 0000000..181c3b7 --- /dev/null +++ b/lib/command/eepic.lst @@ -0,0 +1,13 @@ +\arc{}{}{} +\circle{} +\circle*{} +\ellipse{}{} +\ellipse*{}{} +\filltype{} +\line(){} +\maxovaldiam +\oval(){} +\path() +\spline() +\Thicklines +\thicklines diff --git a/lib/command/endfloat.lst b/lib/command/endfloat.lst new file mode 100755 index 0000000..7d7784d --- /dev/null +++ b/lib/command/endfloat.lst @@ -0,0 +1,2 @@ +\figureplace +\nomarkersintext \ No newline at end of file diff --git a/lib/command/endnotes.lst b/lib/command/endnotes.lst new file mode 100755 index 0000000..d50dc96 --- /dev/null +++ b/lib/command/endnotes.lst @@ -0,0 +1,2 @@ +\endnote +\enotesize diff --git a/lib/command/epic.lst b/lib/command/epic.lst new file mode 100755 index 0000000..070d329 --- /dev/null +++ b/lib/command/epic.lst @@ -0,0 +1,16 @@ +\shortstack +\allinethickness{} +\dashline[]{}[]() +\dashlinestretch +\dottedline[]{}() +\drawline[]() +\drawlinestretch +\grid(,)(,)[,] +\jput(){} +\matrixput()(){}(){}{} +\multyput +\multiputlist +\picsquare +\rightnode[]{} +\match{}{} +\leftnode{}{} \ No newline at end of file diff --git a/lib/command/epsfig.lst b/lib/command/epsfig.lst new file mode 100755 index 0000000..7ada5ce --- /dev/null +++ b/lib/command/epsfig.lst @@ -0,0 +1,4 @@ +\epsfig{} +\psfigdriver{} +\psdraft +\psfull diff --git a/lib/command/eufrac.lst b/lib/command/eufrac.lst new file mode 100755 index 0000000..07afc20 --- /dev/null +++ b/lib/command/eufrac.lst @@ -0,0 +1 @@ +\EuFrak \ No newline at end of file diff --git a/lib/command/euscript.lst b/lib/command/euscript.lst new file mode 100755 index 0000000..ea58af6 --- /dev/null +++ b/lib/command/euscript.lst @@ -0,0 +1 @@ +\EuScript \ No newline at end of file diff --git a/lib/command/fancybox.lst b/lib/command/fancybox.lst new file mode 100755 index 0000000..3701409 --- /dev/null +++ b/lib/command/fancybox.lst @@ -0,0 +1,6 @@ +\cornersize{} +\cornersize*{} +\doublebox{} +\shadowbox{} +\ovalbox{} +\Ovalbox{} \ No newline at end of file diff --git a/lib/command/fancyheadings.lst b/lib/command/fancyheadings.lst new file mode 100755 index 0000000..59eaa5e --- /dev/null +++ b/lib/command/fancyheadings.lst @@ -0,0 +1,13 @@ +\cfoot[]{} +\chead[]{} +\fancyplain{}{} +\footrule +\footrulewidth +\headrule +\headrulewidth +\headwidth +\lfoot +\lhead +\rfoot +\rhead + diff --git a/lib/command/float.lst b/lib/command/float.lst new file mode 100755 index 0000000..8f0689e --- /dev/null +++ b/lib/command/float.lst @@ -0,0 +1,6 @@ +\floatname +\floatplacement +\floatstyle +\listof +\newfloat{}{}{}{} +\restylefloat{} \ No newline at end of file diff --git a/lib/command/floatfig.lst b/lib/command/floatfig.lst new file mode 100755 index 0000000..6c37953 --- /dev/null +++ b/lib/command/floatfig.lst @@ -0,0 +1 @@ +\initfloatingfigs \ No newline at end of file diff --git a/lib/command/fontenc.lst b/lib/command/fontenc.lst new file mode 100755 index 0000000..e69de29 diff --git a/lib/command/graphicx.lst b/lib/command/graphicx.lst new file mode 100755 index 0000000..e69de29 diff --git a/lib/command/grapics.lst b/lib/command/grapics.lst new file mode 100755 index 0000000..e69de29 diff --git a/lib/command/hangcaption.lst b/lib/command/hangcaption.lst new file mode 100755 index 0000000..cbdf6d9 --- /dev/null +++ b/lib/command/hangcaption.lst @@ -0,0 +1 @@ +\isucaption \ No newline at end of file diff --git a/lib/command/hhline.lst b/lib/command/hhline.lst new file mode 100755 index 0000000..1cf2f00 --- /dev/null +++ b/lib/command/hhline.lst @@ -0,0 +1,2 @@ +\hhline +\hrule \ No newline at end of file diff --git a/lib/command/ifthen.lst b/lib/command/ifthen.lst new file mode 100755 index 0000000..5c67637 --- /dev/null +++ b/lib/command/ifthen.lst @@ -0,0 +1,17 @@ +\whiledo +\Yarea +\Ysize +\Xsize +\Xarea +\boolean{} +\ifthenelse +\equal{}{} +\isodd +\lengthtest{} +\newboolean +\newif +\newX +\newY +\not +\or +\setboolean \ No newline at end of file diff --git a/lib/command/index.lst b/lib/command/index.lst new file mode 100755 index 0000000..7b9971f --- /dev/null +++ b/lib/command/index.lst @@ -0,0 +1,4 @@ +\index{}{} +\indexproofstyle +\newindex{}{}{}{} +\renewindex{}{}{}{} \ No newline at end of file diff --git a/lib/command/inputenc.lst b/lib/command/inputenc.lst new file mode 100755 index 0000000..e69de29 diff --git a/lib/command/latexsym.lst b/lib/command/latexsym.lst new file mode 100755 index 0000000..f7d0e5b --- /dev/null +++ b/lib/command/latexsym.lst @@ -0,0 +1,5 @@ +\leadsto +\Box +\Join +\lhd +\Diamond \ No newline at end of file diff --git a/lib/command/layout.lst b/lib/command/layout.lst new file mode 100755 index 0000000..7c02d14 --- /dev/null +++ b/lib/command/layout.lst @@ -0,0 +1 @@ +\layout \ No newline at end of file diff --git a/lib/command/longtable.lst b/lib/command/longtable.lst new file mode 100755 index 0000000..5cd6c02 --- /dev/null +++ b/lib/command/longtable.lst @@ -0,0 +1,5 @@ +\endfirsthead +\endfoot +\endhead +\endlastfoot +\kill \ No newline at end of file diff --git a/lib/command/main_cmd.lst b/lib/command/main_cmd.lst new file mode 100755 index 0000000..36d6842 --- /dev/null +++ b/lib/command/main_cmd.lst @@ -0,0 +1,942 @@ +\' +\( +\) +\, +\- +\/ +\: +\; +\= +\> +\! +\@addtoreset{}{} +\@cite +\@dotsep +\@dottedtocline{}{}{}{}{} +\@evenfoot +\@evenhead +\@makecaption{}{} +\@makefigcaption +\@makefnmark +\@makefntext +\@mkboth +\@oddfoot +\@oddhead +\@pnumwidth +\@ptsize +\@rightskip +\@seccntformat +\@startsection{}{}{}{}{}{} +\@starttoc{} +\@thefnmark +\@tocrmarg +\` +\a' +\a= +\a' +\abovedisplayshortskip +\abovedisplayskip +abstract +\abstractname +\accent +\acro +\addcontentsline{}{} +\adddialect{}{} +\addlanguage{} +\addto +\addtocontents{}{} +\addtocounter{}{} +\addtolength{}{} +\AE +\aleph +\alsoname +\amalg +\Appendix +\appendix +\appendixname +array +\AtBeginDocument +\AtEndDocument +\AtEndOfClass +\AtEndOfPackage +\baselineskip +\baselinestretch +\batchfile{} +\batchinput +\Bbb +\begin{} +\belowdisplayshortskip +\belowdisplayskip +\bf +\bfdefault +Bflushleft +Bflushright +\bfseries +\bibhang +\bibindent +\bibitem[]{} +\bibliography{} +\bibliographystyle{} +\bibliographyunit[] +\bibname +\bibpunct +\bigcircle +\bigskip +\bigskipamount +bmatrix +\bmod +\boldmath +book +bookman +\botfigrule +\bottomcaption +\bottomfraction +bottomnumber +\boxed{} +bundle +\bye +calc +\caption[]{} +\caption*{} +\captionwidth +cases +catalan +\catcode +cc +\ccname +CD +center +\centering +centertags +changebar +\chapter{} +chapter +\chapter*{} +chapterbib +\chaptermark +\chaptername +chicago +Citation +\cite[]{} +citesort +\cleardoublepage +\clearemptydoublepage +\clearpage +\cline +\CodelineFont +collectmore +color +colordvi +columnbadness +\columnsep +\colunnseprule +\coluanwidth +comment +concrete +\contentsline{}{}{} +\contentsname +Cor +croatian +cropmarks +\csname +\CurrentOption +curves +czech +danish +dashjoin +\dblfigrule +\dblfloatpagefraction +\dblfloatsep +\dbltextfloatsep +\dbltopfraction +dbltopnumber +dcolumn +debugshow +\DeclareErrorFont +\DeclareFixedFont{}{}{}{}{}{} +\DeclareFontEncoding{}{}{} +\DeclareFontFamily{}{}{} +\DeclareFontShape{}{}{}{}{}{} +\DeclareFontSubstitution{}{}{}{} +\DeclareMathAlphabet{}{}{}{}{} +\DeclareMathOperator{} +\DeclareMathOperator*{} +\DeclareMathSizes{}{}{}{} +\DeclareMathSymbol{}{}{}{} +\DeclareMathVersion{} +\DeclareOption{}{} +\DeclareOption*{} +\DeclareSymbolFont{}{}{}{}{} +\DeclareSymbolFontAlphabet{}{} +Def +\defaulthyphenchar +deflist +delarray +\depth +description +\descriptionlabel +\displaybreak[] +\displaystyle +doc +document +\documentclass[]{} +\documentstyle[]{} +\dotfill +dottedjoin +\doublerulesep +doublespace +\dq +draft +draftcopy +drawjoin +\driver +dutch +dvips +dvitops +\ecaption +eclbip +ecltree +eepic +eepicemu +\em +\emergencystretch +\emph{} +empty +emtex +\enclname +\encodingdefault +\end{} +\endcsname +endfloat +\endpostamble +\endpreamble +english +\enlargethispage{} +\enlargethispage* +\enspace +\ensuremath{} +entry +\entrylabel +enumerate +enumerate +enumeration +enumi +enumii +enumiii +enumiv +environment +epic +epsfig +eqnarray +eqnarray* +\eqref +equation +equation +equation* +errorshow +esperanto +eucal +eufrak +euler +euscript +\evensidemargin +Exa +\ExecuteOptions +executivepaper +exscale +\externaldocument +\extracolsep +\extrarowheight +\extratabsurround +\faketableofcontents +\familydefault +fancy +fancybox +fancyheadings +\fbox{} +\fboxrule +\fboxsep +figure +figure +\figurename +figwindow +filecontents +\fill +finalcolumnbadness +final +\Finale +finnish +fixed +flatter +flalign +flalign* +fleqn +float +floatfig +floatingfigure +\floatpagefraction +\floatsep +\flq +\flqq +\flushbottom +\flushcolunms +flushleft +flushright +\fminilength +fminipage +fnpara +\fontdimen +\fontencoding{} +\fontfamily{} +\fontseries{} +\fontshape{} +\fontsize{}{} +\footnote{} +footnote +\footnotemark +\footnoterule +\footnotesep +\footnotesize +\footnotetext{} +footnpag +\footskip +\framebox[][]{} +FrameVerb +francais +french +french +\from{}{} +\frq +\frqq +ftnright +\fullref +\fussy +galician +garamond +gather +gather* +gathered +\generateFile{}{}{} +german +german +germanb +\glossary +\glossaryentry +\glq +\glqq +graphics +\grq +\grqq +hackalloc +hangcaption +harvard +\hdotsfor[]{} +\headheight +headings +\headsep +\headtoname +\height +\help +helvet +here +hhline +\hline +\hoffset +\hrulefill +\hspace +\hspace* +\Huge +\huge +\IfFileExists{}{}{} +\iflanguage{}{}{} +ifthen +\ignorespaces +\include{} +\includeonly{} +indentfirst +index +\indexentry +\indexname +infoshow +\init +\input +inputenc +\InputIfFileExists{}{}{} +\intertext{} +\intextsep +intlimits +isolatin1 +\it +italian +\itdefault +\item +\itemindent +itemize +\itemsep +\itshape +jmb +\jot +\keepsilent +\l@chapter +\l@example +\l@figure +\l@paragraph +\l@part +\l@section +\1@subparagraph +\l@subsection +\l@subsubsection +\l@table +\label{} +\labelenumi +\labelenumii +\labelenumiii +\labelemuniv +\labelitemi +\labelitemii +\labelitemiii +\labelitemiv +\labelsep +\labelwidth +\landscape +landscape +\LARGE +\Large +\large +\lasthline +latexsym, +layout +\left +\leftmargin +\leftmark +legalpaper +Lem +Lentry +\Lentrylabel{} +leqno +letter +letterpaper +\letterspace +letterspace +\linebreak +\linethickness +\linewidth +list +\listfigurename +\listfiles +\listofexamples +\listoffigures +\listoftables +\listparindent +\listtablename +ln +\LoadClass[]{}[] +loading +\longpage +longtable +\lowercase +lrbox +lscape +\LTcapwidth +\LTchunksize +\LTleft +\LTpost +\LTpre +\LTright +lucid +lucidbrb +lucidbry +lucmath +\lVert +\lvert +\m@th +macro +macrocode +macrocode* +magyar +\makeatletter +\makeatother +\makebox[][]{} +\makeglossary +makeidx +\makelabel +\maketitle +\marginlabel{} +\marginpar[]{} +\marginparpush +\marginparsep +\marginparwidth +\markboth{}{} +\markright{} +\mathalpha +\mathbf +\mathbin +\mathcal +\mathclose +\mathindent +\mathit +\mathnormal +\mathop +\mathopen +\mathord +\mathpunct +\mathrel +\mathrm +\mathsf +\mathsfsl +\mathsurround +\mathtt +\mathversion +\matrix +matrix +MaxMatrixCols +\mbox{} +\mddefault +\mdseries +\medskip +\medskipamount +\medspace +\Mentry +\Mentrylabel +\message +minipage +minitoc +minitocdepth +minitocoff +mm +moreverb +mpfootnote +\Msg +\mspace +\mtcfont +\mtcindent +mtimes +mu +multibox +multicol +multicols +\multicolsep +\multicolumn +multind +multirow +multline +multline* +\multlinegap +myheadings +named +namelimits +\names +nar +natbib +\naturalwidth +nature +\NeedsTeXFormat{}[] +\negmedspace +\negthickspace +\negthinspace +newapa +\newblock +newcent +\newcolunmtype{}[]{} +\newcommand{} +\newenvironment{}[]{}{} +\newfont +\newindex +\newlength +newlfont +\newpage +\newsavebox{} +\nfssfont +\nocite{} +\nocorr +\nocorrlist +\nofiglist +\nofiles +\nohyphens +\noindent +nointlimits +nonamelimits +\nonfrenchspacing +\nonumber +\nopagebreak +\normalem +\normalfont +\normalmarginpar +\normalsize +norsk +nosumlimits +\notablist +\notag +Notes +notes +\numberline +nynorsk +\oddsidemargin +oldgerm +oldlfont +\oldstylenums +\onecolumn +openbib +\openin +\OptionNotUsed +order +\Ovalbox{} +\ovalbox{} +overcite +oztex +\p@enumi +\p@enumii +\p@enumiii +\p@enumiv +page +\pagebreak +\pagename +\pagenumbering +\pageref +\pagestyle +palatino +pandora +\paperheight +\paperwidth +\paragraph{} +paragraph +\parbox[]{}{} +parentequation +\parindent +\parsep +\parskip +\part{} +part +\part*{} +\partname +\partopsep +\PassOptionsToClass{}{} +\PassOptionsToPackage{}{} +pausing +pc +\phantom +Piautolist +picinpar +picture +pifont +Pilist +plain +\plainfootrulewidth +\plainheadrulewidth +pmatrix +polish +portland +\portrait +portrait +portuges +\postamble +\postinulticols +\preamble +\prefacename +\premulticols +\PreserveBackslash +\ProcessOptions +\ProcessOptions* +program +program +programbox +proof +\proofmodetrue +\protect +\providecommand +\ProvidesClass +\ProvidesFile +\ProvidesPackage +\ps@ +\ps@plain +psamsfonts +psboxit +pstimesm +pt +\put +\putbib +\putfile +\qquad +\quad +quotation +Quote +quote +\raggedcolumns +\raggedleft +\raggedright +\raisebox{}[][]{} +\ratio +\ref{} +\refname{} +\refstepcounter +\reftextafter +\reftextbefore +\reftextcurrent +\reftextfaceafter +\reftextfacebefore +\reftextfaraway +\reftextvario{}{} +Rem +\renewconnnand{} +\renewenvironment{}[]{}{} +report +reqno +\RequirePackage +resume +\reversemarginpar +\right +\rightmargin +\rightmark +\rightskip +\rm +\rmdefault +\rmfamily +\Roman +\roman +Roman +roman +romanian +rotate +rotate +rotating +\rotcaption +\rotdriver +\rule +russian +\samepage +\sAppendix +\savebox{}[][]{} +Sbox +\sbox{} +\sc +\scdefault +\scriptscriptstyle +\scriptsize +\scriptstyle +\scshape +\secdef +secnumdepth +\section{} +section +\section*{} +\sectionmark +\see +\seename +\selectfont +\selectlanguage +seminar +\seriesdefault +\setlength +\setmargins +\setmarginsrb +\SetMathAlphabet +\setpapersize +\SetSymbolFont +\settodepth +\settoheight{}{} +\settowidth{}{} +\sf +\sfdefault +\sffamily +\shabox +shadow +\shadowsize +\shapedefault +\shapepar +shapepar +\shortindexingoff +\shortindexingon +\shortpage +\shoveleft +\shoveright +\showcols +showidx +\showprogress +showtags +sideways +sidewaysfigure +sidewaystable +\skip +\sl +\sldefault +slides, +\sloppy +slovak +slovene +\slshape +\small +smallmatrix +\smallskip +\smallskipamount +\SortNoop +\sout +sp +\space +spacing +spanish +split +\squarepar +\ss +StandardModuleDepth +\stop +\stretch{} +\string +\strut +subarray +subequations +subfigure +\subitem +\subparagraph{} +subparagraph +\subsection{} +subsection +\substack +\subsubitem +\subsubsection{} +subsubsection +sumlimits +\suntaxonly +supertab +supertabular +supertabular* +\suppressfloats +\swabfamily +swedish +\symbol +syntonly +t1enc +tabbing +\tabbingsep +\tabcolsep +\table +table +\tablename +\tableofcontents +\tableplace +tabular +tabular* +TabularC +tabularx +tabularx +\tabularxcolunm +tabwindow +tbtags +\text{} +\textbf{} +\textfloatsep{} +\textfraction{} +\textfrak{} +\textgoth{} +\textheight{} +\textit{} +\textmd{} +\textnormal{} +\textrm{} +\textsc{} +\textsf{} +\textsl{} +\textstyle{} +\textswab{} +\texttt{} +\textup{} +textures +\textwidth +thebibliography +\thechapter +\theendnotes +\heenumi +\theenumii +\theenumiii +\theenumiv +\theequation +\thefootnote +theglossary +theindex +\thempfootnote +theorem +\thepage +\TheSbox +\thesection +\thesubfigure +\thesubsection +\thickspace +\thinlines +\thinspace +\thispagestyle +threeparttable +threeparttable +times +\tiny +tocdepth +\today +\tolerance +\topcaption +\topfigrule +\topfraction +\topmargin +topnumber +\topsep +\topskip +\totalheight +totalnumber +tracefnt +\tracingfonts +tracingmulticols +\tracingtabularx +trees +\tt +\ttdefault +\ttfamily +turkish +turn +\twlrm +\twocolumn +twocolumn +twoside +\typeout +ulem +\ULforem +\uline +unbalance +\unboldmath +\underset +\unitlength +\unskip +\updefault +upref +\upshape +\usage +\usebox{} +\usecounter +\usefont +\usepackage[]{}[] +\uwave +\vadjust +\value +varioref +\vector +Ventry +\verb +\verb* +\vfill +\vline +vmargin +\voffset +\vpageref +\vref +\vrule +\vspace +\vspace* +warningshow +\WideMargins +\width +window +\wlog +wrapfig +wrapfig +wrapfigure +\xleftarrow +\xout +xr +\xspace +xspace \ No newline at end of file diff --git a/lib/command/minitoc.lst b/lib/command/minitoc.lst new file mode 100755 index 0000000..355dd86 --- /dev/null +++ b/lib/command/minitoc.lst @@ -0,0 +1,2 @@ +\dominitoc +\minitoc \ No newline at end of file diff --git a/lib/command/multibox.lst b/lib/command/multibox.lst new file mode 100755 index 0000000..2d55c1a --- /dev/null +++ b/lib/command/multibox.lst @@ -0,0 +1,2 @@ +\multiframe()(){}()[]{} +\multimake()(){}()[]{} diff --git a/lib/command/multicol.lst b/lib/command/multicol.lst new file mode 100755 index 0000000..e69de29 diff --git a/lib/command/multind.lst b/lib/command/multind.lst new file mode 100755 index 0000000..65db35f --- /dev/null +++ b/lib/command/multind.lst @@ -0,0 +1,3 @@ +\index{} +\makeindex{}{} +\printindex{}{} \ No newline at end of file diff --git a/lib/command/multirow.lst b/lib/command/multirow.lst new file mode 100755 index 0000000..fab1647 --- /dev/null +++ b/lib/command/multirow.lst @@ -0,0 +1,2 @@ +\multirow{}[]{}[]{} +\multirowsetup \ No newline at end of file diff --git a/lib/command/oldgerm.lst b/lib/command/oldgerm.lst new file mode 100755 index 0000000..9793250 --- /dev/null +++ b/lib/command/oldgerm.lst @@ -0,0 +1,2 @@ +\frakfamily +\gothfamily \ No newline at end of file diff --git a/lib/command/pifont.lst b/lib/command/pifont.lst new file mode 100755 index 0000000..11d641a --- /dev/null +++ b/lib/command/pifont.lst @@ -0,0 +1,9 @@ +\ding{} +dingautolist +\dingfill +\dingline +dinglist +\Pifill{}{} +\Pifont{} +\Piline{}{} +\Pisymbol{}{} diff --git a/lib/command/psboxit.lst b/lib/command/psboxit.lst new file mode 100755 index 0000000..b8a8ce8 --- /dev/null +++ b/lib/command/psboxit.lst @@ -0,0 +1,3 @@ +\psboxit{}{} +\PScommands +\spbox \ No newline at end of file diff --git a/lib/command/shadow.lst b/lib/command/shadow.lst new file mode 100755 index 0000000..28cc2e3 --- /dev/null +++ b/lib/command/shadow.lst @@ -0,0 +1,3 @@ +\sboxrule +\sboxsep +\sdim diff --git a/lib/command/shapepar.lst b/lib/command/shapepar.lst new file mode 100755 index 0000000..43bf1a8 --- /dev/null +++ b/lib/command/shapepar.lst @@ -0,0 +1,2 @@ +\diamondpar +\heartpar \ No newline at end of file diff --git a/lib/command/subfigure.lst b/lib/command/subfigure.lst new file mode 100755 index 0000000..f1048cf --- /dev/null +++ b/lib/command/subfigure.lst @@ -0,0 +1,3 @@ +\subfigcapskip +\subfigtopskip +\subfigure diff --git a/lib/command/supertab.lst b/lib/command/supertab.lst new file mode 100755 index 0000000..1a303b4 --- /dev/null +++ b/lib/command/supertab.lst @@ -0,0 +1,5 @@ +\tablecaption{} +\tablefirsthead{} +\tablehead{} +\tablelasttail{} +\tabletail{} diff --git a/lib/command/tabularx.lst b/lib/command/tabularx.lst new file mode 100755 index 0000000..cbdee45 --- /dev/null +++ b/lib/command/tabularx.lst @@ -0,0 +1 @@ +\arraybackslash \ No newline at end of file diff --git a/lib/command/theorem.lst b/lib/command/theorem.lst new file mode 100755 index 0000000..a3a9ec5 --- /dev/null +++ b/lib/command/theorem.lst @@ -0,0 +1,6 @@ +\newtheorem{}{} +\theorembodyfont{} +\theoremheaderfont{} +\theorempostskipamount{} +\theorempreskipamount{} +\theoremstyle{} diff --git a/lib/command/trees.lst b/lib/command/trees.lst new file mode 100755 index 0000000..44211f0 --- /dev/null +++ b/lib/command/trees.lst @@ -0,0 +1,5 @@ +\branch{}{}{}:,. +\branchlabels{}{}{} +\leaf{}{}{} +\root() . +\tbranch{}{}{}:,. \ No newline at end of file diff --git a/lib/command/verbatim.lst b/lib/command/verbatim.lst new file mode 100755 index 0000000..c83500a --- /dev/null +++ b/lib/command/verbatim.lst @@ -0,0 +1,11 @@ +listing +listing* +listingcont +listingcont* +\listinginput[]{}{} +\verbatimtabinput[]{} +verbatim +verbatim* +verbatimcmd +verbatimtab +verbatimwrite diff --git a/lib/command/version.lst b/lib/command/version.lst new file mode 100755 index 0000000..cd1226d --- /dev/null +++ b/lib/command/version.lst @@ -0,0 +1,3 @@ +\excludeversion +\includeversion{} +version \ No newline at end of file diff --git a/lib/command/xspace.lst b/lib/command/xspace.lst new file mode 100755 index 0000000..0e42664 --- /dev/null +++ b/lib/command/xspace.lst @@ -0,0 +1 @@ +\@ diff --git a/lib/conf/encode.lst b/lib/conf/encode.lst new file mode 100755 index 0000000..5f670a9 --- /dev/null +++ b/lib/conf/encode.lst @@ -0,0 +1,11 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (aka BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2004, http://conero.lrn.ru +###################################################### +# +# Encode listing format: latex encode - tcl encode +# +###################################################### +latin1 iso8859-1 diff --git a/lib/conf/package.lst b/lib/conf/package.lst new file mode 100755 index 0000000..d6ae086 --- /dev/null +++ b/lib/conf/package.lst @@ -0,0 +1,22 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +###################################################### +# +# LaTeX pacckage list +# +###################################################### +babel +color +grapics +graphicx +fontenc +inputenc +latexsym +longtable +multicol + + + diff --git a/lib/conf/tle.conf b/lib/conf/tle.conf new file mode 100755 index 0000000..27a9b5d --- /dev/null +++ b/lib/conf/tle.conf @@ -0,0 +1,161 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +###################################################### + +###################################################### +# MAIN SETTINGS +###################################################### + +## LOCALE SETTING ## +set locale "en" + +## BACKUP FILES ## +set backup(create) "Yes" +set backup(del) "No" +set backup(autosave) "No" + +## HELP SYSTEM ## +set help(encode) "koi8-r" + +## ISPELL SETTINGS ## +set ispell_lib /usr/lib/ispell +set ispell_startindex "1.0" + +## DIRECTORY SETTING ## +set dir(tmp) [file join $env(HOME) tmp] +set dir(doc) [file join $env(HOME) doc my] + +## TIMERS ## +## structure refresh time ## +## default 1 min ## +set timers(refresh) 60000 +## autosave opened files time ## +## default 5 min ## +set timers(autosave) 300000 + +###################################################### +# USER INTERFACE SETTINGS +###################################################### + +## MAIN WINDOW GEOMETRY ## +set gui(geometry) "750x550+0+0" + +## NoteBook Tabs Specifies the side where to place the label of the pages. ## +## must be "top" or "bottom" +set gui(tabsLabel) "top" + +## IMAGE THEME ## +## must be "default" "stroke" ## +set theme "stroke" + +## SETING FONTS ## +set font(normal) "Arial 10 normal roman" +set font(bold) "Arial 10 bold roman" + +## SETING COLOR ## +set color(selectbg) "#55c4d1" +set color(bg) "#bbbbbb" +set color(editBg) "#cccccc" +set color(editFg) "#000000" +set color(editTitleNormal) "#000000" +set color(editTitleModify) "#0021ff" +set color(lineNumberBg) "#bbbbbb" +set color(lineNumberFg) "#000000" + +## HighLightning Color ## +set color(procName) "#0021ff" +set color(operator) "#0000a8" +set color(keyWord) "#0000a8" +set color(param) "#6a0082" +set color(subParam) "#008282" +set color(comments) "#9b9b9b" +set color(var) "#e50000" +set color(string) "#168400" +set color(brace) "#d33434" +set color(braceBG) "#000000" +set color(braceFG) "#00feff" +set color(percent) "#a500c6" +set color(bindKey) "#a500c6" + +## RELIEF TOOL BUTTONS## +## must be flat, groove, raised, ridge, solid, sunken or link ## +set relief(btn) link + +## RELIEF TOOL MENUS## +## must be flat, groove, raised, ridge, solid, or sunken ## +set relief(menu) groove + +## SHOW TOOLBARS ## +## must be: tool(toolbar_file_name) flag +## where flag = 0 - hide, 1- show +set tool(main) 1 +set tool(insert) 0 +set tool(math) 0 +set tool(format) 0 + + +###################################################### +# EDITOR SETTINGS +###################################################### +## EDITOR FONTS ## +set font(editNormal) "fixed" +set font(editBold) "fixed" +## EXTERNAL EDITOR ## +set editor(extern) "No" +set editor(prog) "/usr/bin/emacs" +## AUTOMATICALLY WORD WRAPPING ## +set editor(wrap) "word" ;# must be: none, word or char +# this auto wraping string if string lenght more then editor(strLen) +# must be "No" or "Yes" +set editor(strWrap) "Yes" +set editor(strLen) 100 + +###################################################### +# CONVERT/PREVIEW/PRINT SETTINGS +###################################################### + +## CONVERT ## +## %fileName - current file name +## %dirName - currennt directory name +set convert_cmd(dvi) "latex" +set convert_cmd(ps) "dvips -Pwww -j0 -ta4 -o %dirName/%fileName.ps %dirName/%fileName.dvi" +set convert_cmd(pdf) "ps2pdf %dirName/%fileName.ps" +set convert_cmd(html) "latex2html -no_navigation -split 0" +set convert_cmd(img) "convert" +## PREVIEW ## +set preview_cmd(dvi) "xdvi" +set preview_cmd(ps) "gv" +set preview_cmd(pdf) "acroread" +set preview_cmd(html) "mozilla" + +###################################################### +# MATH AND TEXT RENDERING PARAMETERS +###################################################### +# image resolution +set render(res) "100x100" +# image format +set render(format) "gif" +# background color +set render(bg) "white" +# foreground color +set render(fg) "black" +# on/off transparency +set render(trans) 0 +# on/off antialliasing +set render(aa) 1 + +###################################################### +# +###################################################### + +set thumb(show) "Yes" +set thumb(resolution) "100x100" +set thumb(format) "png" ;# must be jpg, gif, png + + + + + diff --git a/lib/conf/tmp/first_proj.tex~ b/lib/conf/tmp/first_proj.tex~ new file mode 100755 index 0000000..b66c924 --- /dev/null +++ b/lib/conf/tmp/first_proj.tex~ @@ -0,0 +1,94 @@ +%-----------------------------------------------------% +% % +% Подготовка научных статей, широкая страница % +% (предусмотрена работа с рисунками) % +% % +%-----------------------------------------------------% + +\documentclass[12pt]{article} + +\usepackage[koi8-r]{inputenc} +\usepackage[english,russian]{babel} + +\usepackage{a4wide} +\usepackage{graphicx} + +\begin{document} + +\section{Задание} + +Разработать программу для ввода данных и формирования файла для передачи в банк +для системы пакетных платежей + +\subsection{Входные данные} +\begin{itemize} +\item Название организации +\item ФИО руководителя +\item ФИО главного бухгалтера +\item ФИО работника +\item N счёта работника 20-ти значный +\item Сумма платежа +\item Назначение платежа +\item Дата платежа +\end{itemize} + +\subsection{Выходные данные} +\begin{itemize} +\item Печатная ведомость по прилагаемому образцу +\item Файл содержащий список работников +\end{itemize} + +\subsection{Поддерживаемые функции} +\begin{itemize} +\item Программа должна позволять вести список работников (ФИО, N счёта) +\item Вести список платежей для каждого работника (Дата платежа, наименование, +сумма) +\item Формировать файл и распечатывать ведомость +\item Возможность ввода и редактирования параметров для каждого предприятия (см. +входные данные) +\end{itemize} + +\section{Реализация} + +Данную программу планируется реализовать на языке C++, с использованием +графической библиотеки WxWindow - это обеспечит независимость от используемой +платформы (Linux, Windows, ...) + +В качестве хранилища данных использовать MySQL либо Paradox (второе +предпочтительнее) + +\section{Структура классов} + +\subsection{Personal} + +Данный класс представляет работника предприятия. Доступные методы: + +\textbf{\emph{add}} (\textbf{String} \textit{LastName}, \textbf{String} +\textit{FirstName}, \textbf{String} \textit{MiddleName}, \textbf{Int} +\textit{Schet}) - добавление работника + +\textbf{\emph{edit}} (\textbf{Int} \textit{Id}, (\textbf{String} \textit{LastName}, +\textbf{String} \textit{FirstName}, \textbf{String} \textit{MiddleName}, +\textbf{Int} \textit{Schet}) - редактирование + +\textbf{\emph{del}} (\textbf{Int} \textit{Id}) - удаление + +\subsection{Payment} + +Класс платежа. Методы: + +\textbf{\emph{add}} (\textbf{Int} \textit{IdPerson}, \textbf{Int} +\textit{Summa}, \textbf{String} \textit{Date}, \textbf{String} +\textit{PaymentName}) - добавление платежа + +\textbf{\emph{edit}} (\textbf{Int} \textit{Id}, \textbf{Int} \textit{IdPerson}, +\textbf{Int} \textit{Summa}, \textbf{String} \textit{Date}, \textbf{String} +\textit{PaymentName}) - редактирование платежа + +\textbf{\emph{del}} (\textbf{Int} \textit{Id}) - удаление + + +\end{document} + + + diff --git a/lib/gui/toolbar/format b/lib/gui/toolbar/format new file mode 100755 index 0000000..3bc73cb --- /dev/null +++ b/lib/gui/toolbar/format @@ -0,0 +1,69 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +###################################################### +# Format ToolBar + +menu insertsection.gif "Sections" { + cmd "AddTextFont title" "Title" "Alt-t" + cmd "AddTextFont author" "Author" "Alt-a" + cmd "AddTextFont date" "Date" "Alt-d" + cmd "AddTextCommand maketitle" "Make title" + cmd "AddTextDouble begin{tilepage} end{tilepage}" "Title page" + cmd "AddTextCommand tableofcontents" "Table of Contents" + cmd "AddTextCommand listoftables" "List of Tables" + cmd "AddTextCommand listoffigures "List of Figures" + cmd "AddTextDouble begin{thebibliography} end{thebibliography}" "The Bibliography" + cmd "AddTextCommand appendix "Appendix" + cmd separator + cmd "AddTextFont part" "Part" + cmd "AddTextFont chapter" "Chapter" + cmd "AddTextFont section" "Section" + cmd "AddTextFont subsection" "SubSection" + cmd "AddTextFont subsubsection" "SubSubSection" + cmd "AddTextFont paragraph" "Paragraph" + cmd "AddTextFont subparagraph" "SubParagraph" + +} +menu font_size.gif "Font size" { + cmd "AddTextFont tiny" "tiny" + cmd "AddTextFont scriptsize" "scriptsize" + cmd "AddTextFont footnotesize" "footnotesize" + cmd "AddTextFont small" "small" + cmd "AddTextFont normalsize" "Normal" + cmd "AddTextFont large" "large" + cmd "AddTextFont Large" "Large" + cmd "AddTextFont LARGE" "LARGE" + cmd "AddTextFont huge" "huge" + cmd "AddTextFont Huge" "Huge" +} + +menu font_width.gif "Font type" { + cmd "AddTextFont textrm" "Romanic" + cmd "AddTextFont textsf" "Sans Serif" + cmd "AddTextFont texttt" "Typewriter Typeset" + cmd separator + cmd "AddTextFont textmd" "Middle Face" + cmd "AddTextFont textbf" "Bold Face" + cmd separator + cmd "AddTextFont textup" "Up" + cmd "AddTextFont textit" "Italic" + cmd "AddTextFont textsl" "Slanted" + cmd "AddTextFont textsc" "Small Caps" +} +button "AddTextFont emph" font_emph.gif "Emphasise" +button "AddTextDouble begin{center} end{center}" align_center.gif "Align center" +button "AddTextDouble begin{left} end{left}" align_left.gif "Align left" +button "AddTextDouble begin{right} end{right}" align_right.gif "Align right" +button "AddTextDouble begin{verbatim} end{verbatim}" verb.gif "Verbatim" +Separator + + + + + + + + diff --git a/lib/gui/toolbar/insert b/lib/gui/toolbar/insert new file mode 100755 index 0000000..46f616b --- /dev/null +++ b/lib/gui/toolbar/insert @@ -0,0 +1,17 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +###################################################### + +button "AddText itemize" itemize.gif "Add itemize list" +button "AddText enumerate" numerate.gif "Add enumerate list" +button "AddText image" image.gif "Insert image" +Separator +button "InsertTableDialog" table.gif "Add table" +button "AddText date" date_time.gif "Insert curent date-time" "Alt-d" + + + + diff --git a/lib/gui/toolbar/main b/lib/gui/toolbar/main new file mode 100755 index 0000000..f24f90b --- /dev/null +++ b/lib/gui/toolbar/main @@ -0,0 +1,43 @@ +# Main Toolbar file +# useage : +# "Command" image.file "Hint for baloon" + +button "FileDialog new" new.gif "New file" +button "FileDialog open" open.gif "Open file" +button "FileDialog close" close.gif "Close" +Separator +button "FileDialog save" save.gif "Save file" +button "FileDialog save_as" save_as.gif "Save file as" +button "FileDialog save_all" save_all.gif "Save all" +Separator +button "CutPast undo" undo.gif "Undo" +Separator +button "CutPast cut" cut.gif "Cut into clipboard" +button "CutPast copy" copy.gif "Copy into clipboard" +button "CutPast paste" paste.gif "Paste from clipboard" +Separator +button "Find" find.gif "Find" +button "SpellCheck $nb.f[$nb raise].f.text" spellcheck.gif "Spell check" +Separator +button "Convert dvi" dvi.gif "Make DVI" +button "Preview dvi" dvi_preview.gif "View DVI" "Alt-F5" +button "Convert ps" ps.gif "Make PS" +button "Preview ps" ps_preview.gif "View PS" "Alt-F6" +button "Convert pdf" pdf.gif "Convert to PDF" +button "Preview pdf" pdf_preview.gif "View PDF" "Alt-F7" +button "Convert html" htmlconvert.gif "Convert to HTML" +button "Preview html" html_preview.gif "View HTML" +Separator +button "PrintDialog print" print.gif "Print ..." + + + + + + + + + + + + diff --git a/lib/gui/toolbar/math b/lib/gui/toolbar/math new file mode 100755 index 0000000..476bd70 --- /dev/null +++ b/lib/gui/toolbar/math @@ -0,0 +1,106 @@ +######################################################## +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +######################################################## +# Mathematical ToolBar +# Author: Constantin i Mikhailenko (Const) +######################################################## + +menu math/equation.gif "Math mode" { + cmd "AddTextDouble begin{math} end{math}" "math" + cmd "AddTextMath ( )" "( ... )" + cmd "AddTextMath $ $" "$ ... $" + cmd separator + cmd "AddTextDouble begin{displaymath}\n end{displaymath}" "displaymath" + cmd "AddTextMath \[ \]" "[ ... ]" + cmd "AddTextMath $$ $$" "$$ ... $$" + cmd separator + cmd "AddTextDouble begin{equation}\n end{equation}" "equation" + cmd "AddTextDouble begin{eqarray}\n end{eqarray}" "eqarray" +} + +menu math/alpha-nu.gif "Greek 1" { + imagecmd "AddTextCommand alpha" "\alpha" math/alpha.gif + imagecmd "AddTextCommand beta" "\beta" math/beta.gif + imagecmd "AddTextCommand gamma" "\gamma" math/gamma.gif + imagecmd "AddTextCommand delta" "\delta" math/delta.gif + imagecmd "AddTextCommand zeta" "\zeta" math/zeta.gif + imagecmd "AddTextCommand epsilon" "\epsilon" math/epsilon.gif + imagecmd "AddTextCommand varepsilon" "\varepsilon" math/varepsilon.gif + imagecmd "AddTextCommand eta" "\eta" math/eta.gif + imagecmd "AddTextCommand theta" "\theta" math/theta.gif + imagecmd "AddTextCommand vartheta" "\vartheta" math/vartheta.gif + imagecmd "AddTextCommand iota" "\iota" math/iota.gif + imagecmd "AddTextCommand kappa" "\kappa" math/kappa.gif + imagecmd "AddTextCommand lambda" "\lambda" math/lambda.gif + imagecmd "AddTextCommand mu" "\mu" math/mu.gif + imagecmd "AddTextCommand nu" "\nu" math/nu.gif +} + +menu math/xi-omega.gif "Greek 2" { + imagecmd "AddTextCommand xi" "\xi" math/xi.gif + imagecmd "AddTextCommand tau" "\tau" math/tau.gif + imagecmd "AddTextCommand upsilon" "\upsilon" math/upsilon.gif + imagecmd "AddTextCommand pi" "\pi" math/pi.gif + imagecmd "AddTextCommand varpi" "\varpi" math/varpi.gif + imagecmd "AddTextCommand rho" "\rho" math/rho.gif + imagecmd "AddTextCommand varrho" "\varrho" math/varrho.gif + imagecmd "AddTextCommand sigma" "\sigma" math/sigma.gif + imagecmd "AddTextCommand varsigma" "\varsigma" math/varsigma.gif + imagecmd "AddTextCommand o" "o" math/omikron.gif + imagecmd "AddTextCommand \phi" "\phi" math/phi.gif + imagecmd "AddTextCommand varphi" "\varphi" math/varphi.gif + imagecmd "AddTextCommand chi" "\chi" math/chi.gif + imagecmd "AddTextCommand psi" "\psi" math/psi.gif + imagecmd "AddTextCommand omega" "\omega" math/omega.gif +} + +menu math/omega.gif "Greek" { + imagecmd "AddTextCommand Gamma" "\Gamma" math/gamma.gif + imagecmd "AddTextCommand Delta" "\Delta" math/delta.gif + imagecmd "AddTextCommand Theta" "\Theta" math/theta.gif + imagecmd "AddTextCommand Xi" "\Xi" math/xi.gif + imagecmd "AddTextCommand Upsilon" "\Upsilon" math/upsilon.gif + imagecmd "AddTextCommand Pi" "\Pi" math/pi.gif + imagecmd "AddTextCommand Sigma" "\sigma" math/sigma.gif + imagecmd "AddTextCommand Phi" "\Phi" math/phi.gif + imagecmd "AddTextCommand Psi" "\Psi" math/psi.gif + imagecmd "AddTextCommand Omega" "\omega" math/omega.gif +} + +menu math/accent.gif "Accents" { + imagecmd "AddTextFont hat" "\hat{}" math/hat.gif + imagecmd "AddTextFont check" "\check{}" math/check.gif + imagecmd "AddTextFont breve" "\breve{}" math/breve.gif + imagecmd "AddTextFont acute" "\acute{}" math/acute.gif + imagecmd "AddTextFont grave" "\grave{}" math/grave.gif + imagecmd "AddTextFont tilde" "\tilde{}" math/tilde.gif + imagecmd "AddTextFont bar" "\bar{}" math/bar.gif + imagecmd "AddTextFont vec" "\vec{}" math/vec.gif + imagecmd "AddTextFont dot" "\dot{}" math/dot.gif + imagecmd "AddTextFont ddot" "\ddot{}" math/ddot.gif + cmd separator + imagecmd "AddTextFont widehat" "\widehat{}" math/widehat.gif + imagecmd "AddTextFont widetilde" "\widetilde{}" math/widetilde.gif +} + +menu math/math_font.gif "Mathematical fonts" { + cmd "AddTextFont mathnormal" "Normal" + cmd separator + cmd "AddTextFont mathrm" "Romanic" + cmd "AddTextFont mathbf" "Boldface" + cmd "AddTextFont mathsf" "SansSerif" + cmd "AddTextFont mathtt" "TypeWriter Typeset" + cmd "AddTextFont mathit" "Italic" + cmd separator + cmd "AddTextFont mathcal" "Calligraphic" + cmd separator + cmd "AddTextFont boldmath" "BoldMath" + cmd "AddTextFont unboldmath" "UnboldMath" +} + + + + diff --git a/lib/modules/about.tcl b/lib/modules/about.tcl new file mode 100755 index 0000000..c29a661 --- /dev/null +++ b/lib/modules/about.tcl @@ -0,0 +1,53 @@ +######################################################## +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +######################################################## + +## ABOUT DIALOG ## +proc AboutDialog {} { + global dir tree nb ver font release + + set w .about + if {[winfo exists $w]} { + destroy $w + } + toplevel $w + wm title $w [::msgcat::mc "About ..."] + #wm resizable $w 0 0 + wm transient $w . + + frame $w.frmImg -borderwidth 2 -relief ridge -background black + image create photo imgAbout -format gif -file [file join $dir(img) tle.gif] + image create photo imgConero -format gif -file [file join $dir(img) conero.gif] + + label $w.frmImg.lblImg -image imgAbout -background black + + pack $w.frmImg.lblImg -side top -fill x + + frame $w.frmlbl -borderwidth 2 -relief ridge -background "#8700d1" + label $w.frmlbl.lblVersion -text "[::msgcat::mc Version] $ver$release"\ + -background "#8700d1" -foreground black + label $w.frmlbl.lblAuthorName -text "[::msgcat::mc Authors]:"\ + -background "#8700d1" -foreground black + label $w.frmlbl.lblAuthor1 -text "Sergey Kalinin (aka BanZaj), banzaj@lrn.ru"\ + -background "#8700d1" -foreground black + label $w.frmlbl.lblAuthor2 -text "Constantin I Makhailenko (aka Const), const@mail.ru"\ + -background "#8700d1" -foreground black + + pack $w.frmlbl.lblVersion $w.frmlbl.lblAuthorName $w.frmlbl.lblAuthor1 $w.frmlbl.lblAuthor2 -side top -padx 5 + pack $w.frmImg -side top -fill x + pack $w.frmlbl -side top -expand true -fill both + + bind $w "destroy .about" + bind $w "destroy .about" + # +} + + + + + + + diff --git a/lib/modules/addtext.tcl b/lib/modules/addtext.tcl new file mode 100755 index 0000000..c4d2c13 --- /dev/null +++ b/lib/modules/addtext.tcl @@ -0,0 +1,234 @@ +###################################################### +# TkTeXEditor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +###################################################### + +proc AddText {action} { + global dir font color nb + set node [$nb raise] + if {$node == "" || $node == "debug"} {return} + set text "$nb.f$node.f.text" + set pos [$text index insert] + set curLine [lindex [split $pos "."] 0] + set cursor [lindex [split $pos "."] 1] + set editLine [$text get $curLine.0 $pos] + set types { + {"EPS" {.eps}} + {"PDF" {.pdf}} + {"PNG" {.png}} + {"JPG" {.jpg}} + {"GIF" {.gif}} + } + set selIndex [$text tag ranges sel] + if {$selIndex != ""} { + set posBegin [lindex $selIndex 0] + set posEnd [lindex $selIndex 1] + set curLine [string range $posBegin 0 [expr [string first "\." $posBegin] - 1]] + set cursor [string range $posBegin [expr [string first "\." $posBegin] + 1] end] + set endLine [string range $posEnd 0 [expr [string first "\." $posEnd] - 1]] + set endCur [string range $posEnd [expr [string first "\." $posBegin] + 1] end] + set selText [$text get $posBegin $posEnd] + } else { + set posBegin "$curLine.$cursor" + set endLine [expr $curLine +1] + set endCur 0 + } + switch -- $action { + enumerate { + #insert - 1 chars wordstart" "insert wordend - 1 chars" + $text insert $posBegin "\\begin\{enumerate\}\n" + $text insert [expr $curLine +1].0 "\\item \n" + $text insert [expr $curLine +2].0 "\\end\{enumerate\}" + set t [$text get $posBegin $curLine.end] + set curPos "[expr $curLine + 1]\.end" + } + image { + set file [tk_getOpenFile -initialdir $dir(doc) -filetypes $types -parent .\ + -title "[::msgcat::mc "Select image"]"] + #set fileName [file tail $file] + if {$file == ""} { + return + } + $text insert $posBegin "\\includegraphics\[\]\{$file\}\n" + set t [$text get $posBegin $curLine.end] + set curPos "$curLine\.[string last "\\" $t]" + } + itemize { + $text insert $posBegin "\\begin\{itemize\}\n" + $text insert [expr $curLine +1].0 "\\item \n" + $text insert [expr $curLine +2].0 "\\end\{itemize\}" + set t [$text get $posBegin $curLine.end] + set curPos "[expr $curLine +1]\.end" + } + item { + set editLine [$text get [expr $curLine - 1].0 $pos] + if [regexp -nocase -all -- {(\\item)} $editLine match v1] { + $text insert $curLine.0 "\\item " + set curPos "$curLine\.6" + } else { + return + } + } + date { + set editLine [$text get [expr $curLine - 1].0 $pos] + set unixTime [exec date +%s] + set dateTime [clock format $unixTime -format "%d.%m.%Y, %H:%M:%S"] + $text insert $curLine.0 "$dateTime" + set curPos "$curLine\.end" + } + } + $text mark set insert $curPos + $text see insert +} + +###################################################### + +proc AddTextFont {action} { + global dir font color nb + set node [$nb raise] + if {$node == "" || $node == "debug"} {return} + set text "$nb.f$node.f.text" + set pos [$text index insert] + set curLine [lindex [split $pos "."] 0] + set cursor [lindex [split $pos "."] 1] + set editLine [$text get $curLine.0 $pos] + set selIndex [$text tag ranges sel] + if {$selIndex != ""} { + set posBegin [lindex $selIndex 0] + set posEnd [lindex $selIndex 1] + set curLine [string range $posBegin 0 [expr [string first "\." $posBegin] - 1]] + set cursor [string range $posBegin [expr [string first "\." $posBegin] + 1] end] + set endLine [string range $posEnd 0 [expr [string first "\." $posEnd] - 1]] + set endCur [string range $posEnd [expr [string first "\." $posBegin] + 1] end] + set selText [$text get $posBegin $posEnd] + $text insert $endLine.$endCur "\}" + $text insert $posBegin "\\$action\{" + set t [$text get $posBegin $curLine.end] + set curPos "$endLine\.end" + $text mark set insert $curPos + } else { + set posBegin "$curLine.$cursor" + set endLine [expr $curLine +0] + $text insert $posBegin "\\$action\{\}" + $text mark set insert "$endLine.end - 1 chars" + } + $text see insert +} + +proc AddTextCommand {action} { + global dir font color nb + set node [$nb raise] + if {$node == "" || $node == "debug"} {return} + set text "$nb.f$node.f.text" + set pos [$text index insert] + set curLine [lindex [split $pos "."] 0] + set cursor [lindex [split $pos "."] 1] + set editLine [$text get $curLine.0 $pos] + set selIndex [$text tag ranges sel] + if {$selIndex != ""} { + set posBegin [lindex $selIndex 0] + set posEnd [lindex $selIndex 1] + set curLine [string range $posBegin 0 [expr [string first "\." $posBegin] - 1]] + set cursor [string range $posBegin [expr [string first "\." $posBegin] + 1] end] + set endLine [string range $posEnd 0 [expr [string first "\." $posEnd] - 1]] + set endCur [string range $posEnd [expr [string first "\." $posBegin] + 1] end] + set selText [$text get $posBegin $posEnd] + $text insert $posBegin "\\$action " + set t [$text get $posBegin $curLine.end] + set curPos "$endLine\.end" + $text mark set insert $curPos + } else { + set posBegin "$curLine.$cursor" + set endLine [expr $curLine +0] + $text insert $posBegin "\\$action " + $text mark set insert "$endLine.end" + } + $text see insert +} + +proc AddTextDouble {beginText endText} { + global dir font color nb + set node [$nb raise] + if {$node == "" || $node == "debug"} {return} + set text "$nb.f$node.f.text" + set pos [$text index insert] + set curLine [lindex [split $pos "."] 0] + set cursor [lindex [split $pos "."] 1] + set editLine [$text get $curLine.0 $pos] + set selIndex [$text tag ranges sel] + + if {$selIndex != ""} { + set posBegin [lindex $selIndex 0] + set posEnd [lindex $selIndex 1] + set curLine [string range $posBegin 0 [expr [string first "\." $posBegin] - 1]] + set cursor [string range $posBegin [expr [string first "\." $posBegin] + 1] end] + set endLine [string range $posEnd 0 [expr [string first "\." $posEnd] - 1]] + set endCur [string range $posEnd [expr [string first "\." $posBegin] + 1] end] + set selText [$text get $posBegin $posEnd] + if {[string range $endText 0 1] == "\n"} { + $text insert $endLine.$endCur " \\$endText" + } else { + $text insert $endLine.$endCur "\n\\[string trim $endText "\n"]" + } + $text insert $posBegin "\\$beginText " + } else { + set posBegin "$curLine.$cursor" + if {[string range $endText 0 1] == "\n"} { + $text insert $posBegin "\\$beginText \\$endText" + } else { + $text insert $posBegin "\\$beginText \n\\[string trim $endText "\n"]" + puts "$beginText $endText" + } + } + + set ind [expr [string length $beginText] + 2] + set curPos "$posBegin + $ind chars" + $text mark set insert $curPos + $text see insert +} + +proc AddTextMath {beginText endText} { + global dir font color nb + set node [$nb raise] + if {$node == "" || $node == "debug"} {return} + set text "$nb.f$node.f.text" + set pos [$text index insert] + set curLine [lindex [split $pos "."] 0] + set cursor [lindex [split $pos "."] 1] + set editLine [$text get $curLine.0 $pos] + set selIndex [$text tag ranges sel] + + if {$selIndex != ""} { + set posBegin [lindex $selIndex 0] + set posEnd [lindex $selIndex 1] + set curLine [string range $posBegin 0 [expr [string first "\." $posBegin] - 1]] + set cursor [string range $posBegin [expr [string first "\." $posBegin] + 1] end] + set endLine [string range $posEnd 0 [expr [string first "\." $posEnd] - 1]] + set endCur [string range $posEnd [expr [string first "\." $posBegin] + 1] end] + set selText [$text get $posBegin $posEnd] + if {[string range $endText 0 1] == "\n"} { + $text insert $endLine.$endCur " $endText" + } else { + $text insert $endLine.$endCur "[string trim $endText "\n"]" + } + $text insert $posBegin "$beginText " + } else { + set posBegin "$curLine.$cursor" + if {[string range $endText 0 1] == "\n"} { + $text insert $posBegin "$beginText \\$endText" + } else { + $text insert $posBegin "$beginText [string trim $endText "\n"]" + } + } + set ind [expr [string length $beginText] + 2] + set curPos "$posBegin + $ind chars" + $text mark set insert $curPos + $text see insert +} + + + + + diff --git a/lib/modules/baloon.tcl b/lib/modules/baloon.tcl new file mode 100755 index 0000000..6600a3a --- /dev/null +++ b/lib/modules/baloon.tcl @@ -0,0 +1,84 @@ +####################################################################### +# Baloon help +# Author: Alexander Dederer +# Usage: +# Set balloon tips to widget: +# balloon $widget set "Hello World" +# balloon [button .exit -text "exit" -command exit] set "Hello world" +# +# Clear ballon tips from widget: +# balloon $widget clear +# +# Show balloon tips on widget: +# balloon $widget show "Hello World" +####################################################################### + +proc balloon { widget action args } { + global BALLOON font + + switch -- $action { + set { + if { $args != {{}} } { + balloon $widget clear + #bind $widget "after 1000 [list balloon %W show $args mousepointer %X %Y]" + #bind $widget "catch { destroy %W.balloon }" + bind $widget " balloon $widget show $args " + bind $widget " wm withdraw .bubble " + } + } + show { + if ![winfo exists .bubble] { + toplevel .bubble -relief flat -background black -bd 1 + wm withdraw .bubble + update + array set attrFont [font actual fixed] + set attrFont(-size) [expr $attrFont(-size) - 2] + eval pack [message .bubble.txt -aspect 5000 -bg lightyellow \ + -font $font(normal) -text [lindex $args 0]] + pack .bubble.txt + wm transient .bubble . + wm overrideredirect .bubble 1 + bind .bubble "wm withdraw .bubble" + } + + if {$args == ""} { wm withdraw .bubble } + set text [lindex $args 0] + + set BALLOON $text + switch $text { + "" { wm withdraw .bubble ; update } + "default" { + after 1000 "raise_balloon $widget {$text}" + after 7000 "if { \$BALLOON == {$text} } { wm withdraw .bubble ; update }" + } + } ;# switch + } + clear { + catch { destroy .balloon } + bind $widget {} + bind $widget {} + } + } ;# switch action +} ;# proc balloon + + +proc raise_balloon {widget text} { + global BALLOON + + if { $BALLOON != $text } { wm withdraw .bubble ; update ; return } + set cur_widget [winfo containing [winfo pointerx .] [winfo pointery .]] + if { $cur_widget != $widget } { return } + + raise .bubble + .bubble.txt configure -text $text + set b_x [expr [winfo pointerx .] - [winfo reqwidth .bubble]/2] + set b_y [expr [winfo pointery .] + 15] + wm geometry .bubble +$b_x+$b_y + wm deiconify .bubble + update + } ;# proc raise_balloon + + + + + diff --git a/lib/modules/completition.tcl b/lib/modules/completition.tcl new file mode 100755 index 0000000..4f91931 --- /dev/null +++ b/lib/modules/completition.tcl @@ -0,0 +1,163 @@ +########################################################### +# Tcl/Tk Project Manager # +# Distrubuted under GPL # +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru # +# Author: Sergey Kalinin (aka BanZaj) banzaj@lrn.ru # +########################################################### +# AutoCompletition Procedure # +# Author Alex DEDERER # +# Modify by Sergey (BanZaj) Kalinin 23.05.2002 # +########################################################### + +proc auto_completition { widget } { + set start_word [$widget get "insert - 1 chars wordstart" insert] + set box [$widget bbox insert] + set box_x [expr [lindex $box 0] + [winfo rootx $widget] ] + set box_y [expr [lindex $box 1] + [winfo rooty $widget] + [lindex $box 3] ] + + set cnt 0 + set pos "1.0" + set last_pos "" + set pattern "$start_word\\w*" + + set list_word($start_word) 1 + while { ([set start [$widget search -count cnt -regexp -- $pattern $pos end]] != "") } { + set word [$widget get $start "$start + $cnt chars"] + if { ![string equal $start_word $word] } { set list_word($word) 1 } + set pos [$widget index "$pos + [expr $cnt + 1] chars"] + if { [string equal $last_pos $pos] } { break } + set last_pos $pos + } ;# while + + bindtags $widget [list CompletitionBind [winfo toplevel $widget] $widget Text sysAfter all] + bind CompletitionBind "bindtags $widget {[list [winfo toplevel $widget] $widget Text sysAfter all]}; catch { destroy .aCompletition }" + bind CompletitionBind { auto_completition_key %W %K %A ; break} + eval auto_completition_win $box_x $box_y [array names list_word] +} ;# proc auto_completition + +## PROCEDURE LIST ## +## by BanZaj ## +proc AutoComplit {} { + global cmd activeFile nb + set node $activeFile + if {$node == ""} {return} + set widget "$nb.f$node.f.text" + + set start_word [$widget get "insert - 1 chars wordstart" insert] + set box [$widget bbox insert] + set box_x [expr [lindex $box 0] + [winfo rootx $widget] ] + set box_y [expr [lindex $box 1] + [winfo rooty $widget] + [lindex $box 3] ] + + set cnt 0 + set pos "1.0" + set last_pos "" + set pattern "$start_word\\w*" + set i 0 + + for {set j 0} {$j <= [llength $cmd(all)]} {incr j} { + set line [lindex $cmd(all) $j] + if [regexp -nocase -all -- {(\\)([a-zA-Z]*)(\{\})} $line word] { + set word [string trim $word "\\"] + if {[string match "$start_word*" $word]} { + set list_word($word) $word + incr i + } + } + if {[string match "$start_word*" $line]} { + set list_word($line) $line + incr i + } + } + if {[array names list_word] == ""} { + return + } + bindtags $widget [list CompletitionBind [winfo toplevel $widget] $widget Text sysAfter all] + bind CompletitionBind "bindtags $widget {[list [winfo toplevel $widget] $widget Text sysAfter all]}; catch { destroy .aCompletition }" + bind CompletitionBind {auto_completition_key %W %K %A ; break} + eval auto_completition_win $box_x $box_y [array names list_word] +} ;# proc auto_completition_proc + + +proc auto_completition_win { x y args} { + set win .aCompletition + if { [winfo exists $win] } { destroy $win } + toplevel $win + wm transient $win . + wm overrideredirect $win 1 + + listbox $win.lBox -width 30 -border 2 -yscrollcommand "$win.yscroll set" -border 1 + scrollbar $win.yscroll -orient vertical -command "$win.lBox yview" -width 13 -border 1 + pack $win.lBox -expand true -fill y -side left + pack $win.yscroll -side left -expand false -fill y + + foreach { word } $args { + $win.lBox insert end $word + } ;# foreach | insert all word + + catch { $win.lBox activate 0 ; $win.lBox selection set 0 0 } + + if { [set height [llength $args]] > 10 } { set height 10 } + $win.lBox configure -height $height + + bind $win " destroy $win " + bind $win.lBox " destroy $win " + + wm geom $win +$x+$y +} ;# auto_completition_win + + + +proc auto_completition_key { widget K A } { + set win .aCompletition + set ind [$win.lBox curselection] + + switch -- $K { + Prior { + set up [expr [$win.lBox index active] - [$win.lBox cget -height]] + if { $up < 0 } { set up 0 } + $win.lBox activate $up + $win.lBox selection clear 0 end + $win.lBox selection set $up $up + } + Next { + set down [expr [$win.lBox index active] + [$win.lBox cget -height]] + if { $down >= [$win.lBox index end] } { set down end } + $win.lBox activate $down + $win.lBox selection clear 0 end + $win.lBox selection set $down $down + } + Up { + set up [expr [$win.lBox index active] - 1] + if { $up < 0 } { set up 0 } + $win.lBox activate $up + $win.lBox selection clear 0 end + $win.lBox selection set $up $up + } + Down { + set down [expr [$win.lBox index active] + 1] + if { $down >= [$win.lBox index end] } { set down end } + $win.lBox activate $down + $win.lBox selection clear 0 end + $win.lBox selection set $down $down + } + Return { + $widget delete "insert - 1 chars wordstart" "insert wordend - 1 chars" + $widget insert "insert" [$win.lBox get [$win.lBox curselection]] + #$widget mark set insert "insert wordend - 1 chars" + #$widget see insert + eval [bind CompletitionBind ] + } + default { + $widget insert "insert" $A + eval [bind CompletitionBind ] + } + } +} ;# proc auto_completition_key + + + + + + + + diff --git a/lib/modules/convert.tcl b/lib/modules/convert.tcl new file mode 100755 index 0000000..605c503 --- /dev/null +++ b/lib/modules/convert.tcl @@ -0,0 +1,252 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +###################################################### + + +proc Latex2Html {} { + global tree module cmdString + set selFiles [$tree selection get] + if {[llength $selFiles] == 0} { + set answer [tk_messageBox\ + -message "[::msgcat::mc "Don't selected file"]"\ + -type ok -icon warning\ + -title [::msgcat::mc "Warning"]] + case $answer { + ok {return 0} + } + } + if {[llength $selFiles] == 1} { + if {$selFiles != ""} { + set file [$tree itemcget $selFiles -data] + } + CommandStringDialog $file + } + #puts $command +} +proc ConvertDialog {action} { + global nb files font color cmdString module tcl_platform module convert_cmd activeFile act + set act $action + if [info exists activeFile] { + set nod $activeFile + } else { + return + } + if {[info exists files($nod)] == 0} { + return + } + set file [lindex $files($nod) 0] + + set w .cmd + # destroy the find window if it already exists + if {[winfo exists $w]} { + destroy $w + } + + toplevel $w + wm title $w [::msgcat::mc "Command options"] + wm resizable $w 0 0 + wm transient $w . + frame $w.frmCombo -borderwidth 1 -background $color(bg) + frame $w.frmBtn -borderwidth 1 -background $color(bg) + pack $w.frmCombo $w.frmBtn -side top -fill x + + # set combo [entry $w.frmCombo.entFind] + label $w.frmCombo.lblModule -text "[::msgcat::mc "Convert to"] \"$action\"" -background $color(bg) + label $w.frmCombo.lblFile -text "[::msgcat::mc "File"] \"$file\"" -background $color(bg) + set combo [entry $w.frmCombo.txtString] + + pack $w.frmCombo.lblModule $w.frmCombo.lblFile $combo -fill x -padx 2 -pady 2 -side top + + button $w.frmBtn.btnFind -text [::msgcat::mc "Run"]\ + -font $font(normal) -width 12 -relief groove -background $color(bg)\ + -command { + set convert_cmd($act) [.cmd.frmCombo.txtString get] + Convert $act + destroy .cmd + } + button $w.frmBtn.btnCancel -text [::msgcat::mc "Close"]\ + -relief groove -width 12 -font $font(normal) -background $color(bg)\ + -command "destroy $w" + pack $w.frmBtn.btnFind $w.frmBtn.btnCancel -fill x -padx 2 -pady 2 -side left + + bind $w { + set convert_cmd($act) [.cmd.frmCombo.txtString get] + Convert $act + destroy .cmd + } + bind $w "destroy $w" + $combo insert end "$convert_cmd($action)" + focus -force $combo + +} + +proc Convert {action} { + global dir nb files font activeFile tcl_platform module convert_cmd makeThread tree + set curDir [pwd] + #set node [$nb raise] + if [info exists activeFile] { + set nod $activeFile + while {[set parentNode [$tree parent $nod]] != "root"} { + set nod $parentNode + } + } else { + return + } + if {[info exists files($nod)] == 0} { + return + } + if {$module(convert_$action) == ""} { + set answer [tk_messageBox\ + -message "[::msgcat::mc "Don't find programm"] $convert_cmd($action)"\ + -type ok -icon warning\ + -title [::msgcat::mc "Warning"]] + case $answer { + ok {return 0} + } + } + + set text "$nb.f$nod.f.text" + set fullPath [lindex $files($nod) 0] + set folder [file dirname $fullPath] + set file [file tail $fullPath] + set ext [string trim [file extension $file] {.}] + set name [file rootname $file] + + ## + set node "debug" + if {[$nb index $node] != -1} { + $nb delete debug + } + set w [$nb insert end $node -text [::msgcat::mc "Running project"]] + # create array with file names # + set w [frame $w.f] + pack $w -side top -fill both -expand true + + frame $w.frame -borderwidth 2 -relief ridge + pack $w.frame -side top -fill both -expand true + + + text $w.frame.text -yscrollcommand "$w.frame.yscroll set" \ + -relief sunken -wrap word -highlightthickness 0 -font $font(normal)\ + -selectborderwidth 0 -selectbackground #55c4d1 -width 10 -height 10 + scrollbar $w.frame.yscroll -relief sunken -borderwidth {1} -width {10} -takefocus 0 \ + -command "$w.frame.text yview" + + pack $w.frame.text -side left -fill both -expand true + pack $w.frame.yscroll -side left -fill y + + ## READLINE WIDGET ## + frame $w.frmReadline -borderwidth 2 -relief ridge -height 5 + pack $w.frmReadline -side top -fill x + text $w.frmReadline.text2 -yscrollcommand "$w.frmReadline.yscroll2 set" \ + -relief sunken -wrap word -highlightthickness 0 -font $font(normal)\ + -selectborderwidth 0 -selectbackground #55c4d1 -width 10 -height 5 + scrollbar $w.frmReadline.yscroll2 -relief sunken -borderwidth {1} -width {10} -takefocus 0 \ + -command "$w.frmReadline.text2 yview" + pack $w.frmReadline.text2 -side left -fill both -expand true + pack $w.frmReadline.yscroll2 -side left -fill y + + bind $w.frmReadline.text2 ReadLine + + balloon $w.frmReadline.text2 set [::msgcat::mc "Enter LaTeX command here and push Enter"] + + pane::create $w.frame $w.frmReadline -orient horizontal -percent 0.9 + + + # key bindings # + + $nb raise $node + #insert debug data into text widget # + set pos [$w.frame.text index insert] + set lineNum [lindex [split $pos "."] 0] + $w.frame.text insert end "[::msgcat::mc "Work with file"] $fullPath\n" + + if {[catch {cd $folder}] != 0} {return ""} + FileDialog save + set cmdString $convert_cmd($action) + if [regexp -nocase "%dirName" $convert_cmd($action) v] { + regsub -all -- {%dirName} $cmdString $folder cmdString + puts "$cmdString" + } + if [regexp -nocase "%fileName" $convert_cmd($action) v] { + regsub -all -- {%fileName} $cmdString $name cmdString + puts "$cmdString" + } else { + set cmdString "$convert_cmd($action) $fullPath" + } + puts "$cmdString" + $w.frame.text insert end "[::msgcat::mc "Make"] $action [::msgcat::mc "file"]\n" + $w.frame.text insert end "$cmdString\n\n" + + set pipe [open "|$cmdString" "w+"] + set makeThread $pipe + + $w.frame.text insert end "----------------- [::msgcat::mc "Programm output"] -----------------\n" + $w.frame.text tag add bold $lineNum.0 $lineNum.end + + focus -force $w.frmReadline.text2 + + fileevent $pipe readable [list DebugInfo $w.frame.text $pipe $folder] + fconfigure $pipe -buffering none -blocking no + catch {cd $curDir} +} + +proc ReadLine {} { + global makeThread + set pos [.frmBody.frmEditor.noteBook.fdebug.f.frmReadline.text2 index insert] + set lineNumber [lindex [split $pos "."] 0] + set cmd [.frmBody.frmEditor.noteBook.fdebug.f.frmReadline.text2 get $lineNumber.0 $lineNumber.end] + puts $cmd + fileevent $makeThread writable + if [info exists makeThread] { + puts $makeThread "$cmd" + } + +} + +proc ConvertImage {file} { + global dir convert_cmd render activeFile files nb thumb + set file [string trimleft [string trimright $file "\}"] "\{"] + set inFormat [GetExtention $file] + set name [file rootname [file tail $file]] + set imgFile "$name.$thumb(format)" + puts "$file\t$imgFile" + set _dir [file join [file dirname $file] .thumb] + + if {[file exists $_dir] == 0} { file mkdir $_dir } + if [file exists [file join $_dir $imgFile]] { + puts "File exists [file join $_dir $imgFile]" + return "[file join $_dir $imgFile]" + } else { + puts "$convert_cmd(img) +adjoin +antialias -quality 10 -transparent $render(bg) -density $render(res) $file $_dir/$imgFile" + } + + #set file [file tail $file] + if {$render(trans) == 1} { + if {$render(aa) == 1} { + catch [exec $convert_cmd(img) +adjoin -antialias -quality 10 -transparent $render(bg) -scale $thumb(resolution) $file [file join $_dir $imgFile]] err + } else { + catch [exec $convert_cmd(img) +adjoin +antialias -quality 10 -transparent $render(bg) -scale $thumb(resolution) $file [file join $_dir $imgFile]] err + } + } else { + if {$render(aa) == 1} { + catch [exec $convert_cmd(img) +adjoin -antialias -quality 10 -scale $thumb(resolution) $file [file join $_dir $imgFile]] err + } else { + catch [exec $convert_cmd(img) +adjoin +antialias -quality 10 -scale $thumb(resolution) $file [file join $_dir $imgFile]] err + } + } + if {$err != ""} { + set answer [tk_messageBox -message "$err"\ + -type ok -icon warning -title [::msgcat::mc "Warning"]] + case $answer { + ok {return} + } + puts $err + } + return "[file join $_dir $imgFile]" +} + + diff --git a/lib/modules/editor.tcl b/lib/modules/editor.tcl new file mode 100755 index 0000000..3d5f58f --- /dev/null +++ b/lib/modules/editor.tcl @@ -0,0 +1,674 @@ +######################################################### +# TkTeXeditor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lrn", 2000, http//conero.lrn.ru +######################################################### + + +## FILE EDITOR WINDOW ## +proc EditFile {file} { + global dir font tree nb files color files index status activeFile treeStruct ver + global editor backup status replace sysenc release + wm title . "TkLaTeXEditor $ver$release - $file" + + if {[file exists $file] == 0} { + set answer [tk_messageBox -message "$f [::msgcat::mc "File not found"]"\ + -type ok -icon warning -title [::msgcat::mc "Warning"]] + case $answer { + ok {return} + } + } + + set fileName [file tail $file] + set fileDir [file dirname $file] + set dir(current) $fileDir + puts "============ $fileName $fileDir" + set node [InsertTreeNode $fileName $fileDir] + #set node [NodeInsert $fileName $fileDir ""] + set activeFile $node + set replace 0 ;# for Overwrite procedure# execute external editor # + if {$editor(extern)=="Yes"} { + set pipe [open "|$editor(prog) $file" "r"] + fileevent $pipe readable + fconfigure $pipe -buffering none -blocking no + return + } + ## check active file and if them don't exists return 0 + if {[info exists files($node)] != 1} { + set files($node) [list $file 0] + set w [$nb insert end $node -text "$fileName"] + } else { + # puts "$file - already opened" + return + } + ## update statusbar info + $status(fileAttr) configure -text "[FileAttr $file]" + $status(fileSize) configure -text "[file size $file] b." + $status(encode) configure -text "[lindex $files($node) 2]" + + ## create frames and text widget # + frame $w.f -borderwidth 2 -relief ridge + pack $w.f -side top -fill both -expand true + + #supertext::text + supertext::text $w.f.text -yscrollcommand "$w.f.yscroll set" \ + -relief sunken -wrap $editor(wrap) -highlightthickness 0 -font $font(editNormal)\ + -background $color(editBg) -foreground $color(editFg)\ + -selectborderwidth 0 -selectbackground $color(selectbg) -width 10 + # lines numbering + + #set txtLineNumber [text $w.f.text_lines -yscrollcommand "$w.f.yscroll set" \ + #-relief sunken -wrap $editor(wrap) -highlightthickness 0 -font $font(editNormal)\ + #-background $color(lineNumberBg) -foreground $color(lineNumberFg)\ + #-selectborderwidth 0 -selectbackground $color(selectbg) -width 5] + + scrollbar $w.f.yscroll -relief sunken -borderwidth {1} -width {10} -takefocus 0 \ + -command "$w.f.text yview" + + #pack $w.f.text_lines -side left -fill y + pack $w.f.text -side left -fill both -expand true + pack $w.f.yscroll -side left -fill y + + $nb raise $node + ## loadig tags for highlight procedure + LoadTag $w.f.text + #puts $w.f.text + ## BACKUP FILE CREATED ## + if {$backup(create) == "Yes"} { + file copy -force -- $file [file join $dir(tmp) $fileName~] + } + ## OPENED FILE ## + set fHandle [open "$file" r] + set sourceEnc [DocRecode $fHandle] + if {$sourceEnc == ""} { + set sourceEnc [encoding system] + } + lappend files($node) "$sourceEnc" ;# added encoding information + $status(encode) configure -text "[lindex $files($node) 2]" + + set lineNumber 1 + $treeStruct delete [$treeStruct nodes root] ;# delete all info about old structure + while {[gets $fHandle line]>=0} { + set line [encoding convertfrom $sourceEnc $line] + $w.f.text insert end "[string trimright $line]\n" + InsertStruct $node $line $lineNumber $fileDir + HighLightTEX $w.f.text $line $lineNumber $node + #$txtLineNumber insert end "$lineNumber\n" + incr lineNumber + } + close $fHandle + # key bindings # + set text $w.f.text + bind $text GoToLine + bind $text GoToLine + bind $text Find + bind $text Find + #bind $text SplitWindow + #bind $text {ConvertDialog ps} + #bind $text {ConvertDialog pdf} + + bind $text ReplaceDialog + bind $text ReplaceDialog + #bind $text {ReplaceCommand $w.frame.text 1} + bind $text {FileDialog save} + bind $text {FileDialog save} + bind $text {FileDialog save_as} + bind $text {FileDialog save_as} + bind $text {FileDialog close} + bind $text {FileDialog close} + bind $text "tk_textCut $w.f.text;break" + bind $text "tk_textCut $w.f.text;break" + bind $text "tk_textCopy $w.f.text;break" + bind $text "tk_textCopy $w.f.text;break" + bind $text "tk_textPaste $w.f.text;break" + bind $text "tk_textPaste $w.f.text;break" + bind $text exit + bind $text exit + bind $text "$text undo" + bind $text "$text undo" + bind $text AutoComplit + bind $text AutoComplit + bind $text "GenerateFormula math" + bind $text "GenerateFormula math" + bind $text "GenerateFormula text" + bind $text "GenerateFormula text" + bind $text {$status(pos) configure -text [%W index insert]} + bind $text {OverWrite} + bind $text {catch [PopupMenu %W %X %Y]} + bind $text { + AddText item + set pos [%W index insert] + set line [lindex [split $pos "."] 0] + set editLine [%W get $line.0 $pos] + HighLightTEX %W $editLine $line [$nb raise] + set node [$nb raise] + if {$node == "" || $node == "debug" || $node == "settings" || $node == "about"} {return 1} + if {[lindex $files($node) 1] == 0} { + set files($node) [list [lindex $files($node) 0] 1 [lindex $files($node) 2]] + $status(active) configure -text [::msgcat::mc "File modify"] + $nb itemconfigure $node -foreground $color(editTitleModify) + } + } + + bind $text { + set node [$nb raise] + if {$node == "" || $node == "debug" || $node == "settings" || $node == "about"} {return 1} + set text "$nb.f$node.f.text" + set pos [$text index insert] + set line [lindex [split $pos "."] 0] + set symbol [lindex [split $pos "."] 1] + set editLine [$text get $line.0 $pos] + HighLightTEX $text $editLine $line $node + $status(pos) configure -text [$text index insert];# cursor position + if {$symbol >= $editor(strLen)} { + if {[Key %k] == "true"} { + + if {$editor(strWrap) == "Yes"} { + #$text insert $line.end "\n" + set p [$text search -backward -regexp -- {\s} $pos $line.0] + if {$p !=""} { + $text insert "$p + 1 chars" "\n" + } + } + } + } + if {[Key %k] == "true"} { + if {[lindex $files($node) 1] == 0} { + set files($node) [list [lindex $files($node) 0] 1 [lindex $files($node) 2]] + $status(active) configure -text [::msgcat::mc "File modify"] + $nb itemconfigure $node -foreground $color(editTitleModify) + } + } + } + bind $text { + if {[Key %k] == "true"} { + ReplaceChar %W + } + set node [$nb raise] + if {$node == "" || $node == "debug" || $node == "settings" || $node == "about"} {return 1} + set text "$nb.f$node.f.text" + set pos [$text index insert] + set line [lindex [split $pos "."] 0] + set symbol [lindex [split $pos "."] 1] + set editLine [$text get $line.0 $pos] + HighLightTEX $text $editLine $line $node + $status(pos) configure -text [$text index insert];# cursor position + if {$symbol >= $editor(strLen)} { + if {[Key %k] == "true"} { + if {$editor(strWrap) == "Yes"} { + #$text insert $line.end "\n" + set p [$text search -backward -regexp -- {\s} $pos $line.0] + if {$p !=""} { + $text insert "$p + 1 chars" "\n" + } + } + } + } + } + bind $text { + if {[Key %k] == "true"} { + ReplaceChar %W + } + } + bind $text { + set node [$nb raise] + if {$node == "" || $node == "debug" || $node == "settings" || $node == "about"} {return 1} + if {[lindex $files($node) 1] == 0} { + set files($node) [list [lindex $files($node) 0] 1 [lindex $files($node) 2]] + $status(active) configure -text [::msgcat::mc "File modify"] + $nb itemconfigure $node -foreground $color(editTitleModify) + } + } + bind $text { + set i -1 + switch -- [%W get "insert - 1 chars"] { + \{ {set i [_searchCloseBracket %W \{ \} insert end]} + \[ {set i [_searchCloseBracket %W \[ \] insert end]} + ( {set i [_searchCloseBracket %W ( ) insert end]} + \} {set i [_searchOpenBracket %W \{ \} insert 1.0]} + \] {set i [_searchOpenBracket %W \[ \] insert 1.0]} + ) {set i [_searchOpenBracket %W ( ) insert 1.0]} + } ;# switch + if { $i != -1 } { + %W mark set insert $i + %W see insert + } + } ;# bind + bindtags $text [list [winfo toplevel $text] $text Text sysAfter all] + bind sysAfter {+ set i -1 + catch { + switch -- [%W get "insert - 1 chars"] { + \{ {set i [_searchCloseBracket %W \{ \} insert end]} + \[ {set i [_searchCloseBracket %W \[ \] insert end]} + ( {set i [_searchCloseBracket %W ( ) insert end]} + \} {set i [_searchOpenBracket %W \{ \} insert 1.0]} + \] {set i [_searchOpenBracket %W \[ \] insert 1.0]} + ) {set i [_searchOpenBracket %W ( ) insert 1.0]} + } ;# switch + catch { %W tag remove lightBracket 1.0 end } + if { $i != -1 } {%W tag add lightBracket "$i - 1 chars" $i} + } +} ;# bind sysAfter + +bind sysAfter [bind sysAfter ] +focus -force $w.f.text + +Timer $file "refresh" +if {$backup(autosave) == "Yes"} { + Timer $file "autosave" +} + + + +};# proc EditFile + +proc _searchCloseBracket { widget o_bracket c_bracket start_pos end_pos } { + set o_count 1 + set c_count 0 + set found 0 + set pattern "\[\\$o_bracket\\$c_bracket\]" + set pos [$widget search -regexp -- $pattern $start_pos $end_pos] + while { ! [string equal $pos {}] } { + set char [$widget get $pos] + #tk_messageBox -title $pattern -message "char: $char; $pos; o_count=$o_count; c_count=$c_count" + if {[string equal $char $o_bracket]} {incr o_count ; set found 1} + if {[string equal $char $c_bracket]} {incr c_count ; set found 1} + if {($found == 1) && ($o_count == $c_count) } { return [$widget index "$pos + 1 chars"] } + set found 0 + set start_pos "$pos + 1 chars" + set pos [$widget search -regexp -- $pattern $start_pos $end_pos] + } ;# while search + return -1 +} ;# proc _searchCloseBracket + +# DEDERER +## Search open bracket in editor widget +proc _searchOpenBracket { widget o_bracket c_bracket start_pos end_pos } { + set o_count 0 + set c_count 1 + set found 0 + set pattern "\[\\$o_bracket\\$c_bracket\]" + set pos [$widget search -backward -regexp -- $pattern "$start_pos - 1 chars" $end_pos] + while { ! [string equal $pos {}] } { + set char [$widget get $pos] + #tk_messageBox -title $pattern -message "char: $char; $pos; o_count=$o_count; c_count=$c_count" + if {[string equal $char $o_bracket]} {incr o_count ; set found 1} + if {[string equal $char $c_bracket]} {incr c_count ; set found 1} + if {($found == 1) && ($o_count == $c_count) } { return [$widget index "$pos + 1 chars"] } + set found 0 + set start_pos "$pos - 0 chars" + set pos [$widget search -backward -regexp -- $pattern $start_pos $end_pos] + } ;# while search + return -1 +} ;# proc _searchOpenBracket + +proc GoToLine {} { + global nb files font color + set node [$nb raise] + if {$node == "newproj" || $node == "settings" || $node == "about" || $node == ""} { + return + } + set file $files($node) + set w $nb.f$node.goto + set text "$nb.f$node.f.text" + # destroy the find window if it already exists + if {[winfo exists $w]} { + destroy $w + } + # create the new "goto" window + toplevel $w + wm title $w [::msgcat::mc "Goto line"] + wm resizable $w 0 0 + wm transient $w $nb.f$node + + label $w.text -text [::msgcat::mc "Line number"] -font $font(normal) -background $color(bg) + entry $w.entGoTo -width 6 -validate key -validatecommand "ValidNumber %W %P" + pack $w.text $w.entGoTo -side left -anchor nw -padx 2 -pady 2 + set line [$w.entGoTo get] + bind $w.entGoTo "+GoToLineNumber $text $nb.f$node" + + bind $w.entGoTo "destroy $w" + focus -force $w.entGoTo +} +## Check input number ## +proc ValidNumber {w value} { + if [string is integer $value] { + return 1 + } else { + bell + return 0 + } +} +## GOTO LINE ## +proc GoToLineNumber {text w} { + global status + set lineNumber [$w.goto.entGoTo get] + destroy $w.goto + catch { + $text mark set insert $lineNumber.0 + $text see insert + } + $status(pos) configure -text [$text index insert];# cursor position +} + +## SEARCH DIALOG FORM ## +set findHistory "" +set findString "" +set replaceString "" +proc Find {} { + global nb files font findHistory findString color + + set node [$nb raise] + if {$node == "newproj" || $node == "settings" || $node == "about" || $node == ""} { + return + } + set file $files($node) + set w $nb.f$node.find + set text "$nb.f$node.f.text" + set findString "" + # destroy the find window if it already exists + if {[winfo exists $w]} { + destroy $w + } + + toplevel $w + wm title $w [::msgcat::mc "Find"] + wm resizable $w 0 0 + wm transient $w $nb.f$node + frame $w.frmCombo -borderwidth 1 -background $color(bg) + frame $w.frmBtn -borderwidth 1 -background $color(bg) + pack $w.frmCombo $w.frmBtn -side top -fill x + + # set combo [entry $w.frmCombo.entFind] + set combo [ComboBox $w.frmCombo.txtLocale\ + -textvariable findString -background $color(bg)\ + -selectbackground "#55c4d1" -selectborderwidth 0\ + -values $findHistory] + + pack $combo -fill x -padx 2 -pady 2 + + button $w.frmBtn.btnFind -text "[::msgcat::mc "Find"] - F3"\ + -font $font(normal) -width 12 -relief groove -background $color(bg)\ + -command "FindCommand $text $w" + button $w.frmBtn.btnCancel -text "[::msgcat::mc "Close"] - Esc"\ + -relief groove -width 12 -font $font(normal) -background $color(bg)\ + -command "destroy $w" + pack $w.frmBtn.btnFind $w.frmBtn.btnCancel -fill x -padx 2 -pady 2 -side left + + bind $w "FindCommand $text $w" + bind $w "FindCommand $text $w" + bind $w "destroy $w" + focus -force $combo + + # set findIndex [lsearch -exact $findHistory "$findString"] + $combo setvalue @0 +} + +proc FindCommand {text w} { + global findString findHistory + # set findString [$entry get] + destroy $w + # if null string? do nothing + if {$findString == ""} { + return + } + # search "again" (starting from current position) + FindNext $text 0 +} + +proc FindNext {text {incr 1}} { + global findString findHistory + set t $text + # append find string into find history list # + if {[lsearch -exact $findHistory $findString] == -1} { + set findHistory [linsert $findHistory 0 $findString] + } + + set pos [$t index insert] + set line [lindex [split $pos "."] 0] + set x [lindex [split $pos "."] 1] + incr x $incr + + set pos [$t search -nocase $findString $line.$x end] + + # if found then move the insert cursor to that position, otherwise beep + if {$pos != ""} { + $t mark set insert $pos + $t see $pos + + # highlight the found word + set line [lindex [split $pos "."] 0] + set x [lindex [split $pos "."] 1] + set x [expr {$x + [string length $findString]}] + $t tag remove sel 1.0 end + $t tag add sel $pos $line.$x + focus -force $t + return 1 + } else { + bell + return 0 + } + catch [$status(pos) configure -text [%W index insert]] ;# cursor position + +} +## FIND FUNCTION PROCEDURE ## +proc FindProc {text findString node} { + global nb status + + set pos "0.0" + $text see $pos + set line [lindex [split $pos "."] 0] + set x [lindex [split $pos "."] 1] + + set pos [$text search -nocase $findString $line.$x end] + $text mark set insert $pos + $text see $pos + + # highlight the found word + set line [lindex [split $pos "."] 0] + set x [lindex [split $pos "."] 1] + set x [expr {$x + [string length $findString]}] + $text tag remove sel 1.0 end + $text tag add sel $pos $line.$x + focus -force $text + catch [$status(pos) configure -text [$text index insert]] ;# cursor position + return 1 +} + +#3 REPLACE DIALOG FORM ## +proc ReplaceDialog {} { + global nb font files findString replaceString text color + set node [$nb raise] + if {$node == "newproj" || $node == "settings" || $node == "about" || $node == ""} { + return + } + #set file $files($node) + set w .replace + set text "$nb.f$node.f.text" + # set findString "" + # destroy the find window if it already exists + if {[winfo exists $w]} { + destroy $w + } + + # create the new "find" window + toplevel $w + wm transient $w $nb.f$node + wm title $w [::msgcat::mc "Replace"] + wm resizable $w 0 0 + + set f1 [frame $w.frmFind -background $color(bg)] + set f2 [frame $w.frmReplace -background $color(bg)] + set f3 [frame $w.frmBtn -borderwidth 1 -background $color(bg)] + pack $f1 $f2 $f3 -side top -fill x -expand true + + label $f1.lblFind -text [::msgcat::mc "Find"] -font $font(normal) -width 15 -anchor w -background $color(bg) + entry $f1.entFind -width 30 + pack $f1.lblFind $f1.entFind -side left -padx 2 -pady 2 + pack $f1.entFind -side left -fill x -expand true -padx 2 -pady 2 + + label $f2.lblReplace -text [::msgcat::mc "Replace with"] -font $font(normal) -width 15 -anchor w -background $color(bg) + entry $f2.entReplace -width 30 + pack $f2.lblReplace $f2.entReplace -side left -padx 2 -pady 2 + pack $f2.entReplace -side left -fill x -expand true -padx 2 -pady 2 + + button $f3.btnFind -text "[::msgcat::mc "Find"] - Enter" -width 12 -pady 0 -font $font(normal) -relief groove -background $color(bg)\ + -command "ReplaceCommand $text $w $f1.entFind $f2.entReplace find" + button $f3.btnReplace -text "[::msgcat::mc "Replace"] - F4" -width 12 -pady 0\ + -font $font(normal) -relief groove -background $color(bg)\ + -command { + ReplaceCommand $text $w .replace.frmFind.entFind .replace.frmReplace.entReplace replace + focus -force .replace + } + button $f3.btnReplaceAll -text [::msgcat::mc "Replace all"] -width 12 -pady 0\ + -font $font(normal) -relief groove -background $color(bg)\ + -command "ReplaceCommand $text $w $f1.entFind $f2.entReplace replace_all" + button $f3.btnCancel -text "[::msgcat::mc "Cancel"] - Esc" -command "destroy $w"\ + -width 12 -pady 0 -font $font(normal) -relief groove -background $color(bg) + pack $f3.btnFind $f3.btnReplace $f3.btnReplaceAll $f3.btnCancel\ + -side left -padx 2 -pady 2 -fill x + + bind $w "ReplaceCommand $text $w $f1.entFind $f2.entReplace find" + bind $w "ReplaceCommand $text $w $f1.entFind $f2.entReplace replace" + bind $w "destroy $w" + focus -force $f1.entFind + + if {$findString != ""} { + $f1.entFind insert end $findString + } + if {$replaceString != ""} { + $f2.entReplace insert end $replaceString + } +} +## REPLACE COMMAND ## +proc ReplaceCommand {text w entFind entReplace command} { + global nb font files findString replaceString + set node [$nb raise] + + set findString [$entFind get] + set replaceString [$entReplace get] + + switch -- $command { + "find" { + FindNext $text 1 + focus -force .replace + } + "replace" { + if {[Replace $text 0]} { + FindNext $text 1 + if {[lindex $files($node) 1] == 0} { + set files($node) [list [lindex $files($node) 0] 1 [lindex $files($node) 2]] + } + focus -force .replace + } + } + "replace_all" { + set stringsReplace 0 + if {[Replace $text 0]} { + if {[lindex $files($node) 1] == 0} { + set files($node) [list [lindex $files($node) 0] 1 [lindex $files($node) 2]] + } + incr stringsReplace + while {[Replace $text 1]} { + incr stringsReplace + } + } + tk_messageBox -icon info -title [::msgcat::mc "Replace"]\ + -parent $text -message\ + "[::msgcat::mc "Was replacement"] $stringsReplace." + destroy $w + } + } +} +## REPLACE ONE WORD PROCEDURE ## +proc Replace {text incr} { + global nb font files findString replaceString + + if {[FindNext $text $incr]} { + set selected [$text tag ranges sel] + set start [lindex $selected 0] + set end [lindex $selected 1] + $text delete $start $end + $text insert [$text index insert] $replaceString + return 1 + } else { + return 0 + } + # focus -force .replace +} + +## OVERWRITE SYMBOL PROCEDURE ## +proc OverWrite {} { + global replace fontNormal status + if {$replace == 1} { + set replace 0 + $status(ovwrt) configure -text [::msgcat::mc "Insert"] -foreground black + } else { + set replace 1 + $status(ovwrt) configure -text [::msgcat::mc "Overwrite"] -foreground red + } +} + +proc ReplaceChar {text} { + global replace + set pos [$text index insert] + set posY [lindex [split $pos "."] 0] + set posX [lindex [split $pos "."] 1] + if {$replace == 1} { + $text delete $posY.$posX $posY.[expr $posX + 1] + } +} + +## GET KEYS CODE ## +proc Key {key} { + #puts $key ;#debug + if {$key >= 10 && $key <= 22} {return "true"} + if {$key >= 24 && $key <= 36} {return "true"} + if {$key >= 38 && $key <= 50} {return "true"} + if {$key >= 51 && $key <= 61 && $key != 58} {return "true"} + if {$key >= 79 && $key <= 91} {return "true"} + if {$key == 63 || $key == 107 || $key == 108 || $key == 112} {return "true"} + if {$key == 98 || $key == 100 || $key == 102 || $key == 104} {return "false"} +} + +## SPLIT EDITOR WINDOW PROCEDURE ## +set split 0 +proc SplitWindow {} { + global color font editor nb activeFile split + + if [info exists activeFile] { + set w $nb.f$activeFile + } else { + return + } + if {$split == 0} { + frame $w.f1 -borderwidth 2 -relief ridge + pack $w.f1 -side top -fill both -expand true + #supertext::text + supertext::text $w.f1.text -yscrollcommand "$w.f1.yscroll set" \ + -relief sunken -wrap $editor(wrap) -highlightthickness 0 -font $font(editNormal)\ + -background $color(editBg) -foreground $color(editFg)\ + -selectborderwidth 0 -selectbackground $color(selectbg) -width 10 + scrollbar $w.f1.yscroll -relief sunken -borderwidth {1} -width {10} -takefocus 0 \ + -command "$w.f1.text yview" + pack $w.f1.text -side left -fill both -expand true + pack $w.f1.yscroll -side left -fill y + ############################################## + pane::create $w.f $w.f1 -orient horizontal -percent 0.5 + set split 1 + } elseif {$split == 1} { + destroy $w.f1 + } +} + + + + + + + + + + + diff --git a/lib/modules/encode.tcl b/lib/modules/encode.tcl new file mode 100755 index 0000000..9812213 --- /dev/null +++ b/lib/modules/encode.tcl @@ -0,0 +1,238 @@ +########################################################### +# Tcl/Tk project Manager +# Distributed under GNU Public License +# Author: Sergey Kalinin banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +########################################################### + +########################################################### +# ENCODING files procedure # +########################################################### + +proc GetCorrectEncode {latexEncode} { + global files dir activeFile files + set f [open "[file join $dir(work) encode.lst]" r] + set encodeList [encoding names] + while {[gets $f line]} { + if {[string index [string trim $line] 0] == "#"} { + continue + } + scan $line "%s%s" texEnc tclEnc + #puts "$texEnc $tclEnc" + + if {$texEnc == $latexEncode} { + close $f + return $tclEnc + } else { + set ind [lsearch -exact $encodeList $latexEncode] + #puts $latexEncode + if {$ind == -1} { + set answer [tk_messageBox\ + -message "[lindex $files($activeFile) 0] [::msgcat::mc "Don't find any system encoding for"] $latexEncode \ + [::msgcat::mc "You must write correctly encode name in"] [file join $dir(work) encode.lst] [::msgcat::mc "file"]"\ + -type ok -icon warning\ + -title [::msgcat::mc "Warning"]] + case $answer { + ok {return} + } + close $f + return $latexEncode + } else { + close $f + return $latexEncode + } + } + } +} + +proc EncodeDialog {type} { + global color files activeFile + set w .encode + # destroy the find window if it already exists + if {[winfo exists .encode]} { + destroy .encode + } + + toplevel .encode + wm title .encode [::msgcat::mc "Encoding"] + wm resizable .encode 0 0 + wm transient .encode . + + frame .encode.encodings -width 10 + eval { + listbox .encode.encodings.list -height 10 -width 20 -selectbackground $color(selectbg)\ + -selectborderwidth 0 -yscrollcommand {.encode.encodings.yscroll set} + } + eval {scrollbar .encode.encodings.yscroll -orient vertical -command {.encode.encodings.list yview}} + pack .encode.encodings.list -side left -expand true -fill y + pack .encode.encodings.yscroll -side left -expand false -fill y + pack .encode.encodings -side top -expand true -fill both + + canvas .encode.line -border 0 -height 1 -background black -width 10 + pack .encode.line -side top -expand true -fill x + + frame .encode.command -width 10 + if {$type == "file"} { + eval { + button .encode.command.ok -text [::msgcat::mc "Ok"] -command { + SetEncode [.encode.encodings.list get [.encode.encodings.list curselection]] + } + } + } else { + eval { + button .encode.command.ok -text [::msgcat::mc "Ok"] -command { + TextRecode [.encode.encodings.list get [.encode.encodings.list curselection]] + } + } + } + eval {button .encode.command.cancel -text [::msgcat::mc "Cancel"] -command {destroy .encode }} + grid .encode.command.ok -row 0 -column 0 -sticky e -pady 2 -padx 2 + grid .encode.command.cancel -row 0 -column 1 -sticky w -pady 2 -padx 2 + pack .encode.command -side top -expand true -fill x + + bind .encode.encodings.list {eval [.encode.command.ok cget -command]} + bind .encode.encodings.list {eval [.encode.command.ok cget -command]} + bind .encode {eval [.encode.command.cancel cget -command]} + + set i 0 ; set cur_encoding [encoding system] + foreach { name_encodings } [lsort [encoding names] ] { + .encode.encodings.list insert end $name_encodings + if { $name_encodings == $cur_encoding } { set enc_pos $i } + incr i + } ;# foreach encoding names + + wm resizable .encode 0 0 + .encode.encodings.list activate $enc_pos + .encode.encodings.list selection set $enc_pos $enc_pos + .encode.encodings.list see $enc_pos + focus -force .encode.encodings.list +} + + +## Source encode ## +proc DocRecode {pipe} { + global files tree activeFile + set parentNode [$tree parent $activeFile] + if [info exists files($parentNode)] { + set sourceEnc [lindex $files($parentNode) 2] + } else { + set sourceEnc [encoding system] ;#[EncodeDialog] + } + puts $sourceEnc + while {[gets $pipe line]>=0} { + if [regexp -nocase -all -- {(\\)(usepackage)(\[)(.*?)(\])(\{)inputenc(\})} $line match v1 v2 v3 sourceEnc v5 v6 v7] { + if [set ind [string last "," $sourceEnc]] { + set sourceEnc [string range $sourceEnc [expr $ind + 1] end] + } + puts "Кодировка документа $sourceEnc" + set sourceEnc [GetCorrectEncode $sourceEnc] + puts "Кодировка системы $sourceEnc" + + } + } + fconfigure $pipe -encoding binary + seek $pipe 0 start + return $sourceEnc +} + +## CHANGE SOURCE FIELE ENCODING ## +proc SetEncode {encode} { + global files activeFile status nb + destroy .encode + set files($activeFile) [list [lindex $files($activeFile) 0] [lindex $files($activeFile) 1] "$encode"] + #puts $files($activeFile) + $status(encode) configure -text "[lindex $files($activeFile) 2]" +} + +## Reencoding text ## +proc TextRecode {encode} { + global files activeFile status nb + destroy .encode + set text $nb.f$activeFile.f.text + set contents [$text get 0.0 end] + #puts "[lindex $files($activeFile) 2] $encode" + set contents [encoding convertto [lindex $files($activeFile) 2] $contents] + set contents [encoding convertfrom $encode $contents] + $text delete 0.0 end + $text insert end $contents + unset text + SetEncode $encode +} + +proc CheckEncoding {text} { + global files activeFile + set sourceEnc "" ;#[EncodeDialog] + set line [$text get 0.0 end] + if [regexp -nocase -all -- {(\\)(usepackage)(\[)(.*?)(\])(\{)inputenc(\})} $line match v1 v2 v3 sourceEnc v5 v6 v7] { + #break + if {$sourceEnc != "[lindex $files($activeFile) 2]"} { + set answer [tk_messageBox -message "[::msgcat::mc "Don't correctly setting document encoding! Save anyway?"]"\ + -type yesno -icon warning\ + -title [::msgcat::mc "Warning"]] + case $answer { + yes {return 1} + no {return 0} + } + } + puts "DocEnc-$sourceEnc ViewEnc-[lindex $files($activeFile) 2]" + } +} + + +## clipboard encode ## + +set xselection "" +proc EncodeTextSelection {txt offset len} { + set ::xselection [eval $txt get [$txt tag ranges sel]] + encoding convertto \ + [crange $::xselection $offset [expr $offset + $len - 1]] +} + +proc EncodeEntrySelection {txt offset len} { + if [$txt selection present] { + set idx1 [$txt index sel.first] + set idx2 [$txt index sel.last] + set ::xselection [string range [$txt get] $idx1 $idx2] + encoding convertto \ + [crange $::xselection $offset [expr $offset + $len - 1]] + } else { + set ::xselection "" + } +} + +if {$tcl_platform(platform) == "win"} { + bind Text { selection handle %W "EncodeTextSelection %W"} + bind Entry { selection handle %W "EncodeEntrySelection %W"} + bind Text { selection handle %W {}} + bind Entry { selection handle %W {}} + + bind Text { + if [catch {set sel [selection get]}] continue + if {[selection own] == ""} { + set sel [encoding convertfrom $sel] + } else { + set sel $xselection + } + %W insert current $sel + } + bind Entry { + if [catch {set sel [selection get]}] continue + if {[selection own] == ""} { + set sel [encoding convertfrom $sel] + } else { + set sel $xselection + } + %W insert insert $sel + } +} +#set class Text +#bind $class "selection handle %W \"unix::Encode${class}Selection %W\"" +#bind $class { selection handle %W {}} +#proc EncodeTextSelection {txt offset len} {encoding convertto [eval $txt get [$txt tag ranges sel]]} + + + + + + + diff --git a/lib/modules/file.tcl b/lib/modules/file.tcl new file mode 100755 index 0000000..a1f4a28 --- /dev/null +++ b/lib/modules/file.tcl @@ -0,0 +1,402 @@ +###################################################### +# TkTeXeditor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lrn", 2000, http//conero.lrn.ru +###################################################### +set types { + {"TeX files" {.tex}} + {"Html files" {.html}} + {"Text files" {.txt}} + {"All files" *} +} +set typeImage { + {"GIF files" {.gif}} + {"PNG files" {.png}} + {"JPEG files" {.jpeg}} + {"All files" *} +} + +proc FileDialog {operation} { + global dir font tree nb files treeStruct in lastNode \ + activeFile color status lblList ver sysenc release types + ## settings variable for tree section ## + set in(c) 0 ;# chapter counter + set in(p) 0 ;# part counter + set in(s) 0 ;# section counter + set in(ss) 0 ;# subsection counter + set in(sss) 0 ;# subsubsection counter + set in(par) 0 ;# paragraph cponter + set in(spar) 0 ;# subparagraph cponter + set lastNode "root" + + + if {$operation == "new"} { + NewFileDialog + } elseif {$operation == "new_templ"} { + TemplateDialog + } elseif {$operation == "open"} { + set file [tk_getOpenFile -initialdir $dir(current) -filetypes $types -parent .] + #puts "$file" + if {$file == ""} {return} + # call EditFile procedure + EditFile $file + } elseif {$operation == "save"} { + if [info exists activeFile] { + set node $activeFile + } else { + #set node [$nb raise] + return + } + if {$node == "newproj" || $node == "" || $node == "debug"} { + return + } + if {[info exists files($node)] == 0} { + return + } + + set text "$nb.f$node.f.text" + set fullPath [lindex $files($node) 0] + set encode [lindex $files($node) 2] ;# document encoding + set folder [file dirname $fullPath] + set file [file tail $fullPath] + #set contents [encoding convertfrom $sysenc [$text get 0.0 end]] + #set contents [encoding convertto $encode [$text get 0.0 end]] + if {[CheckEncoding $text] == 0} { + return + } + set contents [$text get 0.0 end] + set fhandle [open [file join $folder $file] "w"] + fconfigure $fhandle -encoding $encode + puts $fhandle $contents nonewline + close $fhandle + + #UpdateStruct $fullPath + if {[lindex $files($node) 1] == 1} { + set files($node) [list [lindex $files($node) 0] 0 [lindex $files($node) 2]] + $status(active) configure -text [::msgcat::mc "File saved"] + $nb itemconfigure $node -foreground $color(editTitleNormal) + } + UpdateStruct $fullPath $node + } elseif {$operation == "save_as"} { + if [info exists activeFile] { + set node $activeFile + #set node [$nb raise] + } else { + return + } + if {$node == "newproj" || $node == "settings" || $node == "about" || $node == ""} { + return + } + if {[info exists files($node)] == 0} { + return + } + set fullPath [lindex $files($node) 0] + set folder [file dirname $fullPath] + set file [file tail $fullPath] + set encode [lindex $files($node) 2] ;# document encoding + set file [tk_getSaveFile -initialdir $dir(current) -filetypes $types -parent .\ + -initialfile $file -defaultextension .tex] + if {$file == ""} {return} + set text "$nb.f$node.f.text" + set contents [$text get 0.0 end] + set fhandle [open [file join $folder $file] "w"] + fconfigure $fhandle -encoding $encode + + puts $fhandle $contents nonewline + close $fhandle + if {[lindex $files($node) 1] == 1} { + set files($node) [list [lindex $files($node) 0] 0 $encode] + $status(active) configure -text [::msgcat::mc "File saved"] + $nb itemconfigure $node -foreground $color(editTitleNormal) + } + UpdateStruct $fullPath $node + } elseif {$operation == "save_all"} { + # SAVE ALL PROCEDURE + set i 0 + set nodeList [$nb pages 0 end] + set length [llength $nodeList] + while {$i < $length} { + set nbNode [lindex $nodeList $i] + if {$nbNode != "debug"} { + set text "$nb.f$nbNode.f.text" + set savedFile [lindex $files($nbNode) 0] + set encode [lindex $files($nbNode) 2] ;# document encoding + set contents [$text get 0.0 end] + set fhandle [open $savedFile "w"] + fconfigure $fhandle -encoding $encode + puts $fhandle $contents nonewline + close $fhandle + if {[lindex $files($nbNode) 1] == 1} { + set files($nbNode) [list [lindex $files($nbNode) 0] 0 $encode] + $status(active) configure -text [::msgcat::mc "File saved"] + $nb itemconfigure $nbNode -foreground $color(editTitleNormal) + } + } + incr i + } + Timer "empty" "autosave" + } elseif {$operation == "close"} { + set node [$nb raise] + if {$node == ""} {return} + if {$node == "debug"} { + $nb delete $node + $nb raise [$nb page 0] + return + } + set childrenNode [$tree nodes $node] + # проверяем есть ли открыте дочерние файлы и закрываем изх если есть + if {$childrenNode != ""} { + for {set i 0} {$i <= [llength $childrenNode]} {incr i} { + if {[info exists files([lindex $childrenNode $i])] == 1} { + CloseNode [lindex $childrenNode $i] + } + } + } + CloseNode $node + } elseif {$operation == "close_all"} { + set nodeList [$nb pages 0 end] + $nb raise [$nb page 0] + set nbNode [$nb raise] + while {$nbNode != ""} { + if {[info exists files($nbNode)] == 1} { + if {[lindex $files($nbNode) 1] == 1} { + set f [lindex $files($nbNode) 0] + set f [file tail $f] + set answer [tk_messageBox\ + -message "$f [::msgcat::mc "File was modifyed. Save?"]"\ + -type yesnocancel -icon warning\ + -title [::msgcat::mc "Warning"]] + case $answer { + yes {FileDialog save} + no {} + cancel {return} + } + } + } + $tree delete $nbNode + $nb delete $nbNode + $nb raise [$nb page 0] + set nbNode [$nb raise] + } + } elseif {$operation == "quit_close_all"} { + set nodeList [$nb pages 0 end] + $nb raise [$nb page 0] + set nbNode [$nb raise] + set fhandle [open [file join $dir(work) bookmarks] "w"] + while {$nbNode != ""} { + if {[info exists files($nbNode)] == 1} { + set f [lindex $files($nbNode) 0] + puts $f + # запомнинание открытых файлов и позиций редактирования + set text "$nb.f$nbNode.f.text" + puts $fhandle "$f [$text index insert]" + puts "$f [$text index insert]" + if {[lindex $files($nbNode) 1] == 1} { + set f [file tail $f] + set answer [tk_messageBox\ + -message "$f [::msgcat::mc "File was modifyed. Save?"]"\ + -type yesnocancel -icon warning\ + -title [::msgcat::mc "Warning"]] + case $answer { + yes {FileDialog save} + no {} + cancel {return 0} + } + } + } + $tree delete $nbNode + $nb delete $nbNode + $nb raise [$nb page 0] + set nbNode [$nb raise] + } + close $fhandle + } +} +proc NewFile {fileName} { + global dir workDir tree nb font + destroy .addtoproj + + set type [string trim [file extension $fileName] {.}] + if {$type == "tcl"} { + set img "tcl" + } elseif {$type == "tk"} { + set img "tk" + } elseif {$type == "txt"} { + set img "file" + } elseif {$type == "html"} { + set img "html" + } else { + set img "file" + } + #set subNode [InsertTreeNode $fileName $dir(doc)] + if [info exists dir(current)] { + set file [file join $dir(current) $fileName] + } else { + set file [file join $dir(doc) $fileName] + } + + #puts $file + #InsertTitle $file $type + if {[file exists $file] == 0} { + set fHandle [open "$file" a+] + close $fHandle + } + EditFile $file +} +## ADD FILE INTO PROJECT DIALOG## +proc NewFileDialog {} { + global dir + set w .addtoproj + if {[winfo exists $w]} { + destroy $w + } + # create the new "goto" window + toplevel $w + wm title $w [::msgcat::mc "Create new file"] + wm resizable $w 0 0 + wm transient $w . + + frame $w.frmCanv -border 1 -relief sunken + frame $w.frmBtn -border 1 -relief sunken + pack $w.frmCanv -side top -fill both -padx 1 -pady 1 + pack $w.frmBtn -side top -fill x + + label $w.frmCanv.lblImgTcl -text [::msgcat::mc "Input file name"] + entry $w.frmCanv.entImgTcl + pack $w.frmCanv.lblImgTcl $w.frmCanv.entImgTcl -expand true -padx 5 -pady 5 -side top + + button $w.frmBtn.btnOk -text [::msgcat::mc "Create"] -relief groove -command { + NewFile [.addtoproj.frmCanv.entImgTcl get] + } + button $w.frmBtn.btnCancel -text [::msgcat::mc "Close"] -command "destroy $w" -relief groove + pack $w.frmBtn.btnOk $w.frmBtn.btnCancel -padx 2 -pady 2 -fill x -side left + + bind $w "destroy .addtoproj" + bind $w.frmCanv.entImgTcl { + NewFile [.addtoproj.frmCanv.entImgTcl get] + } + focus -force $w.frmCanv.entImgTcl + $w.frmCanv.entImgTcl insert 0 "name.tex" +} + +proc FileAttr {file} { + global tcl_platform + set fileAttribute "" + # get file modify time + if {$tcl_platform(platform) == "windows"} { + + } elseif {$tcl_platform(platform) == "mac"} { + + } elseif {$tcl_platform(platform) == "unix"} { + set unixTime [file mtime $file] + set modifyTime [clock format $unixTime -format "%d/%m/%Y, %H:%M"] + append fileAttribute $modifyTime + } + # get file size + set size [file size $file] + if {$size < 1024} { + set fileSize "$size b" + } + if {$size >= 1024} { + set s [expr ($size.0) / 1024] + set dot [string first "\." $s] + set int [string range $s 0 [expr $dot - 1]] + set dec [string range $s [expr $dot + 1] [expr $dot + 2]] + set fileSize "$int.$dec Kb" + } + if {$size >= 1048576} { + set s [expr ($size.0) / 1048576] + set dot [string first "\." $s] + set int [string range $s 0 [expr $dot - 1]] + set dec [string range $s [expr $dot + 1] [expr $dot + 2]] + set fileSize "$int.$dec Mb" + } + append fileAttribute ", $fileSize" +} + +## REMOVED SELECTED TEXT INTO FILE AND INCLUDE THEM ## +proc SaveToFile {action} { + global nb activeFile files dir types typeImage + set text $nb.f$activeFile.f.text + set selIndex [$text tag ranges sel] + if {$selIndex != ""} { + set posBegin [lindex $selIndex 0] + set posEnd [lindex $selIndex 1] + set contents [$text get $posBegin $posEnd] + } else { + return + } + + set enc "[lindex $files($activeFile) 2]" + set contents [encoding convertto $enc $contents] + set contents [encoding convertfrom $enc $contents] + + if {$action == "image"} { + set file [tk_getSaveFile -initialdir $dir(current) -filetypes $typeImage -parent .\ + -title [::msgcat::mc "Save as"] -initialfile new_name.gif -defaultextension .gif] + if {$file == ""} {return} + Render $contents text $file + } else { + set file [tk_getSaveFile -initialdir $dir(current) -filetypes $types -parent .\ + -title [::msgcat::mc "Save as"] -initialfile new_name.tex -defaultextension .tex] + if {$file == ""} {return} + set fHandle [open $file w] + puts $fHandle $contents + close $fHandle + } + if {$action == "remove"} { + $text delete $posBegin $posEnd + $text insert $posBegin "\n\\input\{[file rootname $file]\}\n" + } + PageRaise $activeFile +} + +proc CloseNode {node} { + global dir font tree nb files treeStruct in lastNode activeFile color status lblList ver sysenc release types + if {$node == "debug"} {$nb delete $node; $nb raise [$nb page 0]; set node [$nb raise]; return} + + if {[info exists files($node)] == 1} { + if {[lindex $files($node) 1] == 1} { + set f [lindex $files($node) 0] + set f [file tail $f] + set answer [tk_messageBox\ + -message "$f [::msgcat::mc "File was modifyed. Save?"]"\ + -type yesnocancel -icon warning\ + -title [::msgcat::mc "Warning"]] + case $answer { + yes {FileDialog save} + no {} + cancel {return} + } + } + } + PageTab -1 + $nb delete $node + unset files($node) + set parentNode [$tree parent $node] + set curNode [$tree selection get] + if {[$tree parent $node] == "root"} { + if {[$tree exists $node] == 1} { + $tree delete $node + } + } + #$nb raise [$nb page 0] + #set node [$nb raise] + ClickTab $node + $treeStruct delete [$treeStruct nodes root] + $lblList delete [$lblList item 0 end] + wm title . "TkLaTeXEditor $ver\($release\)" + +} + + + + + + + + + + + diff --git a/lib/modules/gui.tcl b/lib/modules/gui.tcl new file mode 100755 index 0000000..e920e93 --- /dev/null +++ b/lib/modules/gui.tcl @@ -0,0 +1,575 @@ +###################################################### +# TkTeXeditor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lrn", 2000, http//conero.lrn.ru +###################################################### + +###################################################### +# # +# Programms main interface window # +# # +###################################################### + + +## MAIN INTERFACE WINDOW ## +wm geometry . $gui(geometry) +set activeFile "" +wm title . "TkLaTeXEditor $ver$release" +wm iconname . "TkTeXEditor $ver$release" +wm protocol . WM_DELETE_WINDOW Quit +wm overrideredirect . 0 +wm positionfrom . user +#wm resizable . 0 0 + +## main frames +frame .frmMenu -border 1 -relief raised -background $color(bg) +frame .frmTool -border 1 -relief raised -background $color(bg) +frame .frmToolEdit -border 1 -relief raised -background $color(bg) +frame .frmBody -border 1 -relief raised -background $color(bg) +frame .frmStatus -border 1 -relief sunken -background $color(bg) +pack .frmMenu -side top -padx 1 -fill x +pack .frmTool -side top -padx 1 -fill x +pack .frmToolEdit -side top -padx 1 -fill x +pack .frmBody -side top -padx 1 -fill both -expand true +pack .frmStatus -side top -padx 1 -fill x + +## MENU ## +menubutton .frmMenu.mnuFile -text [::msgcat::mc "File"] -menu .frmMenu.mnuFile.m -font $font(normal) -background $color(bg) +set m [menu .frmMenu.mnuFile.m -background $color(bg)] +$m add cascade -label [::msgcat::mc "New"] -menu $m.new -font $font(normal) +set mn [menu $m.new -background $color(bg)] +$mn add command -label [::msgcat::mc "New file"] -command {FileDialog new}\ +-font $font(normal) -accelerator "Ctrl+N" +$mn add command -label [::msgcat::mc "Create from template"] -command {FileDialog new_templ}\ +-font $font(normal) +$mn add command -label [::msgcat::mc "New project"] -command {NewProj add ""}\ +-font $font(normal) -state disable +$m add command -label [::msgcat::mc "Open"] -command {FileDialog open}\ +-font $font(normal) -accelerator "Ctrl+O" +$m add command -label [::msgcat::mc "Save"] -command {FileDialog save}\ +-font $font(normal) -accelerator "Ctrl+S" +$m add command -label [::msgcat::mc "Save as"] -command {FileDialog save_as}\ +-font $font(normal) -accelerator "Ctrl+A" +$m add command -label [::msgcat::mc "Save all"] -command {FileDialog save_all}\ +-font $font(normal) +$m add command -label [::msgcat::mc "Close"] -command {FileDialog close}\ +-font $font(normal) -accelerator "Ctrl+W" +$m add command -label [::msgcat::mc "Close all"] -command {FileDialog close_all}\ +-font $font(normal) +$m add command -label [::msgcat::mc "Delete"] -command {FileDialog delete}\ +-font $font(normal) -accelerator "Ctrl+D" +$m add separator +$m add command -label [::msgcat::mc "Print"] -command {PrintDialog print}\ +-font $font(normal) -accelerator "Ctrl+P" -state normal +#$m add separator +#$m add command -label [::msgcat::mc "Settings"] -command Settings -font $font(normal) +$m add separator +$m add command -label [::msgcat::mc "Exit"] -command Quit -font $font(normal) -accelerator "Ctrl+Q" + +### DOCUMENT MENU #### +menubutton .frmMenu.mnuDoc -text [::msgcat::mc "Document"] -menu .frmMenu.mnuDoc.m -font $font(normal) -background $color(bg) + +set m [menu .frmMenu.mnuDoc.m -background $color(bg)] +#$m add command -label [::msgcat::mc "Included packages"] -command {PackageDialog}\ +#-font $font(normal) -state disable +# "convert to" submenu ## +$m add cascade -label "[::msgcat::mc "Convert to"] ..." -menu $m.convert -font $font(normal) -state normal +set mn [menu $m.convert -background $color(bg)] +$mn add command -label [::msgcat::mc "DVI"] -font $font(normal) -accelerator "F5" -state normal\ +-command {ConvertDialog dvi} +$mn add command -label [::msgcat::mc "PS"] -font $font(normal) -accelerator "F6" -state normal\ +-command {ConvertDialog ps} +$mn add command -label [::msgcat::mc "PDF"] -font $font(normal) -accelerator "F7" -state normal\ +-command {ConvertDialog pdf} +$mn add command -label "HTML" -font $font(normal) -command {ConvertDialog html}\ + +$mn add separator +## "preview" submenu ## +$m add cascade -label [::msgcat::mc "Preview"] -menu $m.preview -font $font(normal) -state normal +set mn [menu $m.preview -background $color(bg)] +$mn add command -label "DVI" -command {Preview dvi} -font $font(normal) +$mn add command -label "PS" -command {Preview ps} -font $font(normal) +$mn add command -label "PDF" -command {Preview pdf} -font $font(normal) +$mn add command -label "HTML" -command {Preview html} -font $font(normal) + +$m add separator +$m add command -label [::msgcat::mc "Spell check"] -font $font(normal) -state normal\ +-command { + SpellCheck $nb.f[$nb raise].f.text +} +$m add command -label [::msgcat::mc "Encoding"] -font $font(normal) -state normal\ +-command {EncodeDialog file} + +$m add command -label [::msgcat::mc "Syntax check"] -command {DoModule syntax}\ +-font $font(normal) -state disable + +##.frmMenu 'EDIT' ## +menubutton .frmMenu.mnuEdit -text [::msgcat::mc "Edit"] -menu .frmMenu.mnuEdit.m -font $font(normal) -background $color(bg) +set m [menu .frmMenu.mnuEdit.m -background $color(bg)] +$m add command -label [::msgcat::mc "Undo"] -font $font(normal) -accelerator "Ctrl+Z"\ +-state normal -command "CutPast undo" +$m add separator +$m add command -label [::msgcat::mc "Copy"] -font $font(normal) -accelerator "Ctrl+C"\ +-command "CutPast copy" +$m add command -label [::msgcat::mc "Paste"] -font $font(normal) -accelerator "Ctrl+V"\ +-command "CutPast paste" +$m add command -label [::msgcat::mc "Cut"] -font $font(normal) -accelerator "Ctrl+X"\ +-command "CutPast cut" +$m add separator +$m add command -label [::msgcat::mc "Select All"] -command {Select all} -font $font(normal) -accelerator "Ctrl+/" +$m add command -label [::msgcat::mc "Remove selection"] -command {Select remove} -font $font(normal)\ +-accelerator "Ctrl+\\" +$m add separator +$m add command -label [::msgcat::mc "Goto line"] -command GoToLine -font $font(normal)\ +-accelerator "Ctrl+G" +$m add command -label [::msgcat::mc "Find"] -command Find -font $font(normal) -accelerator "Ctrl+F" +$m add command -label [::msgcat::mc "Replace"] -command ReplaceDialog -font $font(normal)\ +-accelerator "Ctrl+R" +$m add separator +$m add cascade -label "[::msgcat::mc "Custom operations"] ..." -menu $m.hotkeys -font $font(normal) -state normal +menu $m.hotkeys -background $color(bg) + +## MENU for selected text ## +set m [menu .frmMenu.mnuEdit.m.selection -background $color(bg)] +$m add command -label [::msgcat::mc "Select All"] -command {Select all} -font $font(normal) -accelerator "Ctrl+/" +$m add command -label [::msgcat::mc "Remove selection"] -command {Select remove} -font $font(normal)\ +-accelerator "Ctrl+\\" +$m add separator +$m add command -label [::msgcat::mc "Copy"] -font $font(normal) -accelerator "Ctrl+C"\ +-command "CutPast copy" +$m add command -label [::msgcat::mc "Paste"] -font $font(normal) -accelerator "Ctrl+V"\ +-command "CutPast paste" +$m add command -label [::msgcat::mc "Cut"] -font $font(normal) -accelerator "Ctrl+X"\ +-command "CutPast cut" +$m add separator +$m add command -label [::msgcat::mc "Preview formula"] -command {GenerateFormula math} -font $font(normal)\ +-accelerator "Alt+F" +$m add command -label [::msgcat::mc "Preview text"] -command {GenerateFormula text} -font $font(normal)\ +-accelerator "Alt+T" +$m add separator +$m add command -label [::msgcat::mc "Remove to file"] -command {SaveToFile remove} -font $font(normal) +$m add command -label [::msgcat::mc "Save as file"] -command {SaveToFile file} -font $font(normal) +$m add command -label [::msgcat::mc "Save as image"] -command {SaveToFile image} -font $font(normal) + + +## VIEW MENU ## +menubutton .frmMenu.mnuView -text [::msgcat::mc "View"] -menu .frmMenu.mnuView.m -font $font(normal) -state normal -background $color(bg) +set m [menu .frmMenu.mnuView.m -background $color(bg)] +$m add cascade -label [::msgcat::mc "Toolbar"] -menu $m.tool -font $font(normal) +set mn [menu $m.tool] + +#$mn add command -label [::msgcat::mc "Create from template"] -command {FileDialog new_templ}\ +#-font $font(normal) + +$m add separator +$m add command -label [::msgcat::mc "Split window"] -font $font(normal) -accelerator "F2" -state disable\ +-command {SplitWindow} +$m add command -label [::msgcat::mc "Encoding"] -font $font(normal) -state normal\ +-command {EncodeDialog view} + +## MODULES MENU ## +menubutton .frmMenu.mnuModule -text [::msgcat::mc "Modules"] -menu .frmMenu.mnuModule.m \ +-underline 0 -font $font(normal) -background $color(bg) + +## HELP MENU ## +menubutton .frmMenu.mnuHelp -text [::msgcat::mc "Help"] -menu .frmMenu.mnuHelp.m \ +-underline 0 -font $font(normal) -background $color(bg) +set m [menu .frmMenu.mnuHelp.m -background $color(bg)] +$m add command -label [::msgcat::mc "Help"] -command ShowHelp \ +-accelerator F1 -font $font(normal) +$m add command -label [::msgcat::mc "About ..."] -command AboutDialog \ +-font $font(normal) + +pack .frmMenu.mnuFile .frmMenu.mnuEdit .frmMenu.mnuDoc .frmMenu.mnuView .frmMenu.mnuModule -side left +pack .frmMenu.mnuHelp -side right + + +############################################### +frame .frmBody.frmList -background $color(bg) +frame .frmBody.frmEditor -background $color(bg) +pack .frmBody.frmList .frmBody.frmEditor -side left -fill both + +## SPLIT BAR ## +pane::create .frmBody.frmList .frmBody.frmEditor + +## TREE FRAME ## + +set nbTree [NoteBook .frmBody.frmList.nBook -font $font(normal) -side $gui(tabsLabel) -background $color(bg)] +pack $nbTree -fill both -expand true -padx 2 -pady 2 + +set f [$nbTree insert end fileTree -text [::msgcat::mc "Files"] -background $color(bg)] +set fTree [ScrolledWindow $f.f -background $color(bg)] +pack $fTree -side top -fill both -expand yes -padx 0 -pady 0 +set tree [Tree $fTree.tree \ +-relief sunken -borderwidth 1 -width 1 -height 1 -highlightthickness 1\ +-redraw 0 -dropenabled 1 -dragenabled 1 -dragevent 3 \ +-background $color(editBg) -selectbackground $color(selectbg) \ +-droptypes {TREE_NODE {copy {} move {} link {}} +LISTBOX_ITEM {copy {} move {} link {}}} -opencmd {} -closecmd {}] +$fTree setwidget $tree +#pack $tree -side left -fill both -expand yes +############################################### +set fStruct [$nbTree insert end fileStruct -text [::msgcat::mc "Document"] -background $color(bg)] +set fTreeStruct [ScrolledWindow $fStruct.fs -background $color(bg)] +pack $fTreeStruct -side top -fill both -expand yes +set treeStruct [Tree $fTreeStruct.treeStruct \ +-relief sunken -borderwidth 1 -width 1 -height 1 -highlightthickness 1\ +-redraw 0 -dropenabled 0 -dragenabled 0 -dragevent 3 \ +-background $color(editBg) -selectbackground $color(selectbg) \ +-showlines 1 -droptypes { + TREE_NODE {copy {} move {} link {}} + LISTBOX_ITEM {copy {} move {} link {}} +}] +$fTreeStruct setwidget $treeStruct +#pack $treeStruct -side left -fill both -expand yes +############################################### +set f [$nbTree insert end lblList -text [::msgcat::mc "Labels"] -background $color(bg)] +set fList [ScrolledWindow $f.f -background $color(bg)] +set lblList [ListBox $fList.list -font $font(normal) -relief sunken -borderwidth 1 -width 1 -height 1 -highlightthickness 1 -background $color(editBg) -selectbackground $color(selectbg)] +#pack $lblList -side left -fill both -expand yes +$fList setwidget $lblList +pack $fList -side top -fill both -expand yes +############################################### +set nb [NoteBook .frmBody.frmEditor.noteBook -font $font(normal) -side $gui(tabsLabel) -background $color(bg)] +pack $nb -fill both -expand true -padx 2 -pady 2 +############################################### + +set m .popupTabs +menu $m -font $font(normal) +$m add command -label [::msgcat::mc "Close"] -command {FileDialog close}\ +-font $font(normal) -accelerator "Ctrl+W" +$m add command -label [::msgcat::mc "Close all"] -command {FileDialog close_all}\ +-font $font(normal) + +## KEYS BINDINGS ## + +$tree bindText "TreeOneClick [$tree selection get]" +$tree bindImage "TreeOneClick [$tree selection get]" +$tree bindText {$tree selection add [$tree selection get]} +$tree bindImage {$tree selection add [$tree selection get]} +$treeStruct bindText "TreeStructOneClick [$treeStruct selection get]" +$treeStruct bindImage "TreeStructOneClick [$treeStruct selection get]" + +$nb bindtabs "ClickTab" +$nb bindtabs {catch [PopupMenuTab .popupTabs %X %Y]} + +## MOUSE WHEEL BINDING ## +bind $fTree.tree.c "$tree yview scroll -3 units" +bind $fTree.tree.c "$tree yview scroll 3 units" +bind $fTree.tree.c "$tree xview scroll -2 units" +bind $fTree.tree.c "$tree xview scroll 2 units" +bind $fTree.tree.c {catch [tk_popup .frmMenu.mnuFile.m %X %Y]} + +bind $fTreeStruct.treeStruct.c "$treeStruct yview scroll -3 units" +bind $fTreeStruct.treeStruct.c "$treeStruct yview scroll 3 units" +bind $fTreeStruct.treeStruct.c "$treeStruct xview scroll -2 units" +bind $fTreeStruct.treeStruct.c "$treeStruct xview scroll 2 units" + +$lblList bindImage "FindLabel [$lblList selection get]" +$lblList bindText "FindLabel [$lblList selection get]" + +bind $lblList.c "$lblList yview scroll -3 units" +bind $lblList.c "$lblList yview scroll 3 units" +bind $lblList.c "$lblList xview scroll -2 units" +bind $lblList.c "$lblList xview scroll 2 units" + +bind . Quit +bind . Quit +bind . ShowHelp +bind . {ConvertDialog dvi} +bind . {ConvertDialog ps} +bind . {ConvertDialog pdf} + +bind . {PageTab 1} +bind . {PageTab -1} + +############################################### +## CREATE TOOLBARs ## +############################################### +set btnNum 0 +proc CreateToolButton {frame command image hint keys} { + global dir btnNum color relief + if {$frame == "main"} { + set frm frmTool + } else { + set frm frmToolEdit + } + set comm [string trim $command "\""] + set btn [Button .$frm.$frame.btn_$btnNum -relief $relief(btn) -bd 1\ + -command $comm -background $color(bg)] + image create photo img_$btnNum -format gif -file [file join $dir(img) $image] + $btn configure -image img_$btnNum + if {$keys != ""} { + set keys [string trim $keys "\""] + #puts "$keys - $comm" + bind . <$keys> "$comm" + } + + pack $btn -side left + balloon $btn set [::msgcat::mc [string trim $hint "\""]] + incr btnNum +} +proc ReadToolBarFile {_dir} { + global dir font color file frm frame tool + foreach file [lsort [glob -nocomplain [file join $_dir toolbar *]]] { + puts "Found toolbar file - \'$file\'" + set frame [file tail $file] + if {$frame == "main"} { + set frm frmTool + } else { + set frm frmToolEdit + } + AddCheckBox .frmMenu.mnuView.m.tool $frame $file $frm + if {$tool($frame) == 1} { + ReadToolBar $file + } + } +} + +proc AddCheckBox {m frame file frm} { + global font color tool + $m add checkbutton -label [::msgcat::mc "$frame"] -font $font(normal) -state normal\ + -offvalue 0 -onvalue 1 -variable tool($frame) -selectcolor $color(selectbg)\ + -command "ToolBar $frm $frame $file"\ + -background $color(bg) +} + +proc ReadToolBar {file} { + global dir font color + set frame [file tail $file] + puts "Create toolbar \'$frame\' from file \'$file\'" + + if {$frame == "main"} { + set frm frmTool + } else { + set frm frmToolEdit + } + pack [frame .$frm.$frame -background $color(bg)] -side left -fill x + set fHandle [open $file] + while {[gets $fHandle line]>=0} { + set line [string trim $line] + set kw [string range $line 0 [expr [string first " " $line]-1]] + set l [string range $line [expr [string first " " $line] +1] end] + if {$kw == "button"} { + if [regexp -- {(\".*?\") (.*?) (\".*?\") (\".*?\")} $l m cmd img hint keys] { + #puts "$frame $cmd $img $hint" + CreateToolButton $frame $cmd $img $hint $keys + } elseif [regexp -- {(\".*?\") (.*?) (\".*?\")} $l m cmd img hint] { + CreateToolButton $frame $cmd $img $hint "" + } + } + if {$l == "Separator"} { + CreateSeparator $frame + } + if {$kw == "menu"} { + if [regexp -- {(.*?) (\".*?\")} $l m img hint] { + set menu [CreateToolMenu $frame $img $hint] + } + } + if {$kw == "cmd"} { + + if [regexp -- {(\".*?\") (\".*?\") (\".*?\")} $l m cmd hint keys] { + InsertCommand $menu $cmd $hint "" $keys + } elseif [regexp -- {(\".*?\") (\".*?\")} $l m cmd hint] { + InsertCommand $menu $cmd $hint "" "" + } + + if [regexp -- {separator} $l m] { + InsertSeparator $menu + } + } + if {$kw == "imagecmd"} { + if [regexp -- {(\".*?\") (\".*?\") (.*?)\.gif} $l m cmd hint im] { + InsertCommand $menu $cmd $hint $im "" + } + if [regexp -- {(\".*?\") (\".*?\") (.*?)\.gif (\".*?\")} $l m cmd hint im keys] { + InsertCommand $menu $cmd $hint $im $keys + } + } + } + close $fHandle +} + +set mnuNum 0 +proc CreateToolMenu {frame image hint} { + global dir font mnuNum color relief + if {$frame == "main"} { + set frm frmTool + } else { + set frm frmToolEdit + } + image create photo img_mnu$mnuNum -format gif -file [file join $dir(img) $image] + menubutton .$frm.$frame.m$mnuNum -image img_mnu$mnuNum -border 0\ + -menu .$frm.$frame.m$mnuNum.m -background $color(bg) -relief $relief(menu) + + set menu [menu .$frm.$frame.m$mnuNum.m -background $color(bg)] + pack .$frm.$frame.m$mnuNum -side left + balloon .$frm.$frame.m$mnuNum set [::msgcat::mc [string trim $hint "\""]] + incr mnuNum + return $menu +} +set cmdNum 0 +proc InsertCommand {m cmd hint image keys} { + global font dir cmdNum color + set comm [string trim $cmd "\""] + set hint [string trim $hint "\""] + #puts "Create cmd - $m - $cmd $hint $image" + + if {$keys != ""} { + set keys [string trim $keys "\""] + #puts "$keys - $comm" + bind . <$keys> "$comm" + if {$image != ""} { + set image [string trim $image] + image create photo img_$cmdNum -format gif -file [file join $dir(img) $image.gif] + $m add command -label [::msgcat::mc $hint] -font $font(normal) -state normal\ + -command $comm -image img_$cmdNum -background $color(bg) -accelerator "$keys" + } else { + $m add command -label [::msgcat::mc $hint] -font $font(normal) -state normal\ + -command $comm -background $color(bg) -accelerator "$keys" + } + } else { + if {$image != ""} { + set image [string trim $image] + image create photo img_$cmdNum -format gif -file [file join $dir(img) $image.gif] + $m add command -label [::msgcat::mc $hint] -font $font(normal) -state normal\ + -command $comm -image img_$cmdNum -background $color(bg) + } else { + $m add command -label [::msgcat::mc $hint] -font $font(normal) -state normal\ + -command $comm -background $color(bg) + } + } + incr cmdNum +} +proc InsertSeparator {m} { + $m add separator +} + +proc CreateSeparator {frame} { + global dir btnNum color relief + if {$frame == "main"} { + set frm frmTool + } else { + set frm frmToolEdit + } + set btn [frame .$frm.$frame.btn_$btnNum -width 10 -background $color(bg) -borderwidth 0] + #set btn [Button .$frm.$frame.btn_$btnNum -relief $relief(btn) -bd 2 -background $color(bg) -width 0 -state disable] + pack $btn -side left -fill y -expand 1 + incr btnNum +} + +proc ToolBar {frm frame file} { + global tool + if {$tool($frame) == 0} { + #set tool($frame) 0 + if {$frame == "main"} { + destroy .$frm.$frame + .frmTool configure -height 1 + } else { + destroy .$frm.$frame + .frmToolEdit configure -height 1 + } + return + } elseif {$tool($frame) == 1} { + #set tool($frame) 1 + ReadToolBar $file + return + } +} + +############################################### +proc CutPast {action} { + global nb + set node [$nb raise] + if {$node == "newproj" || $node == "settings" || $node == "about" || $node == ""} { + return + } + + set text $nb.f$node.f.text + switch -- $action { + "copy" { + tk_textCopy $text + } + "cut" { + tk_textCut $text + } + "paste" { + tk_textPaste $text + } + "undo" { + $text undo + } + } +} +proc Select {type} { + global nb activeFile + set text $nb.f$activeFile.f.text + if {$type == "all"} { + $text tag remove sel 1.0 end + $text tag add sel 1.0 end + } elseif {$type == "remove"} { + $text tag remove sel 1.0 end + } +} + +proc PopupMenu {text x y} { + set selIndex [$text tag ranges sel] + if {$selIndex != ""} { + tk_popup .frmMenu.mnuEdit.m.selection $x $y + } else { + tk_popup .frmMenu.mnuEdit.m $x $y + } +} +proc PopupMenuTab {menu x y} { + tk_popup $menu $x $y +} + +########### +## STATUS BAR ## +set frm1 [frame .frmStatus.frmFileAttr -background $color(bg)] +set frm2 [frame .frmStatus.frmActive -background $color(bg)] +set frm3 [frame .frmStatus.frmFileSize -relief sunken -background $color(bg)] +set frm4 [frame .frmStatus.frmPos -background $color(bg)] +set frm5 [frame .frmStatus.frmFile -background $color(bg)] +set frm6 [frame .frmStatus.frmOvwrt -background $color(bg)] +set frm7 [frame .frmStatus.frmOther -background $color(bg)] +pack $frm1 $frm4 $frm6 $frm2 $frm5 $frm3 -side left -fill x +pack $frm7 -side left -fill x -expand true +set status(fileAttr) [label $frm1.lblFileAttr -width 30 -relief sunken -font $font(normal) -anchor w -background $color(bg)] +pack $frm1.lblFileAttr -fill x +set status(pos) [label $frm4.lblPos -width 10 -relief sunken -font $font(bold) -anchor w -background $color(bg)] +pack $frm4.lblPos -fill x +set status(ovwrt) [label $frm6.lblOvwrt -width 10 -relief sunken -font $font(normal) -anchor center -background $color(bg)] +pack $frm6.lblOvwrt -fill x +set status(active) [label $frm2.lblActive -width 25 -relief sunken -font $font(normal) -anchor center -background $color(bg) ] +pack $frm2.lblActive -fill x +set status(fileSize) [label $frm3.lblFileSize -width 10 -relief sunken -font $font(normal) -anchor w -background $color(bg)] +pack $frm3.lblFileSize -fill x +set status(encode) [label $frm5.lblFile -width 10 -relief sunken -font $font(normal) -anchor w -background $color(bg)] +pack $frm5.lblFile -fill x +set status(other) [label $frm7.lblOther -width 10 -relief sunken -font $font(normal) -anchor w -background $color(bg)] +pack $frm7.lblOther -fill x + +####### +bind . {FileDialog new} +bind . {FileDialog new} +bind . {FileDialog open} +bind . {FileDialog open} + +$nbTree raise fileTree +############ +$status(ovwrt) configure -text [::msgcat::mc "Insert"] + +ReadToolBarFile $dir(gui) ;# system toolbars +ReadToolBarFile $dir(work_gui) ;# user toolbars +ReadHotKeysFile $dir(gui) ;# system hotkeys +ReadHotKeysFile $dir(work_gui) ;# users hotkeys + +## FINDE EXTERNAL MODULES ## +FindModule + + + + + diff --git a/lib/modules/help.tcl b/lib/modules/help.tcl new file mode 100755 index 0000000..556001f --- /dev/null +++ b/lib/modules/help.tcl @@ -0,0 +1,333 @@ +######################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +######################################################### +proc ShowHelp {} { + if {[winfo exists .help] == 1} { + focus -force .help + raise .help + } else { + TopLevelHelp + } + if {[catch {set word [selection get]} error] != 0} { + set word " " + } else { + puts $word + TopLevelHelp + SearchWord $word + } +} + +proc HlpTreeOneClick {node} { + global font(normal) hlpTree wordList hlpNoteBook findString dir(img) font + global lstSearch nodeParent + $hlpTree selection set $node + set nodeParent [$hlpTree parent $node] + set item [$hlpTree itemcget $node -data] + set file [string range $item 4 end] + #puts "$file" ;#debuf info + if {[string range $item 0 2] == "toc"} { + # $hlpTree configure + } + if {[$hlpTree itemcget $node -open] == 1} { + $hlpTree itemconfigure $node -open 0 + } elseif {[$hlpTree itemcget $node -open] == 0} { + $hlpTree itemconfigure $node -open 1 + } + if {[string range $item 0 2] == "doc"} { + GetContent $file + } +} +## GETTING TABLE OF CONTENT ## +proc GetTOC {} { + global dir hlpTree dir font lstSearch arr help locale + foreach dirHlp [lsort [glob -nocomplain [file join $dir(hlp) *]]] { + if {[file isdirectory $dirHlp] == 1} { + set dirHlp [file join $dir(hlp) $locale] + puts $dirHlp + } else { + set dirHlp $dir(hlp) + } + } + if {[info exists dirHlp] != 1} {set dirHlp $dir(hlp)} + puts $dirHlp + foreach file [lsort [glob -nocomplain [file join $dirHlp *toc.html]]] { + set fileName [file join $file] + set tocFile [open $fileName r] + fconfigure $tocFile -encoding binary + + set dot "_" + set nodeParent [file dirname $fileName] + while {[gets $tocFile line]>=0} { + set a "" + set b "" + set line [encoding convertfrom $help(encode) $line] + if {[regexp -nocase ".+\" $line a]} { + if {[regexp ">.+\<" $line a]} { + set length [string length $a] + set title [string range $a 1 [expr $length-2]] + #puts $nodeParent ;# debug info + $hlpTree insert end root $nodeParent -text "$title" -font $font(normal) \ + -data "toc_$nodeParent" -open 0\ + -image [Bitmap::get [file join $dir(img) books.gif]] + } + } elseif {[regexp "\".+\"" $line a]} { + set data [string range $a 1 [expr [string last "\"" $a]-1]] + if {[regexp ">.+\<" $line b]} { + set line [string range $b 1 [expr [string first "<" $b]-1]] + regsub -all {[ :]} $line "_" subNode + #regsub -all ":" $ubNode "_" node + set subNode "$nodeParent$dot$subNode" + if {[info exists arr($subNode)] == 0} { + set arr($subNode) [file join $dirHlp $data] + } + set data [file join $dirHlp $data] + #puts "$subNode" ;# debug info + $hlpTree insert end "$nodeParent" $subNode -text "$line"\ + -font $font(normal) -data "doc_$data" -open 0\ + -image [Bitmap::get [file join $dir(img) file.gif]] + $lstSearch insert end $line + } + } else { + break + } + } + } + $hlpTree configure -redraw 1 +} +proc SearchWord {word} { + global arr nBookTree + set word [string tolower [string trim $word]] + puts $word + $nBookTree raise hlpSearch + # InsertEnt .help.frmBody.frmCat.nBookTree.fhlpSearch.frmScrhEnt.entSearch $word + foreach wrd [array names arr] { + set name "[file rootname [file tail $arr($wrd)]]" + set file "$arr($wrd)" + if {[string match "$word*" [string tolower $name]] == 1} { + GetContent $file + } + } +} +## GETTING CONTENT FROM FILES ## +proc GetContent {file} { + global dir hlpNoteBook font help + $hlpNoteBook raise [$hlpNoteBook page 0] + set node [$hlpNoteBook raise] + if {$node != ""} { + $hlpNoteBook delete hlpHTML + } + set nbTitle "" + set html "" + set file [open $file r] + fconfigure $file -encoding binary + while {[gets $file line]>=0} { +# if {$line == ""} { +# set html "

Файл $file не содержит данных

" +# } + set line [encoding convertfrom $help(encode) $line] + if {[regexp -nocase ".+\" $line a]} { + if {[regexp ">.+\<" $a a]} { + set length [string length $a] + set nbTitle [string range $a 1 [expr $length-2]] + #puts $nbTitle + #puts $a + } + } + append html $line + } + set frmHTML [$hlpNoteBook insert end hlpHTML -text $nbTitle] + set txt [text $frmHTML.txtHTML -yscrollcommand "$frmHTML.yscroll set" \ + -relief sunken -wrap word -highlightthickness 0 -font $font(normal)\ + -selectborderwidth 0 -selectbackground #55c4d1 -width 10] + scrollbar $frmHTML.yscroll -relief sunken -borderwidth {1} -width {10} -takefocus 0\ + -command "$frmHTML.txtHTML yview" + + pack $txt -side left -fill both -expand true + pack $frmHTML.yscroll -side left -fill y + $hlpNoteBook raise hlpHTML + focus -force $txt + HMinit_win $txt + #HMlink_callback LinkCallback + HMset_state $txt -size 0 + HMset_indent $txt 1.2 + HMparse_html $html "HMrender $txt" + #HM::tag_title .help "Help - $nbTitle" +$txt configure -state disabled + +} +## GOTO URL PROCEDURE ## +proc LinkCallback {w url} { + global dir nodeParent + set url "[file join $dir(hlp) $nodeParent $url]" + if {[catch {open $url r} oHTML]} { + tk_messageBox -title "[::msgcat::mc "Error open URL"]"\ + -message "[::msgcat::mc "Can't found file:"] $url"\ + -icon error -type ok + } else { + GetContent $url + } +} + + +## autor DEDERER ## +proc LinkCallback_ {w url} { + global dir + set url "[file join $dir(hlp) $url]" + if {[catch {open $url r} oHTML]} { + tk_messageBox -title "[::msgcat::mc "Error open URL"]"\ + -message "[::msgcat::mc "Can't founf file: $url"]"\ + -icon error -type ok + } else { + set html [read $oHTML] + $w configure -state normal + HMreset_win $w + HMparse_html $html "HMrender $w" + $w configure -state disable + } + #HMrender [winfo toplevel $w] $url +} + +## MAIN HELP WINDOW ## +proc TopLevelHelp {} { + global font hlpTree hlpNoteBook nBookTree homeDir dir lstSearch w frmSrchList + set w .help + set w_exist [winfo exists $w] + if !$w_exist { + toplevel $w + # wm resizable .help 0 0 + wm geometry $w 600x400+0+0 + wm title $w [::msgcat::mc "Help"] + # wm protocol $w WM_DELETE_WINDOW {destroy .msg .help} + #wm geometry . 600x400+0+0 + wm title $w [::msgcat::mc "Help"] + + frame $w.frmMenu -border 1 -relief raised + frame $w.frmTool -border 1 -relief raised + frame $w.frmBody -border 1 -relief raised + frame $w.frmStatus -border 1 -relief sunken + pack $w.frmMenu -side top -padx 1 -fill x + pack $w.frmTool -side top -padx 1 -fill x + pack $w.frmBody -side top -padx 1 -fill both -expand true + pack $w.frmStatus -side top -padx 1 -fill x + + + button $w.frmTool.btnBack -relief groove -font $font(bold) -command Back -state disable + button $w.frmTool.btnForward -relief groove -font $font(bold) -command Forward -state disable + button $w.frmTool.btnRefresh -relief groove -font $font(bold) -command Refresh -state disable + button $w.frmTool.btnPrint -relief groove -font $font(bold) -command Print -state disable + image create photo imgBack -format gif -file [file join $dir(img) back.gif] + image create photo imgForward -format gif -file [file join $dir(img) forward.gif] + image create photo imgRefresh -format gif -file [file join $dir(img) refresh.gif] + image create photo imgPrint -format gif -file [file join $dir(img) printer.gif] + $w.frmTool.btnBack configure -image imgBack + $w.frmTool.btnForward configure -image imgForward + $w.frmTool.btnRefresh configure -image imgRefresh + $w.frmTool.btnPrint configure -image imgPrint + pack $w.frmTool.btnBack $w.frmTool.btnForward $w.frmTool.btnRefresh $w.frmTool.btnPrint\ + -side left -fill x + + + set frmCat [frame $w.frmBody.frmCat -border 1 -relief sunken] + pack $frmCat -side left -fill y + set frmWork [frame $w.frmBody.frmWork -border 1 -relief sunken] + pack $frmWork -side left -fill both -expand true + + set nBookTree [NoteBook $frmCat.nBookTree -font $font(normal)] + pack $nBookTree -fill both -expand true -padx 2 -pady 2 + set frmTreeNb [$nBookTree insert end hlpTree -text "[::msgcat::mc "Contents"]"] + set frmSearch [$nBookTree insert end hlpSearch -text "[::msgcat::mc "Search"]"] + $nBookTree raise hlpTree + + set frmScrlX [frame $frmTreeNb.frmScrlX -border 0 -relief sunken] + set frmTree [frame $frmTreeNb.frmTree -border 1 -relief sunken] + set hlpTree [Tree $frmTree.tree \ + -relief sunken -borderwidth 1 -width 20 -highlightthickness 0\ + -redraw 0 -dropenabled 1 -dragenabled 1 -dragevent 3 \ + -yscrollcommand {.help.frmBody.frmCat.nBookTree.fhlpTree.frmTree.scrlY set} \ + -xscrollcommand {.help.frmBody.frmCat.nBookTree.fhlpTree.frmScrlX.scrlX set} \ + -background "#d3d3d3" -selectbackground "#55c4d1" \ + -droptypes { + TREE_NODE {copy {} move {} link {}} + LISTBOX_ITEM {copy {} move {} link {}} + } -opencmd "" -closecmd ""] + + pack $frmTree -side top -fill y -expand true + pack $frmScrlX -side top -fill x + + scrollbar $frmTree.scrlY -command {$hlpTree yview} \ + -borderwidth {1} -width {10} -takefocus 0 + pack $hlpTree $frmTree.scrlY -side left -fill y + + scrollbar $frmScrlX.scrlX -command {$hlpTree xview} \ + -orient horizontal -borderwidth {1} -width {10} -takefocus 0 + pack $frmScrlX.scrlX -fill x -expand true + + set frmSrchList [frame $frmSearch.frmScrhList -border 0 -relief sunken] + set frmSrchEnt [frame $frmSearch.frmScrhEnt -border 0 -relief sunken] + set frmSrchScrollX [frame $frmSearch.frmScrhScrollX -border 0 -relief sunken] + pack $frmSrchEnt -side top -fill x + pack $frmSrchList -side top -fill both -expand true + pack $frmSrchScrollX -side top -fill x + + entry $frmSrchEnt.entSearch + set lstSearch [listbox $frmSrchList.lstSearch -font $font(normal)\ + -yscrollcommand\ + {.help.frmBody.frmCat.nBookTree.fhlpSearch.frmScrhList.scrListY set}\ + -xscrollcommand\ + {.help.frmBody.frmCat.nBookTree.fhlpSearch.frmScrhScrollX.scrListX set}\ + -selectmode single -selectbackground #55c4d1\ + -selectborderwidth 0] + scrollbar $frmSrchList.scrListY -command\ + {$frmSrchList.lstSearch yview} -borderwidth {1} -width {10} -takefocus 0 + + pack $frmSrchEnt.entSearch -side top -fill x -expand true + + pack $frmSrchList.lstSearch -side left -fill both -expand true + pack $frmSrchList.scrListY -side left -fill y + + scrollbar $frmSrchScrollX.scrListX -orient horizontal -command\ + {$frmSrchList.lstSearch xview} -borderwidth {1} -width {10} -takefocus 0 + pack $frmSrchScrollX.scrListX -fill x +# $hlpTree bindText [puts %k] +# $hlpTree bindText [puts %k] +# bind $frmTree {$frmSrchList.lstSearch xview} + # $hlpTree bindText "HlpTreeDoubleClick [$hlpTree selection get]" + # $hlpTree bindImage "HlpTreeDoubleClick [$hlpTree selection get]" + $hlpTree bindText "HlpTreeOneClick [$hlpTree selection get]" + $hlpTree bindImage "HlpTreeOneClick [$hlpTree selection get]" + bind .help "destroy .help" + +# bind $frmSrchEnt.entSearch \ +# {SearchWord [Text .help.frmBody.frmCat.nBookTree.fhlpSearch.frmScrhEnt.entSearch]} + + #bind $w exit + #bind $frmTree {TreeClick [$hlpTree selection get]} + #bind $frmTree {TreeClick [$hlpTree selection get]} + #bind $frmTree {TreeClick [$hlpTree selection get]} + bind $frmTree.tree.c "$hlpTree yview scroll -3 units" + bind $frmTree.tree.c "$hlpTree yview scroll 3 units" + bind $frmTree.tree.c "$hlpTree xview scroll -2 units" + bind $frmTree.tree.c "$hlpTree xview scroll 2 units" + + set hlpNoteBook [NoteBook $frmWork.hlpNoteBook -font $font(normal)] + pack $hlpNoteBook -fill both -expand true -padx 2 -pady 2 + GetTOC + } + +} + +################################################## +#TopLevelHelp +#GetTOC + +#GetContent $dir(hlp)/tcl.toc.html + + + + + + + diff --git a/lib/modules/hotkeys.tcl b/lib/modules/hotkeys.tcl new file mode 100755 index 0000000..a622da0 --- /dev/null +++ b/lib/modules/hotkeys.tcl @@ -0,0 +1,61 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (aka BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2004, http://conero.lrn.ru +###################################################### + +proc ReadHotKeysFile {_dir} { + global dir + foreach file [lsort [glob -nocomplain [file join $_dir hotkeys *]]] { + puts "Found hotkeys file - \'$file\'" + ReadHotKeys $file + } +} + + +set mnum 0 +proc ReadHotKeys {file} { + global dir font mnum + set menu_root ".frmMenu.mnuEdit.m.hotkeys" + set menu $menu_root + puts "Read HotKeys settings from \'$file\'" + + set fHandle [open $file] + while {[gets $fHandle line]>=0} { + set line [string trim $line] + set kw [string range $line 0 [expr [string first " " $line]-1]] + set l [string range $line [expr [string first " " $line] +1] end] + if {$l == "Separator"} { + CreateSeparator $frame + } + if {$kw == "menu"} { + if [regexp -- {(.*?) (\".*?\")} $l m img hint] { + $menu_root add cascade -label $hint -menu $menu.m_$mnum -font $font(normal) + set menu [menu $menu.m_$mnum] + incr mnum + } + } + if {$kw == "cmd"} { + if [regexp -- {(\".*?\") (\".*?\") (\".*?\")} $l m cmd hint keys] { + InsertCommand $menu $cmd $hint "" $keys + } elseif [regexp -- {(\".*?\") (\".*?\")} $l m cmd hint] { + InsertCommand $menu $cmd $hint "" "" + } + if [regexp -- {separator} $l m] { + InsertSeparator $menu + } + } + if {$kw == "imagecmd"} { + if [regexp -- {(\".*?\") (\".*?\") (.*?)\.gif} $l m cmd hint im] { + InsertCommand $menu $cmd $hint $im "" + } + if [regexp -- {(\".*?\") (\".*?\") (.*?)\.gif (\".*?\")} $l m cmd hint im keys] { + InsertCommand $menu $cmd $hint $im $keys + } + } + } + close $fHandle + +} + diff --git a/lib/modules/htmllib.tcl b/lib/modules/htmllib.tcl new file mode 100755 index 0000000..03aa7f6 --- /dev/null +++ b/lib/modules/htmllib.tcl @@ -0,0 +1,1485 @@ +# Simple HTML display library by Stephen Uhler (stephen.uhler@sun.com) +# Copyright (c) 1995 by Sun Microsystems +# Version 0.3 Fri Sep 1 10:47:17 PDT 1995 +# +# Modified to support some 8.0 and 8.1 font conventions by Clif Flynt +# (clif@cflynt.com) +# Modifications copyright (c) 1998 by Flynt Consulting Services, +# Version 0.3.1 Jan 10, 1999 +# +;# RCSID: $Header: /home/clif.clif/CVS_ROOT/TclXexample/htmllib.tcl,v 1.9 1999/02/01 04:58:02 clif Exp $ +# +# See the file "license.terms" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# To use this package, create a text widget (say, .text) +# and set a variable full of html, (say $html), and issue: +# HMinit_win .text +# HMparse_html $html "HMrender .text" +# You also need to supply the routine: +# proc HMlink_callback {win href} { ...} +# win: The name of the text widget +# href The name of the link +# which will be called anytime the user "clicks" on a link. +# The supplied version just prints the link to stdout. +# In addition, if you wish to use embedded images, you will need to write +# proc HMset_image {handle src} +# handle an arbitrary handle (not really) +# src The name of the image +# Which calls +# HMgot_image $handle $image +# with the TK image. +# +# To return a "used" text widget to its initialized state, call: +# HMreset_win .text +# See "sample.tcl" for sample usage +################################################################## +############################################ +# mapping of html tags to text tag properties +# properties beginning with "T" map directly to text tags + +# These are Defined in HTML 2.0 + +array set HMtag_map { + large {size 18} + large2 {size 22} + large3 {size 20} + large4 {size 18} + b {weight bold} + blockquote {style i indent 1 Trindent rindent} + bq {style i indent 1 Trindent rindent} + cite {style i} + code {family courier} + dfn {style i} + dir {indent 1} + dl {indent 1} + em {style i} + h1 {size 24 weight bold} + h2 {size 22} + h3 {size 20} + h4 {size 18} + h5 {size 16} + h6 {style i} + i {style i} + kbd {family courier weight bold} + menu {indent 1} + ol {indent 1} + pre {fill 0 family courier Tnowrap nowrap} + samp {family courier} + strong {weight bold} + tt {family courier} + u {Tunderline underline} + ul {indent 1} + var {style i} +} + +# These are in common(?) use, but not defined in html2.0 + +array set HMtag_map { + center {Tcenter center} + strike {Tstrike strike} + u {Tunderline underline} +} + +# initial values + +set HMtag_map(hmstart) { + family times weight medium style r size 14 + Tcenter "" Tlink "" Tnowrap "" Tunderline "" list list + fill 1 indent "" counter 0 adjust 0 +} + +# html tags that insert white space + +array set HMinsert_map { + blockquote "\n\n" /blockquote "\n" + br "\n" + dd "\n" /dd "\n" + dl "\n" /dl "\n" + dt "\n" + form "\n" /form "\n" + h1 "\n\n" /h1 "\n" + h2 "\n\n" /h2 "\n" + h3 "\n\n" /h3 "\n" + h4 "\n" /h4 "\n" + h5 "\n" /h5 "\n" + h6 "\n" /h6 "\n" + li "\n" + /dir "\n" + /ul "\n" + /ol "\n" + /menu "\n" + p "\n\n" + pre "\n" /pre "\n" +} + +# tags that are list elements, that support "compact" rendering + +array set HMlist_elements { + ol 1 ul 1 menu 1 dl 1 dir 1 +} + +;# Default to no font size scaling +set HM_globals(S_adjust_size) 0 + +############################################ +# initialize the window and stack state + +proc HMinit_win {win} { + upvar #0 HM$win var + + HMinit_state $win + $win tag configure underline -underline 1 + $win tag configure center -justify center + $win tag configure nowrap -wrap none + $win tag configure rindent -rmargin $var(S_tab)c + $win tag configure strike -overstrike 1 + $win tag configure mark -foreground red ;# list markers + $win tag configure list -spacing1 3p -spacing3 3p ;# regular lists + $win tag configure compact -spacing1 0p ;# compact lists + $win tag configure link -borderwidth 2 -foreground blue ;# hypertext links + HMset_indent $win $var(S_tab) + $win configure -wrap word + + # configure the text insertion point + $win mark set $var(S_insert) 1.0 + + # for horizontal rules + set size 1; + while {[catch "$win tag configure thin -font [list [HMx_font times $size medium r]]" ]} { + puts "Failed to open horizontal rule $size, trying larger" + global errorCode errorInfo + puts "$errorCode -- $errorInfo" + incr size; + } + + $win tag configure hr -relief sunken -borderwidth 2 -wrap none \ + -tabs [winfo width $win] + bind $win { + %W tag configure hr -tabs %w + %W tag configure last -spacing3 %h + } + + # generic link enter callback + + $win tag bind link <1> "HMlink_hit $win %x %y" +} + +# set the indent spacing (in cm) for lists +# TK uses a "weird" tabbing model that causes \t to insert a single +# space if the current line position is past the tab setting + +proc HMset_indent {win cm} { + set tabs [expr $cm / 2.0] + $win configure -tabs ${tabs}c + foreach i {1 2 3 4 5 6 7 8 9} { + set tab [expr $i * $cm] + $win tag configure indent$i -lmargin1 ${tab}c -lmargin2 ${tab}c \ + -tabs "[expr $tab + $tabs]c [expr $tab + 2*$tabs]c" + } +} + +# reset the state of window - get ready for the next page +# remove all but the font tags, and remove all form state + +proc HMreset_win {win} { + upvar #0 HM$win var + regsub -all { +[^L ][^ ]*} " [$win tag names] " {} tags + catch "$win tag delete $tags" + eval $win mark unset [$win mark names] + $win delete 0.0 end + $win tag configure hr -tabs [winfo width $win] + + # configure the text insertion point + $win mark set $var(S_insert) 1.0 + + # remove form state. If any check/radio buttons still exists, + # their variables will be magically re-created, and never get + # cleaned up. + catch unset [info globals HM$win.form*] + + HMinit_state $win + return HM$win +} + +# initialize the window's state array +# Parameters beginning with S_ are NOT reset +# adjust_size: global font size adjuster +# unknown: character to use for unknown entities +# tab: tab stop (in cm) +# stop: enabled to stop processing +# update: how many tags between update calls +# tags: number of tags processed so far +# symbols: Symbols to use on un-ordered lists + +proc HMinit_state {win} { + upvar #0 HM$win var + array set tmp [array get var S_*] + catch {unset var} + array set var { + stop 0 + tags 0 + fill 0 + list list + S_adjust_size 0 + S_tab 1.0 + S_unknown \xb7 + S_update 10 + S_symbols O*=+-o\xd7\xb0>:\xb7 + S_insert Insert + } + + array set var [array get tmp] +} + +# alter the parameters of the text state +# this allows an application to over-ride the default settings +# it is called as: HMset_state -param value -param value ... + +array set HMparam_map { + -update S_update + -tab S_tab + -unknown S_unknown + -stop S_stop + -size S_adjust_size + -symbols S_symbols + -insert S_insert +} + +proc HMset_state {win args} { + upvar #0 HM$win var + global HMparam_map + set bad 0 + if {[catch {array set params $args}]} {return 0} + foreach i [array names params] { + incr bad [catch {set var($HMparam_map($i)) $params($i)}] + } + return [expr $bad == 0] +} + +proc HMinsert_FromMap { win text id } { + global HMtag_map HMinsert_map HMlist_elements + upvar #0 HM$win var + + # insert white space (with current font) + # adding white space can get a bit tricky. This isn't quite right + set bad [catch {$win insert $var(S_insert) $HMinsert_map($id) "space $var(font)"}] + + if {!$bad && [lindex $var(fill) end]} { + set text [string trimleft $text] + } +} + +############################################ +# manage the display of html + +# HMrender gets called for every html tag +# win: The name of the text widget to render into +# tag: The html tag (in arbitrary case) +# not: a "/" or the empty string +# param: The un-interpreted parameter list +# text: The plain text until the next html tag + +proc HMrender {win tag not param text} { + upvar #0 HM$win var + if {$var(stop)} return + global HMtag_map HMinsert_map HMlist_elements + set tag [string tolower $tag] + set text [HMmap_esc $text] + + # manage compact rendering of lists + if {[info exists HMlist_elements($tag)]} { + set list "list [expr {[HMextract_param $param compact] ? "compact" : "list"}]" + } else { + set list "" + } + + # Allow text to be diverted to a different window (for tables) + # this is not currently used + if {[info exists var(divert)]} { + set win $var(divert) + upvar #0 HM$win var + } + + # adjust (push or pop) tag state + catch {HMstack $win $not "$HMtag_map($tag) $list"} + + HMinsert_FromMap $win $text $not$tag + + # to fill or not to fill + if {[lindex $var(fill) end]} { + set text [HMzap_white $text] + } + + # generic mark hook + catch {HMmark $not$tag $win $param text} err + + # do any special tag processing + catch {HMtag_$not$tag $win $param text} msg + + + # add the text with proper tags + + set tags [HMcurrent_tags $win] + $win insert $var(S_insert) $text $tags + + # We need to do an update every so often to insure interactive response. + # This can cause us to re-enter the event loop, and cause recursive + # invocations of HMrender, so we need to be careful. + if {!([incr var(tags)] % $var(S_update))} { + update + } +} + +# html tags requiring special processing +# Procs of the form HMtag_ or HMtag_ get called just before +# the text for this tag is displayed. These procs are called inside a +# "catch" so it is OK to fail. +# win: The name of the text widget to render into +# param: The un-interpreted parameter list +# text: A pass-by-reference name of the plain text until the next html tag +# Tag commands may change this to affect what text will be inserted +# next. + +# A pair of pseudo tags are added automatically as the 1st and last html +# tags in the document. The default is and . +# Append enough blank space at the end of the text widget while +# rendering so HMgoto can place the target near the top of the page, +# then remove the extra space when done rendering. + +proc HMtag_hmstart {win param text} { + upvar #0 HM$win var + $win mark gravity $var(S_insert) left + $win insert end "\n " last + $win mark gravity $var(S_insert) right +} + +proc HMtag_/hmstart {win param text} { + $win delete last.first end +} + +# put the document title in the window banner, and remove the title text +# from the document + +proc HMtag_title {win param text} { + upvar $text data + wm title [winfo toplevel $win] $data + set data "" +} + +proc HMtag_hr {win param text} { + upvar #0 HM$win var + $win insert $var(S_insert) "\n" space "\n" thin "\t" "thin hr" "\n" thin +} + +# list element tags + +proc HMtag_ol {win param text} { + upvar #0 HM$win var + set var(count$var(level)) 0 +} + +proc HMtag_ul {win param text} { + upvar #0 HM$win var + catch {unset var(count$var(level))} +} + +proc HMtag_menu {win param text} { + upvar #0 HM$win var + set var(menu) -> + set var(compact) 1 +} + +proc HMtag_/menu {win param text} { + upvar #0 HM$win var + catch {unset var(menu)} + catch {unset var(compact)} +} + +proc HMtag_dt {win param text} { + upvar #0 HM$win var + upvar $text data + set level $var(level) + incr level -1 + $win insert $var(S_insert) "$data" \ + "hi [lindex $var(list) end] indent$level $var(font)" + set data {} +} + +proc HMtag_li {win param text} { + upvar #0 HM$win var + set level $var(level) + incr level -1 + set x [string index $var(S_symbols)+-+-+-+-" $level] + catch {set x [incr var(count$level)]} + catch {set x $var(menu)} + $win insert $var(S_insert) \t$x\t "mark [lindex $var(list) end] indent$level $var(font)" +} + +# Manage hypertext "anchor" links. A link can be either a source (href) +# a destination (name) or both. If its a source, register it via a callback, +# and set its default behavior. If its a destination, check to see if we need +# to go there now, as a result of a previous HMgoto request. If so, schedule +# it to happen with the closing tag, so we can highlight the text up to +# the . + +proc HMtag_a {win param text} { + upvar #0 HM$win var + + # a source + + if {[HMextract_param $param href]} { + set var(Tref) [list L:$href] + HMstack $win "" "Tlink link" + HMlink_setup $win $href + } + + # a destination + + if {[HMextract_param $param name]} { + set var(Tname) [list N:$name] + HMstack $win "" "Tanchor anchor" + $win mark set N:$name "$var(S_insert) - 1 chars" + $win mark gravity N:$name left + if {[info exists var(goto)] && $var(goto) == $name} { + unset var(goto) + set var(going) $name + } + } +} + +# The application should call here with the fragment name +# to cause the display to go to this spot. +# If the target exists, go there (and do the callback), +# otherwise schedule the goto to happen when we see the reference. + +proc HMgoto {win where {callback HMwent_to}} { + upvar #0 HM$win var + if {[regexp N:$where [$win mark names]]} { + $win see N:$where + update + eval $callback $win [list $where] + return 1 + } else { + set var(goto) $where + return 0 + } +} + +# We actually got to the spot, so highlight it! +# This should/could be replaced by the application +# We'll flash it orange a couple of times. + +proc HMwent_to {win where {count 0} {color orange}} { + upvar #0 HM$win var + if {$count > 5} return + catch {$win tag configure N:$where -foreground $color} + update + after 200 [list HMwent_to $win $where [incr count] \ + [expr {$color=="orange" ? "" : "orange"}]] +} + +proc HMtag_/a {win param text} { + upvar #0 HM$win var + if {[info exists var(Tref)]} { + unset var(Tref) + HMstack $win / "Tlink link" + } + + # goto this link, then invoke the call-back. + + if {[info exists var(going)]} { + $win yview N:$var(going) + update + HMwent_to $win $var(going) + unset var(going) + } + + if {[info exists var(Tname)]} { + unset var(Tname) + HMstack $win / "Tanchor anchor" + } +} + +# Inline Images +# This interface is subject to change +# Most of the work is getting around a limitation of TK that prevents +# setting the size of a label to a widthxheight in pixels +# +# Images have the following parameters: +# align: top,middle,bottom +# alt: alternate text +# ismap: A clickable image map +# src: The URL link +# Netscape supports (and so do we) +# width: A width hint (in pixels) +# height: A height hint (in pixels) +# border: The size of the window border + +proc HMtag_img {win param text} { + upvar #0 HM$win var + + # get alignment + array set align_map {top top middle center bottom bottom} + set align bottom ;# The spec isn't clear what the default should be + HMextract_param $param align + catch {set align $align_map([string tolower $align])} + + # get alternate text + set alt "" + HMextract_param $param alt + set alt [HMmap_esc $alt] + + set speed 0 + HMextract_param $param speed + + # get the border width + set border 1 + HMextract_param $param border + + # see if we have an image size hint + # If so, make a frame the "hint" size to put the label in + # otherwise just make the label + set item $win.$var(tags) + # catch {destroy $item} + if {[HMextract_param $param width] && [HMextract_param $param height]} { + frame $item -width $width -height $height + pack propagate $item 0 + set label $item.label + label $label + pack $label -expand 1 -fill both + } else { + set label $item + label $label + } + + $label configure -relief ridge -fg orange -text $alt + catch {$label configure -bd $border} + $win window create $var(S_insert) -align $align -window $item -pady 2 -padx 2 + + # add in all the current tags (this is overkill) + set tags [HMcurrent_tags $win] + foreach tag $tags { + $win tag add $tag $item + } + + # set imagemap callbacks + if {[HMextract_param $param ismap]} { + # regsub -all {[^L]*L:([^ ]*).*} $tags {\1} link + set link [lindex $tags [lsearch -glob $tags L:*]] + regsub L: $link {} link + global HMevents + regsub -all {%} $link {%%} link2 + foreach i [array names HMevents] { + bind $label <$i> "catch \{%W configure $HMevents($i)\}" + } + bind $label <1> "+HMlink_callback $win $link2?%x,%y" + } + + # now callback to the application + set src "" + HMextract_param $param src + HMset_image $win $label $src $speed + return $label ;# used by the forms package for input_image types +} + +# The app needs to supply one of these +proc HMset_image {win handle src} { + HMgot_image $handle "can't get\n$src" +} + +# When the image is available, the application should call back here. +# If we have the image, put it in the label, otherwise display the error +# message. If we don't get a callback, the "alt" text remains. +# if we have a clickable image, arrange for a callback + +proc HMgot_image {win image_error} { + # if we're in a frame turn on geometry propogation + if {[winfo name $win] == "label"} { + pack propagate [winfo parent $win] 1 + } + if {[catch {$win configure -image $image_error}]} { + $win configure -image {} + $win configure -text $image_error + } +} + +# Sample hypertext link callback routine - should be replaced by app +# This proc is called once for each tag. +# Applications can overwrite this procedure, as required, or +# replace the HMevents array +# win: The name of the text widget to render into +# href: The HREF link for this tag. + +array set HMevents { + Enter {-borderwidth 2 -relief raised } + Leave {-borderwidth 2 -relief flat } + 1 {-borderwidth 2 -relief sunken} + ButtonRelease-1 {-borderwidth 2 -relief raised} +} + +# We need to escape any %'s in the href tag name so the bind command +# doesn't try to substitute them. + +proc HMlink_setup {win href} { + global HMevents + regsub -all {%} $href {%%} href2 + foreach i [array names HMevents] { + eval {$win tag bind L:$href <$i>} \ + \{$win tag configure \{L:$href2\} $HMevents($i)\} + } +} + +# generic link-hit callback +# This gets called upon button hits on hypertext links +# Applications are expected to supply ther own HMlink_callback routine +# win: The name of the text widget to render into +# x,y: The cursor position at the "click" + +proc HMlink_hit {win x y} { + set tags [$win tag names @$x,$y] + set link [lindex $tags [lsearch -glob $tags L:*]] + # regsub -all {[^L]*L:([^ ]*).*} $tags {\1} link + regsub L: $link {} link + HMlink_callback $win $link +} + +# replace this! +# win: The name of the text widget to render into +# href: The HREF link for this tag. + +proc HMlink_callback {win href} { + puts "Got hit on $win, link $href" +} + +# extract a value from parameter list (this needs a re-do) +# returns "1" if the keyword is found, "0" otherwise +# param: A parameter list. It should alredy have been processed to +# remove any entity references +# key: The parameter name +# val: The variable to put the value into (use key as default) + +proc HMextract_param {param key {val ""}} { + + if {$val == ""} { + upvar $key result + } else { + upvar $val result + } + set ws " \n\r" + + # look for name=value combinations. Either (') or (") are valid delimeters + if { + [regsub -nocase [format {.*%s[%s]*=[%s]*"([^"]*).*} $key $ws $ws] $param {\1} value] || + [regsub -nocase [format {.*%s[%s]*=[%s]*'([^']*).*} $key $ws $ws] $param {\1} value] || + [regsub -nocase [format {.*%s[%s]*=[%s]*([^%s]+).*} $key $ws $ws $ws] $param {\1} value] } { + set result $value + return 1 + } + + # now look for valueless names + # I should strip out name=value pairs, so we don't end up with "name" + # inside the "value" part of some other key word - some day + + set bad \[^a-zA-Z\]+ + if {[regexp -nocase "$bad$key$bad" -$param-]} { + return 1 + } else { + return 0 + } +} + +# These next two routines manage the display state of the page. + +# Push or pop tags to/from stack. +# Each orthogonal text property has its own stack, stored as a list. +# The current (most recent) tag is the last item on the list. +# Push is {} for pushing and {/} for popping + +proc HMstack {win push list} { + upvar #0 HM$win var + array set tags $list + if {$push == ""} { + foreach tag [array names tags] { + lappend var($tag) $tags($tag) + } + } else { + foreach tag [array names tags] { + # set cnt [regsub { *[^ ]+$} $var($tag) {} var($tag)] + set var($tag) [lreplace $var($tag) end end] + } + } +} + +# extract set of current text tags +# tags starting with T map directly to text tags, all others are +# handled specially. There is an application callback, HMset_font +# to allow the application to do font error handling + +proc HMcurrent_tags {win} { + upvar #0 HM$win var + set font font + foreach i {family size weight style} { + set $i [lindex $var($i) end] + append font :[set $i] + } + set xfont [HMx_font $family $size $weight $style $var(S_adjust_size)] + HMset_font $win $font $xfont + set indent [llength $var(indent)] + incr indent -1 + lappend tags $font indent$indent + foreach tag [array names var T*] { + lappend tags [lindex $var($tag) end] ;# test + } + set var(font) $font + set var(xfont) [$win tag cget $font -font] + set var(level) $indent + return $tags +} + +# allow the application to do do better font management +# by overriding this procedure + +proc HMset_font {win tag font} { + set fail [catch {$win tag configure $tag -font $font} msg] + if {$fail} { + global errorCode errorInfo + puts "setFontFail: FONT: $font TAG: $tag\n$errorCode: $errorInfo" + set lvl [info level] + incr lvl -1; + puts "called from: '[info level $lvl]'" + } +} + +# Set a global to adjust the size of all text displayed. +# This may be a positive or negative value. +# It allows all the text on a set of HTML windows to be scaled. + +proc HM_setFontAdjust {newAdjustSize} { + global HM_globals + set HM_globals(S_adjust_size) $newAdjustSize +} + +# generate an X font name +proc HMx_font {family size weight {style {}} {adjust_size 0}} { + global tcl_version HM_globals + +# puts "FAMILY: $family - $size $weight $style $adjust_size" + if {[string match $family ""]} {set family times} + + + set size [expr $size + $HM_globals(S_adjust_size)] + set size [expr $size + $adjust_size] + + if {$tcl_version < 8.0} { + return "-*-$family-$weight-$style-normal-*-*-${size}0-*-*-*-*-*-*" + } else { + if {[string match $weight "medium"]} { + set weight "normal" + } + return "$family $size $weight" + } +} + +# Optimize HMrender (hee hee) +# This is experimental + +proc HMoptimize {} { + regsub -all "\n\[ \]*#\[^\n\]*" [info body HMrender] {} body + regsub -all ";\[ \]*#\[^\n]*" $body {} body + regsub -all "\n\n+" $body \n body + proc HMrender {win tag not param text} $body +} +############################################ +# Turn HTML into TCL commands +# html A string containing an html document +# cmd A command to run for each html tag found +# start The name of the dummy html start/stop tags + +proc HMparse_html {html {cmd HMtest_parse} {start hmstart}} { + regsub -all \{ $html {\&ob;} html + regsub -all \} $html {\&cb;} html + regsub -all {\\} $html {\\\;} html + set w " \t\r\n" ;# white space + proc HMcl x {return "\[$x\]"} + set exp <(/?)([HMcl ^$w>]+)[HMcl $w]*([HMcl ^>]*)> + set sub "\}\n$cmd {\\2} {\\1} {\\3} \{" + regsub -all $exp $html $sub html + eval "$cmd {$start} {} {} \{ $html \}" + eval "$cmd {$start} / {} {}" +} + +proc HMtest_parse {command tag slash text_after_tag} { + puts "==> $command $tag $slash $text_after_tag" +} + +# Convert multiple white space into a single space + +proc HMzap_white {data} { + regsub -all "\[ \t\r\n\]+" $data " " data + return $data +} + +# find HTML escape characters of the form &xxx; + +proc HMmap_esc {text} { + if {![regexp & $text]} {return $text} + regsub -all {([][$\\])} $text {\\\1} new + regsub -all {&#([0-9][0-9]?[0-9]?);?} \ + $new {[format %c [scan \1 %d tmp;set tmp]]} new + regsub -all {&([a-zA-Z]+);?} $new {[HMdo_map \1]} new + return [subst $new] +} + +# convert an HTML escape sequence into character + +proc HMdo_map {text {unknown ?}} { + global HMesc_map + set result $unknown + catch {set result $HMesc_map($text)} + return $result +} + +# table of escape characters (ISO latin-1 esc's are in a different table) + +array set HMesc_map { + lt < gt > amp & quot \" copy \xa9 + reg \xae ob \x7b cb \x7d nbsp \xa0 +} +############################################################# +# ISO Latin-1 escape codes + +array set HMesc_map { + #92 \x5c + nbsp \xa0 iexcl \xa1 cent \xa2 pound \xa3 curren \xa4 + yen \xa5 brvbar \xa6 sect \xa7 uml \xa8 copy \xa9 + ordf \xaa laquo \xab not \xac shy \xad reg \xae + hibar \xaf deg \xb0 plusmn \xb1 sup2 \xb2 sup3 \xb3 + acute \xb4 micro \xb5 para \xb6 middot \xb7 cedil \xb8 + sup1 \xb9 ordm \xba raquo \xbb frac14 \xbc frac12 \xbd + frac34 \xbe iquest \xbf Agrave \xc0 Aacute \xc1 Acirc \xc2 + Atilde \xc3 Auml \xc4 Aring \xc5 AElig \xc6 Ccedil \xc7 + Egrave \xc8 Eacute \xc9 Ecirc \xca Euml \xcb Igrave \xcc + Iacute \xcd Icirc \xce Iuml \xcf ETH \xd0 Ntilde \xd1 + Ograve \xd2 Oacute \xd3 Ocirc \xd4 Otilde \xd5 Ouml \xd6 + times \xd7 Oslash \xd8 Ugrave \xd9 Uacute \xda Ucirc \xdb + Uuml \xdc Yacute \xdd THORN \xde szlig \xdf agrave \xe0 + aacute \xe1 acirc \xe2 atilde \xe3 auml \xe4 aring \xe5 + aelig \xe6 ccedil \xe7 egrave \xe8 eacute \xe9 ecirc \xea + euml \xeb igrave \xec iacute \xed icirc \xee iuml \xef + eth \xf0 ntilde \xf1 ograve \xf2 oacute \xf3 ocirc \xf4 + otilde \xf5 ouml \xf6 divide \xf7 oslash \xf8 ugrave \xf9 + uacute \xfa ucirc \xfb uuml \xfc yacute \xfd thorn \xfe + yuml \xff +} + +########################################################## +# html forms management commands + +# As each form element is located, it is created and rendered. Additional +# state is stored in a form specific global variable to be processed at +# the end of the form, including the "reset" and "submit" options. +# Remember, there can be multiple forms existing on multiple pages. When +# HTML tables are added, a single form could be spread out over multiple +# text widgets, which makes it impractical to hang the form state off the +# HM$win structure. We don't need to check for the existance of required +# parameters, we just "fail" and get caught in HMrender + +# This causes line breaks to be preserved in the inital values +# of text areas +array set HMtag_map { + textarea {fill 0} +} + +########################################################## +# html isindex tag. Although not strictly forms, they're close enough +# to be in this file + +# is-index forms +# make a frame with a label, entry, and submit button + +proc HMtag_isindex {win param text} { + upvar #0 HM$win var + + set item $win.$var(tags) + if {[winfo exists $item]} { + destroy $item + } + frame $item -relief ridge -bd 3 + set prompt "Enter search keywords here" + HMextract_param $param prompt + label $item.label -text [HMmap_esc $prompt] -font $var(xfont) + entry $item.entry + bind $item.entry "$item.submit invoke" + button $item.submit -text search -font $var(xfont) -command \ + [format {HMsubmit_index %s {%s} [HMmap_reply [%s get]]} \ + $win $param $item.entry] + pack $item.label -side top + pack $item.entry $item.submit -side left + + # insert window into text widget + + $win insert $var(S_insert) \n isindex + HMwin_install $win $item + $win insert $var(S_insert) \n isindex + bind $item {focus %W.entry} +} + +# This is called when the isindex form is submitted. +# The default version calls HMlink_callback. Isindex tags should either +# be deprecated, or fully supported (e.g. they need an href parameter) + +proc HMsubmit_index {win param text} { + HMlink_callback $win ?$text +} + +# initialize form state. All of the state for this form is kept +# in a global array whose name is stored in the form_id field of +# the main window array. +# Parameters: ACTION, METHOD, ENCTYPE + +proc HMtag_form {win param text} { + upvar #0 HM$win var + + # create a global array for the form + set id HM$win.form$var(tags) + upvar #0 $id form + + # missing /form tag, simulate it + if {[info exists var(form_id)]} { + puts "Missing end-form tag !!!! $var(form_id)" + HMtag_/form $win {} {} + } + catch {unset form} + set var(form_id) $id + + set form(param) $param ;# form initial parameter list + set form(reset) "" ;# command to reset the form + set form(reset_button) "" ;# list of all reset buttons + set form(submit) "" ;# command to submit the form + set form(submit_button) "" ;# list of all submit buttons +} + +# Where we're done try to get all of the state into the widgets so +# we can free up the form structure here. Unfortunately, we can't! + +proc HMtag_/form {win param text} { + upvar #0 HM$win var + upvar #0 $var(form_id) form + + # make submit button entries for all radio buttons + foreach name [array names form radio_*] { + regsub radio_ $name {} name + lappend form(submit) [list $name \$form(radio_$name)] + } + + # process the reset button(s) + + foreach item $form(reset_button) { + $item configure -command $form(reset) + } + + # no submit button - add one + if {$form(submit_button) == ""} { + HMinput_submit $win {} + } + + # process the "submit" command(s) + # each submit button could have its own name,value pair + + foreach item $form(submit_button) { + set submit $form(submit) + catch {lappend submit $form(submit_$item)} + $item configure -command \ + [list HMsubmit_button $win $var(form_id) $form(param) \ + $submit] + } + + # unset all unused fields here + unset form(reset) form(submit) form(reset_button) form(submit_button) + unset var(form_id) +} + +################################################################### +# handle form input items +# each item type is handled in a separate procedure +# Each "type" procedure needs to: +# - create the window +# - initialize it +# - add the "submit" and "reset" commands onto the proper Q's +# "submit" is subst'd +# "reset" is eval'd + +proc HMtag_input {win param text} { + upvar #0 HM$win var + + set type text ;# the default + HMextract_param $param type + set type [string tolower $type] + if {[catch {HMinput_$type $win $param} err]} { + puts stderr $err + } +} + +# input type=text +# parameters NAME (reqd), MAXLENGTH, SIZE, VALUE + +proc HMinput_text {win param {show {}}} { + upvar #0 HM$win var + upvar #0 $var(form_id) form + + # make the entry + HMextract_param $param name ;# required + set item $win.input_text,$var(tags) + set size 20; HMextract_param $param size + set maxlength 0; HMextract_param $param maxlength + entry $item -width $size -show $show + + # set the initial value + set value ""; HMextract_param $param value + $item insert 0 $value + + # insert the entry + HMwin_install $win $item + + # set the "reset" and "submit" commands + append form(reset) ";$item delete 0 end;$item insert 0 [list $value]" + lappend form(submit) [list $name "\[$item get]"] + + # handle the maximum length (broken - no way to cleanup bindtags state) + if {$maxlength} { + bindtags $item "[bindtags $item] max$maxlength" + bind max$maxlength "%W delete $maxlength end" + } +} + +# password fields - same as text, only don't show data +# parameters NAME (reqd), MAXLENGTH, SIZE, VALUE + +proc HMinput_password {win param} { + HMinput_text $win $param * +} + +# checkbuttons are missing a "get" option, so we must use a global +# variable to store the value. +# Parameters NAME, VALUE, (reqd), CHECKED + +proc HMinput_checkbox {win param} { + upvar #0 HM$win var + upvar #0 $var(form_id) form + + HMextract_param $param name + HMextract_param $param value + + # Set the global variable, don't use the "form" alias as it is not + # defined in the global scope of the button + set variable $var(form_id)(check_$var(tags)) + set item $win.input_checkbutton,$var(tags) + checkbutton $item -variable $variable -off {} -on $value -text " " + if {[HMextract_param $param checked]} { + $item select + append form(reset) ";$item select" + } else { + append form(reset) ";$item deselect" + } + + HMwin_install $win $item + lappend form(submit) [list $name \$form(check_$var(tags))] +} + +# radio buttons. These are like check buttons, but only one can be selected + +proc HMinput_radio {win param} { + upvar #0 HM$win var + upvar #0 $var(form_id) form + + HMextract_param $param name + HMextract_param $param value + + set first [expr ![info exists form(radio_$name)]] + set variable $var(form_id)(radio_$name) + set variable $var(form_id)(radio_$name) + set item $win.input_radiobutton,$var(tags) + radiobutton $item -variable $variable -value $value -text " " + + HMwin_install $win $item + + if {$first || [HMextract_param $param checked]} { + $item select + append form(reset) ";$item select" + } else { + append form(reset) ";$item deselect" + } + + # do the "submit" actions in /form so we only end up with 1 per button grouping + # contributing to the submission +} + +# hidden fields, just append to the "submit" data +# params: NAME, VALUE (reqd) + +proc HMinput_hidden {win param} { + upvar #0 HM$win var + upvar #0 $var(form_id) form + HMextract_param $param name + HMextract_param $param value + lappend form(submit) [list $name $value] +} + +# handle input images. The spec isn't very clear on these, so I'm not +# sure its quite right +# Use std image tag, only set up our own callbacks +# (e.g. make sure ismap isn't set) +# params: NAME, SRC (reqd) ALIGN + +proc HMinput_image {win param} { + upvar #0 HM$win var + upvar #0 $var(form_id) form + HMextract_param $param name + set name ;# barf if no name is specified + set item [HMtag_img $win $param {}] + $item configure -relief raised -bd 2 -bg blue + + # make a dummy "submit" button, and invoke it to send the form. + # We have to get the %x,%y in the value somehow, so calculate it during + # binding, and save it in the form array for later processing + + set submit $win.dummy_submit,$var(tags) + if {[winfo exists $submit]} { + destroy $submit + } + button $submit -takefocus 0;# this never gets mapped! + lappend form(submit_button) $submit + set form(submit_$submit) [list $name $name.\$form(X).\$form(Y)] + + $item configure -takefocus 1 + bind $item "catch \{$win see $item\}" + bind $item <1> "$item configure -relief sunken" + bind $item " + set $var(form_id)(X) 0 + set $var(form_id)(Y) 0 + $submit invoke + " + bind $item " + set $var(form_id)(X) %x + set $var(form_id)(Y) %y + $item configure -relief raised + $submit invoke + " +} + +# Set up the reset button. Wait for the /form to attach +# the -command option. There could be more that 1 reset button +# params VALUE + +proc HMinput_reset {win param} { + upvar #0 HM$win var + upvar #0 $var(form_id) form + + set value reset + HMextract_param $param value + + set item $win.input_reset,$var(tags) + button $item -text [HMmap_esc $value] + HMwin_install $win $item + lappend form(reset_button) $item +} + +# Set up the submit button. Wait for the /form to attach +# the -command option. There could be more that 1 submit button +# params: NAME, VALUE + +proc HMinput_submit {win param} { + upvar #0 HM$win var + upvar #0 $var(form_id) form + + HMextract_param $param name + set value submit + HMextract_param $param value + set item $win.input_submit,$var(tags) + button $item -text [HMmap_esc $value] -fg blue + HMwin_install $win $item + lappend form(submit_button) $item + # need to tie the "name=value" to this button + # save the pair and do it when we finish the submit button + catch {set form(submit_$item) [list $name $value]} +} + +######################################################################### +# selection items +# They all go into a list box. We don't what to do with the listbox until +# we know how many items end up in it. Gather up the data for the "options" +# and finish up in the /select tag +# params: NAME (reqd), MULTIPLE, SIZE + +proc HMtag_select {win param text} { + upvar #0 HM$win var + upvar #0 $var(form_id) form + + HMextract_param $param name + set size 5; HMextract_param $param size + set form(select_size) $size + set form(select_name) $name + set form(select_values) "" ;# list of values to submit + if {[HMextract_param $param multiple]} { + set mode multiple + } else { + set mode single + } + set item $win.select,$var(tags) + frame $item + set form(select_frame) $item + listbox $item.list -selectmode $mode -width 0 -exportselection 0 + HMwin_install $win $item +} + +# select options +# The values returned in the query may be different from those +# displayed in the listbox, so we need to keep a separate list of +# query values. +# form(select_default) - contains the default query value +# form(select_frame) - name of the listbox's containing frame +# form(select_values) - list of query values +# params: VALUE, SELECTED + +proc HMtag_option {win param text} { + upvar #0 HM$win var + upvar #0 $var(form_id) form + upvar $text data + set frame $form(select_frame) + + # set default option (or options) + if {[HMextract_param $param selected]} { + lappend form(select_default) [$form(select_frame).list size] + } + set value [string trimright $data " \n"] + $frame.list insert end $value + HMextract_param $param value + lappend form(select_values) $value + set data "" +} + +# do most of the work here! +# if SIZE>1, make the listbox. Otherwise make a "drop-down" +# listbox with a label in it +# If the # of items > size, add a scroll bar +# This should probably be broken up into callbacks to make it +# easier to override the "look". + +proc HMtag_/select {win param text} { + upvar #0 HM$win var + upvar #0 $var(form_id) form + set frame $form(select_frame) + set size $form(select_size) + set items [$frame.list size] + + # set the defaults and reset button + append form(reset) ";$frame.list selection clear 0 $items" + if {[info exists form(select_default)]} { + foreach i $form(select_default) { + $frame.list selection set $i + append form(reset) ";$frame.list selection set $i" + } + } else { + $frame.list selection set 0 + append form(reset) ";$frame.list selection set 0" + } + + # set up the submit button. This is the general case. For single + # selections we could be smarter + + for {set i 0} {$i < $size} {incr i} { + set value [format {[expr {[%s selection includes %s] ? {%s} : {}}]} \ + $frame.list $i [lindex $form(select_values) $i]] + lappend form(submit) [list $form(select_name) $value] + } + + # show the listbox - no scroll bar + + if {$size > 1 && $items <= $size} { + $frame.list configure -height $items + pack $frame.list + + # Listbox with scrollbar + + } elseif {$size > 1} { + scrollbar $frame.scroll -command "$frame.list yview" \ + -orient v -takefocus 0 + $frame.list configure -height $size \ + -yscrollcommand "$frame.scroll set" + pack $frame.list $frame.scroll -side right -fill y + + # This is a joke! + + } else { + scrollbar $frame.scroll -command "$frame.list yview" \ + -orient h -takefocus 0 + $frame.list configure -height 1 \ + -yscrollcommand "$frame.scroll set" + pack $frame.list $frame.scroll -side top -fill x + } + + # cleanup + + foreach i [array names form select_*] { + unset form($i) + } +} + +# do a text area (multi-line text) +# params: COLS, NAME, ROWS (all reqd, but default rows and cols anyway) + +proc HMtag_textarea {win param text} { + upvar #0 HM$win var + upvar #0 $var(form_id) form + upvar $text data + + set rows 5; HMextract_param $param rows + set cols 30; HMextract_param $param cols + HMextract_param $param name + set item $win.textarea,$var(tags) + frame $item + text $item.text -width $cols -height $rows -wrap none \ + -yscrollcommand "$item.scroll set" -padx 3 -pady 3 + scrollbar $item.scroll -command "$item.text yview" -orient v + $item.text insert 1.0 $data + HMwin_install $win $item + pack $item.text $item.scroll -side right -fill y + lappend form(submit) [list $name "\[$item.text get 0.0 end]"] + append form(reset) ";$item.text delete 1.0 end; \ + $item.text insert 1.0 [list $data]" + set data "" +} + +# procedure to install windows into the text widget +# - win: name of the text widget +# - item: name of widget to install + +proc HMwin_install {win item} { + upvar #0 HM$win var + $win window create $var(S_insert) -window $item -align bottom + $win tag add indent$var(level) $item + set focus [expr {[winfo class $item] != "Frame"}] + $item configure -takefocus $focus + bind $item "$win see $item" +} + +##################################################################### +# Assemble and submit the query +# each list element in "stuff" is a name/value pair +# - The names are the NAME parameters of the various fields +# - The values get run through "subst" to extract the values +# - We do the user callback with the list of name value pairs + +proc HMsubmit_button {win form_id param stuff} { + upvar #0 HM$win var + upvar #0 $form_id form + set query "" + foreach pair $stuff { + set value [subst [lindex $pair 1]] + if {$value != ""} { + set item [lindex $pair 0] + lappend query $item $value + } + } + # this is the user callback. + HMsubmit_form $win $param $query +} + +# sample user callback for form submission +# should be replaced by the application +# Sample version generates a string suitable for http + +proc HMsubmit_form {win param query} { + set result "" + set sep "" + foreach i $query { + append result $sep [HMmap_reply $i] + if {$sep != "="} {set sep =} {set sep &} + } + puts $result +} + +# do x-www-urlencoded character mapping +# The spec says: "non-alphanumeric characters are replaced by '%HH'" + +set HMalphanumeric a-zA-Z0-9 ;# definition of alphanumeric character class +for {set i 1} {$i <= 256} {incr i} { + set c [format %c $i] + if {![string match \[$HMalphanumeric\] $c]} { + set HMform_map($c) %[format %.2x $i] + } +} + +# These are handled specially +array set HMform_map { + " " + \n %0d%0a +} + +# 1 leave alphanumerics characters alone +# 2 Convert every other character to an array lookup +# 3 Escape constructs that are "special" to the tcl parser +# 4 "subst" the result, doing all the array substitutions + +proc HMmap_reply {string} { + global HMform_map HMalphanumeric + regsub -all \[^$HMalphanumeric\] $string {$HMform_map(&)} string + regsub -all \n $string {\\n} string + regsub -all \t $string {\\t} string + regsub -all {[][{})\\]\)} $string {\\&} string + return [subst $string] +} + +# convert a x-www-urlencoded string int a a list of name/value pairs + +# 1 convert a=b&c=d... to {a} {b} {c} {d}... +# 2, convert + to " " +# 3, convert %xx to char equiv + +proc HMcgiDecode {data} { + set data [split $data "&="] + foreach i $data { + lappend result [cgiMap $i] + } + return $result +} + +proc HMcgiMap {data} { + regsub -all {\+} $data " " data + + if {[regexp % $data]} { + regsub -all {([][$\\])} $data {\\\1} data + regsub -all {%([0-9a-fA-F][0-9a-fA-F])} $data {[format %c 0x\1]} data + return [subst $data] + } else { + return $data + } +} + +# There is a bug in the tcl library focus routines that prevents focus +# from every reaching an un-viewable window. Use our *own* +# version of the library routine, until the bug is fixed, make sure we +# over-ride the library version, and not the otherway around + +auto_load tkFocusOK +proc tkFocusOK w { + set code [catch {$w cget -takefocus} value] + if {($code == 0) && ($value != "")} { + if {$value == 0} { + return 0 + } elseif {$value == 1} { + return 1 + } else { + set value [uplevel #0 $value $w] + if {$value != ""} { + return $value + } + } + } + set code [catch {$w cget -state} value] + if {($code == 0) && ($value == "disabled")} { + return 0 + } + regexp Key|Focus "[bind $w] [bind [winfo class $w]]" +} + diff --git a/lib/modules/htmltable.tcl b/lib/modules/htmltable.tcl new file mode 100755 index 0000000..5f331ef --- /dev/null +++ b/lib/modules/htmltable.tcl @@ -0,0 +1,459 @@ +set HMtable(unique) 0 +set HMtable(level) 0 + +;# RCSID: $Header: /home/clif.clif/CVS_ROOT/TclXexample/htmltable.tcl,v 1.6 1999/02/01 05:00:18 clif Exp $ +proc HMTBL_insert_FromMap { win text id } { + global HMtag_map HMinsert_map HMlist_elements HMtable + + upvar #0 HM$win var + + # insert white space (with current font) + # adding white space can get a bit tricky. This isn't quite right + + set bad [catch {$win insert $var(S_insert) $HMinsert_map($id) "space $var(font)"}] + + if {!$bad && [lindex $var(fill) end]} { + set text [string trimleft $text] + } + + if {[info exists HMinsert_map($id)] && [string match $HMinsert_map($id) "\n"]} { + $win insert $var(S_insert) "\t" + for {set i 0} {$i < $HMtable(column)} {incr i} { + $win insert $var(S_insert) "\t" + } + } +} + +################################################################ +# proc HMtag_table {win param text}-- +# Process the <TABLE> tag - Called from html_library +# Creates a new text widget to hold the table +# Creates HM.WindowName state variables with default values +# Sets HM.win(divert) to point to the new window so that +# all text being processed is directed to the table text widget. +# +# Arguments +# win The window that will hold everything +# param Any parameters in the tag +# text The name of a variable with associated text +# Results +# +# +proc HMtag_table {win param text} { + global HMtable + + upvar #0 HM$win var + + # This tracks the level of tables being rendered - + # When it returns to 0, we can reset the HM_insert_FromMap to the + # original value. + + if {$HMtable(level) == 0} { + rename HMinsert_FromMap HM_ORIG_insert_FromMap + rename HMTBL_insert_FromMap HMinsert_FromMap + } + incr HMtable(level) + + # Define a unique name for the text widget + # that will contain this table + + set newTable .txt_$HMtable(unique) + + # Divert output to the new window. + + set var(divert) $newTable + + # Make a new global state variable for the new text widget + + upvar #0 HM$newTable newvar + + # and initialize it + + HMinit_state $newTable + set newvar(family) times + set newvar(size) 12 + set newvar(weight) normal + set newvar(style) roman + set newvar(indent) 0 + set newvar(stop) 0 + set newvar(S_insert) end + set newvar(oldWindow) $win + + # Create the new text widget + update; update idle; + # puts "PARENT: ($win) [expr [$win cget -width] -2]" + # puts "PARENT: ($win) [expr [$win cget -insertwidth] -2]" + # puts "PARENT: ($win) [winfo width $win] " + # puts "GRID: [wm grid .]" + set curFont [HMx_font times $newvar(size) medium r] + # puts "curFont: $curFont" + text $newTable -width [expr [$win cget -width] -2] -background white \ + -font $curFont -wrap none + + # puts "TEXT GRID: [catch {wm grid $newTable} xx]" + # puts "$xx" + # puts "TEXT: ($newTable) [winfo width $newTable] " + # Set the row and column descriptors. + + set HMtable(row) 0 + set HMtable(column) 0 + set HMtable(maxCol) 0 + + # increment the unique number pointer so that the next table will + # get a new text widget name. + + incr HMtable(unique) +} + + + +################################################################ +# proc HMtag_/table {win param text}-- +# Process the
tag +# This procedure resets the window to receive text to the master +# window. +# Arguments +# +# table The window that holds the table +# param Any parameters in the tag +# text The name of a variable with associated text +# +# Results +# Maps the new window into the master text window. +# Sets tab locations in new window +# +proc HMtag_/table {table param text} { + global HMtable errorInfo + + # Set the var pointer for the table text widget + upvar #0 HM$table varTbl + + # This tracks the level of tables being rendered - + # When it returns to 0, we can reset the HM_insert_FromMap to the + # original value. + + incr HMtable(level) -1 + if {$HMtable(level) == 0} { + rename HMinsert_FromMap HMTBL_insert_FromMap + rename HM_ORIG_insert_FromMap HMinsert_FromMap + } + incr HMtable(level) + + + # Set the win and var variables to point to the master text widget, + # instead of the table text widget. + set win $varTbl(oldWindow) + upvar #0 HM$win var + + # unset var(divert) so that text will no longer be diverted to + # the table window + unset var(divert) + + # Get the list of tags - to make the loop faster + set alltags [$table tag names] + + set maxFont 10; + foreach tag $alltags { + if {[string first "font:" $tag] == 0} { + set fontlst [split $tag ":"] + set size [lindex $fontlst 2] + set family [lindex $fontlst 1] + if {($size >= $maxFont) && ([string match $family "courier"])} { + set maxFont $size + set maxFamily $family + set txtfont [list [lindex $fontlst 1] [lindex $fontlst 2] [lindex $fontlst 3]] + } + } + } + +;# set f [catch {eval HMx_font $txtfont} rslt] +;# puts "F: $f rslt: $rslt" +;# puts "Plus scaling: [eval HMx_font $txtfont]" + + set txtfont [eval HMx_font $txtfont]; + set maxFont [lindex $txtfont 1] + + +# puts "txtfont: $txtfont maxFont: $maxFont xfont: $var(xfont) $varTbl(xfont)" +# puts "[$table dump 1.0 20.0]" + + # Reset the height of the table text widget to match the number of + # rows actually used and insert it into the master text widget + + set numrow [lindex [split [$table index end] .] 0] + + $table configure -height [expr 1 + $numrow] -font $txtfont + $win window create $var(S_insert) -window $table + update; update idle; + +# puts "[$table dump 0.0 end]" +# puts "INDEX: [$table index end]" + + set parentPixelWidth [winfo width $win] + set tablePixelWidth [winfo width $table] + + set tableCharWidth [$table cget -width] + incr tableCharWidth -1 + + $table configure -width $tableCharWidth + update; update idle; + set tablePixelWidth2 [winfo width $table] + + set charPixelWidth [expr $tablePixelWidth - $tablePixelWidth2] + + # Now, I know the width of a char in this font window, calc + # how many chars wide to match the parent + + set newCharWidth [expr $parentPixelWidth/$charPixelWidth -2] + $table configure -width $newCharWidth + + # Make a simple little ruler for debugging help. +# canvas .c932 -height 30 -width $tablePixelWidth -background yellow +# for {set i 0} {$i < $tablePixelWidth} {incr i 50} { +# if {($i % 100) == 50} { +# .c932 create line $i 0 $i 15 -fill green +# } else { +# .c932 create line $i 0 $i 30 -fill blue +# } +# } +# $table window create 2.0 -window .c932 + +# while {$tablePixelWidth > $parentPixelWidth} { +# incr charWidth -1 +# # puts "$tablePixelWidth $parentPixelWidth $charWidth" +# $table configure -width $charWidth +# set tablePixelWidth [winfo width $table] +# update; update idle; +# } + + + # Clear out the bogus newlines + +# for {set i 0} {$i <= $HMtable(row)} {incr i} { +# for {set j 0} {$j < $HMtable(maxCol)} {incr j} { +# +# # A cell may be blank. Check for a tag before proceeding +# +# if {[lsearch $alltags tbl.$i.$j] != -1} { +# set range [$table tag ranges tbl.$i.$j] +# # Delete the trailing \n that was added by html_lib.tcl. +# $table delete "[lindex $range 0] lineend" +# } +# } +# } + + # Find the longest string in each column to set the column width. + + # Initialize the sizes for the columns to 0 + + for {set j 0} {$j < $HMtable(maxCol)} {incr j} { + set colSize($j) 0; + } + + + set curCol 0; + + # Go through the dump of the text widget looking for text, and font + # and table entry tags. + # We track the current font and table cell so that when text comes in + # we can calculate the size in the current font, and compare that to + # the previous largest size. + + foreach {id data index} [$table dump 0.0 end] { + + switch $id { + "tagon" { + switch -glob -- $data { + "font:*" { + set lst [split $data ":"] + set txtfont [list [lindex $lst 1] [lindex $lst 2] [lindex $lst 3]] + set txtfont [eval HMx_font $txtfont]; + } + "tbl.*" { + set lst [split $data "."] + set curCol [lindex $lst 2] + } + } + } + "text" { + set line [string trim $data] + # Adding a few extra chars seems to take care of + # some slack where it appears that htmllib is + # adding some unexpected spaces + set line "--$line" + set len [font measure $txtfont $line ] + + if {$len > $colSize($curCol) } { + set colSize($curCol) $len + } + } + } + } + +# for {set j 0} {$j < $HMtable(maxCol)} {incr j} { +# puts "$j: $colSize($j)" +# } + + + + # Define the tab stops to the maximum + # size for each column. + # + # The pad value of 8 is to separate the columns + # + # If the toplevel window is gridded, divide the + # tab position by the grid width + # + + set gridWidth [lindex [wm grid .] 2] + + set gridWidth [lindex [wm grid .] 2] + if {$gridWidth == ""} {set gridWidth 1} + + set tabStops 0; + set totl 0; + + for {set i 0; set j 1} {$j < $HMtable(maxCol)} {incr j; incr i} { + set wid [expr ($colSize($i) + 8)/$gridWidth] + lappend tabStops [expr $wid + $totl] + incr totl $wid + } + + # and set the tab stops. + + $table configure -tabs $tabStops + + # Wipe the first character - a bare (and useless) newline. + + $table delete 1.0 + # foreach {o t th} [$table dump 0.0 end] { puts [format "%8s %7s .%-50s." $o $th $t]} + # foreach {o t th} [$win dump 0.0 3.0] { puts "$o $t $th"} + +} + +################################################################ +# proc HMtag_tr {win param text}-- +# Process the tag +# This begins a new row by setting the row and column values. +# Arguments +# +# win The window that holds the table +# param Any parameters in the tag +# text The name of a variable with associated text +# +# Results +# Increments the row position. +# Sets the column to 0. +# + proc HMtag_tr {win param text} { + global HMtable + incr HMtable(row) + set HMtable(column) 0 +} + + +################################################################ +# proc HMtag_td {win param text}-- +# Process the tag +# Arguments +# +# win The window that holds the table +# param Any parameters in the tag +# text The name of a variable with associated text +# +# Results +# Sets a tag for the start of this table entry to be used to +# set tab positions +# +proc HMtag_td {win param text} { + global HMtable + + upvar $text t + set t "\t[string trim $t]" + + upvar #0 HM$win var + set var(Ttab) tbl.$HMtable(row).$HMtable(column) +} + +################################################################ +# proc HMtag_/td {win param text}-- +# +# Arguments +# +# win The window that holds the table +# param Any parameters in the tag +# text The name of a variable with associated text +# +# Results +# Increments the column position. +# If there are more columns in this table row than in previous +# rows, set the max column + +proc HMtag_/td {win param text} { + global HMtable + + upvar $text t + set t "[string trim $t]" + + incr HMtable(column) + if {$HMtable(column) > $HMtable(maxCol)} { + set HMtable(maxCol) $HMtable(column) + } +} + +################################################################ +# proc HMlink_callback {win href}-- +# This proc is called by the html_library code to parse a +# hypertext reference. +# +# Arguments +# win The text window that is used by the html_library to +# display the text +# href A hypertext reference to use for the next hypertext. +# +# Results +# This example simply replaces the contents of the display with +# hardcoded new text. + +proc HMlink_callback {win href} { + global newHTMLtxt + + puts "HMlink_callback was invoked with WIN: $win HREF: $href" + + # Clear the old contents from the window. + + HMreset_win $win + + # Display the new text. + + HMparse_html $newHTMLtxt "HMrender $win" +} + +################################################################ +# proc HMset_image {win handle src}-- +# Acquire image data, create a Tcl image object, +# and return the image handle. +# +# Arguments +# win The text window in which the html is rendered. +# handle A handle to return to the html library with the image handle +# src The description of the image from: +# +# Results +# This example creates a hardcoded image. and then invokes +# HMgot_image with the handle for that image. + +proc HMset_image {win handle src} { + global logo + puts "HMset_image was invoked with WIN: $win HANDLE: $handle SRC: $src" + + # In a real application this would parse the src, and load the + # appropriate image data. + + set img [image create photo -data $logo] + + HMgot_image $handle $img + + return "" +} + diff --git a/lib/modules/imgviewer.tcl b/lib/modules/imgviewer.tcl new file mode 100755 index 0000000..c46df60 --- /dev/null +++ b/lib/modules/imgviewer.tcl @@ -0,0 +1,60 @@ +package require Img + + +proc ImageViewer {f w node} { + global tab_label noteBook factor im1 im2 + set factor($node) 1.0 + frame $w.f + pack $w.f -side left -fill both -expand true + canvas $w.f.c -xscrollcommand "$w.f.x set" -yscrollcommand "$w.y set" + scrollbar $w.f.x -ori hori -command "$w.f.c xview" + scrollbar $w.y -ori vert -command "$w.f.c yview" + + pack $w.f.c -side top -fill both -expand true + pack $w.f.x -side top -fill x + pack $w.y -side left -fill y + bind $w.f.c "%W yview scroll -3 units" + bind $w.f.c "%W yview scroll 3 units" + bind $w.f.c "%W xview scroll -2 units" + bind $w.f.c "%W xview scroll 2 units" + bind $w.f.c "scale $w.f.c 0.5 $node" + bind $w.f.c "scale $w.f.c 2 $node" + #$w.scrwin setwidget $w.scrwin.f + openImg $f $w.f.c $node + set tab_label [$noteBook itemcget $node -text] + balloon $w.f.c set "Mouse wheel up/down - vertiсal scrolling the image\n\ + Shift + mouse wheel up/down - horizontal image scrolling\n\ + Control + mouse wheel up/down is a scale image -/+" +} + +proc openImg {fn w node} { + global im1 + set im1 [image create photo -file $fn] + #scale $w + list [file size $fn] bytes, [image width $im1]x[image height $im1] + $w create image 1 1 -image $im1 -anchor nw -tag img +} + +proc scale {w {n 1} node} { + global im1 im2 factor noteBook tab_label + set factor($node) [expr {$factor($node) * $n}] + $w delete img + catch {image delete $im2} + set im2 [image create photo] + if {$factor($node)>=1} { + set f [expr int($factor($node))] + $im2 copy $im1 -zoom $f $f + } else { + set f [expr round(1./$factor($node))] + $im2 copy $im1 -subsample $f $f + } + $w create image 1 1 -image $im2 -anchor nw -tag img + $noteBook itemconfigure $node -text "$tab_label (size x$factor($node))" + $w config -scrollregion [$w bbox all] +} + + + + + + diff --git a/lib/modules/latex2html.tcl b/lib/modules/latex2html.tcl new file mode 100755 index 0000000..56ba634 --- /dev/null +++ b/lib/modules/latex2html.tcl @@ -0,0 +1,74 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +###################################################### + + +proc Latex2Html {} { + global tree module cmdString + set selFiles [$tree selection get] + if {[llength $selFiles] == 0} { + set answer [tk_messageBox\ + -message "[::msgcat::mc "Don't selected file"]"\ + -type ok -icon warning\ + -title [::msgcat::mc "Warning"]] + case $answer { + ok {return 0} + } + } + if {[llength $selFiles] == 1} { + if {$selFiles != ""} { + set file [$tree itemcget $selFiles -data] + } + CommandStringDialog $file + } + #puts $command +} +proc CommandStringDialog {file} { + global nb files font color cmdString module + set w .cmd + # destroy the find window if it already exists + if {[winfo exists $w]} { + destroy $w + } + + toplevel $w + wm title $w [::msgcat::mc "Command options"] + wm resizable $w 0 0 + wm transient $w . + frame $w.frmCombo -borderwidth 1 -background $color(bg) + frame $w.frmBtn -borderwidth 1 -background $color(bg) + pack $w.frmCombo $w.frmBtn -side top -fill x + + # set combo [entry $w.frmCombo.entFind] + label $w.frmCombo.lblModule -text $module(latex2html) -background $color(bg) + set combo [entry $w.frmCombo.txtString] + + pack $w.frmCombo.lblModule $combo -fill x -padx 2 -pady 2 -side top + + button $w.frmBtn.btnFind -text [::msgcat::mc "Run"]\ + -font $font(normal) -width 12 -relief groove -background $color(bg)\ + -command { + RunConverter [.cmd.frmCombo.txtString get] + } + button $w.frmBtn.btnCancel -text [::msgcat::mc "Close"]\ + -relief groove -width 12 -font $font(normal) -background $color(bg)\ + -command "destroy $w" + pack $w.frmBtn.btnFind $w.frmBtn.btnCancel -fill x -padx 2 -pady 2 -side left + + bind $w {RunConverter [.cmd.frmCombo.txtString get]} + bind $w "destroy $w" + $combo insert end "-no_navigation -split 0 $file" + focus -force $combo +} + +proc RunConverter {string} { + global module + destroy .cmd + set pipe [open "|$module(latex2html) $string" "r"] + fileevent $pipe readable [list EndProc latex2html $pipe] + fconfigure $pipe -buffering none -blocking no +} + diff --git a/lib/modules/make.tcl b/lib/modules/make.tcl new file mode 100755 index 0000000..547d471 --- /dev/null +++ b/lib/modules/make.tcl @@ -0,0 +1,79 @@ +######################################################### +# TkTeXEditor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +######################################################### + +## INSERT DEBUG INFORMATION INTO TEXT WIDGET ## +proc DebugInfo {widget file folder} { + global font nb w errLine activeFile + set w $widget + $widget configure -state normal + if {[winfo depth $nb] > 1} { + set bold "-background blue -foreground white -relief raised -borderwidth 1" + set normal "-background {} -foreground blue -relief flat" + } else { + set bold "-foreground white -background black" + set normal "-foreground {} -background {}" + } + + $widget tag configure error -font $font(bold) -foreground red + $widget tag configure erName -font $font(bold) -foreground blue + $widget tag bind erName "$widget tag configure erName $bold; $widget configure -cursor hand2" + $widget tag bind erName "$widget tag configure erName $normal; $widget configure -cursor xterm" + + if {[eof $file]} { + catch {close $file} msg + if {$msg != ""} { + # puts $msg + $widget insert end "[::msgcat::mc "Program failed"]: $msg\n"; + } else { + # puts $msg + $widget insert end "\n-----------------------------------------------\n" + $widget insert end "[::msgcat::mc "Program finished successfully"]\n" + TempFilesDel $folder + } + } else { + set line [read $file] + set index [string first "!" $line] + $widget insert end $line + set pos [$widget index insert] + set lineNumber [lindex [split $pos "."] 0] + if {$index != -1} { + set p [$widget search -backward -- "!" $pos 0.0] + set l [lindex [split $p "."] 0] + set c [lindex [split $p "."] 1] + + $widget tag add error $l.0 $l.end + set errLine [expr $l + 1] + $widget tag add erName $errLine.0 $errLine.end + $widget tag bind erName {ErrorFind} + } + } + $widget see end + $widget configure -state disabled +} + +## FIND COMPILE ERROR INTO TEXT BUFFER ## +proc ErrorFind {} { + global font nb w errLine activeFile + set word [$w get $errLine.0 $errLine.end] + set error [string range $word 2 [string first " " $word]] + set text "$nb.f$activeFile.f.text" + focus -force $text + $text mark set insert [string trim $error].0 + $text see insert +} + + +## DELETE TEMPORARY FILES ## +proc TempFilesDel {folder} { + foreach ext {log bak tmp} { + foreach file [lsort [glob -nocomplain [file join $folder *.$ext]]] { + file delete -- $file + } + } +} + + diff --git a/lib/modules/module.tcl b/lib/modules/module.tcl new file mode 100755 index 0000000..1557420 --- /dev/null +++ b/lib/modules/module.tcl @@ -0,0 +1,144 @@ +######################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +######################################################### + +proc FindModule {} { + global module dir font tcl_platform color preview_cmd convert_cmd + set menu [menu .frmMenu.mnuModule.m -background $color(bg)] + set moduleName "" + + foreach m {tkcvs tkdiff dvi ps pdf html} { + if [info exists convert_cmd($m)] { + scan $convert_cmd($m) "%s" moduleName + FindExtMod_ convert_$m $moduleName + } + if [info exists preview_cmd($m)] { + scan $preview_cmd($m) "%s" moduleName + FindExtMod_ preview_$m $moduleName + } else { + FindExtMod $m $m + } + + } +} +## Find external programms ## +proc FindExtMod {m cmd} { + global module dir font tcl_platform color preview_cmd convert_cmd + if {$tcl_platform(platform) == "unix"} { + set string [exec whereis $cmd] + scan $string "%s%s" v module($m) + if {[info exists module($m)] && [file isdirectory $module($m)] == 0} { + puts "Find external programm $module($m)" + .frmMenu.mnuModule.m add command -label [::msgcat::mc "$m"] -command "DoModule $m" \ + -font $font(normal) + } else { + set module($m) "" + } + } elseif {$tcl_platform(platform) == "mac"} { + set module($m) $cmd + } elseif {$tcl_platform(platform) == "windows"} { + set module($m) $cmd + } +} +proc FindExtMod_ {m cmd} { + global module dir font tcl_platform color preview_cmd convert_cmd + if {$tcl_platform(platform) == "unix"} { + set string [exec whereis $cmd] + scan $string "%s%s" v module($m) + if {[info exists module($m)] && [file isdirectory $module($m)] == 0} { + puts "Find external programm $module($m)" + } else { + set module($m) "" + } + } elseif {$tcl_platform(platform) == "mac"} { + set module($m) $cmd + } elseif {$tcl_platform(platform) == "windows"} { + set module($m) $cmd + } +} + +## RUNNING MODULE ## +proc DoModule {mod} { + global tcl_platform + global module dir tree + case $mod { + tkcvs { + set pipe [open "|$module(tkcvs) -dir $dir(doc)" "r"] + fileevent $pipe readable + fconfigure $pipe -buffering none -blocking no + } + tkdiff { + set selFiles [$tree selection get] + if {[llength $selFiles] == 0} { + set answer [tk_messageBox\ + -message "[::msgcat::mc "Don't selected file"]"\ + -type ok -icon warning\ + -title [::msgcat::mc "Warning"]] + case $answer { + ok {return 0} + } + } + if {[llength $selFiles] == 1} { + if {$selFiles != ""} { + set file1 [$tree itemcget $selFiles -data] + } + set command "-r $file1" + } + if {[llength $selFiles] == 2} { + if {[lindex $selFiles 0] != ""} { + set file1 [$tree itemcget [lindex $selFiles 0] -data] + } + if {[lindex $selFiles 1] != ""} { + set file2 [$tree itemcget [lindex $selFiles 1] -data] + } + set command "$file1 $file2" + } + if {[llength $selFiles] > 2} { + set answer [tk_messageBox\ + -message "[::msgcat::mc "Must be one or two file select!"]"\ + -type ok -icon info\ + -title [::msgcat::mc "Warning"]] + case $answer { + ok {return 0} + } + } + set pipe [open "|$module(tkdiff) $command" "r"] + fileevent $pipe readable + fconfigure $pipe -buffering none -blocking no + } + } +} + + +proc EndProc {module file} { + if {[eof $file]} { + catch [close $file] msg + if {$msg != ""} { + puts $msg + Message "$module\n [::msgcat::mc "Program failed"]: $msg\n"; + } else { + Message "$module\n [::msgcat::mc "Program finished successfully"]\n" + } + } else { + read $file + } +} + +proc Message {message} { + global font + set answer [MessageDlg .msg -parent .\ + -message "$message"\ + -type ok -icon warning\ + -font $font(normal)\ + -title [::msgcat::mc "Warning"]] + case $answer { + ok {return 0} + } +} + + + + diff --git a/lib/modules/package.tcl b/lib/modules/package.tcl new file mode 100755 index 0000000..a1c0f0f --- /dev/null +++ b/lib/modules/package.tcl @@ -0,0 +1,72 @@ +###################################################### +# TkTeXEditor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +###################################################### + +proc GetPackage {_dir} { + global nb dir cmd + foreach file [lsort [glob -nocomplain [file join $_dir *.lst]]] { + puts "Load commands from $file" + set pkgName [file rootname [file tail $file]] + set cmd($pkgName) "" + #set cmd(all) "" + set f [open $file r] + while {[gets $f line] >= 0} { + if {[string range $line 0 0] != "#"} { + if [info exists cmd($pkgName)] { + lappend cmd($pkgName) $line + lappend cmd(all) $line + } else { + set cmd($pkgName) [list $line] + set cmd(all) [list $line] + } + } + } + close $f + } + puts "Всего команд - [llength $cmd(all)]" ;# debug info +} + +proc PackageDialog {} { + global nb font dir color + set w .frmBody.packages + # destroy the find window if it already exists + if {[winfo exists $w]} { + destroy $w + } + + toplevel $w + wm title $w [::msgcat::mc "Pakages"] + wm resizable $w 0 0 + #wm transient . + + label $w.text -text [::msgcat::mc "Included packages"] -font $font(bold)\ + -relief groove -border 1 + frame $w.frmPkg -relief groove -border 1 -background $color(bg) + frame $w.frmBtn -background $color(bg) + pack $w.text -side top -anchor nw -fill x + pack $w.frmPkg -side top -fill both -expand 1 + pack $w.frmBtn -side top -fill x + + foreach pkg [GetPackage] { + checkbutton $w.frmPkg.chk_$pkg -text $pkg -font $font(normal) -background $color(bg) + pack $w.frmPkg.chk_$pkg -side top -anchor w -padx 2 + } + + button $w.frmBtn.btnOk -text [::msgcat::mc "Save"] -relief groove -font $font(normal)\ + -command { } -background $color(bg) + button $w.frmBtn.btnCancel -text [::msgcat::mc "Close"] -relief groove -font $font(normal)\ + -command "destroy $w" -background $color(bg) + pack $w.frmBtn.btnOk $w.frmBtn.btnCancel -padx 2 -pady 2 -fill x -side left + +} + + + + + + + + diff --git a/lib/modules/pane.tcl b/lib/modules/pane.tcl new file mode 100755 index 0000000..92afb18 --- /dev/null +++ b/lib/modules/pane.tcl @@ -0,0 +1,112 @@ +###################################################### +# TkTeXEditor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +###################################################### + +###################################################### +# Create split pane widget procedure # +# Author Alex Dederer (aka Korwin) # +###################################################### + +package provide pane 1.0 + +namespace eval pane { + + namespace export create + + proc create { f1 f2 args } { + set t(-orient) vertical + set t(-percent) 0.27 + set t(-gripcolor) gray75 + set t(-gripposition) 0.93 + set t(-gripcursor) crosshair + set t(-in) [winfo parent $f1] + array set t $args + + set master $t(-in) + upvar #0 [namespace current]::Pane$master pane + array set pane [array get t] + + if {! [string match v* $pane(-orient)] } { + set pane(-gripcursor) sb_v_double_arrow + set height 5 ; set width 3000 + } else { + set pane(-gripcursor) sb_h_double_arrow + set height 3000 ; set width 5 + } + + set pane(1) $f1 + set pane(2) $f2 + set pane(grip) [frame $master.grip -background $pane(-gripcolor) \ + -width $width -height $height \ + -bd 1 -relief raised -cursor $pane(-gripcursor)] + + if {! [string match v* $pane(-orient)] } { + set pane(D) Y + place $pane(1) -in $master -x 0 -rely 0.0 -anchor nw -relwidth 1.0 -height -1 + place $pane(2) -in $master -x 0 -rely 1.0 -anchor sw -relwidth 1.0 -height -1 + place $pane(grip) -in $master -anchor c -relx $pane(-gripposition) + } else { + set pane(D) X + place $pane(1) -in $master -relx 0.0 -y 0 -anchor nw -relheight 1.0 -width -1 + place $pane(2) -in $master -relx 1.0 -y 0 -anchor ne -relheight 1.0 -width -1 + place $pane(grip) -in $master -anchor c -rely 0 ;#$pane(-gripposition) + } + $master configure -background gray50 + + bind $master [list [namespace current]::PaneGeometry $master] + bind $pane(grip) \ + [list [namespace current]::PaneDrag $master %$pane(D)] + bind $pane(grip) \ + [list [namespace current]::PaneDrag $master %$pane(D)] + bind $pane(grip) \ + [list [namespace current]::PaneStop $master] + + [namespace current]::PaneGeometry $master + } + + proc PaneDrag { master D } { + upvar #0 [namespace current]::Pane$master pane + if {[info exists pane(lastD)]} { + set delta [expr double($pane(lastD) - $D) \ + / $pane(size)] + set pane(-percent) [expr $pane(-percent) - $delta] + if {$pane(-percent) < 0.0} { + set pane(-percent) 0.0 + } elseif {$pane(-percent) > 1.0} { + set pane(-percent) 1.0 + } + [namespace current]::PaneGeometry $master + } + set pane(lastD) $D + } + + proc PaneStop { master } { + upvar #0 [namespace current]::Pane$master pane + catch {unset pane(lastD)} + } + + proc PaneGeometry { master } { + upvar #0 [namespace current]::Pane$master pane + if {$pane(D) == "X"} { + place $pane(1) -relwidth $pane(-percent) + place $pane(2) -relwidth [expr 1.0 - $pane(-percent)] + place $pane(grip) -relx $pane(-percent) + set pane(size) [winfo width $master] + } else { + place $pane(1) -relheight $pane(-percent) + place $pane(2) -relheight [expr 1.0 - $pane(-percent)] + place $pane(grip) -rely $pane(-percent) + set pane(size) [winfo height $master] + } + } + +} + + + + + + diff --git a/lib/modules/print.tcl b/lib/modules/print.tcl new file mode 100755 index 0000000..ee8256f --- /dev/null +++ b/lib/modules/print.tcl @@ -0,0 +1,138 @@ +###################################################### +# TkTeXEditor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +###################################################### + +proc PrintDialog {action} { + global dir font nb files activeFile tcl_platform + + if [info exists activeFile] { + set node $activeFile + } else { + return + } + if {$node == "newproj" || $node == "settings" || $node == "about" || $node == ""} { + return + } + if {[info exists files($node)] == 0} { + return + } + switch -- $action { + "print" { + PrintForm + } + "set" { + } + "preview" { + set text "$nb.f$node.f.text" + set fullPath [lindex $files($node) 0] + set folder [file dirname $fullPath] + set file [file tail $fullPath] + set ext [string trim [file extension $file] {.}] + set name [file rootname $file] + set file [file join $folder $name.ps] + + if {$tcl_platform(platform) == "unix"} { + set pipe [open "|gv $file" "r"] + } elseif {$tcl_platform(platform) == "mac"} { + + } elseif {$tcl_platform(platform) == "windows"} { + set pipe [open "|gsview32 $file" "r"] + } + + fileevent $pipe readable + fconfigure $pipe -buffering none -blocking no + } + } +} + + +proc PrintForm {} { + global font selectPrint color + set wp .print + # destroy the print window if it already exists + if {[winfo exists $wp]} { + destroy $wp + } + + toplevel $wp + wm transient $wp . + wm title $wp [::msgcat::mc "Print ..."] + wm resizable $wp 0 0 + frame $wp.frmLbl -background $color(bg) + frame $wp.frmEnt -background $color(bg) + frame $wp.frmField -background $color(bg) + frame $wp.frmBtn -background $color(bg) + pack $wp.frmLbl $wp.frmEnt $wp.frmField $wp.frmBtn -side top -fill x + label $wp.frmLbl.lblPrint -text [::msgcat::mc "Print command"] -font $font(normal) -background $color(bg) + pack $wp.frmLbl.lblPrint -fill x -expand true -padx 2 + entry $wp.frmEnt.entPrint -font $font(normal) + pack $wp.frmEnt.entPrint -fill x -expand true -padx 2 + + checkbutton $wp.frmField.chkSelect -text [::msgcat::mc "Print selected text"] -variable selectPrint\ + -font $font(normal) -onvalue true -offvalue false\ + -background $color(bg) -selectcolor $color(selectbg);#-command Check + pack $wp.frmField.chkSelect -fill x -expand true -padx 2 -anchor w + + button $wp.frmBtn.btnPrint -text [::msgcat::mc "Print"] -font $font(normal) -width 12\ + -relief groove -background $color(bg)\ + -command { + Print [.print.frmEnt.entPrint get] + destroy .print + } + button $wp.frmBtn.btnCancel -text [::msgcat::mc "Cancel"] -font $font(normal) -width 12 -relief groove\ + -command "destroy .print" -background $color(bg) + pack $wp.frmBtn.btnPrint $wp.frmBtn.btnCancel -side left -padx 2 -pady 2 -fill x -expand true + $wp.frmEnt.entPrint insert 0 "lpr" + bind $wp "destroy .print" +} + +proc Preview {action} { + global dir font nb files activeFile tcl_platform preview_cmd module tree + if [info exists activeFile] { + set node $activeFile + while {[set parentNode [$tree parent $node]] != "root"} { + set node $parentNode + } + } else { + return + } + if {$node == "newproj" || $node == "settings" || $node == "about" || $node == ""} { + return + } + if {[info exists files($node)] == 0} { + return + } + if {$module(preview_$action) == ""} { + set answer [tk_messageBox\ + -message "[::msgcat::mc "Don't find programm"] $preview_cmd($action)"\ + -type ok -icon warning\ + -title [::msgcat::mc "Warning"]] + case $answer { + ok {return 0} + } + } + set text "$nb.f$node.f.text" + set fullPath [lindex $files($node) 0] + set file [file tail $fullPath] + set ext [string trim [file extension $file] {.}] + set name [file rootname $file] + if {$action == "html"} { + set folder [file join [file dirname $fullPath] $name] + } else { + set folder [file dirname $fullPath] + } + + set pipe [open "|$preview_cmd($action) [file join $folder $name.$action]" "r"] + puts "$preview_cmd($action) [file join $folder $name.$action]" + fileevent $pipe readable + fconfigure $pipe -buffering none -blocking no +} + + + + + + diff --git a/lib/modules/proc.tcl b/lib/modules/proc.tcl new file mode 100755 index 0000000..67c4c7e --- /dev/null +++ b/lib/modules/proc.tcl @@ -0,0 +1,124 @@ +###################################################### +# TkTeXEditor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +###################################################### + +###################################################### +# # +# Notebook tabs procedures and other # +# # +###################################################### + + +## CLICKING TUBULAR HEADER PROCEDURE ## +proc ClickTab {node} { + global nb files activeFile tree ver files status release + set node [$nb raise] + if {($node == "") || ($node == "debug")} {return} + set activeFile $node + set text "$nb.f$node.f.text" + set fullPath [lindex $files($node) 0] + wm title . "TkLaTeXEditor $ver$release - $fullPath" + set folder [file dirname $fullPath] + set file [file tail $fullPath] + set ext [string trim [file extension $file] {.}] + set name [file rootname $file] + $tree selection set $node + $tree see $node + UpdateStruct $fullPath $node + focus -force $text + unset text fullPath folder file ext name + ## status bar information update ## + $status(fileAttr) configure -text "[FileAttr [lindex $files($node) 0]]" + $status(fileSize) configure -text "[file size [lindex $files($node) 0]] b." + $status(encode) configure -text "[lindex $files($node) 2]" + $status(pos) configure -text [$nb.f$node.f.text index insert];# cursor position +} + +## NOTEBOOK PAGE SWITCHER ## +proc PageTab {key} { + global nb + set len [llength [$nb pages]] + if {$len > 0} { + set newIndex [expr [$nb index [$nb raise]] + $key] + if {$newIndex < 0} { + set newIndex [expr $len - 1] + } elseif {$newIndex >= $len} { + set newIndex 0 + } + $nb see [lindex [$nb pages] $newIndex] + $nb raise [lindex [$nb pages] $newIndex] + PageRaise [lindex [$nb pages] $newIndex] + } +} +## RAISED NOTEBOOK TAB IF CLICK MOUSE BUTTON ## +proc PageRaise {node} { + global nb tree files status activeFile ver release + set parentNode [$tree parent $node] + if {$node == "debug"} {return} + if {[$tree exists $node] ==1 && [info exists files($node)] != 1} { + EditFile [$tree itemcget $node -data] ;# open editor if file don't open + } elseif {[$tree exists $node] ==0} { + set file [file tail [lindex $files($node) 0]] + set fileDir [file dirname [lindex $files($node) 0]] + set node [InsertTreeSubNode "$file" $parentNode $fileDir] + } + $nb raise $node + + set activeFile $node + #puts "node - $node\nparent - $parentNode" + $tree selection set $node + $tree see $node + set item [$tree itemcget $node -data] + focus -force $nb.f$node.f.text + catch [$status(pos) configure -text [$nb.f$node.f.text index insert]] ;# cursor position + ## status bar information update ## + $status(fileAttr) configure -text "[FileAttr $item]" + $status(fileSize) configure -text "[file size $item] b." + $status(encode) configure -text "[lindex $files($node) 2]" + $status(pos) configure -text [$nb.f$node.f.text index insert];# cursor position + UpdateStruct [lindex $files($node) 0] $node;# exec structure updating + wm title . "TkLaTeXEditor $ver$release - [lindex $files($node) 0]" + unset item +} + + +## CLOSE PROGRAMM PROCEDURE ## +proc Quit {} { + if {[FileDialog quit_close_all] == 0} { + return + } else { + exit + } +} + +## AUTOSAVE AND AUTOREFRESH TIMERS PROCEDURE ## +set activeTimer(refresh) "" +set activeTimer(autosave) "" +proc Timer {file type} { + global timers activeFile activeTimer + if [info exists activeFile] { + } else { + return + } + if {$type == "refresh"} { + after cancel $activeTimer(refresh) ;# close previouse task + set activeTimer(refresh) [after $timers(refresh) {UpdateStruct $file $activeFile}] + } elseif {$type == "autosave"} { + after cancel $activeTimer(autosave) ;# close previouse task + set activeTimer(autosave) [after $timers(autosave) {FileDialog save_all}] + } +} + + +proc GetExtention {file} { + global fileList + set ext [string range [file extension [file tail $file]] 1 end] + return $ext +} + + + + diff --git a/lib/modules/render.tcl b/lib/modules/render.tcl new file mode 100755 index 0000000..644fcdd --- /dev/null +++ b/lib/modules/render.tcl @@ -0,0 +1,164 @@ +############################################################# +# TkTeXEditor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +############################################################# + +############################################################# +# Converts LaTeX formulas and texts to pixel graphics # +# # +# Required software: latex, convert (image magic) # +# to get color, the latex color package is required # +############################################################# +# Idea By Alex Dederer (aka Korwin) # +############################################################# + +## SELECTED TEXT EXTRACT ## +proc GenerateFormula {type} { + global dir nb activeFile convert_cmd + set text $nb.f$activeFile.f.text + set pos [$text index insert] + set curLine [lindex [split $pos "."] 0] + set cursor [lindex [split $pos "."] 1] + set selIndex [$text tag ranges sel] + if {$selIndex != ""} { + set posBegin [lindex $selIndex 0] + set posEnd [lindex $selIndex 1] + set formula [$text get $posBegin $posEnd] + } else { + return + } + #set cmdString "$convert_cmd(img) -o [file join $dir(tmp) formula.gif] $formula" + #catch [exec $convert_cmd(img) -o [file join $dir(tmp) formula.gif] $formula] err + #if {$err != ""} {puts $err} + + Render "$formula" $type "" + PreviewFormula +} +## PREVIEW CONVERTED IMAGE ## +proc PreviewFormula {} { + global nb font files color dir render + set node [$nb raise] + if {$node == "debug" || $node == ""} { + return + } + set w .formula + set text "$nb.f$node.f.text" + set pos [$nb.f[$nb raise].f.text index insert] + # set findString "" + # destroy the find window if it already exists + if {[winfo exists $w]} { + destroy $w + } + # create the new "find" window + toplevel $w + wm transient $w $nb.f$node + wm overrideredirect $w 1 + set b_x [winfo pointerx .] + set b_y [expr [winfo pointery .] - 200] + wm geometry $w +$b_x+$b_y + + set f1 [frame $w.frmFind -background $color(bg)] + pack $f1 -side top -fill x -expand true + + image create photo formula -format gif -file [file join $dir(tmp) tle_render.gif] + + label $f1.lblFind -background $color(bg) -image formula -relief ridge + pack $f1.lblFind -side left -padx 0 -pady 0 + bind $w "$text mark set insert $pos; $text see $pos; focus -force $text; destroy $w" + bind $w "$text mark set insert $pos; $text see $pos; focus -force $text; destroy $w" + focus -force $w + + + unset text pos w +} +## DOCUMENT HEADER READER ## +proc ReadHeader {widget} { + set posBegin [$widget search -regexp -- {\\documentclass} 0.0 end] + if {$posBegin != ""} { + set posEnd [$widget search -regexp -- {\\begin\{document\}} $posBegin end] + #puts "$posBegin - $posEnd"; return;# debug + if {$posEnd != ""} { + set text [$widget get $posBegin $posEnd] + } else { + set text "" + } + } else { + set text "" + } + return $text +} + +## IMAGE GENERATOR WITH MATHEMATICS FORMALS AND TEXTS ## +proc Render {text type fileName} { + global dir convert_cmd render activeFile files nb + # Names for input and output files + set enc "[lindex $files($activeFile) 2]" + + puts $files($activeFile) ;# debug + + if {$fileName == ""} { + set name tle_render + set texFile $name.tex + set imgFile $name.$render(format) + set _dir $dir(tmp) + } else { + set imgFile [file tail $fileName] + set name [file rootname $imgFile] + set texFile $name.tex + set _dir [file dirname $fileName] + } + set txt $nb.f$activeFile.f.text + set header [ReadHeader $txt] + if {$header == ""} { + set header "\\documentclass\[12pt\]\{article\}\n\\usepackage\[$enc\]\{inputenc\}\n\\usepackage\[english,russian\]\{babel\}" + + } + if {$type == "math"} { + append header "\\usepackage\{color\}\n\\pagestyle\{empty\}\n\\pagecolor\{$render(bg)\}\n" + append header "\\begin\{document\}\n\\begin\{eqnarray\*\}\n\{\n\\color\{$render(fg)\}" + set footer "\}\n\\end\{eqnarray*\}\n\\end\{document\}" + } elseif {$type == "text"} { + append header "\\usepackage\{color\}\n\n\\pagestyle\{empty\}\n" + append header "\\pagecolor\{$render(bg)\}\n\\begin\{document\}\n" + set footer "\\end\{document\}" + } + puts $header + set f [open [file join $dir(tmp) $texFile] w] + puts $f $header + puts $f $text + puts $f $footer + close $f + + set err "" + catch [cd $dir(tmp)] + catch [exec $convert_cmd(dvi) -interaction=batchmode [file join $dir(tmp) $texFile]] err + catch [exec dvips -o $dir(tmp)/$name.eps -E $dir(tmp)/$name.dvi 2> /dev/null] err + # Transparent background + if {$render(trans) == 1} { + if {$render(aa) == 1} { + catch [exec $convert_cmd(img) +adjoin -antialias -transparent $render(bg) -density $render(res) $dir(tmp)/$name.eps $_dir/$imgFile] err + } else { + catch [exec $convert_cmd(img) +adjoin +antialias -transparent $render(bg) -density $render(res) $dir(tmp)/name.eps $_dir/$imgFile] err + } + } else { + if {$render(aa) == 1} { + catch [exec $convert_cmd(img) +adjoin -antialias -density $render(res) $dir(tmp)/$name.eps $_dir/$imgFile] err + } else { + catch [exec $convert_cmd(img) +adjoin +antialias -density $render(res) $dir(tmp)/$name.eps $_dir/$imgFile] err + } + } + if {$err != ""} { + set answer [tk_messageBox -message "$err"\ + -type ok -icon warning -title [::msgcat::mc "Warning"]] + case $answer { + ok {return} + } + puts $err + } + catch [cd $dir(current)] +} + + + diff --git a/lib/modules/spellcheck.tcl b/lib/modules/spellcheck.tcl new file mode 100755 index 0000000..6f4fb57 --- /dev/null +++ b/lib/modules/spellcheck.tcl @@ -0,0 +1,216 @@ +######################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +######################################################### +# Spell Checking procedure +# required Ispell, Msgcat +# Author: Victor Wagner (Vitus) http://www.ice.ru/~vitus +# +# Usage: "SpellCheck text_widget" +######################################################### + + +proc SpellCheck {text} { + global ispell_lib ispell_language ispell_startindex nb color font + set node [$nb raise] + if {[winfo exists .spell]} { + return + } + + if {$node == "newproj" || $node == "settings" || $node == "about" || $node == ""} { + return + } + # Build dictionary list + foreach dict [glob [file join $ispell_lib *.hash]] { + file stat $dict foo + set lang [file rootname [file tail $dict]] + if {$lang == "default"} { + set default_inode $foo(ino) + } else { + lappend langs $lang + set lang_nodes($foo(ino)) $lang; + } + } + if {![info exists ispell_language]} { + if {[info exists default_inode ]&&[info exists lang_nodes($default_inode)]} { + set ispell_language $lang_nodes($default_inode) + } else { + set ispell_language [lindex $langs 0] + } + } + toplevel .spell -class Notepad + wm title .spell [::msgcat::mc "Spell check"] + wm transient .spell . + wm resizable .spell 0 0 + + frame .spell.lang -relief raised -borderwidth 1 -background $color(bg) + label .spell.lang.l -text [::msgcat::mc "Language"] -background $color(bg) -font $font(normal) + eval tk_optionMenu .spell.lang.m ispell_language $langs -background $color(bg) -font $font(normal) + pack .spell.lang.l .spell.lang.m -side left -padx 5 + pack .spell.lang.m -side left -padx 5 -fill x -expand 1 + frame .spell.start -relief raised -borderwidth 1 -background $color(bg) + radiobutton .spell.start.all -text [::msgcat::mc "Entire file"] -background $color(bg)\ + -variable ispell_startindex -value "1.0" -anchor w -font $font(normal) + radiobutton .spell.start.ins -text [::msgcat::mc "From cursor"] -background $color(bg)\ + -variable ispell_startindex -value insert -anchor w -font $font(normal) + pack .spell.start.all .spell.start.ins -side top -pady 1 -expand y -fill x + frame .spell.b -relief raised -borderwidth 1 -background $color(bg) + button .spell.b.ok -text [::msgcat::mc "Start"] -relief groove -background $color(bg)\ + -command "DoSpellCheck $text" -font $font(normal) + button .spell.b.cancel -text [::msgcat::mc "Cancel"] -relief groove -background $color(bg)\ + -command "destroy .spell" -font $font(normal) + pack .spell.b.ok .spell.b.cancel -side left -padx 10 + pack .spell.lang -side top -fill x + pack .spell.start -side top -fill both -expand 1 + pack .spell.b -side top -fill x + bind .spell "destroy .spell" +} + +proc DoSpellCheck {text} { + global ispell_file ispell_startindex ispell_language spellAddWords color font + eval destroy [winfo children .spell] + wm transient .spell . + entry .spell.word -exportselection false + listbox .spell.misses -yscrollcommand ".spell.y set" -exportselection false -background $color(bg) + scrollbar .spell.y -command ".spell.misses yview" -background $color(bg) + button .spell.ok -text [::msgcat::mc "Accept"] -command "SpellOk $text" -background $color(bg) \ + -font $font(normal) + button .spell.accept -text [::msgcat::mc "Next"] -command "SpellAccept @" -background $color(bg) \ + -font $font(normal) + button .spell.adddict -text [::msgcat::mc "Add to dict"] -command "SpellAccept *" -background $color(bg) \ + -font $font(normal) + button .spell.adddict2 -text [::msgcat::mc "Add lowercase"] -command "SpellAccept &" -background $color(bg) \ + -font $font(normal) + button .spell.stop -text [::msgcat::mc "Stop checking"] -command "SpellStop $text" -background $color(bg) \ + -font $font(normal) + grid .spell.word - - -sticky news -padx 5 -pady 5 + grid .spell.misses .spell.y .spell.ok -sticky news + grid x x .spell.accept -sticky news + grid x x .spell.adddict -sticky news + grid x x .spell.adddict2 -sticky news + grid x x .spell.stop -sticky news + grid configure .spell.ok .spell.accept .spell.adddict .spell.adddict2 .spell.stop -padx 5 -pady 3 + grid configure .spell.misses .spell.y -rowspan 5 + focus .spell.word + wm protocol .spell WM_DELETE_WINDOW "SpellStop $text" + + set ispell_file [open "|ispell -a -d $ispell_language" w+] + fconfigure $ispell_file -buffering none -blocking yes + gets $ispell_file + puts $ispell_file "!" + set spellAddWords {} + + $text mark set insert $ispell_startindex + while {[SpellNextLine $text]} { + while {[gets $ispell_file responce]>0} { + switch -exact -- [string range $responce 0 0] { + "*" - + "+" - + "-" {continue} + "&" - + "?" {regexp {^. +([^ ]+) +[0-9]+ +([0-9]+):(.*)$} $responce foo \ + orig offset guesses + SpellInteract $orig $offset $guesses $text + } + "#" {regexp {^. +([^ ]+) +([0-9]+)} $responce foo orig offset + SpellInteract $orig $offset {} $text + } + } +} +$text mark set insert "spellstart linestart + 1 lines" +} +close $ispell_file +eval destroy [winfo children .spell] +label .spell.l -text [::msgcat::mc "Checking complete"] -background $color(bg) +button .spell.ok -text [::msgcat::mc "Ok"] -command {destroy .spell} -background $color(bg) +wm protocol .spell WM_DELETE_WINDOW {destroy .spell} +pack .spell.l .spell.ok -side top -padx 5 -pady 10 +} + + +proc SpellNextLine {text} { + global spellOffset ispell_file spellAddWords + set spellOffset -1 + $text see insert + $text mark set spellstart insert + set line [$text get insert "insert lineend"] + if [$text compare insert >= "end-1char"] { + return 0 + } + foreach word $spellAddWords { + puts "Adding to dictionary $word" + puts $ispell_file $word + } + set spellAddWords {} + puts $ispell_file "^$line" + return 1 +} + +proc SpellInteract {word offset guesses text} { + .spell.word delete 0 end + .spell.word insert 0 $word + $text tag remove sel 0.0 end + global spellOffset + incr offset $spellOffset + $text tag add sel "spellstart+$offset chars" "spellstart+[expr $offset+\ + [string length $word]] chars" + global spellHighlight + set spellHighlight [$text tag ranges sel] + $text see sel.first + $text mark set insert sel.first + .spell.misses delete 0 end + if [string length $guesses] { + foreach miss [split $guesses ","] { + .spell.misses insert end [string trim $miss] + } + } + global spellInteractResult + vwait spellInteractResult + return -code $spellInteractResult +} + +proc SpellOk {text} { + # заменить на содержимое .spell.word или .spell.misses + global spellInteractResult spellHighlight + if [llength [.spell.misses curselection]] { + set word [.spell.misses get [.spell.misses curselection]] + } else { + set word [.spell.word get] + } + if {![llength [$text tag ranges sel]]} { + global spellHighilight + eval $text tag add sel $spellHighlight + } + set oldword [$text get sel.first sel.last] + if {[string compare $oldword $word]} { + $text delete sel.first sel.last + $text insert insert $word sel + global changed spellOffset + set changed 1 + incr spellOffset [expr [string length $word]-[string length $oldword]] + } + set spellInteractResult ok +} + +proc SpellAccept {cmd} { + global spellAddWords spellInteractResult + lappend spellAddWords "$cmd[.spell.word get]" + set spellInteractResult ok +} + +proc SpellStop {text} { + global ispell_file + $text mark unset spellstart + catch {close $ispell_file} + destroy .spell + set spellInteractResult return +} + + + + + + + diff --git a/lib/modules/splashscreen.tcl b/lib/modules/splashscreen.tcl new file mode 100755 index 0000000..c27c37e --- /dev/null +++ b/lib/modules/splashscreen.tcl @@ -0,0 +1,59 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (aka BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2004, http://conero.lrn.ru +###################################################### + +proc ShowSplashScreen {} { + global font + global dir tree nb ver font release + set max 200 + set w .about + if {[winfo exists $w]} { + destroy $w + } + toplevel $w + wm title $w [::msgcat::mc "Strting Tk LaTeX Editor ..."] + #wm resizable $w 0 0 + wm transient $w . + + frame $w.frmImg -borderwidth 2 -relief ridge -background black + image create photo imgAbout -format gif -file [file join $dir(img) tle.gif] + image create photo imgConero -format gif -file [file join $dir(img) conero.gif] + + label $w.frmImg.lblImg -image imgAbout -background black + + pack $w.frmImg.lblImg -side top -fill x + + frame $w.frmlbl -borderwidth 2 -relief ridge -background "#8700d1" + label $w.frmlbl.lblVersion -text "[::msgcat::mc Version] $ver$release"\ + -background "#8700d1" -foreground black + label $w.frmlbl.lblAuthorName -text "[::msgcat::mc Authors]:"\ + -background "#8700d1" -foreground black + label $w.frmlbl.lblAuthor1 -text "Sergey Kalinin (aka BanZaj), banzaj@lrn.ru"\ + -background "#8700d1" -foreground black + label $w.frmlbl.lblAuthor2 -text "Constantin I Makhailenko (aka Const), const@mail.ru"\ + -background "#8700d1" -foreground black + + + frame $w.frame + + + ProgressBar $w.frame.bar \ + -variable splash_count -width 100 -height 10 -maximum $max + label $w.frame.info -textvariable info + + pack $w.frmlbl.lblVersion $w.frmlbl.lblAuthorName $w.frmlbl.lblAuthor1 $w.frmlbl.lblAuthor2 -side top -padx 5 + pack $w.frmImg -side top -fill x + pack $w.frmlbl -side top -expand true -fill both + + pack $w.frame.bar $w.frame.info -side top -expand true -fill x + + bind $w "destroy .about" + bind $w "destroy .about" + # +} + +#ShowSplashScreen + diff --git a/lib/modules/struct.tcl b/lib/modules/struct.tcl new file mode 100755 index 0000000..332ab3c --- /dev/null +++ b/lib/modules/struct.tcl @@ -0,0 +1,291 @@ +###################################################### +# TkTeXEditor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +###################################################### + +###################################################### +# # +# Document structure module (insert\update\deleted # +# # +###################################################### + +set in(c) 0 ;# chapter counter +set in(p) 0 ;# part counter +set in(s) 0 ;# section counter +set in(ss) 0 ;# subsection counter +set in(sss) 0 ;# subsubsection counter +set in(par) 0 ;# paragraph cponter +set in(spar) 0 ;# subparagraph cponter +set in(lbl) 0 ;# label cuonter +set in(ref) 0 ;# ref counter +set in(pageref) 0 ;# ref counter +set in(include) 0 +set in(input) 0 +set in(cite) 0 +set in(bibitem) 0 +set in(image) 0 +set lastPart "root" +set lastChapter "root" +set lastSection "root" +set lastSSection "root" +set lastSSSection "root" +set lastPar "root" +set lastSubPar "root" + +## INSERT STRUCT PROCEDURE ## +## reading and parsing string from surce file +## and execute procedures for inserted required structure into structure tree +proc InsertStruct {node line lineNumber fileDir } { + global tree treeStruct dir font color in lastNode activeFile + global lastPart lastChapter lastSection lastSSection lastSSSection + global lastPar lastSubPar lastLabel files nb thumbnail thumb + #puts $fileDir + if [regexp -nocase -all -- {(\\part)(\*|)(\[.*?\])*(\{.*?\})} $line struct v1 v1_5 v2 v3] { + incr in(p) + InsertNode "part_$in(p)" "root" "[string trimleft [string trimright $v1_5$v3 "\}"] "\{"]" part $lineNumber + set lastPart "part_$in(p)" + } + if [regexp -nocase -all -- {(\\chapter)(\*|)(\[.*?\])*(\{.*?\})} $line struct v1 v1_5 v2 v3] { + incr in(c) + InsertNode "chapter_$in(c)" "$lastPart" "[string trimleft [string trimright $v1_5$v3 "\}"] "\{"]" chapter $lineNumber + set lastChapter chapter_$in(c) + } + if [regexp -nocase -all -- {(\\section)(\*|)(\[.*?\])*(\{.*?\})} $line struct v1 v1_5 v2 v3] { + incr in(s) + InsertNode "section_$in(s)" "$lastChapter" "[string trimleft [string trimright $v1_5$v3 "\}"] "\{"]" section $lineNumber + set lastSection "section_$in(s)" + } + if [regexp -nocase -all -- {(\\subsection)(\*|)(\[.*?\])*(\{.*?\})} $line struct v1 v1_5 v2 v3] { + incr in(ss) + InsertNode "subsection_$in(ss)" "$lastSection" "[string trimleft [string trimright $v1_5$v3 "\}"] "\{"]" ssection $lineNumber + set lastSSection "subsection_$in(ss)" + } + if [regexp -nocase -all -- {(\\subsubsection)(\*|)(\[.*?\])*(\{.*?\})} $line struct v1 v1_5 v2 v3] { + incr in(sss) + InsertNode "subsubsection_$in(sss)" "$lastSSection" "[string trimleft [string trimright $v1_5$v3 "\}"] "\{"]" sssection $lineNumber + set lastSSSection "subsubsection_$in(sss)" + } + if [regexp -nocase -all -- {(\\paragraph)(\*|)(\[.*?\])*(\{.*?\})} $line struct v1 v1_5 v2 v3] { + incr in(par) + InsertNode "paragraph_$in(par)" "$lastSSSection" "[string trimleft [string trimright $v1_5$v3 "\}"] "\{"]" paragraph $lineNumber + set lastPar "paragraph_$in(par)" + } + if [regexp -nocase -all -- {(\\subparagraph)(\*|)(\[.*?\])*(\{.*?\})} $line struct v1 v1_5 v2 v3] { + incr in(spar) + InsertNode "subparagraph_$in(spar)" "$lastPar" "[string trimleft [string trimright $v1_5$v3 "\}"] "\{"]" subparagraph $lineNumber + set lastSubPar "subparagraph_$in(spar)" + } + if [regexp -nocase -all -- {(\\label)(\{.*?\})} $line struct v1 v2] { + incr in(lbl) + InsertLabel "label_$in(lbl)" "$v2" "label" + } + if [regexp -nocase -all -- {(\\ref)(\{.*?\})} $line struct v1 v2] { + incr in(ref) + InsertRef "ref_$in(ref)" "$v2" + } + if [regexp -nocase -all -- {(\\pageref)(\{.*?\})} $line struct v1 v2] { + incr in(pageref) + InsertPageref "pageref_$in(pageref)" "$v2" + } + if [regexp -nocase -all -- {(\\cite)(\{.*?\})} $line struct v1 v2] { + incr in(cite) + InsertLabel "cite_$in(cite)" "$v2" "cite" + } + if [regexp -nocase -all -- {(\\bibitem)(\{.*?\})} $line struct v1 v2] { + incr in(bibitem) + InsertLabel "bibitem_$in(bibitem)" "$v2" "bibitem" + } + + if { [regexp -nocase -all -- {(\\input)(\{.*?\})} $line struct v1 v2] || [regexp -nocase -all -- {(\\include)(\{.*?\})} $line struct v1 v2] } { + incr in(input) + set fullPath [string trimleft [string trimright $v2 "\}"] "\{"] + set dirName [file dirname $fullPath] + # извращение + if [info exists activeFile] { + #puts $activeFile + # set nod $activeFile + #while {[set parentNode [$tree parent $nod]] != "root"} {set nod $parentNode} + } else { + #return + } + set rootPath [file dirname [$tree itemcget $node -data]] + + set file [file tail $fullPath] + + if {$dirName != "."} { + set dirName [string range $dirName [expr [string first "/" $dirName]+1] end] + set fileDir [file join $rootPath $dirName] + } else { + set fileDir $rootPath + } + puts "fullPath - $fullPath\nrootPath - $rootPath\n dirName-$dirName\nfile=$file\nfilrDir-$fileDir" + set subNode [InsertTreeSubNode "$file" "$activeFile" $fileDir] + #puts "InsertStruct: node - $subNode\tparent - $node" + #return + if [info exists files($subNode)] { + #puts "$subNode" + #puts "факин файл [lindex $files($subNode) 0]" + InsertTreeSubNode $file $node $dirName + UpdateStruct [lindex $files($subNode) 0] $subNode + } + set ext [file extension $file] + if {$ext == ""} { + set ext "tex" + } + if {[file exists [file join $fileDir $file.$ext]] == 0} { + $tree itemconfigure $subNode -image [Bitmap::get [file join $dir(img) error.gif]] + } + } + if {[regexp -nocase -all -- {(\\includegraphics)(\{.*?\})} $line struct v1 v2] ==1 || \ + [regexp -nocase -all -- {(\\includegraphics)(\[.*?\])(\{.*?\})} $line struct v1 v3 v2] ==1} { + if {[string tolower $thumb(show)] == "no"} { + return + } + incr in(image) + set imagePath [file dirname $v2] + set rootPath [file dirname [$tree itemcget $node -data]] + + if {$imagePath == "."} { + set fullPathToFile [file join $rootPath [string trimleft [string trimright $v2 "\}"] "\{"]] + } + set fullPathToFile [file join $rootPath [string trimleft [string trimright $v2 "\}"] "\{"]] + set subNode [InsertTreeSubNode [file tail $fullPathToFile] $node [file dirname $fullPathToFile]] + $tree itemconfigure $subNode -image [Bitmap::get [file join $dir(img) img.gif]] + + puts "$imagePath - $rootPath" + set imgFile [ConvertImage $fullPathToFile] + if {[info exists thumbnail($imgFile)] == 0} { + set thumbnail($imgFile) [image create photo -file $imgFile] + $nb.f$activeFile.f.text image create $lineNumber.end -image $thumbnail($imgFile) + puts "Image $thumbnail($imgFile) was create" + } else { + if [lsearch [$nb.f$activeFile.f.text image names ] $thumbnail($imgFile)] { + puts "$thumbnail($imgFile) - Image already created" + } else { + #$nb.f$activeFile.f.text image create $lineNumber.end -image $thumbnail($imgFile) + } + #puts "image - $thumbnail($imgFile)\n lists - [$nb.f$activeFile.f.text image names ]" + } + } +} + ## UPDATE DOCUMENT STRUCTURE PROCEDURE ## + proc UpdateStruct {file node} { + #puts $file + #puts $node + global tree treeStruct dir font color lblList files + global lastPart lastChapter lastSection lastSSection lastSSSection + global lastPar lastSubPar in nb dir activeFile + if [info exists files($node)] { + Timer $file "refresh" + } else { + return + } + #FileDialog save + # Сохранение текста во временный файл для обновления структуры + set dirName [file dirname $file] + set file [file tail $file] + set text "$nb.f$node.f.text" + set contents [$text get 0.0 end] + set fhandle [open [file join $dir(tmp) $file.bak] "w"] + puts $fhandle $contents nonewline + close $fhandle + + + set in(c) 0 ;# chapter counter + set in(p) 0 ;# part counter + set in(s) 0 ;# section counter + set in(ss) 0 ;# subsection counter + set in(sss) 0 ;# subsubsection counter + set in(par) 0 ;# paragraph cponter + set in(spar) 0 ;# subparagraph cponter + set in(lbl) 0 ;# label cuonter + set in(ref) 0 ;# ref counter + set in(pageref) 0 ;# ref counter + set in(include) 0 + set in(input) 0 + set in(cite) 0 + set in(bibitem) 0 + set lastPart "root" + set lastChapter "root" + set lastSection "root" + set lastSSection "root" + set lastSSSection "root" + set lastPar "root" + set lastSubPar "root" + ## check if file was deleted from declaration \input and \include + ## adding new node into file tree + #set node $activeFile + set parentNode [$tree parent $node] + + #puts "UpdateStruct: node - $node\tparent - $parentNode" + + if [$tree exists $node] { + $tree delete [$tree nodes $node] ;# delete all info about old structure + } else { + set file [file tail [lindex $files($node) 0]] + set fileDir [file dirname [lindex $files($node) 0]] + InsertTreeSubNode "$file" $parentNode $fileDir + } + $treeStruct delete [$treeStruct nodes root] ;# delete all info about old structure + $lblList delete [$lblList item 0 end] ;# deleted all old labels from label list + set fHandle [open [file join $dir(tmp) $file.bak] "r"] + set lineNumber 1 + while {[gets $fHandle line]>=0} { + InsertStruct $node $line $lineNumber $dirName + incr lineNumber + } + unset dirName text contents +} + +proc InsertLabel {node label img} { + global tree treeStruct lblList dir + set label [string trimleft $label "\{"] + set label [string trimright $label "\}"] + $lblList insert end $node -text "$label" -image [Bitmap::get [file join $dir(img) $img.gif]] + unset label +} +proc InsertRef {node label} { + global tree treeStruct lblList dir + set label [string trimleft $label "\{"] + set label [string trimright $label "\}"] + $lblList insert end $node -text "$label" -image [Bitmap::get [file join $dir(img) ref.gif]] + unset label +} +proc InsertPageref {node label} { + global tree treeStruct lblList dir + set label [string trimleft $label "\{"] + set label [string trimright $label "\}"] + $lblList insert end $node -text "$label" -image [Bitmap::get [file join $dir(img) pageref.gif]] + unset label +} +proc FindLabel {node} { + global nb activeFile lblList status + $lblList selection set $node + set t [$lblList itemcget $node -text] + set text [string range $node 0 [expr [string first "_" $node]-1]] + set findString "$text\{$t\}" + set text "$nb.f$activeFile.f.text" + FindProc $text $findString $activeFile + $status(pos) configure -text [$text index insert];# cursor position + unset text t findString +} + + + + + + + + + + + + + + + + + + diff --git a/lib/modules/supertext.tcl b/lib/modules/supertext.tcl new file mode 100755 index 0000000..9568c00 --- /dev/null +++ b/lib/modules/supertext.tcl @@ -0,0 +1,390 @@ +# supertext.tcl v1.01 +# +# Copyright (c) 1998 Bryan Oakley +# All Rights Reserved +# +# this code is freely distributable, but is provided as-is with +# no waranty expressed or implied. + +# send comments to oakley@channelpoint.com + +# What is this? +# +# This is a replacement for (or superset of , or subclass of, ...) +# the tk text widget. Its big feature is that it supports unlimited +# undo. It also has two poorly documented options: -preproc and +# -postproc. + +# The entry point to this widget is supertext::text; it takes all of +# the same arguments as the standard text widget and exhibits all of +# the same behaviors. The proc supertext::overrideTextCommand may be +# called to have the supertext widget be used whenever the command +# "text" is used (ie: it imports supertext::text as the command "text"). +# Use at your own risk... + +# To access the undo feature, use ".widget undo". It will undo the +# most recent insertion or deletion. On windows and the mac +# this command is bound to ; on unix it is bound to +# + +# if you are lucky, you might find documentation here: +# http://www1.clearlight.com/~oakley/tcl/supertext.html + +package provide supertext 1.01 + +namespace eval supertext { + variable undo + variable undoIndex + variable text "::text" + variable preProc + variable postProc + namespace export text +} + +# this proc is probably attempting to be more clever than it should... +# When called, it will (*gasp*) rename the tk command "text" to "_text_", +# then import our text command into the global scope. +# +# Use at your own risk! + +proc supertext::overrideTextCommand {} { + variable text + set text "::_text_" + rename ::text $text + uplevel #0 namespace import supertext::text +} + +proc supertext::text {w args} { + variable text + variable undo + variable undoIndex + variable preProc + variable postProc + + # this is what we will rename our widget proc to... + set original __$w + + # do we have any of our custom options? If so, process them and + # strip them out before sending them to the real text command + if {[set i [lsearch -exact $args "-preproc"]] >= 0} { + set j [expr $i + 1] + set preProc($original) [lindex $args $j] + set args [lreplace $args $i $j] + } else { + set preProc($original) {} + } + + if {[set i [lsearch -exact $args "-postproc"]] >= 0} { + set j [expr $i + 1] + set postProc($original) [lindex $args $j] + set args [lreplace $args $i $j] + } else { + set postProc($original) {} + } + + # let the text command create the widget... + eval $text $w $args + + # now, rename the resultant widget proc so we can create our own + rename ::$w $original + + # here's where we create our own widget proc. + proc ::$w {command args} \ + "namespace eval supertext widgetproc $w $original \$command \$args" + + # set up platform-specific binding for undo; the only one I'm + # really sure about is winders; the rest will stay the same for + # now until someone has a better suggestion... + switch $::tcl_platform(platform) { + unix { + event add <> + event add <> + } + windows { + event add <> + event add <> + } + macintosh { + event add <> + event add <> + } + } + bind $w <> "$w undo" + + set undo($original) {} + set undoIndex($original) -1 + set clones($original) {} + + return $w +} + +# this is the command that we associate with a supertext widget. +proc supertext::widgetproc {this w command args} { + + variable undo + variable undoIndex + variable preProc + variable postProc + + # these will be the arguments to the pre and post procs + set originalCommand $command + set originalArgs $args + + # is there a pre-proc? If so, run it. If there is a problem, + # die. This is potentially bad, because once there is a problem + # in a preproc the user must fix the preproc -- there is no + # way to unconfigure the preproc. Oh well. The other choice + # is to ignore errors, but then how will the caller know if + # the proc fails? + if {[info exists preProc($w)] && $preProc($w) != ""} { + if {[catch "$preProc($w) command args" error]} { + return -code error "error during processing of -preproc: $error" + } + } + + + # if the command is "undo", we need to morph it into the appropriate + # command for undoing the last item on the stack + if {$command == "undo"} { + + if {$undoIndex($w) == ""} { + # ie: last command was anything _but_ an undo... + set undoIndex($w) [expr [llength $undo($w)] -1] + } + + # if the index is pointing to a valid list element, + # lets undo it... + if {$undoIndex($w) < 0} { + # nothing to undo... + bell + + } else { + + # data is a list comprised of a command token + # (i=insert, d=delete) and parameters related + # to that token + set data [lindex $undo($w) $undoIndex($w)] + + if {[lindex $data 0] == "d"} { + set command "delete" + } else { + set command "insert" + } + set args [lrange $data 1 end] + + # adjust the index + incr undoIndex($w) -1 + + } + } + + # now, process the command (either the original one, or the morphed + # undo command + switch $command { + + reset_undo { + set undo($w) "" + set undoIndex($w) "" + set result {} + } + + configure { + # we have to deal with configure specially, since the + # user could try to configure the -preproc or -postproc + # options... + + if {[llength $args] == 0} { + # first, the case where they just type "configure"; lets + # get it out of the way + set list [$w configure] + lappend list [list -preproc preproc Preproc {} $preProc($w)] + lappend list [list -postproc postproc Postproc {} $postProc($w)] + set result $list + + + } elseif {[llength $args] == 1} { + # this means they are wanting specific configuration + # information + set option [lindex $args 0] + if {$option == "-preproc"} { + set result [list -preproc preproc Preproc {} $preProc($w)] + + } elseif {$option == "-postproc"} { + set result [list -postproc postproc Postproc {} $postProc($w)] + + } else { + if {[catch "$w $command $args" result]} { + regsub $w $result $this result + return -code error $result + } + } + + } else { + # ok, the user is actually configuring something... + # we'll deal with our special options first + if {[set i [lsearch -exact $args "-preproc"]] >= 0} { + set j [expr $i + 1] + set preProc($w) [lindex $args $j] + set args [lreplace $args $i $j] + set result {} + } + + if {[set i [lsearch -exact $args "-postproc"]] >= 0} { + set j [expr $i + 1] + set postProc($w) [lindex $args $j] + set args [lreplace $args $i $j] + set result {} + } + + # now, process any remaining args + if {[llength $args] > 0} { + if {[catch "$w $command $args" result]} { + regsub $w $result $this result + return -code error $result + } + } + } + } + + undo { + # if an undo command makes it to here, that means there + # wasn't anything to undo; this effectively becomes a + # no-op + set result {} + } + + insert { + + if {[catch {set index [text_index $w [lindex $args 0]]}]} { + set index [lindex $args 0] + } + + # since the insert command can have an arbitrary number + # of strings and possibly tags, we need to ferret that out + # now... what a pain! + set myargs [lrange $args 1 end] + set length 0 + while {[llength $myargs] > 0} { + incr length [string length [lindex $myargs 0]] + if {[llength $myargs] > 1} { + # we have a tag... + set myargs [lrange $myargs 2 end] + } else { + set myargs [lrange $myargs 1 end] + } + } + + # now, let the real widget command do the dirty work + # of inserting the text. If we fail, do some munging + # of the error message so the right widget name appears... + + if {[catch "$w $command $args" result]} { + regsub $w $result $this result + return -code error $result + } + + # we need this for the undo stack; index2 couldn't be + # computed until after we inserted the data... + set index2 [text_index $w "$index + $length chars"] + + if {$originalCommand == "undo"} { + # let's do a "see" so what we just did is visible; + # also, we'll move the insertion cursor to the end + # of what we just did... + $w see $index2 + $w mark set insert $index2 + + } else { + # since the original command wasn't undo, we need + # to reset the undoIndex. This means that the next + # time an undo is called for we'll start at the + # end of the stack + set undoIndex($w) "" + } + + # add a delete command on the undo stack. + lappend undo($w) "d $index $index2" + + } + + delete { + + # this converts the insertion index into an absolute address + set index [text_index $w [lindex $args 0]] + + # lets get the data we are about to delete; we'll need + # it to be able to undo it (obviously. Duh.) + set data [eval $w get $args] + + # add an insert on the undo stack + lappend undo($w) [list "i" $index $data] + + if {$originalCommand == "undo"} { + # let's do a "see" so what we just did is visible; + # also, we'll move the insertion cursor to a suitable + # spot + $w see $index + $w mark set insert $index + + } else { + # since the original command wasn't undo, we need + # to reset the undoIndex. This means that the next + # time an undo is called for we'll start at the + # end of the stack + set undoIndex($w) "" + } + + # let the real widget command do the actual deletion. If + # we fail, do some munging of the error message so the right + # widget name appears... + if {[catch "$w $command $args" result]} { + regsub $w $result $this result + return -code error $result + } + } + + default { + # if the command wasn't one of the special commands above, + # just pass it on to the real widget command as-is. If + # we fail, do some munging of the error message so the right + # widget name appears... + if {[catch "$w $command $args" result]} { + regsub $w $result $this result + return -code error $result + } + } + } + + # is there a post-proc? If so, run it. + if {[info exists postProc($w)] && $postProc($w) != ""} { + if {[catch "$postProc($w) originalCommand originalArgs" error]} { + return -code error "error during processing of -postproc: $error" + } + } + + + # we're outta here! (I think this is faster than a + # return, though I'm not 100% sure on this...) + set result $result +} + +# this returns a normalized index (ie: line.column), with special +# handling for the index "end"; to undo something we pretty much +# _have_ to have a precise row and column number. +proc supertext::text_index {w i} { + if {$i == "end"} { + set index [$w index "end-1c"] + } else { + set index [$w index $i] + } + + return $index +} + + + + + + + + diff --git a/lib/modules/table.tcl b/lib/modules/table.tcl new file mode 100755 index 0000000..c859e77 --- /dev/null +++ b/lib/modules/table.tcl @@ -0,0 +1,147 @@ +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +###################################################### + +proc InsertTableDialog {} { + global nb font files findString replaceString text dir color + set node [$nb raise] + if {$node == "newproj" || $node == "settings" || $node == "about" || $node == ""} { + return + } + #set file $files($node) + set w .table + set text "$nb.f$node.f.text" + # set findString "" + # destroy the find window if it already exists + if {[winfo exists $w]} { + destroy $w + } + set colNum 1 + set posTable "center" + set align "center" + set line "full" + toplevel $w + wm transient $w $nb.f$node + wm title $w [::msgcat::mc "Add table"] + wm resizable $w 0 0 + + set f1 [frame $w.frmAlign -borderwidth 1 -relief raised -background $color(bg)] + set f2 [frame $w.frmTable -borderwidth 1 -relief raised -background $color(bg)] + set f3 [frame $w.frmBtn -borderwidth 1 -background $color(bg)] + set f4 [frame $w.frmCol -borderwidth 1 -relief raised -background $color(bg)] + set f5 [frame $w.frmPos -borderwidth 1 -relief raised -background $color(bg)] + pack $f4 $f1 $f2 $f5 $f3 -side top -fill x -expand true + + label $f4.lblCol -text [::msgcat::mc "Input number of columns"] -background $color(bg) + SpinBox $f4.spinCol -textvariable colNum -range {1 100 1} -helptext "Columns" -background $color(bg) + pack $f4.lblCol $f4.spinCol -side top -fill x -pady 2 -padx 2 + + label $f1.lbl -text [::msgcat::mc "Alignment"] -background $color(bg) + pack $f1.lbl -side top -fill x + foreach btn {center left right} { + radiobutton $f1.btn$btn -text [::msgcat::mc "Align $btn"] -variable align\ + -value $btn -font $font(normal) -selectcolor $color(selectbg) -background $color(bg) + pack $f1.btn$btn -side top -anchor w + } + + label $f5.lblPos -text [::msgcat::mc "Table position"] -background $color(bg) + pack $f5.lblPos -side top -fill x + foreach tbl {top bottom center} { + image create photo img_$tbl -file [file join $dir(img) table_$tbl.gif] + radiobutton $f5.btn$tbl -variable table -indicatoron 0 -background $color(bg)\ + -font $font(normal) -image img_$tbl -value $tbl -selectcolor $color(selectbg) + pack $f5.btn$tbl -side left -anchor n -pady 2 + } + + label $f2.lblLine -text [::msgcat::mc "Line type"] -background $color(bg) + pack $f2.lblLine -side top -fill x + foreach tbl {empty full double cols lines} { + image create photo img_$tbl -file [file join $dir(img) table_$tbl.gif] + radiobutton $f2.btn$tbl -variable line -indicatoron 0 -background $color(bg)\ + -font $font(normal) -image img_$tbl -value $tbl -selectcolor $color(selectbg) + pack $f2.btn$tbl -side left -anchor n -pady 2 + } + + + button $f3.btnAdd -text "[::msgcat::mc "Insert"] - Enter" -font $font(normal)\ + -relief groove -background $color(bg) -command { + InsertTable $colNum $table $line $align + destroy .table + } + button $f3.btnCancel -text "[::msgcat::mc "Cancel"] - Esc" -command "destroy $w"\ + -font $font(normal) -relief groove -background $color(bg) + pack $f3.btnAdd $f3.btnCancel\ + -side left -padx 2 -pady 2 -fill x + + bind $w "" + bind $w "" + bind $w "destroy $w" +} + +proc InsertTable {colNum posTable line align} { + global dir font color nb + set node [$nb raise] + if {$node == ""} {return} + set text "$nb.f$node.f.text" + set pos [$text index insert] + set curLine [lindex [split $pos "."] 0] + set cursor [lindex [split $pos "."] 1] + set editLine [$text get $curLine.0 $pos] + set header "\\begin\{tabular\}" + set footer "\\end\{tabular\}" + + if {$line == "double"} { + set split "||" + set lineEnd "\\\\ \\hline\n" + } elseif {$line == "full"} { + set split "|" + set lineEnd "\\\\ \\hline\n" + } elseif {$line == "empty"} { + set split " " + set lineEnd "\\\\\n" + } elseif {$line == "cols"} { + set split "|" + set lineEnd "\\\\\n" + } elseif {$line == "lines"} { + set split " " + set lineEnd "\\\\ \\hline\n" + } else { + set split " " + set lineEnd "\\\\\n" + } + switch -- $posTable { + top {set position "t"} + bottom {set position "b"} + center {set position "c"} + } + switch -- $align { + center {set colAlign "c"} + left {set colAlign "l"} + right {set colAlign "r"} + } + set count 0 + set count_ 0 + while {$colNum > $count} { + append columns "$split$colAlign" + incr count + } + while {$colNum > [expr $count_+1]} { + append body "& " + incr count_ + } + + append columns $split + + $text insert $pos "$header\[$position\]\{$columns\} $lineEnd\t$body$lineEnd$footer" + $text mark set insert [expr $curLine +1].1 + $text see insert + +} + + + + + diff --git a/lib/modules/template.tcl b/lib/modules/template.tcl new file mode 100755 index 0000000..a57f261 --- /dev/null +++ b/lib/modules/template.tcl @@ -0,0 +1,126 @@ +###################################################### +# TkTeXEditor +# Distributed under GNU Public License +# Author: Sergey Kalinin (aka BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lrn", 2002, http://conero.lrn.ru +###################################################### + +proc TemplateDialog {} { + global dir nb tmpl font color relief + set w .template + if {[winfo exists $w]} { + destroy $w + } + # create the new "goto" window + toplevel $w + wm title $w [::msgcat::mc "Create new file"] + #wm resizable $w 0 0 + wm geometry $w 550x300 + wm transient $w . + + frame $w.frmCanv -border 1 -relief sunken + frame $w.frmBtn -border 1 -relief sunken + frame $w.frmTxt -border 1 -relief sunken + pack $w.frmCanv -side top -fill both -padx 1 -pady 1 -expand 1 -fill both + pack $w.frmTxt -side top -fill x + pack $w.frmBtn -side top -fill x + + set fList [ScrolledWindow $w.frmCanv.f -background $color(bg)] + set list [ListBox $fList.list -font $font(normal)\ + -relief sunken -borderwidth 1 -width 1 -height 1 -highlightthickness 1\ + -background $color(editBg) -selectbackground $color(selectbg)] + pack $list -side left -fill both -expand yes + $fList setwidget $list + pack $fList -side left -fill both -expand yes + + + set fText [ScrolledWindow $w.frmCanv.f1 -background $color(bg)] + set text [supertext::text $fText.txtTemplate -width 5 -height 5 -yscrollcommand "$w.frmCanv.yScrText set" \ + -wrap none -state disable -background $color(editBg) -foreground $color(editFg)\ + -selectborderwidth 0 -selectbackground $color(selectbg)] + $fText setwidget $text + pack $fText -side left -fill both -expand 1 + #pack $text -side left -fill both -expand 1 + #return + + ## SPLIT BAR ## + pane::create $fList $fText + + label $w.frmTxt.lblFile -text [::msgcat::mc "Input file name"] -font $font(normal) + entry $w.frmTxt.entFile + pack $w.frmTxt.lblFile $w.frmTxt.entFile -side left -padx 2 + pack $w.frmTxt.entFile -side left -padx 1 -fill x -expand true + $w.frmTxt.entFile insert 0 "name.tex" + + button $w.frmBtn.btnOk -text [::msgcat::mc "Create"] -relief groove -font $font(normal) -command { + set file [.template.frmTxt.entFile get] + file copy -force $tmpl [file join $dir(current) $file] + EditFile [file join $dir(current) $file] + destroy .template + } + + button $w.frmBtn.btnCancel -text [::msgcat::mc "Close"] -command "destroy $w" -relief groove -font $font(normal) + pack $w.frmBtn.btnOk $w.frmBtn.btnCancel -padx 2 -pady 2 -fill x -side left + + bind $w "destroy .template" + focus -force $list + $list bindImage "ReadTemplateDescr [$list selection get]" + $list bindText "ReadTemplateDescr [$list selection get]" + bind $list.c "$list yview scroll -3 units" + bind $list.c "$list yview scroll 3 units" + bind $list.c "$list xview scroll -2 units" + bind $list.c "$list xview scroll 2 units" + + GetTemplateList $list +} + +proc GetTemplateList {list} { + global dir + set ind 0 + foreach file [lsort [glob -nocomplain [file join $dir(tmpl) *.tex]]] { + if {[file isdirectory $file] == 0} { + #$list insert end $file + $list insert end tmpl_$ind -text [file tail $file] \ + -image [Bitmap::get [file join $dir(img) tex_tmpl.gif]] \ + -data $file + #$list insert end [file tail $file] + #ReadTemplate $file $text + incr ind + } + } + foreach file [lsort [glob -nocomplain [file join $dir(work_tmpl) *.tex]]] { + if {[file isdirectory $file] == 0} { + $list insert end tmpl_$ind -text [file tail $file] \ + -image [Bitmap::get [file join $dir(img) tex_tmpl.gif]] \ + -data $file + incr ind + #$list insert end $file + #$list insert end [file tail $file] + #ReadTemplate $file $text + } + } + #catch {cd ..} +} +proc ReadTemplateDescr {node} { + global dir tmpl + set text .template.frmCanv.f1.txtTemplate + $text configure -state normal + $text delete 0.0 end + .template.frmCanv.f.list selection set $node + + #$w select set anchor [$w nearest $y] + #set file [$w get [$w curselection]] + set file [.template.frmCanv.f.list itemcget $node -data] + + set tmpl $file + set fHandle [open $file] + fconfigure $fHandle -encoding koi8-r + while {[gets $fHandle line]>=0} { + if {[string range [string trim $line] 0 0] != "%"} {return} + $text insert end "$line\n" + } + close $fHandle + $text configure -state disable +} + + diff --git a/lib/modules/tex.tcl b/lib/modules/tex.tcl new file mode 100755 index 0000000..103cc29 --- /dev/null +++ b/lib/modules/tex.tcl @@ -0,0 +1,118 @@ +########################################################### +# Tcl/Tk Project Manager # +# version 0.0.1 # +# TCL highlight file # +# Copyright (c) "CONERO lab", 2001, http://conero.lrn.ru # +# Author: Sergey Kalinin (aka BanZaj) banzaj@lrn.ru # +########################################################### + +proc LoadTag {text} { + global font color + $text tag configure bold -font $font(bold) + $text tag configure operator -foreground $color(operator) + $text tag configure param -foreground $color(param) + $text tag configure subParam -foreground $color(subParam) + $text tag configure keyWord -foreground $color(keyWord) + $text tag configure comments -foreground $color(comments) + $text tag configure variable -foreground $color(var) + $text tag configure string -foreground $color(string) + $text tag configure brace -foreground $color(brace) + $text tag configure percent -foreground $color(percent) + $text tag configure bindKey -foreground $color(bindKey) + $text tag configure lightBracket -background $color(braceBG) -foreground $color(braceFG) +} + +proc HighLightTEX {text line lineNumber node} { + global font tree color nb + + set startIndex 0 + + set keyWord [info commands] + # for OOP extention + foreach n {class method attribute constructor destructor invariant attribute binding new delete} { + lappend keyWord $n + } + set startPos 0 + set workLine $line + + regexp -nocase -all -- {(\\)([a-zA-Z])*} string match v1 v2 + while {$workLine != ""} { + if {[regexp -nocase -all {(\\)([a-zA-Z])*} $workLine a b c]} { + set start [string first $a $workLine] + set end $start + incr end [string length $a] + set workLine [string range $workLine $end end] + incr start $startPos + incr end $startPos + $text tag add operator $lineNumber.$start $lineNumber.$end + set startPos $end + } else { + break + } + } + # string " " highlight + set startPos 0 + set workLine $line + while {$workLine != ""} { + if {[regexp "\".*?\"" $workLine a b]} { + set start [string first $a $workLine] + set end $start + incr end [string length $a] + set workLine [string range $workLine $end end] + incr start $startPos + incr end $startPos + $text tag add string $lineNumber.$start $lineNumber.$end + set startPos $end + } else { + break + } + } + set startPos 0 + set workLine $line + while {$workLine != ""} { + if {[regexp {\{.*?\}} $workLine a b]} { + set start [string first $a $workLine] + set end $start + incr end [string length $a] + set workLine [string range $workLine $end end] + incr start [expr $startPos +1] + incr end [expr $startPos - 1] + $text tag add param $lineNumber.$start $lineNumber.$end + set startPos $end + } else { + break + } + } + set startPos 0 + set workLine $line + while {$workLine != ""} { + if {[regexp {\[.*?\]} $workLine a b]} { + set start [string first $a $workLine] + set end $start + incr end [string length $a] + set workLine [string range $workLine $end end] + incr start [expr $startPos + 1] + incr end [expr $startPos - 1] + $text tag add subParam $lineNumber.$start $lineNumber.$end + set startPos $end + } else { + break + } + } + # add comment # + set workLine [$text get $lineNumber.0 $lineNumber.end] + if {[regexp -indices "(^|\t|;| )%" $workLine pos]} { + set cur [lindex $pos 1] + $text tag add comments $lineNumber.$cur $lineNumber.end + return 0 + } else { + $text tag remove comments $lineNumber.0 $lineNumber.end + return 0 + } + + #################### + +} + + + diff --git a/lib/modules/tree.tcl b/lib/modules/tree.tcl new file mode 100755 index 0000000..6440c8e --- /dev/null +++ b/lib/modules/tree.tcl @@ -0,0 +1,181 @@ +###################################################### +# TkTeXEditor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Copyright (c) "CONERO lab", 2002, http://conero.lrn.ru +###################################################### + +###################################################### +# # +# Working with trees (insert\update\deleted) nodes # +# # +###################################################### + +## PROJECTS & FILE TREE ## +proc InsertTreeNode {file dirName} { + global tree font dir + set dot "_" + set name [file rootname $file] + set ext [string range [file extension $file] 1 end] + regsub -all -nocase -- {/| |\.} $dirName $dot nodeEnd + regsub -all -nocase -- { |\.} $name $dot name + set subNode "$nodeEnd$dot$name$dot$ext" + + if {[$tree exists $subNode] == 1} { + return $subNode + } + $tree insert end root $subNode -text $file \ + -data [file join $dirName $file] -open 1\ + -image [Bitmap::get [file join $dir(img) tex.gif]]\ + -font $font(normal) + $tree configure -redraw 1 + return $subNode + +} + +## INSERT NODE INTO FILES TREE FOR INCLUDED FILES +proc InsertTreeSubNode {file rootNode dirName} { + global tree font dir files + set dot "_" + set name [file rootname $file] + set ext [string range [file extension $file] 1 end] + if {$ext == ""} { + #puts "$file - нет расширяловки" + set ext "tex" + set file $file.$ext + #puts $file + } + + regsub -all -nocase -- {/| |\.} $dirName $dot nodeEnd + regsub -all -nocase -- { |\.} $name $dot name + set subNode "$nodeEnd$dot$name$dot$ext" + #set subNode "$nodeEnd$dot$ext" + #puts "file - $file\n" + #puts "dirName - $dirName\n" + #puts "rootNode - $rootNode\n" + #puts "nodeEnd - $nodeEnd\n" + #puts "name - $name\n" + #puts "subnode - $subNode\n" + if {[$tree exists $subNode] == 1} { + if {[$tree parent $subNode] == "root"} { + $tree delete $subNode + } else { + return + } + } + $tree insert end $rootNode $subNode -text $file \ + -data [file join $dirName $file] -open 1\ + -image [Bitmap::get [file join $dir(img) tex.gif]]\ + -font $font(normal) + $tree configure -redraw 1 + return $subNode +} +## DOCUMENT STRUCTURE TREE ## +proc InsertNode {node parentNode text image lineNumber} { + global treeStruct font dir + set dot "_" + $treeStruct insert end $parentNode $node -text [string trimleft $text "\*\{"] \ + -data " $lineNumber$dot$text" -open 1\ + -font $font(normal)\ + -image [Bitmap::get [file join $dir(img) $image.gif]] + $treeStruct configure -redraw 1 + #return $subNode +} + +## TREE ONE CLICKING PROCEDURE ## +proc TreeOneClick {node} { + global dir nb tree activeFile status files + $tree selection set $node + set activeFile $node + + set file [$tree itemcget $node -data] + #puts "TreeOneClick - $file";# debug + if {[file exists $file] == 0} { + set answer [tk_messageBox -message "$file [::msgcat::mc "File not found"]"\ + -type ok -icon warning -title [::msgcat::mc "Warning"]] + case $answer { + ok {return} + } + } + + $status(fileAttr) configure -text [FileAttr [$tree itemcget $node -data]] + #$status(encode) configure -text "[lindex $files($activeFile) 2]" + PageRaise $node + puts "$node\nnodes - [$tree nodes $node]" +} + +proc TreeStructOneClick {node} { + global dir nb treeStruct activeFile status files ver release + $treeStruct selection set $node + set findString [$treeStruct itemcget $node -data] + set star [string range $findString [expr [string first "_" $findString] + 1] [expr [string first "_" $findString] + 1]] + set lineNumber [string range $findString 0 [expr [string first "_" $findString]-1]] + set str [string range $node 0 [expr [string first "_" $node]-1]] + if {$star == "\*"} { + set findString [string range $findString [expr [string first "_" $findString]+2] end] + set findString "$str\*$findString\}" + } else { + set findString [string range $findString [expr [string first "_" $findString]+1] end] + set findString "$str\{$findString\}" + } + #$treeStruct selection get $node + set text "$nb.f$activeFile.f.text" + wm title . "TkLaTeXEditor $ver$release - [lindex $files($activeFile) 0]" + + FindProc $text $findString $node + $status(pos) configure -text [$text index insert];# cursor position +} + +proc TreeDoubleClick {} { + +} + +proc NodeInsert {file} { + global tree font dir files + set dot "_" + # каталог + set dirName [file dirname $file] + # имя файла + set name [file rootname $file] + # расширение + set ext [string range [file extension $file] 1 end] + if {$ext == ""} { + #puts "$file - нет расширяловки" + set ext "tex" + set file $file.$ext + #puts $file + } + + regsub -all -nocase -- {/| |\.} $dirName $dot nodeEnd + regsub -all -nocase -- { |\.} $name $dot name + + if {} { + + } + + set subNode "$nodeEnd$dot$name$dot$ext" + #set subNode "$nodeEnd$dot$ext" + #puts "file - $file\n" + #puts "dirName - $dirName\n" + #puts "rootNode - $rootNode\n" + #puts "nodeEnd - $nodeEnd\n" + #puts "name - $name\n" + #puts "subnode - $subNode\n" + if {[$tree exists $subNode] == 1} { + if {[$tree parent $subNode] == "root"} { + $tree delete $subNode + } else { + return + } + } + $tree insert end $rootNode $subNode -text $file \ + -data [file join $dirName $file] -open 1\ + -image [Bitmap::get [file join $dir(img) tex.gif]]\ + -font $font(normal) + $tree configure -redraw 1 + return $subNode + +} + + + diff --git a/share/hlp/en/tlekeys.html b/share/hlp/en/tlekeys.html new file mode 100755 index 0000000..7e3a105 --- /dev/null +++ b/share/hlp/en/tlekeys.html @@ -0,0 +1,37 @@ +Hot keys +

Used hot keys

+ +

Ctrl + A - Save file as .... +

Ctrl + C - Copy selected text into clipboard. +

Ctrl + F - Search text into. +

Ctrl + G - Goto on line number. +

Ctrl + N - Create new file. +

Ctrl + O - Open existing file. +

Ctrl + P - Prin source code. +

Ctrl + Q - Exit. +

Ctrl + R - Find and replace text. +

Ctrl + S - Save active file. +

Ctrl + T - Change place for two sybmbols. +

Ctrl + U - Jumping cursor on opened/closed brace. +

Ctrl + V - Paste text from clipboard. +

Ctrl + W - Close active file. +

Ctrl + X - Cut text into clipboard. +

Ctrl + Z - Undo last operation. +

Ctrl + PageUp - Prior tabbar in notebook (previous open file). +

Ctrl + PageDown - Next tabbar in notebook (next open file). +

F1 - Help. +

F2 - Split editor window. +

F3 - Find again. +

F5 - Convert into DVI +

F6 - Convert DVI into PS. +

F7 - Convert DVI Convert into PDF. + +

Alt + T - Preview selected text. +

Alt + С - Autoindent (command list dialog). +

Alt + F - Preview mathematicasl formula. + + + + + + diff --git a/share/hlp/ru/tle.toc.html b/share/hlp/ru/tle.toc.html new file mode 100755 index 0000000..65c7e44 --- /dev/null +++ b/share/hlp/ru/tle.toc.html @@ -0,0 +1,9 @@ +Tk LaTeX Editor +О программе
+Горячие клавиши
+Работа с программой
+Описание API
+Лицензия
+ + + diff --git a/share/hlp/ru/tle_api_guide.html b/share/hlp/ru/tle_api_guide.html new file mode 100755 index 0000000..e8656ce --- /dev/null +++ b/share/hlp/ru/tle_api_guide.html @@ -0,0 +1,145 @@ + + + + + +Tk LATEXEditor Programming Guide + + + + + + + + + + + + + + + +

Tk LATEXEditor Programming Guide

+

Sergey Kalinin (aka BanZaj) 17/06/2002

+ +

+Подключение модуля +

+ +

+Для загрузки нового модуля необходимо файл скрипта (filename.tcl) разместить в каталоге lib/modules/. Файл будет загружен автоматически при старте программы. + +

+ +

+Глобальные переменные +

+ +

+Расположение файлов +

+Для описания каталогов используется массив переменных dir: + +
    +
  • dir(mod) - Каталог с модулями программы (modules) (сдесь и далее в скобках указано значение по умолчанию) +
  • +
  • dir(gui) - файлы настройки панелей инструментов (gui) +
  • +
  • dir(img) - каталог изображений (img) +
  • +
  • dir(msg) - каталог сообщений (msg), используется для локализации пользовательского интерфейса программы +
  • +
  • dir(tmpl) - шаблоны документов (template) +
  • +
  • dir(work) - рабочий каталог ( /.tktexeditor) +
  • +
+ +

+ +

+Определение шрифтов +

+Для определения шрифтов для интерфейса и редактора используется массив переменных : + +
    +
  • font(normal) - Обычный шрифт +
  • +
  • font(bold) - жирный шрифт +
  • +
  • font(editNormal) - обычный шрифт в редакторе +
  • +
  • font(editBold) - жирный шрифт в редакторе +
  • +
+ +

+ +

+Определение цветовой гаммы +

+Для определения цветовой гаммы интерфейса и подсветки кода в редакторе определен массив color + +

+ +

+Остальные переменные +

+ +
    +
  • tree - имя Tree виджета +
  • +
  • nb - имя NoteBook виджета редактора +
  • +
  • treeStruct - имя Tree для структуры документа +
  • +
  • lblList - имя списка меток +
  • +
  • module() - массив переменных содержащий полные имена внешних модулей (см lib/modules/module.tcl) +
  • +
  • files() - массив переменных с именами открытых файлов +
  • +
  • activeFile - имя активной ноды +Например для извлечения имени активного файла необходимо : +
    +    if {$activeFile == ""} {return} <-- проверка
    +    set text "$nb.f$activeFile.f.text" <-- имя текстового виджета
    +    set fullPath [lindex $files($activeFile) 0] <-- полный путь к файлу
    +
    + +

    +

  • +
+ +

+ +

+Об этом документе ... +

+ Tk LATEXEditor Programming Guide

+This document was generated using the +LaTeX2HTML translator Version 2K.1beta (1.57) +

+Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
+Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

+The command line arguments were:
+ latex2html -no_navigation -split 0 /home/kalinin/projects/tcl/tle/doc/tle_api_guide.tex +

+The translation was initiated by on 2002-12-17 +


+
+ +2002-12-17 +
+ + diff --git a/share/hlp/ru/tle_usr_manual.html b/share/hlp/ru/tle_usr_manual.html new file mode 100755 index 0000000..4d95732 --- /dev/null +++ b/share/hlp/ru/tle_usr_manual.html @@ -0,0 +1,721 @@ + + + + + +Расширенный LATEX редактор + + + + + + + + + + + +

Расширенный LATEX редактор

+

Сергей Калинин, Константин Михайленко

+ +

+ +

+Назначение +

+Программа предназначена для создания и редактирования файлов в рамках издательской системы TEX (LATEX). + +

+Описание функций +

+Ниже представлен список основных функций редактора: + +

+Одновременное редактирование нескольких файлов. + +

+Создание нового документа из шаблона. + +

+Отображение структуры документа ввиде дерева. + +

+Отображение ввиде дерева включенных внешних документов. + +

+Вывод списка меток и ссылок. + +

+Подсветка синтаксиса. + +

+Поиск и замена текста. + +

+Автодобивка команд. + +

+Преобразование .tex файла в dvi, ps, pdf, html (при помощи внешних программ) и просмотр полученного +документа. + +

+Отображение процесса компиляции и преобразования документа и вывод ошибок. + +

+Печать исходного кода. + +

+Настраиваемые панели инструментов. + +

+Вставка настраиваемых готовых конструкций кода. + +

+Интерактивная проверка орфографии (при помощи ispell). + +

+Автоматический перенос строк при достижении определенной в конфигурации длинны. + +

+Авто-сохранение документа через определённый промежуток времени. + +

+Сохранение позиции редактирования в открытых файлах при выходе из программы и возобновление +редактирования этих файлов при следующем запуске программы. + +

+Возможность подключения дополнительных внешних программ. + +

+Настраиваемые цветовые схемы и графические темы панелей инструментов. + +

+Подключение внешнего редактора. + +

+Простой механизм локализации интерфейса программы. В данный момент редактор локализован на русском +и английском языках. + +

+Предпросмотр математических формул и любых частей текста а также сохранение их как изображения. + +

+Поддерживается множество кодировок и перекодировка из одной в другую. + +

+Автоматическое подключение нужной кодировки при использовании декларации пакета inputenc. + +

+ +

+Необходимое ПО +

+Программа написана на интерпретируемом языке Tcl/Tk поэтому Вам потребуется установить +интерпретатор языка tcl. Его Вы можете найти у себя в дистрибутиве (для unix-подобных систем) или +взять в сети Internet (для систем Windows). Например http://www.activestate.com +Также необходимо установить набор графических компонент BWidget (он входит в состав activeTCL) +Для полноценной работы с LATEX-документами необходимо установить дистрибутив издательской системы +LATEX (например TeTeX или MkiTeX). Для просмотра и преобразования документов желательно установить +пакеты tetex-dvips, ghostscript, ImageMagic, latex2html, xdvi, acroread (xpdf) - все , или почти +все эти программы присутствуют в последних дистрибутивах линукс (например ALT Linux Master). +О настройке данных программ будет рассказано ниже. + +

+ +

+Начало работы +

+Программа запускается командой /usr/bin/tle - если она установлена из rpm-пакета, или +запускается файл tle.tcl из дистрибутивного комплекта. +После запуска в домашнем каталоге создается рабочая папка .tle содержащая конфигурационные +файлы. + +

+Далее можете приступать к редактированию файлов. Можно открыть уже существующие документы +Файл - Открыть либо создавать новые Файл - Новый. Программа, также, +поддерживает создание документов из заранее заданных шаблонов Файл - Новый - Создать из +шаблона, которые, Вы можете создавать самостоятельно, в появившимся диалоге выбирете нужный шаблон +и введите требуемое имя и нажмите кнопку Создать + +

+Tk LATEX Editor позволяет редактировать множество файлов, переключаясь между закладками +редактора. + +

+Сохранение документа производиться нажатием кнопки на панели инструментов, либо в меню Файл - +Сохранить либо нажатием сочетания клавиш Ctrl - S, либо автоматически, согласно установкам +в конфигурационном файле. + +

+ +

+Рaбота с документом +

+ +

+ +

+Редактирование +

+ +

+При редактировании текста доступны режимы ввода и замены символов, переключаемые клавишей +Insert. При вводе текста есть возможность ограничить длину строки текста определённым +количеством символов, которое задаётся в конфигурационном файле, так же как и включение и +выключение режима автопереноса. Т.е. при достижении длины строки текста в заданное количество +символов, редактор автоматически начнет ввод со следующей строки. +Также есть возможность перемещения курсора на строку с заданным номером - Ctrl - G. + +

+ +

+Вставка тегов +

+Для облегчения и ускорения процесса вёрстки документа редактор TLE позволяет вставлять готовые +конструкции, используя настраиваемые панели инструментов. +Например конструкции вида \textsl{Редактирование} можно вставлять, предварительно выделив +требуемый текст, нажав соответствующую кнопку панели инструментов. Также при добавлении элементов +списка \item есть возможность автоматической вставки тега +\(следующего элемента списка\) в +начале следующей строки при нажатии клавиши Enter в конце ввода строки текста. + +

+Также, есть возможность добивки команд по начальным буквам - для этого, необходимо, после набора +первых буква команды, нажать ALT-C и, из появившегося списка, выбрать требуемое. +Списки команд соответствуют пакетам системы LATEX. И могут быть дополнены пользователем. + +

+В панели инструментов имеются диалоги для вставки изображения и таблицы, и многих других. В +отдельную панель выделены математические символы и режимы. + +

+ +

+Поиск и замена текста +

+ +

+Редактор TLE позволяет производить поиск и поиск с заменой текста в открытом документе. Данные +функции доступны через меню Редактирование или при нажатии клавиш Ctrl-F и +Ctrl-R соответственно. Для простого поиска ведется история. + +

+ +

+Перекодирование +

+TLE поддерживает работу с множеством различных кодировок. При открытии LATEX-документа происходит +считывание данных о кодировке документа, если используется пакет inputenc. Если документ не +содержит данных о кодовой странице то он будет отображен с использованием системной кодировки. В +случае не совпадения кодовой страницы документа и Вашей системы документ будет отображён +некорректно. Но это можно исправить, указав кодировку документа через меню Вид - +Кодировка. + +

+Если Вы хотите сохранить документ в кодировке отличной от исходной то необходимо выбрать нужную +кодовую страницу через меню Документ - Кодировка и файл будет перекодирован при сохранении. + +

+В случае если Вы используете пакет inputenc но не правильно указали кодировку документа в +описании пакета либо текущая кодировка документа не соответствует требуемой, при сохранении будет +выдано предупреждение о не соответствии кодовых страниц. + +

+ +

+Предпросмотр текста и формул +

+При наличии в системе дополнительных программ, становится доступна функция предварительного +просмотра математических формул и произвольных частей документа. +Для осуществления данной операции необходимо в редактируемом документе выделить текст формулы, либо +её часть, и нажать сочетание клавиш Alt-V. Также можно выбрать пункт Показать формулу +в меню Редактирование или при помощи всплывающего меню. + +

+Для произвольного фрагмента текста операция идентична предыдущей с той лишь разницей, что необходимо +нажать Alt-B или меню Редактирование - Показать Текст + +

+ +

+Проверка орфографии +

+Для проверки орфографии используется программа ispell. +Вам необходимо выбрать в меню Документ - Орфография или нажать кнопку в панели инструментов. +В появившимся диалоге надо выбрать требуемый словарь и режим проверки - весь документ или с +текущей позиции. При несовпадении слов в тексте и в словаре Вам будет предложен список возможных +вариантов из которых можно выбрать нужный и заменить неправильное слово. + +

+ +

+Преобразование в различные форматы +

+Для преобразования файла в различные форматы используются внешние программы. +Команды для их запуска описаны в конфигурационном файле tle.conf: + +

+

+set convert_cmd(dvi) "latex"
+set convert_cmd(ps) "dvips -Pwww -j0 -ta4 -o %fileName.ps %fileName.dvi"
+set convert_cmd(pdf) "ps2pdf %name.ps"
+set convert_cmd(html) "latex2html -no_navigation -split 0"
+
+ +

+Если в команде встречается макрос %fileName то программа подставит вместо него имя текущего +файла без расширения. + +

+Вызов команд производиться как через меню Документ - Преобразовать так и через +панель инструментов. +Разница заключается лишь в том, что при вызове команды через меню будет вызван диалог, в котором +можно изменить опции командной строки, заданной по умолчанию. +А при вызове команды через панель инструментов будет использована последняя заданная команда для +операции преобразования. + +

+ +

+Предварительный просмотр документа +

+После преобразования документа станет доступна возможность просмотра полученного результата. +Команды для просмотра заданы в конфигурационном файле tle.conf, аналогично и командам конвертации. + +

+

+## PREVIEW ##
+set preview_cmd(dvi) "xdvi"
+set preview_cmd(ps) "gv"
+set preview_cmd(pdf) "acroread"
+set preview_cmd(html) "mozilla"
+
+ +

+Вызвать команды просмотра можно как через меню Документ - Предварительный просмотр +так и при помощи кнопок на панели инструментов. + +

+ +

+Настройка +

+ +

+ +

+Конфигурационный файл +

+ +

+Локализация + +

+set locale "en" - установка языка интерфейса программы + +

+Временные файлы + +

+set backup(create) "Yes" - создание резервных копий файлов + +

+set backup(del) "No" - удалять резервные копии + +

+set backup(autosave) "Yes" - автосохранение документа + +

+Встроенная Помощь + +

+set help(encode) "koi8-r" - язык файлов помощи + +

+Параметры для ispell + +

+set ispell_lib /usr/lib/ispell + +

+set ispell_startindex "1.0" + +

+Рабочие каталоги + +

+каталог для временных файлов + +

+

 set dir(tmp) [file join $env(HOME) tmp]
+
+ +

+каталог для документов по умолчанию + +

+

 set dir(doc) [file join $env(HOME) doc my]
+
+ +

+Таймеры в миллисекундах + +

+set timers(refresh) 60000 - время автообновления структуры документа + +

+set timers(autosave) 300000 - время автосохранения документа + +

+Настройки Интерфейс + +

+set gui(geometry) "750x550+0+0" - установка геометрии основного окна + +

+set gui(tabsLabel) "top" - расположение заголовков закладок "top" или "bottom" + +

+set theme "default" - тема для панелей инструментов "default" или "stroke" + +

+Установка шрифтов + +

+set font(normal) "Arial 10 normal roman" - нормальный шрифт интерфейса + +

+set font(bold) "Arial 10 bold roman" - жирный шрифт интерфейса + +

+Установка цветовых схем + +

+set color(selectbg) "#55c4d1" - цвет выделенной области + +

+set color(bg) "#bbbbbb" - фон элементов интерфейса + +

+set color(editBg) "#cccccc" - фон элементов редактирования + +

+set color(editFg) "#000000" - цвет шрифта элементов редактирования + +

+set color(editTitleNormal) "#000000" - цвет заголовка закладки редактора нормальный + +

+set color(editTitleModify) "#0021ff" - цвет заголовка закладкиредактора изменённый + +

+Подсветка текста + +

+set color(procName) "#0021ff" - процедуры + +

+set color(operator) "#0000a8" - операторы + +

+set color(keyWord) "#0000a8" - ключевые слова + +

+set color(param) "#6a0082" - параметры + +

+set color(subParam) "#008282" - подпараметры + +

+set color(comments) "#9b9b9b" - коментарий + +

+set color(var) "#e50000" - переменная + +

+set color(string) "#168400" - строка заключённая в кавычки + +

+set color(brace) "#d33434" - скобка + +

+set color(braceBG) "#000000" - фон подсвеченной скобки + +

+set color(braceFG) "#00feff" - цвет подсвеченной скобки + +

+set color(percent) "#a500c6" - знак процента + +

+set color(bindKey) "#a500c6" - ключи + +

+Рельеф кнопок и элементов интерфейса + +

+доступны flat, groove, raised, ridge, solid, sunken or link + +

+set relief(btn) link - кнопки + +

+доступны flat, groove, raised, ridge, solid, or sunken + +

+set relief(menu) groove - меню + +

+Включение панелей инструментов + +

+При добавлении своей панели инструментов необходимо прописать её в конфигурационном файле в формате +tool(toolbar_file_name) flag +где flag = 0 - скрыть, 1- показать + +

+set tool(main) 1 - основная панель + +

+set tool(insert) 1 - панель для вставки элементов + +

+set tool(math) 0 - математическая панель + +

+set tool(format) 1 - панель форматирования + +

+Установки редактора + +

+set font(editNormal) "fixed" - нормальный шрифт + +

+set font(editBold) "fixed" - полужирный шрифт + +

+set editor(extern) "No" - использовать внешний редактор + +

+set editor(prog) "/usr/bin/emacs" - внешний редактор + +

+set editor(wrap) "word" - автоперенос слов при отображении текста, доступно none, word or char + +

+set editor(strWrap) "Yes" - автоперенос текста при редактировании + +

+set editor(strLen) 100 - количество символов в строке + +

+Опции преобразования документа и просмотра + +

+%fileName - имя текущего файла + +

+%dirName - имя текущего каталога + +

+Преобразование latex в dvi + +

+set convert_cmd(dvi) "latex" + +

+Преобразование dvi в ps (PostScript) + +

+set convert_cmd(ps) "dvips -Pwww -j0 -ta4 -o %dirName/%fileName.ps +%dirName/%fileName.dvi" + +

+Преобразование ps в pdf + +

+set convert_cmd(pdf) "ps2pdf %dirName/%fileName.ps" + +

+Преобразование latex в html + +

+set convert_cmd(html) "latex2html -no_navigation -split 0" + +

+Преобразование ps в графическое изображение + +

+set convert_cmd(img) "convert" + +

+Просмотр результатов преобразования + +

+set preview_cmd(dvi) "xdvi" + +

+set preview_cmd(ps) "gv" + +

+set preview_cmd(pdf) "acroread" + +

+set preview_cmd(html) "mozilla" + +

+Параметры отображения формул и частей текста + +

+set render(res) "150x150" - разрешение картинки + +

+set render(format) "gif" - формат файла изображения + +

+set render(bg) "white" - цвет фона + +

+set render(fg) "black" - цвет шрифта + +

+set render(trans) 0 - включение прозрачности + +

+set render(aa) 1 - включение антиалиасинга + +

+ +

+Панелей инструментов +

+Вы можете самостоятельно настраивать панели инструментов, т.е. добавлять кнопки и меню. +Описание панелей инструментов (тул-баров) храниться в каталоге share/gui/toolbar/ + +

+ +

+Описание функций +

+Для команд определяемых пользователем есть несколько функций для добавления тэгов в текст. + +

+

+
AddTextFont
+
 -- добавляет тэги вида «\tiny{}». +Формат вызова функции +
+     AddTextFont Имя_Тэга
+
+
+
AddTextDouble
+
 -- добавляет тэги вида «\begin{center}" \ldots \verb"\end{center}». +
+     AddTextDouble Начальный_Тег Наименование конечный_Тег
+
+
+
AddTextCommand
+
 -- для добавления простых тэгов вида «\beta». +
+     AddTextCommand Имя_Тэга
+
+
+
+В командах начальный слэш следует опускать, он добавляется автоматически + +

+ +

+Наименование файла +

+Для создания новой панели инструментов создайте в каталоге toolbar файл с любым именем без +расширения кроме main (это зарезервированное слово под основную панель) + +

+ +

+Формат файла +

+Строки начинающиеся на «#» являются комментарием и игнорируются так же как и пустые строки + +

+Для создания меню: +

+     ключевое_слово иконка "Текст подсказки"
+
+ +

+Для создания команд в меню: +

+     ключевое_слово "команда" "Текст подсказки" иконка
+
+ +

+Параметр иконка не является обязательным если он не указан то в меню будет вставлен текст +если указан - то изображение + +

+Для создания кнопки: +

+     ключевое_слово "команда" Иконка "Текст подсказки"
+
+ +

+ +

+Пример +

+
+menu font_width.gif "Font type" {
+    cmd "AddTextFont texttt" "Typewriter Typeset"
+    imagecmd "AddTextFont textit" "Typewriter Typeset" file.gif
+    cmd separator
+}
+button "AddTextFont emph" font_emph.gif "Emphasise"
+
+ +

+Здесь +menu, button, cmd, imagecmd -- ключевые слова для создания +соотвественно меню, кнопки меню и кнопки с изображением; +cmd separator -- добавление в меню разделителя + +

+ +

+Об этом документе ... +

+ Расширенный LATEX редактор

+This document was generated using the +LaTeX2HTML translator Version 2K.1beta (1.57) +

+Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
+Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

+The command line arguments were:
+ latex2html -no_navigation -split 0 /home/kalinin/projects/tcl/tle/doc/tle_usr_manual.tex +

+The translation was initiated by on 2003-01-09 +


+
+ +2003-01-09 +
+ + + diff --git a/share/hlp/ru/tleabout.html b/share/hlp/ru/tleabout.html new file mode 100755 index 0000000..e20a6e9 --- /dev/null +++ b/share/hlp/ru/tleabout.html @@ -0,0 +1,14 @@ +About "Tk LaTeX Editor" +

Tk LaTeX Editor

+

Сергей Калинин (BanZaj) banzaj@altlinux.ru
+Константин Михайленко (Const) const@mail.ru
+Copyright © CONERO lab, 2002

+
+ +

Назначение

+Программа предназначена для создания и редактирования файлов в рамках издательской системы TeX (LaTeX). + + +

Описание

+ + diff --git a/share/hlp/ru/tlekeys.html b/share/hlp/ru/tlekeys.html new file mode 100755 index 0000000..f221911 --- /dev/null +++ b/share/hlp/ru/tlekeys.html @@ -0,0 +1,41 @@ +Горячие клавиши +

Используемые сочетания клавиш

+ +

Ctrl + A - Сохранить файл под другим именем. +

Ctrl + C - Команда копирует выделенный в окне редактора текст в буфер обмена. +

Ctrl + F - Поиск заданного выражения в тексте. +

Ctrl + G - Перейти к строке с заданным номером. +

Ctrl + J - Вывести список функций с именами полностью или частично совпадающими с введенным. +

Ctrl + L - Вывести список слов, полностью или частично совпадающих с введенным. +

Ctrl + M - Переключение между открытыми файлами (между окнами редактора). +

Ctrl + N - Создать новый файл. Команда вызывает диалог создания файла. +

Ctrl + O - Открыть файл. +

Ctrl + P - Печать файла (кода). +

Ctrl + Q - Выход. +

Ctrl + R - Поиск и замена заданного выражения в тексте. +

Ctrl + S - Сохранить файл. Сохраняется файл, который открыт в текущем окне редактора. +

Ctrl + T - Поменять местами два символа, стоящих до и после курсора. +

Ctrl + U - Перемещает курсор на соответствующую открытую или закрытую скобку. +

Ctrl + V - Вставка фрагмента текста из буфера обмена, скопированного предыдущей командой. +

Ctrl + W - Закрыть файл. Команда закрывает файл открытый в текущем окне редактора. +

Ctrl + X - Вырезать выделенный фрагмент текста в буфер омена. +

Ctrl + Z - Отменить операцию +

Ctrl + PageUp - Переключение закладок (окон редактора) назад (к предыдущему открытому файлу). +

Ctrl + PageDown - Переключение закладок (окон редактора) вперед (к следующему открытому файлу). +

F1 - Вызов системы помощи по программе и по языку. Если в тексте выделить команду и нажать данную клавишу то будет выведена на экран подсказка по этой команде. +

F2 - Разделение окна редактора +

F3 - Повторный поиск, команда работает с последним введенным выражением в диалоговом окне поиска +

F5 - Компиляция файла в DVI формат +

F6 - Конвертирование DVI файла в PS. +

F7 - Конвертирование DVI файла в PDF. + +

F9 - Выполнение ("компиляция") текущего (активного) проекта. + +

Alt + T - Предпросмотр выделенного фрагмента текста. +

Alt + С - Автодобивка команд. +

Alt + F - Предпросмотр математической формулы + + + + + diff --git a/share/icons/large/tle.png b/share/icons/large/tle.png new file mode 100755 index 0000000..fa94870 Binary files /dev/null and b/share/icons/large/tle.png differ diff --git a/share/icons/large/tle.xpm b/share/icons/large/tle.xpm new file mode 100755 index 0000000..6a71e6e --- /dev/null +++ b/share/icons/large/tle.xpm @@ -0,0 +1,62 @@ +/* XPM */ +static char * tkLaTeXeditor_48x48_xpm[] = { +"48 48 11 1", +" c None", +". c #0000FF", +"+ c #FF0000", +"@ c #000000", +"# c #FFFF00", +"$ c #FF8700", +"% c #FF3700", +"& c #FF5500", +"* c #FF6D00", +"= c #FF2700", +"- c #010100", +" ", +" .................. ++++++++++ ++++++++ ", +" .................... +++++++@@@ ++++++@@ ", +" ....@@@@....@@@@....@ @++++@@ @++@@@ ", +" ...@@ ....@ ...@ ++++ ++@@ ", +" ..@@ ....@ ..@ ++++@ +@@ ", +" ..@ ....@ ..@ ++++ ++@ ", +" @@ ....@ @@ +++@ ++@@ ", +" ....@################ ++++ +@@ ", +" ....@################# ++++ + @ ", +" ....@ @####@@@@@@@####@ +++++@ ", +" ....@ ###@ ###@ ++++@@ ", +" ....@ ###@ ##@ ++++ ", +" ....@ ###@ #@@ ++++@ ", +" ....@ ###@ @ ++++++ ", +" ....@ ###@ # ++@@++++ ", +" ....@ ###@ #@ ++@@ +++@ ", +" ....@ ###@ ##@ ++@ ++++ ", +" ....@ ##########@ ++@@ ++++ ", +" ....@ ##########@ ++@@ ++++@ ", +" ....@ ###@@@@@##@+++@ ++++ ", +" ....@ ###@ #$++@@ +++++ ", +" ....... ###@ %#&+++ +++++++ ", +" .......... ###@ +*=++++ ++++++++++ ", +" @@@@@@@@@@###@ @@@@@#@ @@@@@@@@@@", +" ###@ ##@ ", +" ###@ ##@ ", +" ###@ ###@ ", +" ###@ ###@ ----- ", +" #################@ --- ", +" ##################@ -- ", +" @@@@@@@@@@@@@@@@@@ -- ", +" -- ", +" -- ", +" ----- ------- ", +" -- -- -- --- ", +" -- --- --- --- ", +" -- -- -- -- ", +" -- --- -- -- ", +" ---------- --- -- ", +" -- --- -- ", +" -- --- -- ", +" -- -- -- ", +" --- - -- -- ", +" --- - -- --- ", +" ------ ----- ---- ", +" ", +" "}; diff --git a/share/icons/mini/tle.xpm b/share/icons/mini/tle.xpm new file mode 100755 index 0000000..68ac5b7 --- /dev/null +++ b/share/icons/mini/tle.xpm @@ -0,0 +1,29 @@ +/* XPM */ +static char * tex_16x16_xpm[] = { +"16 16 10 1", +" c None", +". c #0015FC", +"+ c #FF0000", +"@ c #000000", +"# c #C1CD35", +"$ c #F6FF00", +"% c #F7C300", +"& c #F8AE00", +"* c #F7D600", +"= c #F7D800", +" ", +" ", +"........ ++ ++ ", +".@@..@@.@ +@ +@@", +".@ ..@ .@ ++@+@ ", +" @ ..@ @ ++@@ ", +" .#$$$$$$%+@ ", +" ..$$@@@&*++@ ", +" ..$$@ +$@+@ ", +" ..$$@ % @ + ", +" ...#$$=%+ +++", +" @@$$@@$@@ @@", +" $$ @$ ", +" $$ $$@ ", +" $$$$$$$$@ ", +" @@@@@@@@ "}; diff --git a/share/icons/tle.xpm b/share/icons/tle.xpm new file mode 100755 index 0000000..eeffe25 --- /dev/null +++ b/share/icons/tle.xpm @@ -0,0 +1,45 @@ +/* XPM */ +static char * tkLaTeXeditor_32x32_xpm[] = { +"32 32 10 1", +" c None", +". c #0000FF", +"+ c #FF0000", +"@ c #000000", +"# c #FFFF00", +"$ c #FFF200", +"% c #FFDA00", +"& c #FF5B00", +"* c #FFAA00", +"= c #FF5500", +"............... +++++++ ++++++", +"...............@ +++++@@@ @+++@", +"..@@@@...@@@@..@ @+++@ ++@@", +".@@ ...@ .@ ++@ +@@ ", +" @ ...@ @ +++ ++@ ", +" ...###########$%++ ++@ ", +" ...@####@@@@@@#%++@ +@ ", +" ...@ ###@ ##+++++@ ", +" ...@ ###@ #@+++@ ", +" ...@ ###@ @++++ ", +" ...@ ###@ ++@++@ ", +" ...@ ###@ # ++@ +++ ", +" ...@ ###@ ##@ +@ +++ ", +" ...@ ########@++@ ++@ ", +" ...@ ###@@@##&+@ +++ ", +" ...@ ###@ *=@ ++++ ", +" .......###@ ++==++ +++++++", +" @@@@@@###@ @@@@@@ @@@@@@", +" ###@ # ", +" ###@ #@ ", +" ####@ ##@ @@@@ ", +" ##############@ @@ ", +" @@@@@@@@@@@@@@ @@ ", +" @@ ", +" @@@@ @@@@@@ ", +" @@ @@ @@@ @@@ ", +" @@ @ @@ @@ ", +" @@@@@@@ @@@ @@ ", +" @@ @@@ @@ ", +" @@ @@ @@ ", +" @@ @ @@@ @@@ ", +" @@@@ @@@@@@ "}; diff --git a/share/img/default/acrobat.gif b/share/img/default/acrobat.gif new file mode 100755 index 0000000..3db04ce Binary files /dev/null and b/share/img/default/acrobat.gif differ diff --git a/share/img/default/align.gif b/share/img/default/align.gif new file mode 100755 index 0000000..b7398cd Binary files /dev/null and b/share/img/default/align.gif differ diff --git a/share/img/default/align_center.gif b/share/img/default/align_center.gif new file mode 100755 index 0000000..ad6fde6 Binary files /dev/null and b/share/img/default/align_center.gif differ diff --git a/share/img/default/align_left.gif b/share/img/default/align_left.gif new file mode 100755 index 0000000..e309625 Binary files /dev/null and b/share/img/default/align_left.gif differ diff --git a/share/img/default/align_right.gif b/share/img/default/align_right.gif new file mode 100755 index 0000000..8d15b33 Binary files /dev/null and b/share/img/default/align_right.gif differ diff --git a/share/img/default/alpha-nu.gif b/share/img/default/alpha-nu.gif new file mode 100755 index 0000000..83b2cf4 Binary files /dev/null and b/share/img/default/alpha-nu.gif differ diff --git a/share/img/default/archive.gif b/share/img/default/archive.gif new file mode 100755 index 0000000..ff40c60 Binary files /dev/null and b/share/img/default/archive.gif differ diff --git a/share/img/default/back.gif b/share/img/default/back.gif new file mode 100755 index 0000000..1375542 Binary files /dev/null and b/share/img/default/back.gif differ diff --git a/share/img/default/bibitem.gif b/share/img/default/bibitem.gif new file mode 100755 index 0000000..f9cc503 Binary files /dev/null and b/share/img/default/bibitem.gif differ diff --git a/share/img/default/bold.gif b/share/img/default/bold.gif new file mode 100755 index 0000000..bcdc0c5 Binary files /dev/null and b/share/img/default/bold.gif differ diff --git a/share/img/default/books.gif b/share/img/default/books.gif new file mode 100755 index 0000000..bc5a268 Binary files /dev/null and b/share/img/default/books.gif differ diff --git a/share/img/default/chapter.gif b/share/img/default/chapter.gif new file mode 100755 index 0000000..08851fc Binary files /dev/null and b/share/img/default/chapter.gif differ diff --git a/share/img/default/cite.gif b/share/img/default/cite.gif new file mode 100755 index 0000000..74439c2 Binary files /dev/null and b/share/img/default/cite.gif differ diff --git a/share/img/default/close.gif b/share/img/default/close.gif new file mode 100755 index 0000000..da4d081 Binary files /dev/null and b/share/img/default/close.gif differ diff --git a/share/img/default/conero.gif b/share/img/default/conero.gif new file mode 100755 index 0000000..1f73af1 Binary files /dev/null and b/share/img/default/conero.gif differ diff --git a/share/img/default/copy.gif b/share/img/default/copy.gif new file mode 100755 index 0000000..e4557db Binary files /dev/null and b/share/img/default/copy.gif differ diff --git a/share/img/default/cut.gif b/share/img/default/cut.gif new file mode 100755 index 0000000..c489bda Binary files /dev/null and b/share/img/default/cut.gif differ diff --git a/share/img/default/cvs_in.gif b/share/img/default/cvs_in.gif new file mode 100755 index 0000000..32148e8 Binary files /dev/null and b/share/img/default/cvs_in.gif differ diff --git a/share/img/default/cvs_out.gif b/share/img/default/cvs_out.gif new file mode 100755 index 0000000..22928ee Binary files /dev/null and b/share/img/default/cvs_out.gif differ diff --git a/share/img/default/date_time.gif b/share/img/default/date_time.gif new file mode 100755 index 0000000..f6793b8 Binary files /dev/null and b/share/img/default/date_time.gif differ diff --git a/share/img/default/doit.gif b/share/img/default/doit.gif new file mode 100755 index 0000000..2ff9dc0 Binary files /dev/null and b/share/img/default/doit.gif differ diff --git a/share/img/default/dvi.gif b/share/img/default/dvi.gif new file mode 100755 index 0000000..c5a5b6a Binary files /dev/null and b/share/img/default/dvi.gif differ diff --git a/share/img/default/dvi_preview.gif b/share/img/default/dvi_preview.gif new file mode 100755 index 0000000..1037c5a Binary files /dev/null and b/share/img/default/dvi_preview.gif differ diff --git a/share/img/default/error.gif b/share/img/default/error.gif new file mode 100755 index 0000000..69e98b3 Binary files /dev/null and b/share/img/default/error.gif differ diff --git a/share/img/default/file.gif b/share/img/default/file.gif new file mode 100755 index 0000000..c64635c Binary files /dev/null and b/share/img/default/file.gif differ diff --git a/share/img/default/find.gif b/share/img/default/find.gif new file mode 100755 index 0000000..218dd9f Binary files /dev/null and b/share/img/default/find.gif differ diff --git a/share/img/default/folder.gif b/share/img/default/folder.gif new file mode 100755 index 0000000..262aed5 Binary files /dev/null and b/share/img/default/folder.gif differ diff --git a/share/img/default/font_emph.gif b/share/img/default/font_emph.gif new file mode 100755 index 0000000..49bf727 Binary files /dev/null and b/share/img/default/font_emph.gif differ diff --git a/share/img/default/font_selector.gif b/share/img/default/font_selector.gif new file mode 100755 index 0000000..5bb9b3e Binary files /dev/null and b/share/img/default/font_selector.gif differ diff --git a/share/img/default/font_size.gif b/share/img/default/font_size.gif new file mode 100755 index 0000000..c21d1e6 Binary files /dev/null and b/share/img/default/font_size.gif differ diff --git a/share/img/default/font_width.gif b/share/img/default/font_width.gif new file mode 100755 index 0000000..4951144 Binary files /dev/null and b/share/img/default/font_width.gif differ diff --git a/share/img/default/forward.gif b/share/img/default/forward.gif new file mode 100755 index 0000000..9b56ebb Binary files /dev/null and b/share/img/default/forward.gif differ diff --git a/share/img/default/gv.gif b/share/img/default/gv.gif new file mode 100755 index 0000000..41fab6f Binary files /dev/null and b/share/img/default/gv.gif differ diff --git a/share/img/default/help.gif b/share/img/default/help.gif new file mode 100755 index 0000000..d770ae0 Binary files /dev/null and b/share/img/default/help.gif differ diff --git a/share/img/default/html.gif b/share/img/default/html.gif new file mode 100755 index 0000000..f01706d Binary files /dev/null and b/share/img/default/html.gif differ diff --git a/share/img/default/html_preview.gif b/share/img/default/html_preview.gif new file mode 100755 index 0000000..cdc34c0 Binary files /dev/null and b/share/img/default/html_preview.gif differ diff --git a/share/img/default/htmlconvert.gif b/share/img/default/htmlconvert.gif new file mode 100755 index 0000000..5178897 Binary files /dev/null and b/share/img/default/htmlconvert.gif differ diff --git a/share/img/default/image.gif b/share/img/default/image.gif new file mode 100755 index 0000000..bc2d330 Binary files /dev/null and b/share/img/default/image.gif differ diff --git a/share/img/default/img.gif b/share/img/default/img.gif new file mode 100755 index 0000000..b6c4d8c Binary files /dev/null and b/share/img/default/img.gif differ diff --git a/share/img/default/insertsection.gif b/share/img/default/insertsection.gif new file mode 100755 index 0000000..953ef3a Binary files /dev/null and b/share/img/default/insertsection.gif differ diff --git a/share/img/default/italic.gif b/share/img/default/italic.gif new file mode 100755 index 0000000..cf998f4 Binary files /dev/null and b/share/img/default/italic.gif differ diff --git a/share/img/default/itemize.gif b/share/img/default/itemize.gif new file mode 100755 index 0000000..1b12153 Binary files /dev/null and b/share/img/default/itemize.gif differ diff --git a/share/img/default/label.gif b/share/img/default/label.gif new file mode 100755 index 0000000..955cc66 Binary files /dev/null and b/share/img/default/label.gif differ diff --git a/share/img/default/math.gif b/share/img/default/math.gif new file mode 100755 index 0000000..cf40066 Binary files /dev/null and b/share/img/default/math.gif differ diff --git a/share/img/default/math/accent.gif b/share/img/default/math/accent.gif new file mode 100755 index 0000000..439c159 Binary files /dev/null and b/share/img/default/math/accent.gif differ diff --git a/share/img/default/math/acute.gif b/share/img/default/math/acute.gif new file mode 100755 index 0000000..e0362a6 Binary files /dev/null and b/share/img/default/math/acute.gif differ diff --git a/share/img/default/math/alpha-nu.gif b/share/img/default/math/alpha-nu.gif new file mode 100755 index 0000000..83b2cf4 Binary files /dev/null and b/share/img/default/math/alpha-nu.gif differ diff --git a/share/img/default/math/alpha.gif b/share/img/default/math/alpha.gif new file mode 100755 index 0000000..64a5f11 Binary files /dev/null and b/share/img/default/math/alpha.gif differ diff --git a/share/img/default/math/bar.gif b/share/img/default/math/bar.gif new file mode 100755 index 0000000..6acf1b0 Binary files /dev/null and b/share/img/default/math/bar.gif differ diff --git a/share/img/default/math/beta.gif b/share/img/default/math/beta.gif new file mode 100755 index 0000000..b5832e4 Binary files /dev/null and b/share/img/default/math/beta.gif differ diff --git a/share/img/default/math/breve.gif b/share/img/default/math/breve.gif new file mode 100755 index 0000000..1d11e33 Binary files /dev/null and b/share/img/default/math/breve.gif differ diff --git a/share/img/default/math/check.gif b/share/img/default/math/check.gif new file mode 100755 index 0000000..6a367e7 Binary files /dev/null and b/share/img/default/math/check.gif differ diff --git a/share/img/default/math/chi.gif b/share/img/default/math/chi.gif new file mode 100755 index 0000000..994b642 Binary files /dev/null and b/share/img/default/math/chi.gif differ diff --git a/share/img/default/math/ddot.gif b/share/img/default/math/ddot.gif new file mode 100755 index 0000000..89ba97d Binary files /dev/null and b/share/img/default/math/ddot.gif differ diff --git a/share/img/default/math/delta.gif b/share/img/default/math/delta.gif new file mode 100755 index 0000000..618d0d0 Binary files /dev/null and b/share/img/default/math/delta.gif differ diff --git a/share/img/default/math/dot.gif b/share/img/default/math/dot.gif new file mode 100755 index 0000000..b823ba8 Binary files /dev/null and b/share/img/default/math/dot.gif differ diff --git a/share/img/default/math/epsilon.gif b/share/img/default/math/epsilon.gif new file mode 100755 index 0000000..f0169b5 Binary files /dev/null and b/share/img/default/math/epsilon.gif differ diff --git a/share/img/default/math/equation.gif b/share/img/default/math/equation.gif new file mode 100755 index 0000000..da93039 Binary files /dev/null and b/share/img/default/math/equation.gif differ diff --git a/share/img/default/math/eta.gif b/share/img/default/math/eta.gif new file mode 100755 index 0000000..800b136 Binary files /dev/null and b/share/img/default/math/eta.gif differ diff --git a/share/img/default/math/gamma.gif b/share/img/default/math/gamma.gif new file mode 100755 index 0000000..32b055e Binary files /dev/null and b/share/img/default/math/gamma.gif differ diff --git a/share/img/default/math/grave.gif b/share/img/default/math/grave.gif new file mode 100755 index 0000000..517702a Binary files /dev/null and b/share/img/default/math/grave.gif differ diff --git a/share/img/default/math/hat.gif b/share/img/default/math/hat.gif new file mode 100755 index 0000000..a2b6a9f Binary files /dev/null and b/share/img/default/math/hat.gif differ diff --git a/share/img/default/math/img1.gif b/share/img/default/math/img1.gif new file mode 100755 index 0000000..9d1c5e4 Binary files /dev/null and b/share/img/default/math/img1.gif differ diff --git a/share/img/default/math/img2.gif b/share/img/default/math/img2.gif new file mode 100755 index 0000000..6b9819c Binary files /dev/null and b/share/img/default/math/img2.gif differ diff --git a/share/img/default/math/iota.gif b/share/img/default/math/iota.gif new file mode 100755 index 0000000..22919ad Binary files /dev/null and b/share/img/default/math/iota.gif differ diff --git a/share/img/default/math/kappa.gif b/share/img/default/math/kappa.gif new file mode 100755 index 0000000..b231fe6 Binary files /dev/null and b/share/img/default/math/kappa.gif differ diff --git a/share/img/default/math/lambda.gif b/share/img/default/math/lambda.gif new file mode 100755 index 0000000..321add7 Binary files /dev/null and b/share/img/default/math/lambda.gif differ diff --git a/share/img/default/math/math_font.gif b/share/img/default/math/math_font.gif new file mode 100755 index 0000000..32e567b Binary files /dev/null and b/share/img/default/math/math_font.gif differ diff --git a/share/img/default/math/mu.gif b/share/img/default/math/mu.gif new file mode 100755 index 0000000..1799ef4 Binary files /dev/null and b/share/img/default/math/mu.gif differ diff --git a/share/img/default/math/nu.gif b/share/img/default/math/nu.gif new file mode 100755 index 0000000..487f2e7 Binary files /dev/null and b/share/img/default/math/nu.gif differ diff --git a/share/img/default/math/omega.gif b/share/img/default/math/omega.gif new file mode 100755 index 0000000..3b1fe88 Binary files /dev/null and b/share/img/default/math/omega.gif differ diff --git a/share/img/default/math/omikron.gif b/share/img/default/math/omikron.gif new file mode 100755 index 0000000..88a5488 Binary files /dev/null and b/share/img/default/math/omikron.gif differ diff --git a/share/img/default/math/phi.gif b/share/img/default/math/phi.gif new file mode 100755 index 0000000..cdd5959 Binary files /dev/null and b/share/img/default/math/phi.gif differ diff --git a/share/img/default/math/pi.gif b/share/img/default/math/pi.gif new file mode 100755 index 0000000..5125408 Binary files /dev/null and b/share/img/default/math/pi.gif differ diff --git a/share/img/default/math/psi.gif b/share/img/default/math/psi.gif new file mode 100755 index 0000000..38159c2 Binary files /dev/null and b/share/img/default/math/psi.gif differ diff --git a/share/img/default/math/rho.gif b/share/img/default/math/rho.gif new file mode 100755 index 0000000..49c8903 Binary files /dev/null and b/share/img/default/math/rho.gif differ diff --git a/share/img/default/math/sigma.gif b/share/img/default/math/sigma.gif new file mode 100755 index 0000000..9497f35 Binary files /dev/null and b/share/img/default/math/sigma.gif differ diff --git a/share/img/default/math/tau.gif b/share/img/default/math/tau.gif new file mode 100755 index 0000000..36fdca0 Binary files /dev/null and b/share/img/default/math/tau.gif differ diff --git a/share/img/default/math/theta.gif b/share/img/default/math/theta.gif new file mode 100755 index 0000000..8ecd774 Binary files /dev/null and b/share/img/default/math/theta.gif differ diff --git a/share/img/default/math/tilde.gif b/share/img/default/math/tilde.gif new file mode 100755 index 0000000..bede0ac Binary files /dev/null and b/share/img/default/math/tilde.gif differ diff --git a/share/img/default/math/upsilon.gif b/share/img/default/math/upsilon.gif new file mode 100755 index 0000000..96152e8 Binary files /dev/null and b/share/img/default/math/upsilon.gif differ diff --git a/share/img/default/math/varepsilon.gif b/share/img/default/math/varepsilon.gif new file mode 100755 index 0000000..58b43c7 Binary files /dev/null and b/share/img/default/math/varepsilon.gif differ diff --git a/share/img/default/math/varphi.gif b/share/img/default/math/varphi.gif new file mode 100755 index 0000000..0b282a5 Binary files /dev/null and b/share/img/default/math/varphi.gif differ diff --git a/share/img/default/math/varpi.gif b/share/img/default/math/varpi.gif new file mode 100755 index 0000000..3423d80 Binary files /dev/null and b/share/img/default/math/varpi.gif differ diff --git a/share/img/default/math/varrho.gif b/share/img/default/math/varrho.gif new file mode 100755 index 0000000..f534453 Binary files /dev/null and b/share/img/default/math/varrho.gif differ diff --git a/share/img/default/math/varsigma.gif b/share/img/default/math/varsigma.gif new file mode 100755 index 0000000..39601b4 Binary files /dev/null and b/share/img/default/math/varsigma.gif differ diff --git a/share/img/default/math/vartheta.gif b/share/img/default/math/vartheta.gif new file mode 100755 index 0000000..0467db0 Binary files /dev/null and b/share/img/default/math/vartheta.gif differ diff --git a/share/img/default/math/vec.gif b/share/img/default/math/vec.gif new file mode 100755 index 0000000..e962acd Binary files /dev/null and b/share/img/default/math/vec.gif differ diff --git a/share/img/default/math/widehat.gif b/share/img/default/math/widehat.gif new file mode 100755 index 0000000..517a543 Binary files /dev/null and b/share/img/default/math/widehat.gif differ diff --git a/share/img/default/math/widetilde.gif b/share/img/default/math/widetilde.gif new file mode 100755 index 0000000..0ca2168 Binary files /dev/null and b/share/img/default/math/widetilde.gif differ diff --git a/share/img/default/math/xi-omega.gif b/share/img/default/math/xi-omega.gif new file mode 100755 index 0000000..8ec3288 Binary files /dev/null and b/share/img/default/math/xi-omega.gif differ diff --git a/share/img/default/math/xi.gif b/share/img/default/math/xi.gif new file mode 100755 index 0000000..63bce05 Binary files /dev/null and b/share/img/default/math/xi.gif differ diff --git a/share/img/default/math/zeta.gif b/share/img/default/math/zeta.gif new file mode 100755 index 0000000..c662f0e Binary files /dev/null and b/share/img/default/math/zeta.gif differ diff --git a/share/img/default/new.gif b/share/img/default/new.gif new file mode 100755 index 0000000..541da4f Binary files /dev/null and b/share/img/default/new.gif differ diff --git a/share/img/default/new_html.gif b/share/img/default/new_html.gif new file mode 100755 index 0000000..49a3281 Binary files /dev/null and b/share/img/default/new_html.gif differ diff --git a/share/img/default/new_tcl.gif b/share/img/default/new_tcl.gif new file mode 100755 index 0000000..28ae130 Binary files /dev/null and b/share/img/default/new_tcl.gif differ diff --git a/share/img/default/new_text.gif b/share/img/default/new_text.gif new file mode 100755 index 0000000..e28f263 Binary files /dev/null and b/share/img/default/new_text.gif differ diff --git a/share/img/default/new_tk.gif b/share/img/default/new_tk.gif new file mode 100755 index 0000000..4d16584 Binary files /dev/null and b/share/img/default/new_tk.gif differ diff --git a/share/img/default/newfolder.gif b/share/img/default/newfolder.gif new file mode 100755 index 0000000..3a914b4 Binary files /dev/null and b/share/img/default/newfolder.gif differ diff --git a/share/img/default/numerate.gif b/share/img/default/numerate.gif new file mode 100755 index 0000000..1e3b340 Binary files /dev/null and b/share/img/default/numerate.gif differ diff --git a/share/img/default/open.gif b/share/img/default/open.gif new file mode 100755 index 0000000..46e142f Binary files /dev/null and b/share/img/default/open.gif differ diff --git a/share/img/default/openfold.gif b/share/img/default/openfold.gif new file mode 100755 index 0000000..fc8adc5 Binary files /dev/null and b/share/img/default/openfold.gif differ diff --git a/share/img/default/pageref.gif b/share/img/default/pageref.gif new file mode 100755 index 0000000..4347daf Binary files /dev/null and b/share/img/default/pageref.gif differ diff --git a/share/img/default/paragraph.gif b/share/img/default/paragraph.gif new file mode 100755 index 0000000..4c1960a Binary files /dev/null and b/share/img/default/paragraph.gif differ diff --git a/share/img/default/part.gif b/share/img/default/part.gif new file mode 100755 index 0000000..eb86c42 Binary files /dev/null and b/share/img/default/part.gif differ diff --git a/share/img/default/paste.gif b/share/img/default/paste.gif new file mode 100755 index 0000000..56d2047 Binary files /dev/null and b/share/img/default/paste.gif differ diff --git a/share/img/default/pdf.gif b/share/img/default/pdf.gif new file mode 100755 index 0000000..f92d841 Binary files /dev/null and b/share/img/default/pdf.gif differ diff --git a/share/img/default/pdf_preview.gif b/share/img/default/pdf_preview.gif new file mode 100755 index 0000000..1d7df12 Binary files /dev/null and b/share/img/default/pdf_preview.gif differ diff --git a/share/img/default/preview.gif b/share/img/default/preview.gif new file mode 100755 index 0000000..d3510f1 Binary files /dev/null and b/share/img/default/preview.gif differ diff --git a/share/img/default/preview.xcf b/share/img/default/preview.xcf new file mode 100755 index 0000000..a765430 Binary files /dev/null and b/share/img/default/preview.xcf differ diff --git a/share/img/default/print.gif b/share/img/default/print.gif new file mode 100755 index 0000000..96322af Binary files /dev/null and b/share/img/default/print.gif differ diff --git a/share/img/default/printer.gif b/share/img/default/printer.gif new file mode 100755 index 0000000..96322af Binary files /dev/null and b/share/img/default/printer.gif differ diff --git a/share/img/default/proc.gif b/share/img/default/proc.gif new file mode 100755 index 0000000..621fd53 Binary files /dev/null and b/share/img/default/proc.gif differ diff --git a/share/img/default/ps.gif b/share/img/default/ps.gif new file mode 100755 index 0000000..17b8417 Binary files /dev/null and b/share/img/default/ps.gif differ diff --git a/share/img/default/ps_preview.gif b/share/img/default/ps_preview.gif new file mode 100755 index 0000000..8a5dfc3 Binary files /dev/null and b/share/img/default/ps_preview.gif differ diff --git a/share/img/default/ref.gif b/share/img/default/ref.gif new file mode 100755 index 0000000..5b63b48 Binary files /dev/null and b/share/img/default/ref.gif differ diff --git a/share/img/default/refresh.gif b/share/img/default/refresh.gif new file mode 100755 index 0000000..9b7e599 Binary files /dev/null and b/share/img/default/refresh.gif differ diff --git a/share/img/default/save.gif b/share/img/default/save.gif new file mode 100755 index 0000000..549c17f Binary files /dev/null and b/share/img/default/save.gif differ diff --git a/share/img/default/save_all.gif b/share/img/default/save_all.gif new file mode 100755 index 0000000..3500311 Binary files /dev/null and b/share/img/default/save_all.gif differ diff --git a/share/img/default/save_as.gif b/share/img/default/save_as.gif new file mode 100755 index 0000000..be9e8c2 Binary files /dev/null and b/share/img/default/save_as.gif differ diff --git a/share/img/default/section.gif b/share/img/default/section.gif new file mode 100755 index 0000000..d77b57c Binary files /dev/null and b/share/img/default/section.gif differ diff --git a/share/img/default/spellcheck.gif b/share/img/default/spellcheck.gif new file mode 100755 index 0000000..720a2cf Binary files /dev/null and b/share/img/default/spellcheck.gif differ diff --git a/share/img/default/ssection.gif b/share/img/default/ssection.gif new file mode 100755 index 0000000..beb8719 Binary files /dev/null and b/share/img/default/ssection.gif differ diff --git a/share/img/default/sssection.gif b/share/img/default/sssection.gif new file mode 100755 index 0000000..69289d0 Binary files /dev/null and b/share/img/default/sssection.gif differ diff --git a/share/img/default/subparagraph.gif b/share/img/default/subparagraph.gif new file mode 100755 index 0000000..af65b96 Binary files /dev/null and b/share/img/default/subparagraph.gif differ diff --git a/share/img/default/table.gif b/share/img/default/table.gif new file mode 100755 index 0000000..0f9108c Binary files /dev/null and b/share/img/default/table.gif differ diff --git a/share/img/default/table_bottom.gif b/share/img/default/table_bottom.gif new file mode 100755 index 0000000..196951b Binary files /dev/null and b/share/img/default/table_bottom.gif differ diff --git a/share/img/default/table_center.gif b/share/img/default/table_center.gif new file mode 100755 index 0000000..25fe97b Binary files /dev/null and b/share/img/default/table_center.gif differ diff --git a/share/img/default/table_cols.gif b/share/img/default/table_cols.gif new file mode 100755 index 0000000..ae1546d Binary files /dev/null and b/share/img/default/table_cols.gif differ diff --git a/share/img/default/table_double.bmp b/share/img/default/table_double.bmp new file mode 100755 index 0000000..14aea9e Binary files /dev/null and b/share/img/default/table_double.bmp differ diff --git a/share/img/default/table_double.gif b/share/img/default/table_double.gif new file mode 100755 index 0000000..aadf22c Binary files /dev/null and b/share/img/default/table_double.gif differ diff --git a/share/img/default/table_empty.bmp b/share/img/default/table_empty.bmp new file mode 100755 index 0000000..9000f15 Binary files /dev/null and b/share/img/default/table_empty.bmp differ diff --git a/share/img/default/table_empty.gif b/share/img/default/table_empty.gif new file mode 100755 index 0000000..291e00e Binary files /dev/null and b/share/img/default/table_empty.gif differ diff --git a/share/img/default/table_full.bmp b/share/img/default/table_full.bmp new file mode 100755 index 0000000..1bf15ac Binary files /dev/null and b/share/img/default/table_full.bmp differ diff --git a/share/img/default/table_full.gif b/share/img/default/table_full.gif new file mode 100755 index 0000000..32935b9 Binary files /dev/null and b/share/img/default/table_full.gif differ diff --git a/share/img/default/table_lines.gif b/share/img/default/table_lines.gif new file mode 100755 index 0000000..67046b2 Binary files /dev/null and b/share/img/default/table_lines.gif differ diff --git a/share/img/default/table_top.gif b/share/img/default/table_top.gif new file mode 100755 index 0000000..3ff320a Binary files /dev/null and b/share/img/default/table_top.gif differ diff --git a/share/img/default/tcl.gif b/share/img/default/tcl.gif new file mode 100755 index 0000000..a39dac3 Binary files /dev/null and b/share/img/default/tcl.gif differ diff --git a/share/img/default/tcl_file.gif b/share/img/default/tcl_file.gif new file mode 100755 index 0000000..a39dac3 Binary files /dev/null and b/share/img/default/tcl_file.gif differ diff --git a/share/img/default/tex.gif b/share/img/default/tex.gif new file mode 100755 index 0000000..a40e5cb Binary files /dev/null and b/share/img/default/tex.gif differ diff --git a/share/img/default/tex_16x16.xpm b/share/img/default/tex_16x16.xpm new file mode 100755 index 0000000..68ac5b7 --- /dev/null +++ b/share/img/default/tex_16x16.xpm @@ -0,0 +1,29 @@ +/* XPM */ +static char * tex_16x16_xpm[] = { +"16 16 10 1", +" c None", +". c #0015FC", +"+ c #FF0000", +"@ c #000000", +"# c #C1CD35", +"$ c #F6FF00", +"% c #F7C300", +"& c #F8AE00", +"* c #F7D600", +"= c #F7D800", +" ", +" ", +"........ ++ ++ ", +".@@..@@.@ +@ +@@", +".@ ..@ .@ ++@+@ ", +" @ ..@ @ ++@@ ", +" .#$$$$$$%+@ ", +" ..$$@@@&*++@ ", +" ..$$@ +$@+@ ", +" ..$$@ % @ + ", +" ...#$$=%+ +++", +" @@$$@@$@@ @@", +" $$ @$ ", +" $$ $$@ ", +" $$$$$$$$@ ", +" @@@@@@@@ "}; diff --git a/share/img/default/tex_tmpl.gif b/share/img/default/tex_tmpl.gif new file mode 100755 index 0000000..16f9803 Binary files /dev/null and b/share/img/default/tex_tmpl.gif differ diff --git a/share/img/default/text.gif b/share/img/default/text.gif new file mode 100755 index 0000000..c64635c Binary files /dev/null and b/share/img/default/text.gif differ diff --git a/share/img/default/tk.gif b/share/img/default/tk.gif new file mode 100755 index 0000000..a7ce73b Binary files /dev/null and b/share/img/default/tk.gif differ diff --git a/share/img/default/tk_file.gif b/share/img/default/tk_file.gif new file mode 100755 index 0000000..a7ce73b Binary files /dev/null and b/share/img/default/tk_file.gif differ diff --git a/share/img/default/tle.gif b/share/img/default/tle.gif new file mode 100755 index 0000000..404e054 Binary files /dev/null and b/share/img/default/tle.gif differ diff --git a/share/img/default/top.gif b/share/img/default/top.gif new file mode 100755 index 0000000..76b4cab Binary files /dev/null and b/share/img/default/top.gif differ diff --git a/share/img/default/underline.gif b/share/img/default/underline.gif new file mode 100755 index 0000000..06f7541 Binary files /dev/null and b/share/img/default/underline.gif differ diff --git a/share/img/default/undo.gif b/share/img/default/undo.gif new file mode 100755 index 0000000..1375542 Binary files /dev/null and b/share/img/default/undo.gif differ diff --git a/share/img/default/verb.gif b/share/img/default/verb.gif new file mode 100755 index 0000000..367cef2 Binary files /dev/null and b/share/img/default/verb.gif differ diff --git a/share/img/default/www.gif b/share/img/default/www.gif new file mode 100755 index 0000000..0bfc94f Binary files /dev/null and b/share/img/default/www.gif differ diff --git a/share/img/default/xdvi.gif b/share/img/default/xdvi.gif new file mode 100755 index 0000000..a4dcf40 Binary files /dev/null and b/share/img/default/xdvi.gif differ diff --git a/share/img/default/xi-omega.gif b/share/img/default/xi-omega.gif new file mode 100755 index 0000000..8ec3288 Binary files /dev/null and b/share/img/default/xi-omega.gif differ diff --git a/share/img/stroke.7z b/share/img/stroke.7z new file mode 100755 index 0000000..e0f185a Binary files /dev/null and b/share/img/stroke.7z differ diff --git a/share/img/stroke/.xvpics/error.gif b/share/img/stroke/.xvpics/error.gif new file mode 100755 index 0000000..3213da5 --- /dev/null +++ b/share/img/stroke/.xvpics/error.gif @@ -0,0 +1,5 @@ +P7 332 +#IMGINFO:13x13 Indexed (83 bytes) +#END_OF_COMMENTS +13 13 255 +I$IIюю═ю═I$IшI$Ю═юЪЪЪ═ю═I╤Iю═ЪЪЪЪЪЪю═ю╩IюЪЪЪЪЪЪ═ю═ю╩ю═ЪЪЪЪЪю═юЪю═юЪЪЪЪЪ═ююЪЪЪ═юЪЪЪЪ═ююЪЪЪЪ═юЪЪЪ═ююЪЪЪЪЪ═ю═Ъю═юЪЪЪЪЪю═Iю═ю═ЪЪЪЪЪЪю╩Iю═юЪЪЪЪЪЪ═ю╩I$Ю═юЪЪЪ═ю═I╤ш╤╤╤юю═ю═ш╤╤D \ No newline at end of file diff --git a/share/img/stroke/.xvpics/tex.gif b/share/img/stroke/.xvpics/tex.gif new file mode 100755 index 0000000..60b31bc Binary files /dev/null and b/share/img/stroke/.xvpics/tex.gif differ diff --git a/share/img/stroke/align.gif b/share/img/stroke/align.gif new file mode 100755 index 0000000..b7398cd Binary files /dev/null and b/share/img/stroke/align.gif differ diff --git a/share/img/stroke/align_center.gif b/share/img/stroke/align_center.gif new file mode 100755 index 0000000..ad6fde6 Binary files /dev/null and b/share/img/stroke/align_center.gif differ diff --git a/share/img/stroke/align_left.gif b/share/img/stroke/align_left.gif new file mode 100755 index 0000000..e309625 Binary files /dev/null and b/share/img/stroke/align_left.gif differ diff --git a/share/img/stroke/align_right.gif b/share/img/stroke/align_right.gif new file mode 100755 index 0000000..8d15b33 Binary files /dev/null and b/share/img/stroke/align_right.gif differ diff --git a/share/img/stroke/alpha-nu.gif b/share/img/stroke/alpha-nu.gif new file mode 100755 index 0000000..83b2cf4 Binary files /dev/null and b/share/img/stroke/alpha-nu.gif differ diff --git a/share/img/stroke/archive.gif b/share/img/stroke/archive.gif new file mode 100755 index 0000000..ff40c60 Binary files /dev/null and b/share/img/stroke/archive.gif differ diff --git a/share/img/stroke/back.gif b/share/img/stroke/back.gif new file mode 100755 index 0000000..1375542 Binary files /dev/null and b/share/img/stroke/back.gif differ diff --git a/share/img/stroke/bibitem.gif b/share/img/stroke/bibitem.gif new file mode 100755 index 0000000..f9cc503 Binary files /dev/null and b/share/img/stroke/bibitem.gif differ diff --git a/share/img/stroke/bold.gif b/share/img/stroke/bold.gif new file mode 100755 index 0000000..bcdc0c5 Binary files /dev/null and b/share/img/stroke/bold.gif differ diff --git a/share/img/stroke/books.gif b/share/img/stroke/books.gif new file mode 100755 index 0000000..bc5a268 Binary files /dev/null and b/share/img/stroke/books.gif differ diff --git a/share/img/stroke/chapter.gif b/share/img/stroke/chapter.gif new file mode 100755 index 0000000..08851fc Binary files /dev/null and b/share/img/stroke/chapter.gif differ diff --git a/share/img/stroke/cite.gif b/share/img/stroke/cite.gif new file mode 100755 index 0000000..74439c2 Binary files /dev/null and b/share/img/stroke/cite.gif differ diff --git a/share/img/stroke/close.gif b/share/img/stroke/close.gif new file mode 100755 index 0000000..e59d02d Binary files /dev/null and b/share/img/stroke/close.gif differ diff --git a/share/img/stroke/conero.gif b/share/img/stroke/conero.gif new file mode 100755 index 0000000..1f73af1 Binary files /dev/null and b/share/img/stroke/conero.gif differ diff --git a/share/img/stroke/copy.gif b/share/img/stroke/copy.gif new file mode 100755 index 0000000..3252eb9 Binary files /dev/null and b/share/img/stroke/copy.gif differ diff --git a/share/img/stroke/cut.gif b/share/img/stroke/cut.gif new file mode 100755 index 0000000..623b0ab Binary files /dev/null and b/share/img/stroke/cut.gif differ diff --git a/share/img/stroke/cvs_in.gif b/share/img/stroke/cvs_in.gif new file mode 100755 index 0000000..32148e8 Binary files /dev/null and b/share/img/stroke/cvs_in.gif differ diff --git a/share/img/stroke/cvs_out.gif b/share/img/stroke/cvs_out.gif new file mode 100755 index 0000000..22928ee Binary files /dev/null and b/share/img/stroke/cvs_out.gif differ diff --git a/share/img/stroke/date_time.gif b/share/img/stroke/date_time.gif new file mode 100755 index 0000000..f6793b8 Binary files /dev/null and b/share/img/stroke/date_time.gif differ diff --git a/share/img/stroke/doit.gif b/share/img/stroke/doit.gif new file mode 100755 index 0000000..2ff9dc0 Binary files /dev/null and b/share/img/stroke/doit.gif differ diff --git a/share/img/stroke/dvi.gif b/share/img/stroke/dvi.gif new file mode 100755 index 0000000..002255b Binary files /dev/null and b/share/img/stroke/dvi.gif differ diff --git a/share/img/stroke/dvi_preview.gif b/share/img/stroke/dvi_preview.gif new file mode 100755 index 0000000..a4dcf40 Binary files /dev/null and b/share/img/stroke/dvi_preview.gif differ diff --git a/share/img/stroke/error.gif b/share/img/stroke/error.gif new file mode 100755 index 0000000..69e98b3 Binary files /dev/null and b/share/img/stroke/error.gif differ diff --git a/share/img/stroke/file.gif b/share/img/stroke/file.gif new file mode 100755 index 0000000..c64635c Binary files /dev/null and b/share/img/stroke/file.gif differ diff --git a/share/img/stroke/find.gif b/share/img/stroke/find.gif new file mode 100755 index 0000000..ed860d9 Binary files /dev/null and b/share/img/stroke/find.gif differ diff --git a/share/img/stroke/folder.gif b/share/img/stroke/folder.gif new file mode 100755 index 0000000..262aed5 Binary files /dev/null and b/share/img/stroke/folder.gif differ diff --git a/share/img/stroke/font_emph.gif b/share/img/stroke/font_emph.gif new file mode 100755 index 0000000..49bf727 Binary files /dev/null and b/share/img/stroke/font_emph.gif differ diff --git a/share/img/stroke/font_selector.gif b/share/img/stroke/font_selector.gif new file mode 100755 index 0000000..5bb9b3e Binary files /dev/null and b/share/img/stroke/font_selector.gif differ diff --git a/share/img/stroke/font_size.gif b/share/img/stroke/font_size.gif new file mode 100755 index 0000000..c21d1e6 Binary files /dev/null and b/share/img/stroke/font_size.gif differ diff --git a/share/img/stroke/font_width.gif b/share/img/stroke/font_width.gif new file mode 100755 index 0000000..4951144 Binary files /dev/null and b/share/img/stroke/font_width.gif differ diff --git a/share/img/stroke/forward.gif b/share/img/stroke/forward.gif new file mode 100755 index 0000000..9b56ebb Binary files /dev/null and b/share/img/stroke/forward.gif differ diff --git a/share/img/stroke/help.gif b/share/img/stroke/help.gif new file mode 100755 index 0000000..d770ae0 Binary files /dev/null and b/share/img/stroke/help.gif differ diff --git a/share/img/stroke/html_preview.gif b/share/img/stroke/html_preview.gif new file mode 100755 index 0000000..0bfc94f Binary files /dev/null and b/share/img/stroke/html_preview.gif differ diff --git a/share/img/stroke/htmlconvert.gif b/share/img/stroke/htmlconvert.gif new file mode 100755 index 0000000..f01706d Binary files /dev/null and b/share/img/stroke/htmlconvert.gif differ diff --git a/share/img/stroke/image.gif b/share/img/stroke/image.gif new file mode 100755 index 0000000..bc2d330 Binary files /dev/null and b/share/img/stroke/image.gif differ diff --git a/share/img/stroke/img.gif b/share/img/stroke/img.gif new file mode 100755 index 0000000..b6c4d8c Binary files /dev/null and b/share/img/stroke/img.gif differ diff --git a/share/img/stroke/insertsection.gif b/share/img/stroke/insertsection.gif new file mode 100755 index 0000000..953ef3a Binary files /dev/null and b/share/img/stroke/insertsection.gif differ diff --git a/share/img/stroke/italic.gif b/share/img/stroke/italic.gif new file mode 100755 index 0000000..cf998f4 Binary files /dev/null and b/share/img/stroke/italic.gif differ diff --git a/share/img/stroke/itemize.gif b/share/img/stroke/itemize.gif new file mode 100755 index 0000000..1b12153 Binary files /dev/null and b/share/img/stroke/itemize.gif differ diff --git a/share/img/stroke/label.gif b/share/img/stroke/label.gif new file mode 100755 index 0000000..955cc66 Binary files /dev/null and b/share/img/stroke/label.gif differ diff --git a/share/img/stroke/math.gif b/share/img/stroke/math.gif new file mode 100755 index 0000000..cf40066 Binary files /dev/null and b/share/img/stroke/math.gif differ diff --git a/share/img/stroke/math/accent.gif b/share/img/stroke/math/accent.gif new file mode 100755 index 0000000..439c159 Binary files /dev/null and b/share/img/stroke/math/accent.gif differ diff --git a/share/img/stroke/math/acute.gif b/share/img/stroke/math/acute.gif new file mode 100755 index 0000000..e0362a6 Binary files /dev/null and b/share/img/stroke/math/acute.gif differ diff --git a/share/img/stroke/math/alpha-nu.gif b/share/img/stroke/math/alpha-nu.gif new file mode 100755 index 0000000..83b2cf4 Binary files /dev/null and b/share/img/stroke/math/alpha-nu.gif differ diff --git a/share/img/stroke/math/alpha.gif b/share/img/stroke/math/alpha.gif new file mode 100755 index 0000000..64a5f11 Binary files /dev/null and b/share/img/stroke/math/alpha.gif differ diff --git a/share/img/stroke/math/bar.gif b/share/img/stroke/math/bar.gif new file mode 100755 index 0000000..6acf1b0 Binary files /dev/null and b/share/img/stroke/math/bar.gif differ diff --git a/share/img/stroke/math/beta.gif b/share/img/stroke/math/beta.gif new file mode 100755 index 0000000..b5832e4 Binary files /dev/null and b/share/img/stroke/math/beta.gif differ diff --git a/share/img/stroke/math/breve.gif b/share/img/stroke/math/breve.gif new file mode 100755 index 0000000..1d11e33 Binary files /dev/null and b/share/img/stroke/math/breve.gif differ diff --git a/share/img/stroke/math/check.gif b/share/img/stroke/math/check.gif new file mode 100755 index 0000000..6a367e7 Binary files /dev/null and b/share/img/stroke/math/check.gif differ diff --git a/share/img/stroke/math/chi.gif b/share/img/stroke/math/chi.gif new file mode 100755 index 0000000..994b642 Binary files /dev/null and b/share/img/stroke/math/chi.gif differ diff --git a/share/img/stroke/math/ddot.gif b/share/img/stroke/math/ddot.gif new file mode 100755 index 0000000..89ba97d Binary files /dev/null and b/share/img/stroke/math/ddot.gif differ diff --git a/share/img/stroke/math/delta.gif b/share/img/stroke/math/delta.gif new file mode 100755 index 0000000..618d0d0 Binary files /dev/null and b/share/img/stroke/math/delta.gif differ diff --git a/share/img/stroke/math/dot.gif b/share/img/stroke/math/dot.gif new file mode 100755 index 0000000..b823ba8 Binary files /dev/null and b/share/img/stroke/math/dot.gif differ diff --git a/share/img/stroke/math/epsilon.gif b/share/img/stroke/math/epsilon.gif new file mode 100755 index 0000000..f0169b5 Binary files /dev/null and b/share/img/stroke/math/epsilon.gif differ diff --git a/share/img/stroke/math/equation.gif b/share/img/stroke/math/equation.gif new file mode 100755 index 0000000..da93039 Binary files /dev/null and b/share/img/stroke/math/equation.gif differ diff --git a/share/img/stroke/math/eta.gif b/share/img/stroke/math/eta.gif new file mode 100755 index 0000000..800b136 Binary files /dev/null and b/share/img/stroke/math/eta.gif differ diff --git a/share/img/stroke/math/gamma.gif b/share/img/stroke/math/gamma.gif new file mode 100755 index 0000000..32b055e Binary files /dev/null and b/share/img/stroke/math/gamma.gif differ diff --git a/share/img/stroke/math/grave.gif b/share/img/stroke/math/grave.gif new file mode 100755 index 0000000..517702a Binary files /dev/null and b/share/img/stroke/math/grave.gif differ diff --git a/share/img/stroke/math/hat.gif b/share/img/stroke/math/hat.gif new file mode 100755 index 0000000..a2b6a9f Binary files /dev/null and b/share/img/stroke/math/hat.gif differ diff --git a/share/img/stroke/math/img1.gif b/share/img/stroke/math/img1.gif new file mode 100755 index 0000000..9d1c5e4 Binary files /dev/null and b/share/img/stroke/math/img1.gif differ diff --git a/share/img/stroke/math/img2.gif b/share/img/stroke/math/img2.gif new file mode 100755 index 0000000..6b9819c Binary files /dev/null and b/share/img/stroke/math/img2.gif differ diff --git a/share/img/stroke/math/iota.gif b/share/img/stroke/math/iota.gif new file mode 100755 index 0000000..22919ad Binary files /dev/null and b/share/img/stroke/math/iota.gif differ diff --git a/share/img/stroke/math/kappa.gif b/share/img/stroke/math/kappa.gif new file mode 100755 index 0000000..b231fe6 Binary files /dev/null and b/share/img/stroke/math/kappa.gif differ diff --git a/share/img/stroke/math/lambda.gif b/share/img/stroke/math/lambda.gif new file mode 100755 index 0000000..321add7 Binary files /dev/null and b/share/img/stroke/math/lambda.gif differ diff --git a/share/img/stroke/math/math_font.gif b/share/img/stroke/math/math_font.gif new file mode 100755 index 0000000..32e567b Binary files /dev/null and b/share/img/stroke/math/math_font.gif differ diff --git a/share/img/stroke/math/mu.gif b/share/img/stroke/math/mu.gif new file mode 100755 index 0000000..1799ef4 Binary files /dev/null and b/share/img/stroke/math/mu.gif differ diff --git a/share/img/stroke/math/nu.gif b/share/img/stroke/math/nu.gif new file mode 100755 index 0000000..487f2e7 Binary files /dev/null and b/share/img/stroke/math/nu.gif differ diff --git a/share/img/stroke/math/omega.gif b/share/img/stroke/math/omega.gif new file mode 100755 index 0000000..46c74b8 Binary files /dev/null and b/share/img/stroke/math/omega.gif differ diff --git a/share/img/stroke/math/omikron.gif b/share/img/stroke/math/omikron.gif new file mode 100755 index 0000000..88a5488 Binary files /dev/null and b/share/img/stroke/math/omikron.gif differ diff --git a/share/img/stroke/math/phi.gif b/share/img/stroke/math/phi.gif new file mode 100755 index 0000000..cdd5959 Binary files /dev/null and b/share/img/stroke/math/phi.gif differ diff --git a/share/img/stroke/math/pi.gif b/share/img/stroke/math/pi.gif new file mode 100755 index 0000000..5125408 Binary files /dev/null and b/share/img/stroke/math/pi.gif differ diff --git a/share/img/stroke/math/psi.gif b/share/img/stroke/math/psi.gif new file mode 100755 index 0000000..38159c2 Binary files /dev/null and b/share/img/stroke/math/psi.gif differ diff --git a/share/img/stroke/math/rho.gif b/share/img/stroke/math/rho.gif new file mode 100755 index 0000000..49c8903 Binary files /dev/null and b/share/img/stroke/math/rho.gif differ diff --git a/share/img/stroke/math/sigma.gif b/share/img/stroke/math/sigma.gif new file mode 100755 index 0000000..9497f35 Binary files /dev/null and b/share/img/stroke/math/sigma.gif differ diff --git a/share/img/stroke/math/tau.gif b/share/img/stroke/math/tau.gif new file mode 100755 index 0000000..36fdca0 Binary files /dev/null and b/share/img/stroke/math/tau.gif differ diff --git a/share/img/stroke/math/theta.gif b/share/img/stroke/math/theta.gif new file mode 100755 index 0000000..8ecd774 Binary files /dev/null and b/share/img/stroke/math/theta.gif differ diff --git a/share/img/stroke/math/tilde.gif b/share/img/stroke/math/tilde.gif new file mode 100755 index 0000000..bede0ac Binary files /dev/null and b/share/img/stroke/math/tilde.gif differ diff --git a/share/img/stroke/math/upsilon.gif b/share/img/stroke/math/upsilon.gif new file mode 100755 index 0000000..96152e8 Binary files /dev/null and b/share/img/stroke/math/upsilon.gif differ diff --git a/share/img/stroke/math/varepsilon.gif b/share/img/stroke/math/varepsilon.gif new file mode 100755 index 0000000..58b43c7 Binary files /dev/null and b/share/img/stroke/math/varepsilon.gif differ diff --git a/share/img/stroke/math/varphi.gif b/share/img/stroke/math/varphi.gif new file mode 100755 index 0000000..0b282a5 Binary files /dev/null and b/share/img/stroke/math/varphi.gif differ diff --git a/share/img/stroke/math/varpi.gif b/share/img/stroke/math/varpi.gif new file mode 100755 index 0000000..3423d80 Binary files /dev/null and b/share/img/stroke/math/varpi.gif differ diff --git a/share/img/stroke/math/varrho.gif b/share/img/stroke/math/varrho.gif new file mode 100755 index 0000000..f534453 Binary files /dev/null and b/share/img/stroke/math/varrho.gif differ diff --git a/share/img/stroke/math/varsigma.gif b/share/img/stroke/math/varsigma.gif new file mode 100755 index 0000000..39601b4 Binary files /dev/null and b/share/img/stroke/math/varsigma.gif differ diff --git a/share/img/stroke/math/vartheta.gif b/share/img/stroke/math/vartheta.gif new file mode 100755 index 0000000..0467db0 Binary files /dev/null and b/share/img/stroke/math/vartheta.gif differ diff --git a/share/img/stroke/math/vec.gif b/share/img/stroke/math/vec.gif new file mode 100755 index 0000000..e962acd Binary files /dev/null and b/share/img/stroke/math/vec.gif differ diff --git a/share/img/stroke/math/widehat.gif b/share/img/stroke/math/widehat.gif new file mode 100755 index 0000000..517a543 Binary files /dev/null and b/share/img/stroke/math/widehat.gif differ diff --git a/share/img/stroke/math/widetilde.gif b/share/img/stroke/math/widetilde.gif new file mode 100755 index 0000000..0ca2168 Binary files /dev/null and b/share/img/stroke/math/widetilde.gif differ diff --git a/share/img/stroke/math/xi-omega.gif b/share/img/stroke/math/xi-omega.gif new file mode 100755 index 0000000..8ec3288 Binary files /dev/null and b/share/img/stroke/math/xi-omega.gif differ diff --git a/share/img/stroke/math/xi.gif b/share/img/stroke/math/xi.gif new file mode 100755 index 0000000..63bce05 Binary files /dev/null and b/share/img/stroke/math/xi.gif differ diff --git a/share/img/stroke/math/zeta.gif b/share/img/stroke/math/zeta.gif new file mode 100755 index 0000000..c662f0e Binary files /dev/null and b/share/img/stroke/math/zeta.gif differ diff --git a/share/img/stroke/new.gif b/share/img/stroke/new.gif new file mode 100755 index 0000000..60dae26 Binary files /dev/null and b/share/img/stroke/new.gif differ diff --git a/share/img/stroke/new_html.gif b/share/img/stroke/new_html.gif new file mode 100755 index 0000000..49a3281 Binary files /dev/null and b/share/img/stroke/new_html.gif differ diff --git a/share/img/stroke/new_tcl.gif b/share/img/stroke/new_tcl.gif new file mode 100755 index 0000000..28ae130 Binary files /dev/null and b/share/img/stroke/new_tcl.gif differ diff --git a/share/img/stroke/new_text.gif b/share/img/stroke/new_text.gif new file mode 100755 index 0000000..e28f263 Binary files /dev/null and b/share/img/stroke/new_text.gif differ diff --git a/share/img/stroke/new_tk.gif b/share/img/stroke/new_tk.gif new file mode 100755 index 0000000..4d16584 Binary files /dev/null and b/share/img/stroke/new_tk.gif differ diff --git a/share/img/stroke/newfolder.gif b/share/img/stroke/newfolder.gif new file mode 100755 index 0000000..3a914b4 Binary files /dev/null and b/share/img/stroke/newfolder.gif differ diff --git a/share/img/stroke/numerate.gif b/share/img/stroke/numerate.gif new file mode 100755 index 0000000..1e3b340 Binary files /dev/null and b/share/img/stroke/numerate.gif differ diff --git a/share/img/stroke/open.gif b/share/img/stroke/open.gif new file mode 100755 index 0000000..a50d09d Binary files /dev/null and b/share/img/stroke/open.gif differ diff --git a/share/img/stroke/openfold.gif b/share/img/stroke/openfold.gif new file mode 100755 index 0000000..fc8adc5 Binary files /dev/null and b/share/img/stroke/openfold.gif differ diff --git a/share/img/stroke/pageref.gif b/share/img/stroke/pageref.gif new file mode 100755 index 0000000..4347daf Binary files /dev/null and b/share/img/stroke/pageref.gif differ diff --git a/share/img/stroke/paragraph.gif b/share/img/stroke/paragraph.gif new file mode 100755 index 0000000..4c1960a Binary files /dev/null and b/share/img/stroke/paragraph.gif differ diff --git a/share/img/stroke/part.gif b/share/img/stroke/part.gif new file mode 100755 index 0000000..eb86c42 Binary files /dev/null and b/share/img/stroke/part.gif differ diff --git a/share/img/stroke/paste.gif b/share/img/stroke/paste.gif new file mode 100755 index 0000000..39c4c9d Binary files /dev/null and b/share/img/stroke/paste.gif differ diff --git a/share/img/stroke/pdf.gif b/share/img/stroke/pdf.gif new file mode 100755 index 0000000..be7ea6e Binary files /dev/null and b/share/img/stroke/pdf.gif differ diff --git a/share/img/stroke/pdf_preview.gif b/share/img/stroke/pdf_preview.gif new file mode 100755 index 0000000..3db04ce Binary files /dev/null and b/share/img/stroke/pdf_preview.gif differ diff --git a/share/img/stroke/preview.gif b/share/img/stroke/preview.gif new file mode 100755 index 0000000..d3510f1 Binary files /dev/null and b/share/img/stroke/preview.gif differ diff --git a/share/img/stroke/preview.xcf b/share/img/stroke/preview.xcf new file mode 100755 index 0000000..a765430 Binary files /dev/null and b/share/img/stroke/preview.xcf differ diff --git a/share/img/stroke/print.gif b/share/img/stroke/print.gif new file mode 100755 index 0000000..9be61a7 Binary files /dev/null and b/share/img/stroke/print.gif differ diff --git a/share/img/stroke/printer.gif b/share/img/stroke/printer.gif new file mode 100755 index 0000000..96322af Binary files /dev/null and b/share/img/stroke/printer.gif differ diff --git a/share/img/stroke/proc.gif b/share/img/stroke/proc.gif new file mode 100755 index 0000000..621fd53 Binary files /dev/null and b/share/img/stroke/proc.gif differ diff --git a/share/img/stroke/ps.gif b/share/img/stroke/ps.gif new file mode 100755 index 0000000..2f69378 Binary files /dev/null and b/share/img/stroke/ps.gif differ diff --git a/share/img/stroke/ps_preview.gif b/share/img/stroke/ps_preview.gif new file mode 100755 index 0000000..41fab6f Binary files /dev/null and b/share/img/stroke/ps_preview.gif differ diff --git a/share/img/stroke/ref.gif b/share/img/stroke/ref.gif new file mode 100755 index 0000000..5b63b48 Binary files /dev/null and b/share/img/stroke/ref.gif differ diff --git a/share/img/stroke/refresh.gif b/share/img/stroke/refresh.gif new file mode 100755 index 0000000..9b7e599 Binary files /dev/null and b/share/img/stroke/refresh.gif differ diff --git a/share/img/stroke/save.gif b/share/img/stroke/save.gif new file mode 100755 index 0000000..b1b2ac2 Binary files /dev/null and b/share/img/stroke/save.gif differ diff --git a/share/img/stroke/save_all.gif b/share/img/stroke/save_all.gif new file mode 100755 index 0000000..1330451 Binary files /dev/null and b/share/img/stroke/save_all.gif differ diff --git a/share/img/stroke/save_as.gif b/share/img/stroke/save_as.gif new file mode 100755 index 0000000..bcc93de Binary files /dev/null and b/share/img/stroke/save_as.gif differ diff --git a/share/img/stroke/section.gif b/share/img/stroke/section.gif new file mode 100755 index 0000000..d77b57c Binary files /dev/null and b/share/img/stroke/section.gif differ diff --git a/share/img/stroke/spellcheck.gif b/share/img/stroke/spellcheck.gif new file mode 100755 index 0000000..72c1d87 Binary files /dev/null and b/share/img/stroke/spellcheck.gif differ diff --git a/share/img/stroke/ssection.gif b/share/img/stroke/ssection.gif new file mode 100755 index 0000000..beb8719 Binary files /dev/null and b/share/img/stroke/ssection.gif differ diff --git a/share/img/stroke/sssection.gif b/share/img/stroke/sssection.gif new file mode 100755 index 0000000..69289d0 Binary files /dev/null and b/share/img/stroke/sssection.gif differ diff --git a/share/img/stroke/subparagraph.gif b/share/img/stroke/subparagraph.gif new file mode 100755 index 0000000..af65b96 Binary files /dev/null and b/share/img/stroke/subparagraph.gif differ diff --git a/share/img/stroke/table.gif b/share/img/stroke/table.gif new file mode 100755 index 0000000..0f9108c Binary files /dev/null and b/share/img/stroke/table.gif differ diff --git a/share/img/stroke/table_bottom.gif b/share/img/stroke/table_bottom.gif new file mode 100755 index 0000000..196951b Binary files /dev/null and b/share/img/stroke/table_bottom.gif differ diff --git a/share/img/stroke/table_center.gif b/share/img/stroke/table_center.gif new file mode 100755 index 0000000..25fe97b Binary files /dev/null and b/share/img/stroke/table_center.gif differ diff --git a/share/img/stroke/table_cols.gif b/share/img/stroke/table_cols.gif new file mode 100755 index 0000000..ae1546d Binary files /dev/null and b/share/img/stroke/table_cols.gif differ diff --git a/share/img/stroke/table_double.bmp b/share/img/stroke/table_double.bmp new file mode 100755 index 0000000..14aea9e Binary files /dev/null and b/share/img/stroke/table_double.bmp differ diff --git a/share/img/stroke/table_double.gif b/share/img/stroke/table_double.gif new file mode 100755 index 0000000..aadf22c Binary files /dev/null and b/share/img/stroke/table_double.gif differ diff --git a/share/img/stroke/table_empty.bmp b/share/img/stroke/table_empty.bmp new file mode 100755 index 0000000..9000f15 Binary files /dev/null and b/share/img/stroke/table_empty.bmp differ diff --git a/share/img/stroke/table_empty.gif b/share/img/stroke/table_empty.gif new file mode 100755 index 0000000..291e00e Binary files /dev/null and b/share/img/stroke/table_empty.gif differ diff --git a/share/img/stroke/table_full.bmp b/share/img/stroke/table_full.bmp new file mode 100755 index 0000000..1bf15ac Binary files /dev/null and b/share/img/stroke/table_full.bmp differ diff --git a/share/img/stroke/table_full.gif b/share/img/stroke/table_full.gif new file mode 100755 index 0000000..32935b9 Binary files /dev/null and b/share/img/stroke/table_full.gif differ diff --git a/share/img/stroke/table_lines.gif b/share/img/stroke/table_lines.gif new file mode 100755 index 0000000..67046b2 Binary files /dev/null and b/share/img/stroke/table_lines.gif differ diff --git a/share/img/stroke/table_top.gif b/share/img/stroke/table_top.gif new file mode 100755 index 0000000..3ff320a Binary files /dev/null and b/share/img/stroke/table_top.gif differ diff --git a/share/img/stroke/tcl.gif b/share/img/stroke/tcl.gif new file mode 100755 index 0000000..a39dac3 Binary files /dev/null and b/share/img/stroke/tcl.gif differ diff --git a/share/img/stroke/tcl_file.gif b/share/img/stroke/tcl_file.gif new file mode 100755 index 0000000..a39dac3 Binary files /dev/null and b/share/img/stroke/tcl_file.gif differ diff --git a/share/img/stroke/tex.gif b/share/img/stroke/tex.gif new file mode 100755 index 0000000..a40e5cb Binary files /dev/null and b/share/img/stroke/tex.gif differ diff --git a/share/img/stroke/tex_16x16.xpm b/share/img/stroke/tex_16x16.xpm new file mode 100755 index 0000000..68ac5b7 --- /dev/null +++ b/share/img/stroke/tex_16x16.xpm @@ -0,0 +1,29 @@ +/* XPM */ +static char * tex_16x16_xpm[] = { +"16 16 10 1", +" c None", +". c #0015FC", +"+ c #FF0000", +"@ c #000000", +"# c #C1CD35", +"$ c #F6FF00", +"% c #F7C300", +"& c #F8AE00", +"* c #F7D600", +"= c #F7D800", +" ", +" ", +"........ ++ ++ ", +".@@..@@.@ +@ +@@", +".@ ..@ .@ ++@+@ ", +" @ ..@ @ ++@@ ", +" .#$$$$$$%+@ ", +" ..$$@@@&*++@ ", +" ..$$@ +$@+@ ", +" ..$$@ % @ + ", +" ...#$$=%+ +++", +" @@$$@@$@@ @@", +" $$ @$ ", +" $$ $$@ ", +" $$$$$$$$@ ", +" @@@@@@@@ "}; diff --git a/share/img/stroke/tex_tmpl.gif b/share/img/stroke/tex_tmpl.gif new file mode 100755 index 0000000..16f9803 Binary files /dev/null and b/share/img/stroke/tex_tmpl.gif differ diff --git a/share/img/stroke/text.gif b/share/img/stroke/text.gif new file mode 100755 index 0000000..c64635c Binary files /dev/null and b/share/img/stroke/text.gif differ diff --git a/share/img/stroke/tk.gif b/share/img/stroke/tk.gif new file mode 100755 index 0000000..a7ce73b Binary files /dev/null and b/share/img/stroke/tk.gif differ diff --git a/share/img/stroke/tk_file.gif b/share/img/stroke/tk_file.gif new file mode 100755 index 0000000..a7ce73b Binary files /dev/null and b/share/img/stroke/tk_file.gif differ diff --git a/share/img/stroke/tle.gif b/share/img/stroke/tle.gif new file mode 100755 index 0000000..404e054 Binary files /dev/null and b/share/img/stroke/tle.gif differ diff --git a/share/img/stroke/top.gif b/share/img/stroke/top.gif new file mode 100755 index 0000000..76b4cab Binary files /dev/null and b/share/img/stroke/top.gif differ diff --git a/share/img/stroke/underline.gif b/share/img/stroke/underline.gif new file mode 100755 index 0000000..06f7541 Binary files /dev/null and b/share/img/stroke/underline.gif differ diff --git a/share/img/stroke/undo.gif b/share/img/stroke/undo.gif new file mode 100755 index 0000000..0f832bf Binary files /dev/null and b/share/img/stroke/undo.gif differ diff --git a/share/img/stroke/verb.gif b/share/img/stroke/verb.gif new file mode 100755 index 0000000..367cef2 Binary files /dev/null and b/share/img/stroke/verb.gif differ diff --git a/share/img/stroke/xi-omega.gif b/share/img/stroke/xi-omega.gif new file mode 100755 index 0000000..8ec3288 Binary files /dev/null and b/share/img/stroke/xi-omega.gif differ diff --git a/share/msg/en.msg b/share/msg/en.msg new file mode 100755 index 0000000..cc2616b --- /dev/null +++ b/share/msg/en.msg @@ -0,0 +1,240 @@ +########################################################### +# Tcl/Tk Project Manager # +# english messages file # +# Copyright (c) "CONERO lab", 2001, http://conero.lrn.ru # +# Author: Sergey Kalinin (aka BanZaj) banzaj@lrn.ru # +########################################################### + +::msgcat::mcset en "About ..." +::msgcat::mcset en "Add to project" +::msgcat::mcset en "Alignment" +::msgcat::mcset en "Author" +::msgcat::mcset en "Authors" +::msgcat::mcset en "Text autoformat" +::msgcat::mcset en "Cancel" +::msgcat::mcset en "Can't found file:" +::msgcat::mcset en "Close" +::msgcat::mcset en "Close all" +::msgcat::mcset en "Close Project Manager?" +::msgcat::mcset en "Command options" +::msgcat::mcset en "Company" +::msgcat::mcset en "Contents" +::msgcat::mcset en "Convert to" +::msgcat::mcset en "Copy" +::msgcat::mcset en "Copy into clipboard" +::msgcat::mcset en "Create backup files" +::msgcat::mcset en "Create from template" +::msgcat::mcset en "Create new project" +::msgcat::mcset en "Create new file" +::msgcat::mcset en "Create directory" +::msgcat::mcset en "Curent directory" +::msgcat::mcset en "Cut" +::msgcat::mcset en "Cut into clipboard" +::msgcat::mcset en "CVS commit" +::msgcat::mcset en "CVS update" +::msgcat::mcset en "Date" +::msgcat::mcset en "Delete" +::msgcat::mcset en "Delete backup files" +::msgcat::mcset en "Delete project" +::msgcat::mcset en "Delete from project" +::msgcat::mcset en "Docs dir" +::msgcat::mcset en "Document" +::msgcat::mcset en "Don't find any system encoding for" +::msgcat::mcset en "You must write correctly encode name in" +::msgcat::mcset en "Don't selected file" +::msgcat::mcset en "E-mail" +::msgcat::mcset en "Edit" +::msgcat::mcset en "Editor font" +::msgcat::mcset en "Editor font bold" +::msgcat::mcset en "Encoding" +::msgcat::mcset en "Error open URL" +::msgcat::mcset en "Exit" +::msgcat::mcset en "File" +::msgcat::mcset en "file" +::msgcat::mcset en "Files" +::msgcat::mcset en "File already exists. Overwrite?" +::msgcat::mcset en "File modify" +::msgcat::mcset en "File not found" +::msgcat::mcset en "File was modifyed. Close?" +::msgcat::mcset en "File was modifyed. Save?" +::msgcat::mcset en "File saved" +::msgcat::mcset en "Find" +::msgcat::mcset en "Font normal" +::msgcat::mcset en "Font bold" +::msgcat::mcset en "Goto line" +::msgcat::mcset en "Help" +::msgcat::mcset en "Home dir" +::msgcat::mcset en "Home page" +::msgcat::mcset en "Image dir" +::msgcat::mcset en "Input file name" +::msgcat::mcset en "Included packages" +::msgcat::mcset en "Insert" +::msgcat::mcset en "Insert image" +::msgcat::mcset en "Insert curent date-time" +::msgcat::mcset en "Interface language" +::msgcat::mcset en "Install Tcl/Tk Project Manager" +::msgcat::mcset en "Labels" +::msgcat::mcset en "Line number" +::msgcat::mcset en "Make RPM" +::msgcat::mcset en "Make archive" +::msgcat::mcset en "Make backup files" +::msgcat::mcset en "Must be one file select!" +::msgcat::mcset en "Must be one or two file select!" +::msgcat::mcset en "Modules" +::msgcat::mcset en "New" +::msgcat::mcset en "New file" +::msgcat::mcset en "New project" +::msgcat::mcset en "Not implemented yet" +::msgcat::mcset en "Not found active project" +::msgcat::mcset en "Open" +::msgcat::mcset en "Open file" +::msgcat::mcset en "Open project" +::msgcat::mcset en "Opened file in progress" +::msgcat::mcset en "Overwrite" +::msgcat::mcset en "Paste" +::msgcat::mcset en "Paste from clipboard" +::msgcat::mcset en "Pakages" +::msgcat::mcset en "Pakage setup" +::msgcat::mcset en "Preview" +::msgcat::mcset en "Print ..." +::msgcat::mcset en "Print" +::msgcat::mcset en "Print command" +::msgcat::mcset en "Print selected text" +::msgcat::mcset en "Program finished successfully" +::msgcat::mcset en "Program failed" +::msgcat::mcset en "Programm output" +::msgcat::mcset en "Project" +::msgcat::mcset en "Projects" +::msgcat::mcset en "Project settings" +::msgcat::mcset en "Project name" +::msgcat::mcset en "Project file" +::msgcat::mcset en "Project dir" +::msgcat::mcset en "Question" +::msgcat::mcset en "Quit without saving?" +::msgcat::mcset en "Redo" +::msgcat::mcset en "Refresh" +::msgcat::mcset en "Releace" +::msgcat::mcset en "Replace with" +::msgcat::mcset en "Replace all" +::msgcat::mcset en "Release" +::msgcat::mcset en "Remove selection" +::msgcat::mcset en "Remove to file" +::msgcat::mcset en "RPM dir" +::msgcat::mcset en "RPM file mask" +::msgcat::mcset en "Run" +::msgcat::mcset en "Run File" +::msgcat::mcset en "Running project" +::msgcat::mcset en "Save" +::msgcat::mcset en "Save as" +::msgcat::mcset en "Save file" +::msgcat::mcset en "Save file as" +::msgcat::mcset en "Save as" +::msgcat::mcset en "Save as file" +::msgcat::mcset en "Save as image" +::msgcat::mcset en "Save all" +::msgcat::mcset en "Search" +::msgcat::mcset en "Select" +::msgcat::mcset en "Select directory" +::msgcat::mcset en "Selected directory" +::msgcat::mcset en "Select image" +::msgcat::mcset en "Settings" +::msgcat::mcset en "Show backup files" +::msgcat::mcset en "Spell check" +::msgcat::mcset en "Syntax check" +::msgcat::mcset en "Tcl interpretator" +::msgcat::mcset en "TGZ dir" +::msgcat::mcset en "TGZ file mask" +::msgcat::mcset en "Thanks" +::msgcat::mcset en "Toolbar" +::msgcat::mcset en "Undo" +::msgcat::mcset en "Update" +::msgcat::mcset en "Version" +::msgcat::mcset en "View" +::msgcat::mcset en "Warning" +::msgcat::mcset en "Was replacement" +::msgcat::mcset en "Work dir" +::msgcat::mcset en "Work with file" + +## fonts +::msgcat::mcset en "tiny" +::msgcat::mcset en "scriptsize" +::msgcat::mcset en "footnotesize" +::msgcat::mcset en "small" +::msgcat::mcset en "Normal" +::msgcat::mcset en "large" +::msgcat::mcset en "Large" +::msgcat::mcset en "LARGE" +::msgcat::mcset en "huge" +::msgcat::mcset en "Huge" + +::msgcat::mcset en "Romanic" +::msgcat::mcset en "Bold Face" +::msgcat::mcset en "Italic" +::msgcat::mcset en "Slanted" +::msgcat::mcset en "Sans Serif" +::msgcat::mcset en "Small Caps" +::msgcat::mcset en "Typewriter Typeset" + +::msgcat::mcset en "Add enumerate list" +::msgcat::mcset en "Add itemize list" +::msgcat::mcset en "Add table" +::msgcat::mcset en "Math mode" +::msgcat::mcset en "Insert function" +::msgcat::mcset en "Sections" +::msgcat::mcset en "Font type" +::msgcat::mcset en "Font size" +::msgcat::mcset en "Emphasise" +::msgcat::mcset en "Align center" +::msgcat::mcset en "Align left" +::msgcat::mcset en "Align right" +::msgcat::mcset en "Make" +::msgcat::mcset en "Title" +::msgcat::mcset en "Make title" +::msgcat::mcset en "Title page" +::msgcat::mcset en "Table of Contents" +::msgcat::mcset en "List of Tables" +::msgcat::mcset en "List of Figures" +::msgcat::mcset en "The Bibliography" +::msgcat::mcset en "Appendix" +::msgcat::mcset en "Part" +::msgcat::mcset en "Chapter" +::msgcat::mcset en "Section" +::msgcat::mcset en "SubSection" +::msgcat::mcset en "SubSubSection" +::msgcat::mcset en "Paragraph" +::msgcat::mcset en "SubParagraph" +::msgcat::mcset en "Input number of columns" +::msgcat::mcset en "Line type" +::msgcat::mcset en "Table position" + +::msgcat::mcset en "Language" +::msgcat::mcset en "Entire file" +::msgcat::mcset en "From cursor" +::msgcat::mcset en "Start" +::msgcat::mcset en "Accept" +::msgcat::mcset en "Next" +::msgcat::mcset en "Add to dict" +::msgcat::mcset en "Add lowercase" +::msgcat::mcset en "Stop checking" +::msgcat::mcset en "Checking complete" + +::msgcat::mcset en "Greek" +::msgcat::mcset en "Greek 1" +::msgcat::mcset en "Greek 2" +::msgcat::mcset en "Mathematical fonts" +::msgcat::mcset en "Accents" + + + + + + + + + + + + + + + diff --git a/share/msg/ru.msg b/share/msg/ru.msg new file mode 100755 index 0000000..f55c2d6 --- /dev/null +++ b/share/msg/ru.msg @@ -0,0 +1,256 @@ +########################################################### +# Tcl/Tk Project Manager # +# russian messages file # +# Copyright (c) "CONERO lab", 2001, http://conero.lrn.ru # +# Author: Sergey Kalinin (aka BanZaj) banzaj@lrn.ru # +########################################################### + +::msgcat::mcset ru "About ..." "п· п©я─п╬пЁя─п╟п╪п╪п╣" +::msgcat::mcset ru "Add to project" "п■п╬п╠п╟п╡п╦я┌я▄ п╡ п©я─п╬п╣п╨я┌" +::msgcat::mcset ru "Archive created in" "п░я─я┘п╦п╡ п©п╬п╪п╣я┴п╣п╫ п╡" +::msgcat::mcset ru "Alignment" "п▓я▀я─п╟п╡п╫п╦п╡п╟п╫п╦п╣" +::msgcat::mcset ru "Author" "п░п╡я┌п╬я─" +::msgcat::mcset ru "Authors" "п░п╡я┌п╬я─я▀" +::msgcat::mcset ru "Text autoformat" "п░п╡я┌п╬я└п╬я─п╪п╟я┌ я┌п╣п╨я│я┌п╟" +::msgcat::mcset ru "Cancel" "п·я┌п╪п╣п╫п╟" +::msgcat::mcset ru "Can't found file:" "п²п╣ п╫п╟п╧п╢п╣п╫ я└п╟п╧п╩:" +::msgcat::mcset ru "Close" "п≈п╟п╨я─я▀я┌я▄" +::msgcat::mcset ru "Close all" "п≈п╟п╨я─я▀я┌я▄ п╡я│п╣" +::msgcat::mcset ru "Close Project Manager?" "п▓я▀п╧я┌п╦ п╦п╥ п©я─п╬пЁя─п╟п╪п╪я▀?" +::msgcat::mcset ru "Command options" "п·п©я├п╦п╦ п╨п╬п╪п╟п╫п╢я▀" +::msgcat::mcset ru "Company" "п п╬п╪п©п╟п╫п╦я▐" +::msgcat::mcset ru "Contents" "п║п╬п╢п╣я─п╤п╟п╫п╦п╣" +::msgcat::mcset ru "Convert to" "п÷я─п╣п╬п╠я─п╟п╥п╬п╡п╟я┌я▄ п╡" +::msgcat::mcset ru "Copy" "п║п╨п╬п©п╦я─п╬п╡п╟я┌я▄" +::msgcat::mcset ru "Copy into clipboard" "п║п╨п╬п©п╦я─п╬п╡п╟я┌я▄ п╡ п╠я┐я└п╣я─" +::msgcat::mcset ru "Create" "п║п╬п╥п╢п╟я┌я▄" +::msgcat::mcset ru "Create from template" "п║п╬п╥п╢п╟я┌я▄ п╦п╥ я┬п╟п╠п╩п╬п╫п╟" +::msgcat::mcset ru "Create new project" "п║п╬п╥п╢п╟я┌я▄ п╫п╬п╡я▀п╧ п©я─п╬п╣п╨я┌" +::msgcat::mcset ru "Create new file" "п║п╬п╥п╢п╟я┌я▄ п╫п╬п╡я▀п╧ я└п╟п╧п╩" +::msgcat::mcset ru "Create directory" "п║п╬п╥п╢п╟я┌я▄ п╢п╦я─п╣п╨я┌п╬я─п╦я▌" +::msgcat::mcset ru "Create backup files" "п║п╬п╥п╢п╟п╡п╟я┌я▄ п╡я─п╣п╪п╣п╫п╫я▀п╣ я└п╟п╧п╩я▀" +::msgcat::mcset ru "Curent directory" "п╒п╣п╨я┐я┴п╦п╧ п╨п╟я┌п╟п╩п╬пЁ" +::msgcat::mcset ru "Cut" "п▓я▀я─п╣п╥п╟я┌я▄" +::msgcat::mcset ru "Cut into clipboard" "п▓я▀я─п╣п╥п╟я┌я▄ п╡ п╠я┐я└п╣я─" +::msgcat::mcset ru "CVS commit" "п÷п╬п╪п╣я│я┌п╦я┌я▄ п╡ CVS" +::msgcat::mcset ru "CVS update" "п·п╠п╫п╬п╡п╦я┌я▄ п╦п╥ CVS" +::msgcat::mcset ru "Date" "п■п╟я┌п╟" +::msgcat::mcset ru "Delete" "пёп╢п╟п╩п╦я┌я▄" +::msgcat::mcset ru "Delete file" "пёп╢п╟п╩п╦я┌я▄ я└п╟п╧п╩" +::msgcat::mcset ru "Delete backup files" "пёп╢п╟п╩я▐я┌я▄ п╡я─п╣п╪п╣п╫п╫я▀п╣ я└п╟п╧п╩я▀" +::msgcat::mcset ru "Delete project" "пёп╢п╟п╩п╦я┌я▄ п©я─п╬п╣п╨я┌" +::msgcat::mcset ru "Delete from project" "пёп╢п╟п╩п╦я┌я▄ п╦п╥ п©я─п╬п╣п╨я┌п╟" +::msgcat::mcset ru "Docs dir" "п п╟я┌п╟п╩п╬пЁ п╢п╬п╨я┐п╪п╣п╫я┌п╟я├п╦п╦" +::msgcat::mcset ru "Document" "п■п╬п╨я┐п╪п╣п╫я┌" +::msgcat::mcset ru "Don't find any system encoding for" "п²п╣ п╫п╟п╧п╢п╣п╫п╟ я│п╦я│я┌п╣п╪п╫п╟я▐ п╨п╬п╢п╦я─п╬п╡п╨п╟ я│п╬п╬я┌п╡п╣я┌я│п╡я┐я▌я┴п╟я▐" +::msgcat::mcset ru "You must write correctly encode name in" "п▓я▀ п╢п╬п╩п╤п╫я▀ п╡п╫п╣я│я┌п╦ я│п╬п╬я┌п╡п╣я┌я│п╡я┐я▌я┴я┐я▌ п╥п╟п©п╦я│я▄ п╡" +::msgcat::mcset ru "Don't selected file" "п²п╣ п╬п©я─п╣п╢п╣п╩п╣п╫ я└п╟п╧п╩" +::msgcat::mcset ru "E-mail" "п╜п╩. п©п╬я┤я┌п╟" +::msgcat::mcset ru "Edit" "п═п╣п╢п╟п╨я┌п╦я─п╬п╡п╟п╫п╦п╣" +::msgcat::mcset ru "Editor font" "п╗я─п╦я└я┌ я─п╣п╢п╟п╨я┌п╬я─п╟" +::msgcat::mcset ru "Editor font bold" "п╗я─п╦я└я┌ я─п╣п╢п╟п╨я┌п╬я─п╟ п╤п╦я─п╫я▀п╧" +::msgcat::mcset ru "Encoding" "п п╬п╢п╦я─п╬п╡п╨п╟" +::msgcat::mcset ru "Error open URL" "п·я┬п╦п╠п╨п╟ п╬я┌п╨я─я▀я┌п╦я▐ URL" +::msgcat::mcset ru "Exit" "п▓я▀я┘п╬п╢" +::msgcat::mcset ru "File" "п╓п╟п╧п╩" +::msgcat::mcset ru "file" "я└п╟п╧п╩" +::msgcat::mcset ru "Files" "п╓п╟п╧п╩я▀" +::msgcat::mcset ru "File already exists. Overwrite?" "п╓п╟п╧п╩ я┐п╤п╣ я│я┐я┴п╣я│я┌п╡я┐п╣я┌. п÷п╣я─п╣п©п╦я│п╟я┌я▄?" +::msgcat::mcset ru "File not found" "п╓п╟п╧п╩ п╫п╣ п╫п╟п╧п╢п╣п╫" +::msgcat::mcset ru "File was modifyed. Close?" "п╓п╟п╧п╩ п╠я▀п╩ п╦п╥п╪п╣п╫п╣п╫. п≈п╟п╨я─я▀я┌я▄?" +::msgcat::mcset ru "File was modifyed. Save?" "п╓п╟п╧п╩ п╠я▀п╩ п╦п╥п╪п╣п╫п╣п╫. п║п╬я┘я─п╟п╫п╦я┌я▄?" +::msgcat::mcset ru "File modify" "п╓п╟п╧п╩ п╦п╥п╪п╣п╫п╣п╫" +::msgcat::mcset ru "File saved" "п╓п╟п╧п╩ я│п╬я┘я─п╟п╫п╣п╫" +::msgcat::mcset ru "Find" "п²п╟п╧я┌п╦" +::msgcat::mcset ru "Font normal" "п²п╬я─п╪п╟п╩я▄п╫я▀п╧ я┬я─п╦я└я┌" +::msgcat::mcset ru "Font bold" "п√п╦я─п╫я▀п╧ я┬я─п╦я└я┌" +::msgcat::mcset ru "Goto line" "п÷п╣я─п╣п╧я┌п╦ п╨ ..." +::msgcat::mcset ru "Help" "п÷п╬п╪п╬я┴я▄" +::msgcat::mcset ru "Home dir" "п■п╬п╪п╟я┬п╫п╦п╧ п╨п╟я┌п╟п╩п╬пЁ" +::msgcat::mcset ru "Home page" "п■п╬п╪п╟я┬п╫я▐я▐ я│я┌я─п╟п╫п╦я├п╟" +::msgcat::mcset ru "Image dir" "п п╟я┌п╟п╩п╬пЁ п╦п╥п╬п╠я─п╟п╤п╣п╫п╦п╧" +::msgcat::mcset ru "Input file name" "п▓п╡п╣п╢п╦я┌п╣ п╦п╪я▐ я└п╟п╧п╩п╟" +::msgcat::mcset ru "Included packages" "п÷п╬п╢п╨п╩я▌я┤п╟п╣п╪я▀п╣ п©п╟п╨п╣я┌я▀" +::msgcat::mcset ru "Insert" "п▓я│я┌п╟п╡п╨п╟" +::msgcat::mcset ru "Insert image" "п▓я│я┌п╟п╡п╦я┌я▄ п╦п╥п╬п╠я─п╟п╤п╣п╫п╦п╣" +::msgcat::mcset ru "Insert curent date-time" "п▓я│я┌п╟п╡п╦я┌я▄ я┌п╣п╨я┐я┴я┐я▌ п╢п╟я┌я┐" +::msgcat::mcset ru "Interface language" "п╞п╥я▀п╨ п╦п╫я┌п╣я─я└п╣п╧я│п╟" +::msgcat::mcset ru "Install Tcl/Tk Project Manager" "пёя│я┌п╟п╫п╬п╡п╨п╟ Tcl/Tk Project Manager" +::msgcat::mcset ru "Labels" "п°п╣я┌п╨п╦" +::msgcat::mcset ru "Line number" "п²п╬п╪п╣я─ я│я┌я─п╬п╨п╦" +::msgcat::mcset ru "Make RPM" "п║п╬п╥п╢п╟я┌я▄ RPM" +::msgcat::mcset ru "Make archive" "п║п╬п╥п╢п╟я┌я▄ п╟я─я┘п╦п╡" +::msgcat::mcset ru "Make backup files" "п║п╬п╥п╢п╟п╡п╟я┌я▄ п╡я─п╣п╪п╣п╫п╫я▀п╣ я└п╟п╧п╩я▀" +::msgcat::mcset ru "Modules" "п°п╬п╢я┐п╩п╦" +::msgcat::mcset ru "Must be one file select!" "п▓я▀ п╢п╬п╩п╤п╫я▀ п╡я▀п╠я─п╟я┌я▄ я┌п╬п╩я▄п╨п╬ п╬п╢п╦п╫ я└п╟п╧п╩" +::msgcat::mcset ru "Must be one or two file select!" "п▓я▀ п╢п╬п╩п╤п╫я▀ п╡я▀п╠я─п╟я┌я▄ п╬п╢п╦п╫ п╦п╩п╦ п╢п╡п╟ я└п╟п╧п╩п╟" +::msgcat::mcset ru "New" "п²п╬п╡я▀п╧" +::msgcat::mcset ru "New file" "п²п╬п╡я▀п╧ я└п╟п╧п╩" +::msgcat::mcset ru "New project" "п²п╬п╡я▀п╧ п©я─п╬п╣п╨я┌" +::msgcat::mcset ru "Not implemented yet" "п■п╟п╫п╫п╟я▐ я└я┐п╫п╨я├п╦я▐ п©п╬п╨п╟ п╫п╣ я─п╣п╟п╩п╦п╥п╬п╡п╟п╫п╟" +::msgcat::mcset ru "Not found active project" "п²п╣ п╬п©я─п╣п╢п╣п╩п╣п╫ п╟п╨я┌п╦п╡п╫я▀п╧ п©я─п╬п╣п╨я┌" +::msgcat::mcset ru "Open" "п·я┌п╨я─я▀я┌я▄" +::msgcat::mcset ru "Open file" "п·я┌п╨я─я▀я┌я▄ я└п╟п╧п╩" +::msgcat::mcset ru "Open project" "п·я┌п╨я─я▀я┌я▄ п©я─п╬п╣п╨я┌" +::msgcat::mcset ru "Opened file in progress" "п·я┌п╨я─я▀я┌п╦п╣ я└п╟п╧п╩п╟" +::msgcat::mcset ru "Overwrite" "п≈п╟п╪п╣п╫п╟" +::msgcat::mcset ru "Pakages" "п÷п╟п╨п╣я┌я▀" +::msgcat::mcset ru "Pakage setup" "п²п╟я│я┌я─п╬п╧п╨п╟ п©п╟п╨п╣я┌п╬п╡" +::msgcat::mcset ru "Paste" "п▓я│я┌п╟п╡п╦я┌я▄" +::msgcat::mcset ru "Paste from clipboard" "п▓я│я┌п╟п╡п╦я┌я▄ п╦п╥ п╠я┐я└п╣я─п╟" +::msgcat::mcset ru "Preview" "п÷я─п╣п╢п╡п╟я─п╦я┌п╣п╩я▄п╫я▀п╧ п©я─п╬я│п╪п╬я┌я─" +::msgcat::mcset ru "Preview formula" "п÷п╬п╨п╟п╥п╟я┌я▄ я└п╬я─п╪я┐п╩я┐" +::msgcat::mcset ru "Preview text" "п÷п╬п╨п╟п╥п╟я┌я▄ я┌п╣п╨я│я┌" +::msgcat::mcset ru "Print ..." "п÷п╣я┤п╟я┌я▄ ..." +::msgcat::mcset ru "Print" "п÷п╣я┤п╟я┌я▄" +::msgcat::mcset ru "Print command" "п п╬п╪п╟п╫п╢п╟ п©п╣я┤п╟я┌п╦" +::msgcat::mcset ru "Print selected text" "п÷п╣я┤п╟я┌п╟я┌я▄ п╡я▀п╢п╣п╩п╣п╫п╫я▀п╧ я┌п╣п╨я│я┌" +::msgcat::mcset ru "Program finished successfully" "п▓я▀п©п╬п╩п╫п╣п╫п╦п╣ п╥п╟п╡п╣я─я┬п╣п╫п╬" +::msgcat::mcset ru "Program failed" "п·я┬п╦п╠п╨п╟ п╡я▀п©п╬п╩п╫п╣п╫п╦я▐" +::msgcat::mcset ru "Programm output" "п▓я▀п╡п╬п╢ п©я─п╬пЁя─п╟п╪п╪я▀" +::msgcat::mcset ru "Project" "п÷я─п╬п╣п╨я┌" +::msgcat::mcset ru "Projects" "п÷я─п╬п╣п╨я┌я▀" +::msgcat::mcset ru "Project settings" "пёя│я┌п╟п╫п╬п╡п╨п╦ п©я─п╬п╣п╨я┌п╟" +::msgcat::mcset ru "Project name" "п²п╟п╥п╡п╟п╫п╦п╣ п©я─п╬п╣п╨я┌п╟" +::msgcat::mcset ru "Project file" "п╓п╟п╧п╩ п©я─п╬п╣п╨я┌п╟" +::msgcat::mcset ru "Project dir" "п п╟я┌п╟п╩п╬пЁ п©я─п╬п╣п╨я┌п╟" +::msgcat::mcset ru "Quit without saving?" "п▓я▀п╧я┌п╦ п╠п╣п╥ я│п╬я┘я─п╟п╫п╣п╫п╦я▐?" +::msgcat::mcset ru "Question" "п▓п╬п©я─п╬я│" +::msgcat::mcset ru "Redo" "п÷п╬п╡я┌п╬я─п╦я┌я▄" +::msgcat::mcset ru "Refresh" "п·п╠п╫п╬п╡п╦я┌я▄" +::msgcat::mcset ru "Replace" "п≈п╟п╪п╣п╫п╟" +::msgcat::mcset ru "Replace with" "п≈п╟п╪п╣п╫п╦я┌я▄ п╫п╟" +::msgcat::mcset ru "Replace all" "п≈п╟п╪п╣п╫п╦я┌я▄ п╡я│п╣" +::msgcat::mcset ru "Release" "п▓я▀п©я┐я│п╨" +::msgcat::mcset ru "Remove selection" "п║п╫я▐я┌я▄ п╡я▀п╢п╣п╩п╣п╫п╦п╣" +::msgcat::mcset ru "Remove to file" "п÷п╣я─п╣п╪п╣я│я┌п╦я┌я▄ п╡ я└п╟п╧п╩" +::msgcat::mcset ru "RPM dir" "п п╟я┌п╟п╩п╬пЁ RPM" +::msgcat::mcset ru "RPM file mask" "п°п╟я│п╨п╟ RPM" +::msgcat::mcset ru "Run" "п▓я▀п©п╬п╩п╫п╦я┌я▄" +::msgcat::mcset ru "Run file" "п≈п╟п©я┐я│п╨ я└п╟п╧п╩п╟" +::msgcat::mcset ru "Running project" "п▓я▀п©п╬п╩п╫п╣п╫п╦п╣ п©я─п╬п╣п╨я┌п╟" +::msgcat::mcset ru "Save" "п║п╬я┘я─п╟п╫п╦я┌я▄" +::msgcat::mcset ru "Save file" "п║п╬я┘я─п╟п╫п╦я┌я▄ я└п╟п╧п╩" +::msgcat::mcset ru "Save file as" "п║п╬я┘я─п╟п╫п╦я┌я▄ я└п╟п╧п╩ п╨п╟п╨ ..." +::msgcat::mcset ru "Save as" "п║п╬я┘я─п╟п╫п╦я┌я▄ п╨п╟п╨ ..." +::msgcat::mcset ru "Save as file" "п║п╬я┘я─п╟п╫п╦я┌я▄ п╨п╟п╨ я└п╟п╧п╩" +::msgcat::mcset ru "Save as image" "п║п╬я┘я─п╟п╫п╦я┌я▄ п╨п╟п╨ п╦п╥п╬п╠я─п╟п╤п╣п╫п╦п╣" +::msgcat::mcset ru "Save all" "п║п╬я┘я─п╟п╫п╦я┌я▄ п╡я│п╣" +::msgcat::mcset ru "Search" "п÷п╬п╦я│п╨" +::msgcat::mcset ru "Select" "п▓я▀п╠я─п╟я┌я▄" +::msgcat::mcset ru "Select All" "п▓я▀п╠я─п╟я┌я▄ п╡я│я▒" +::msgcat::mcset ru "Select directory" "п▓я▀п╠п╬я─ п╢п╦я─п╣п╨я┌п╬я─п╦п╦" +::msgcat::mcset ru "Selected directory" "п■п╦я─п╣п╨я┌п╬я─п╦я▐" +::msgcat::mcset ru "Select image" "п▓я▀п╠п╬я─ п╦п╥п╬п╠я─п╟п╤п╣п╫п╦я▐" +::msgcat::mcset ru "Settings" "пёя│я┌п╟п╫п╬п╡п╨п╦" +::msgcat::mcset ru "Show backup files" "п÷п╬п╨п╟п╥я▀п╡п╟я┌я▄ п╡я─п╣п╪п╣п╫п╫я▀п╣ я└п╟п╧п╩я▀" +::msgcat::mcset ru "Spell check" "п·я─я└п╬пЁя─п╟я└п╦я▐" +::msgcat::mcset ru "Split window" "п═п╟п╥п╢п╣п╩п╦я┌я▄ п╬п╨п╫п╬" +::msgcat::mcset ru "Syntax check" "п÷я─п╬п╡п╣я─п╨п╟ я│п╦п╫я┌п╟п╨я│п╦я│п╟" +::msgcat::mcset ru "Tcl interpetator" "Tcl п╦п╫я┌п╣я─п©я─п╣я┌п╟я┌п╬я─" +::msgcat::mcset ru "Thanks" "п▒п╩п╟пЁп╬п╢п╟я─п╫п╬я│я┌п╦" +::msgcat::mcset ru "TGZ dir" "п п╟я┌п╟п╩п╬пЁ TGZ" +::msgcat::mcset ru "TGZ file mask" "п°п╟я│п╨п╟ TGZ" +::msgcat::mcset ru "Toolbar" "п÷п╟п╫п╣п╩я▄ п╦п╫я│я┌я─я┐п╪п╣п╫я┌п╬п╡" +::msgcat::mcset ru "Undo" "п·я┌п╪п╣п╫п╦я┌я▄" +::msgcat::mcset ru "Update" "п·п╠п╫п╬п╡п╦я┌я▄" +::msgcat::mcset ru "Version" "п▓п╣я─я│п╦я▐" +::msgcat::mcset ru "View" "п▓п╦п╢" +::msgcat::mcset ru "Warning" "п▓п╫п╦п╪п╟п╫п╦п╣" +::msgcat::mcset ru "Was replacement" "п▒я▀п╩п╬ п╥п╟п╪п╣п╫п╣п╫п╬" +::msgcat::mcset ru "Work dir" "п═п╟п╠п╬я┤п╦п╧ п╨п╟я┌п╟п╩п╬пЁ" +::msgcat::mcset ru "Work with file" "п═п╟п╠п╬я┌п╟ я│ я└п╟п╧п╩п╬п╪" + +## fonts +::msgcat::mcset ru "tiny" "п╨я─п╬я┬п╣я┤п╫я▀п╧" +::msgcat::mcset ru "scriptsize" "п≤п╫п╢п╣п╨я│п╫я▀п╧" +::msgcat::mcset ru "footnotesize" "п║п╫п╬я│п╬я┤п╫я▀п╧" +::msgcat::mcset ru "small" "п°п╟п╩п╣п╫я▄п╨п╦п╧" +::msgcat::mcset ru "normal" "п·п╠я▀я┤п╫я▀п╧" +::msgcat::mcset ru "large" "пёп╡п╣п╩п╦я┤п╣п╫п╫я▀п╧" +::msgcat::mcset ru "Large" "п▒п╬п╩я▄я┬п╬п╧" +::msgcat::mcset ru "LARGE" "п╨я─я┐п©п╫я▀п╧" +::msgcat::mcset ru "huge" "п⌠п╦пЁп╟п╫я┌я│п╨п╦п╧" +::msgcat::mcset ru "Huge" "п·пЁя─п╬п╪п╫я▀п╧" + +::msgcat::mcset ru "Romanic" "п═п╬п╪п╟п╫я│п╨п╦п╧" +::msgcat::mcset ru "Sans Serif" "п═я┐п╠п╩п╣п╫п╫я▀п╧" +::msgcat::mcset ru "Typewriter Typeset" "п°п╟я┬п╦п╫п╬п©п╦я│п╫я▀п╧" +::msgcat::mcset ru "Bold Face" "п÷п╬п╩я┐п╤п╦я─п╫я▀п╧" +::msgcat::mcset ru "Middle Face" "п║я─п╣п╢п╫п╦п╧" +::msgcat::mcset ru "Up" "п÷я─я▐п╪п╬п╧" +::msgcat::mcset ru "Italic" "Kя┐я─я│п╦п╡п╫я▀п╧" +::msgcat::mcset ru "Slanted" "п²п╟п╨п╩п╬п╫п╫я▀п╧" +::msgcat::mcset ru "Small Caps" "Kп╟п©п╦я┌п╣п╩я▄" + +::msgcat::mcset ru "Add enumerate list" "п²я┐п╪п╣я─п╬п╡п╟п╫п╫я▀п╧ я│п©п╦я│п╬п╨" +::msgcat::mcset ru "Add itemize list" "п²п╣ п╫я┐п╪п╣я─п╬п╡п╟п╫п╫я▀п╧ я│п©п╦я│п╬п╨" +::msgcat::mcset ru "Add table" "п▓я│я┌п╟п╡п╦я┌я▄ я┌п╟п╠п╩п╦я├я┐" +::msgcat::mcset ru "Math mode" "п°п╟я┌п╣п╪п╟я┌п╦я┤п╣я│п╨п╦п╧ я─п╣п╤п╦п╪" +::msgcat::mcset ru "Insert function" "п▓я│я┌п╟п╡п╦я┌я▄ я└я┐п╫п╨я├п╦я▌" +::msgcat::mcset ru "Font type" "п╒п╦п© я┬я─п╦я└я┌п╟" +::msgcat::mcset ru "Font size" "п═п╟п╥п╪п╣я─ я┬я─п╦я└я┌п╟" +::msgcat::mcset ru "Emphasise" "п▓я▀п╢п╣п╩п╦я┌я▄" +::msgcat::mcset ru "Align center" "п▓я▀я─п╟п╡п╫п╦п╡п╟п╫п╦п╣ п©п╬ я├п╣п╫я┌я─я┐" +::msgcat::mcset ru "Align left" "п▓я▀я─п╟п╡п╫п╦п╡п╟п╫п╦п╣ п©п╬ п╩п╣п╡п╬п╪я┐ п╨я─п╟я▌" +::msgcat::mcset ru "Align right" "п▓я▀я─п╟п╡п╫п╦п╡п╟п╫п╦п╣ п©п╬ п©я─п╟п╡п╬п╪я┐ п╨я─п╟я▌" +::msgcat::mcset ru "Make" "п║п╬п╥п╢п╟я┌я▄" +::msgcat::mcset ru "Title" "п≈п╟пЁп╬п╩п╬п╡п╬п╨" +::msgcat::mcset ru "Make title" "п▓я▀п©п╬п╩п╫п╦я┌я▄ п╥п╟пЁп╬п╩п╬п╡п╬п╨" +::msgcat::mcset ru "Title page" "п╒п╦я┌я┐п╩я▄п╫п╟я▐ я│я┌я─п╟п╫п╦я├п╟" +::msgcat::mcset ru "Table of Contents" "п·пЁп╩п╟п╡п╩п╣п╫п╦п╣" +::msgcat::mcset ru "List of Tables" "п║п©п╦я│п╬п╨ я┌п╟п╠п╩п╦я├" +::msgcat::mcset ru "List of Figures" "п║п©п╦я│п╬п╨ я└п╦пЁя┐я─" +::msgcat::mcset ru "The Bibliography" "п▒п╦п╠п╩п╦п╬пЁя─п╟я└п╦я▐" +::msgcat::mcset ru "Appendix" "п÷я─п╦п╪п╣я┤п╟п╫п╦п╣" +::msgcat::mcset ru "Part" "п╖п╟я│я┌я▄" +::msgcat::mcset ru "Chapter" "п⌠п╩п╟п╡п╟" +::msgcat::mcset ru "Section" +::msgcat::mcset ru "SubSection" +::msgcat::mcset ru "SubSubSection" +::msgcat::mcset ru "Paragraph" "п÷п╟я─п╟пЁя─п╟я└" +::msgcat::mcset ru "SubParagraph" "п÷п╬п╢п©п╟я─п╟пЁя─п╟я└" +::msgcat::mcset ru "Input number of columns" "пёп╨п╟п╤п╦я┌п╣ п╨п╬п╩п╦я┤п╣я│я┌п╡п╬ п╨п╬п╩п╬п╫п╬п╨" +::msgcat::mcset ru "Line type" "п╒п╦п© п╩п╦п╫п╦п╦" +::msgcat::mcset ru "Table position" "п═п╟я│п©п╬п╩п╬п╤п╣п╫п╦п╣ я┌п╟п╠п╩п╦я├я▀" + +::msgcat::mcset ru "Language" "п╞п╥я▀п╨" +::msgcat::mcset ru "Entire file" "п▓п╣я│я▄ я└п╟п╧п╩" +::msgcat::mcset ru "From cursor" "п║ я┌п╣п╨я┐я┴п╣п╧ п©п╬п╥п╦я├п╦п╦" +::msgcat::mcset ru "Start" "п²п╟я┤п╟я┌я▄" +::msgcat::mcset ru "Accept" "п≈п╟п╪п╣п╫п╦я┌я▄" +::msgcat::mcset ru "Next" "п÷я─п╬п©я┐я│я┌п╦я┌я▄" +::msgcat::mcset ru "Add to dict" "п■п╬п╠п╟п╡п╦я┌я▄ п╡ я│п╩п╬п╡п╟я─я▄" +::msgcat::mcset ru "Add lowercase" "п■п╬п╠п╟п╡п╦я┌я▄ я│я┌я─п╬я┤п╫я▀п╪п╦" +::msgcat::mcset ru "Stop checking" "п÷я─п╣я─п╡п╟я┌я▄ п©я─п╬п╡п╣я─п╨я┐" +::msgcat::mcset ru "Checking complete" "п÷я─п╬п╡п╣я─п╨п╟ п╥п╟п╡п╣я─я┬п╣п╫п╟" + +::msgcat::mcset ru "Greek" "п⌠я─п╣я┤п╣я│п╨п╦п╧" +::msgcat::mcset ru "Greek 1" "п⌠я─п╣я┤п╣я│п╨п╦п╧ 1" +::msgcat::mcset ru "Greek 2" "п⌠я─п╣я┤п╣я│п╨п╦п╧ 2" +::msgcat::mcset ru "Mathematical fonts" "п°п╟я┌п╣п╪п╟я┌п╦я┤п╣я│п╨п╦п╧ я┬я─п╦я└я┌" +::msgcat::mcset ru "Accents" "п░п╨я├п╣п╫я┌" + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/share/msg/ru_koi8.msg b/share/msg/ru_koi8.msg new file mode 100755 index 0000000..cb85015 --- /dev/null +++ b/share/msg/ru_koi8.msg @@ -0,0 +1,235 @@ +########################################################### +# Tcl/Tk Project Manager # +# russian messages file # +# Copyright (c) "CONERO lab", 2001, http://conero.lrn.ru # +# Author: Sergey Kalinin (aka BanZaj) banzaj@lrn.ru # +########################################################### + +::msgcat::mcset ru "About ..." "О программе" +::msgcat::mcset ru "Add to project" "Добавить в проект" +::msgcat::mcset ru "Archive created in" "Архив помещен в" +::msgcat::mcset ru "Alignment" "Выравнивание" +::msgcat::mcset ru "Author" "Автор" +::msgcat::mcset ru "Authors" "Авторы" +::msgcat::mcset ru "Text autoformat" "Автоформат текста" +::msgcat::mcset ru "Cancel" "Отмена" +::msgcat::mcset ru "Can't found file:" "Не найден файл:" +::msgcat::mcset ru "Close" "Закрыть" +::msgcat::mcset ru "Close all" "Закрыть все" +::msgcat::mcset ru "Close Project Manager?" "Выйти из программы?" +::msgcat::mcset ru "Command options" "Опции команды" +::msgcat::mcset ru "Company" "Компания" +::msgcat::mcset ru "Contents" "Содержание" +::msgcat::mcset ru "Convert to" "Преобразовать в" +::msgcat::mcset ru "Copy" "Скопировать" +::msgcat::mcset ru "Copy into clipboard" "Скопировать в буфер" +::msgcat::mcset ru "Create" "Создать" +::msgcat::mcset ru "Create from template" "Создать из шаблона" +::msgcat::mcset ru "Create new project" "Создать новый проект" +::msgcat::mcset ru "Create new file" "Создать новый файл" +::msgcat::mcset ru "Create directory" "Создать директорию" +::msgcat::mcset ru "Create backup files" "Создавать временные файлы" +::msgcat::mcset ru "Curent directory" "Текущий каталог" +::msgcat::mcset ru "Cut" "Вырезать" +::msgcat::mcset ru "Cut into clipboard" "Вырезать в буфер" +::msgcat::mcset ru "CVS commit" "Поместить в CVS" +::msgcat::mcset ru "CVS update" "Обновить из CVS" +::msgcat::mcset ru "Date" "Дата" +::msgcat::mcset ru "Delete" "Удалить" +::msgcat::mcset ru "Delete file" "Удалить файл" +::msgcat::mcset ru "Delete backup files" "Удалять временные файлы" +::msgcat::mcset ru "Delete project" "Удалить проект" +::msgcat::mcset ru "Delete from project" "Удалить из проекта" +::msgcat::mcset ru "Docs dir" "Каталог документации" +::msgcat::mcset ru "Document" "Документ" +::msgcat::mcset ru "Don't selected file" "Не определен файл" +::msgcat::mcset ru "E-mail" "Эл. почта" +::msgcat::mcset ru "Edit" "Редактирование" +::msgcat::mcset ru "Editor font" "Шрифт редактора" +::msgcat::mcset ru "Editor font bold" "Шрифт редактора жирный" +::msgcat::mcset ru "Encoding" "Кодировка" +::msgcat::mcset ru "Error open URL" "Ошибка открытия URL" +::msgcat::mcset ru "Exit" "Выход" +::msgcat::mcset ru "File" "Файл" +::msgcat::mcset ru "file" "файл" +::msgcat::mcset ru "Files" "Файлы" +::msgcat::mcset ru "File not found" "Файл не найден" +::msgcat::mcset ru "File already exists. Overwrite?" "Файл уже существует. Переписать?" +::msgcat::mcset ru "File was modifyed. Close?" "Файл был изменен. Закрыть?" +::msgcat::mcset ru "File was modifyed. Save?" "Файл был изменен. Сохранить?" +::msgcat::mcset ru "File modify" "Файл изменен" +::msgcat::mcset ru "File saved" "Файл сохранен" +::msgcat::mcset ru "Find" "Найти" +::msgcat::mcset ru "Font normal" "Нормальный шрифт" +::msgcat::mcset ru "Font bold" "Жирный шрифт" +::msgcat::mcset ru "Goto line" "Перейти к ..." +::msgcat::mcset ru "Help" "Помощь" +::msgcat::mcset ru "Home dir" "Домашний каталог" +::msgcat::mcset ru "Home page" "Домашняя страница" +::msgcat::mcset ru "Image dir" "Каталог изображений" +::msgcat::mcset ru "Input file name" "Введите имя файла" +::msgcat::mcset ru "Included packages" "Подключаемые пакеты" +::msgcat::mcset ru "Insert" "Вставка" +::msgcat::mcset ru "Insert image" "Вставить изображение" +::msgcat::mcset ru "Interface language" "Язык интерфейса" +::msgcat::mcset ru "Install Tcl/Tk Project Manager" "Установка Tcl/Tk Project Manager" +::msgcat::mcset ru "Labels" "Метки" +::msgcat::mcset ru "Line number" "Номер строки" +::msgcat::mcset ru "Make RPM" "Создать RPM" +::msgcat::mcset ru "Make archive" "Создать архив" +::msgcat::mcset ru "Make backup files" "Создавать временные файлы" +::msgcat::mcset ru "Modules" "Модули" +::msgcat::mcset ru "Must be one file select!" "Вы должны выбрать только один файл" +::msgcat::mcset ru "Must be one or two file select!" "Вы должны выбрать один или два файла" +::msgcat::mcset ru "New" "Новый" +::msgcat::mcset ru "New file" "Новый файл" +::msgcat::mcset ru "New project" "Новый проект" +::msgcat::mcset ru "Not implemented yet" "Данная функция пока не реализована" +::msgcat::mcset ru "Not found active project" "Не определен активный проект" +::msgcat::mcset ru "Open" "Открыть" +::msgcat::mcset ru "Open file" "Открыть файл" +::msgcat::mcset ru "Open project" "Открыть проект" +::msgcat::mcset ru "Opened file in progress" "Открытие файла" +::msgcat::mcset ru "Overwrite" "Замена" +::msgcat::mcset ru "Pakages" "Пакеты" +::msgcat::mcset ru "Pakage setup" "Настройка пакетов" +::msgcat::mcset ru "Paste" "Вставить" +::msgcat::mcset ru "Paste from clipboard" "Вставить из буфера" +::msgcat::mcset ru "Preview" "Предварительный просмотр" +::msgcat::mcset ru "Preview formula" "Показать формулу" +::msgcat::mcset ru "Print ..." "Печать ..." +::msgcat::mcset ru "Print" "Печать" +::msgcat::mcset ru "Print command" "Команда печати" +::msgcat::mcset ru "Print selected text" "Печатать выделенный текст" +::msgcat::mcset ru "Program finished successfully" "Выполнение завершено" +::msgcat::mcset ru "Program failed" "Ошибка выполнения" +::msgcat::mcset ru "Programm output" "Вывод программы" +::msgcat::mcset ru "Project" "Проект" +::msgcat::mcset ru "Projects" "Проекты" +::msgcat::mcset ru "Project settings" "Установки проекта" +::msgcat::mcset ru "Project name" "Название проекта" +::msgcat::mcset ru "Project file" "Файл проекта" +::msgcat::mcset ru "Project dir" "Каталог проекта" +::msgcat::mcset ru "Quit without saving?" "Выйти без сохранения?" +::msgcat::mcset ru "Question" "Вопрос" +::msgcat::mcset ru "Redo" "Повторить" +::msgcat::mcset ru "Refresh" "Обновить" +::msgcat::mcset ru "Replace" "Замена" +::msgcat::mcset ru "Replace with" "Заменить на" +::msgcat::mcset ru "Replace all" "Заменить все" +::msgcat::mcset ru "Release" "Выпуск" +::msgcat::mcset ru "RPM dir" "Каталог RPM" +::msgcat::mcset ru "RPM file mask" "Маска RPM" +::msgcat::mcset ru "Run" "Выполнить" +::msgcat::mcset ru "Run file" "Запуск файла" +::msgcat::mcset ru "Running project" "Выполнение проекта" +::msgcat::mcset ru "Save" "Сохранить" +::msgcat::mcset ru "Save file" "Сохранить файл" +::msgcat::mcset ru "Save file as" "Сохранить файл как ..." +::msgcat::mcset ru "Save as" "Сохранить как ..." +::msgcat::mcset ru "Save all" "Сохранить все" +::msgcat::mcset ru "Search" "Поиск" +::msgcat::mcset ru "Select" "Выбрать" +::msgcat::mcset ru "Select directory" "Выбор директории" +::msgcat::mcset ru "Selected directory" "Директория" +::msgcat::mcset ru "Select image" "Выбор изображения" +::msgcat::mcset ru "Settings" "Установки" +::msgcat::mcset ru "Show backup files" "Показывать временные файлы" +::msgcat::mcset ru "Spell check" "Орфография" +::msgcat::mcset ru "Split window" "Разделить окно" +::msgcat::mcset ru "Syntax check" "Проверка синтаксиса" +::msgcat::mcset ru "Tcl interpetator" "Tcl интерпретатор" +::msgcat::mcset ru "Thanks" "Благодарности" +::msgcat::mcset ru "TGZ dir" "Каталог TGZ" +::msgcat::mcset ru "TGZ file mask" "Маска TGZ" +::msgcat::mcset ru "Toolbar" "Панель инструментов" +::msgcat::mcset ru "Undo" "Отменить" +::msgcat::mcset ru "Update" "Обновить" +::msgcat::mcset ru "Version" "Версия" +::msgcat::mcset ru "View" "Вид" +::msgcat::mcset ru "Warning" "Внимание" +::msgcat::mcset ru "Was replacement" "Было заменено" +::msgcat::mcset ru "Work dir" "Рабочий каталог" +::msgcat::mcset ru "Work with file" "Работа с файлом" + +## fonts +::msgcat::mcset ru "tiny" "крошечный" +::msgcat::mcset ru "scriptsize" "Индексный" +::msgcat::mcset ru "footnotesize" "Сносочный" +::msgcat::mcset ru "small" "Маленький" +::msgcat::mcset ru "normal" "Обычный" +::msgcat::mcset ru "large" "Увеличенный" +::msgcat::mcset ru "Large" "Большой" +::msgcat::mcset ru "LARGE" "крупный" +::msgcat::mcset ru "huge" "Гигантский" +::msgcat::mcset ru "Huge" "Огромный" + +::msgcat::mcset ru "Romanic" "Романский" +::msgcat::mcset ru "Sans Serif" "Рубленный" +::msgcat::mcset ru "Typewriter Typeset" "Машинописный" +::msgcat::mcset ru "Bold Face" "Полужирный" +::msgcat::mcset ru "Middle Face" "Средний" +::msgcat::mcset ru "Up" "Прямой" +::msgcat::mcset ru "Italic" "Kурсивный" +::msgcat::mcset ru "Slanted" "Наклонный" +::msgcat::mcset ru "Small Caps" "Kапитель" + +::msgcat::mcset ru "Add enumerate list" "Нумерованный список" +::msgcat::mcset ru "Add itemize list" "Не нумерованный список" +::msgcat::mcset ru "Add table" "Вставить таблицу" +::msgcat::mcset ru "Math mode" "Математический режим" +::msgcat::mcset ru "Insert function" "Вставить функцию" +::msgcat::mcset ru "Font type" "Тип шрифта" +::msgcat::mcset ru "Font size" "Размер шрифта" +::msgcat::mcset ru "Emphasise" "Выделить" +::msgcat::mcset ru "Align center" "Выравнивание по центру" +::msgcat::mcset ru "Align left" "Выравнивание по левому краю" +::msgcat::mcset ru "Align right" "Выравнивание по правому краю" +::msgcat::mcset ru "Make" "Создать" +::msgcat::mcset ru "Title" "Заголовок" +::msgcat::mcset ru "Make title" "Выполнить заголовок" +::msgcat::mcset ru "Title page" "Титульная страница" +::msgcat::mcset ru "Table of Contents" "Оглавление" +::msgcat::mcset ru "List of Tables" "Список таблиц" +::msgcat::mcset ru "List of Figures" "Список фигур" +::msgcat::mcset ru "The Bibliography" "Библиография" +::msgcat::mcset ru "Appendix" "Примечание" +::msgcat::mcset ru "Part" "Часть" +::msgcat::mcset ru "Chapter" "Глава" +::msgcat::mcset ru "Section" +::msgcat::mcset ru "SubSection" +::msgcat::mcset ru "SubSubSection" +::msgcat::mcset ru "Paragraph" "Параграф" +::msgcat::mcset ru "SubParagraph" "Подпараграф" +::msgcat::mcset ru "Input number of columns" "Укажите количество колонок" +::msgcat::mcset ru "Line type" "Тип линии" +::msgcat::mcset ru "Table position" "Расположение таблицы" + +::msgcat::mcset ru "Language" "Язык" +::msgcat::mcset ru "Entire file" "Весь файл" +::msgcat::mcset ru "From cursor" "С текущей позиции" +::msgcat::mcset ru "Start" "Начать" +::msgcat::mcset ru "Accept" "Заменить" +::msgcat::mcset ru "Next" "Пропустить" +::msgcat::mcset ru "Add to dict" "Добавить в словарь" +::msgcat::mcset ru "Add lowercase" "Добавить строчными" +::msgcat::mcset ru "Stop checking" "Прервать проверку" +::msgcat::mcset ru "Checking complete" "Проверка завершена" + +::msgcat::mcset ru "Greek" "Греческий" +::msgcat::mcset ru "Greek 1" "Греческий 1" +::msgcat::mcset ru "Greek 2" "Греческий 2" +::msgcat::mcset ru "Mathematical fonts" "Математический шрифт" +::msgcat::mcset ru "Accents" "Акцент" + + + + + + + + + + + + diff --git a/share/msg/ua.msg b/share/msg/ua.msg new file mode 100755 index 0000000..bc88cd9 --- /dev/null +++ b/share/msg/ua.msg @@ -0,0 +1,247 @@ +########################################################### +# Tcl/Tk Project Manager # +# ukrainian messages file # +# Copyright (c) "CONERO lab", 2001, http://conero.lrn.ru # +# Author: Sergey Kalinin (aka BanZaj) banzaj@lrn.ru # +# Copyright (c) Oleg Nykyforchyn, 2003, nick@pu.if.ua # +########################################################### + +::msgcat::mcset ua "About ..." "п÷я─п╬ п©я─п╬пЁя─п╟п╪я┐" +::msgcat::mcset ua "Accents" "п░п╨я├п╣п╫я┌" +::msgcat::mcset ua "Accept" "п≈п╟п╪Б∙∙п╫п╦я┌п╦" +::msgcat::mcset ua "Add enumerate list" "п²я┐п╪п╣я─п╬п╡п╟п╫п╦п╧ я│п©п╦я│п╬п╨" +::msgcat::mcset ua "Add itemize list" "п²п╣п╫я┐п╪п╣я─п╬п╡п╟п╫п╦п╧ я│п©п╦я│п╬п╨" +::msgcat::mcset ua "Add lowercase" "п■п╬п╢п╟я┌п╦ п╪п╟п╩п╣п╫я▄п╨п╦п╪п╦" +::msgcat::mcset ua "Add table" "п▓я│я┌п╟п╡п╦я┌п╦ я┌п╟п╠п╩п╦я├я▌" +::msgcat::mcset ua "Add to dict" "п■п╬п╢п╟я┌п╦ п╢п╬ я│п╩п╬п╡п╫п╦п╨п╟" +##::msgcat::mcset ua "Add to project" "п■п╬п╢п╟я┌п╦ п╢п╬ п©я─п╬п╣п╨я┌я┐" +::msgcat::mcset ua "Align center" "п▓п╦я─Б∙∙п╡п╫я▌п╡п╟п╫п╫я▐ п©п╬ я├п╣п╫я┌я─я┐" +::msgcat::mcset ua "Align left" "п▓п╦я─Б∙∙п╡п╫я▌п╡п╟п╫п╫я▐ п©п╬ п╩Б∙∙п╡п╬п╪я┐ п╨я─п╟я▌" +::msgcat::mcset ua "Alignment" "п▓п╦я─Б∙∙п╡п╫я▌п╡п╟п╫п╫я▐" +::msgcat::mcset ua "Align right" "п▓п╦я─Б∙∙п╡п╫я▌п╡п╟п╫п╫я▐ п©п╬ п©я─п╟п╡п╬п╪я┐ п╨я─п╟я▌" +::msgcat::mcset ua "Appendix" "п■п╬п╢п╟я┌п╬п╨" +##::msgcat::mcset ua "Archive created in" "п░я─я┘Б∙∙п╡ я│я┌п╡п╬я─п╣п╫п╬ п╡" +::msgcat::mcset ua "Authors" "п░п╡я┌п╬я─п╦" +::msgcat::mcset ua "Bold Face" "п²п╟п©Б∙∙п╡п╤п╦я─п╫п╦п╧" +::msgcat::mcset ua "Boldface" "п²п╟п©Б∙∙п╡п╤п╦я─п╫п╦п╧" +::msgcat::mcset ua "BoldMath" "п²п╟п©Б∙∙п╡п╤п╦я─п╫п╦п╧ (п╪п╟я┌п╣п╪.)" +::msgcat::mcset ua "Calligraphic" "Kп╟п╩Б∙∙пЁя─п╟я└Б∙∙я┤п╫п╦п╧" +::msgcat::mcset ua "Cancel" "п║п╨п╟я│я┐п╡п╟я┌п╦" +::msgcat::mcset ua "Cannot open file" "п²п╣ п╡п╢п╟Б∙⌠я┌я▄я│я▐ п╡Б∙∙п╢п╨я─п╦я┌п╦ я└п╟п╧п╩" +::msgcat::mcset ua "Cannot write to bookmarks file" "п²п╣ п╡п╢п╟п╩п╬я│я▄ п╥п╠п╣я─п╣пЁя┌п╦ п╥п╟п╨п╩п╟п╢п╨п╦" +::msgcat::mcset ua "Cannot write to file" "п²п╣ п╡п╢п╟Б∙⌠я┌я▄я│я▐ п╥п╟п©п╦я│ я┐ я└п╟п╧п╩" +::msgcat::mcset ua "Can't found file:" "п²п╣ п╥п╫п╟п╧п╢п╣п╫п╬ я└п╟п╧п╩:" +::msgcat::mcset ua "Chapter" "п⌠п╩п╟п╡п╟" +::msgcat::mcset ua "Checking complete" "п÷п╣я─п╣п╡Б∙∙я─п╨я┐ п╥п╟п╡п╣я─я┬п╣п╫п╬" +::msgcat::mcset ua "Close" "п≈п╟п╨я─п╦я┌п╦" +::msgcat::mcset ua "Close all" "п≈п╟п╨я─п╦я┌п╦ п╡я│Б∙∙" +##::msgcat::mcset ua "Close Project Manager?" "п≈п╟п╨я─п╦я┌п╦ п╪п╣п╫п╣п╢п╤п╣я─ п©я─п╬п╣п╨я┌Б∙∙п╡?" +::msgcat::mcset ua "Command options" "п·п©я├Б∙∙Б∙√ п╨п╬п╪п╟п╫п╢п╦" +::msgcat::mcset ua "Company" "п п╬п╪п©п╟п╫Б∙∙я▐" +::msgcat::mcset ua "Contents" "п≈п╪Б∙∙я│я┌" +::msgcat::mcset ua "Convert to" "п÷п╣я─п╣я┌п╡п╬я─п╦я┌п╦ п╡" +::msgcat::mcset ua "Convert to HTML" "п÷п╣я─п╣я┌п╡п╬я─п╦я┌п╦ п╡ HTML" +::msgcat::mcset ua "Convert to PDF" "п÷п╣я─п╣я┌п╡п╬я─п╦я┌п╦ п╡ PDF" +::msgcat::mcset ua "Copy" "п п╬п©Б∙∙я▌п╡п╟я┌п╦" +::msgcat::mcset ua "Copy into clipboard" "п п╬п©Б∙∙я▌п╡п╟я┌п╦ п╡ п╠я┐я└п╣я─" +::msgcat::mcset ua "Create" "п║я┌п╡п╬я─п╦я┌п╦" +##::msgcat::mcset ua "Create backup files" "п║я┌п╡п╬я─я▌п╡п╟я┌п╦ я┌п╦п╪я┤п╟я│п╬п╡Б∙∙ я└п╟п╧п╩п╦" +##::msgcat::mcset ua "Create directory" "п║я┌п╡п╬я─п╦я┌п╦ п╨п╟я┌п╟п╩п╬пЁ" +::msgcat::mcset ua "Create from template" "п║я┌п╡п╬я─п╦я┌п╦ п╥ я┬п╟п╠п╩п╬п╫я┐" +::msgcat::mcset ua "Create new file" "п║я┌п╡п╬я─п╦я┌п╦ п╫п╬п╡п╦п╧ я└п╟п╧п╩" +##::msgcat::mcset ua "Create new project" "п║я┌п╡п╬я─п╦я┌п╦ п╫п╬п╡п╦п╧ п©я─п╬п╣п╨я┌" +##::msgcat::mcset ua "Current directory" "п÷п╬я┌п╬я┤п╫п╦п╧ п╨п╟я┌п╟п╩п╬пЁ" +::msgcat::mcset ua "Cut" "п▓п╦я─Б∙∙п╥п╟я┌п╦" +::msgcat::mcset ua "Cut into clipboard" "п▓п╦я─Б∙∙п╥п╟я┌п╦ п╡ п╠я┐я└п╣я─" +##::msgcat::mcset ua "CVS commit" "п÷п╬п╪Б∙∙я│я┌п╦я┌п╦ п╡ CVS" +##::msgcat::mcset ua "CVS update" "п·п╫п╬п╡п╦я┌п╦ п╥ CVS" +##::msgcat::mcset ua "Date" "п■п╟я┌п╟" +::msgcat::mcset ua "Delete" "п▓п╦п╢п╟п╩п╦я┌п╦" +##::msgcat::mcset ua "Delete backup files" "п▓п╦п╢п╟п╩п╦я┌п╦ я┌п╦п╪я┤п╟я│п╬п╡Б∙∙ я└п╟п╧п╩п╦" +##::msgcat::mcset ua "Delete file" "п▓п╦п╢п╟п╩п╦я┌п╦ я└п╟п╧п╩" +##::msgcat::mcset ua "Delete from project" "п▓п╦п╢п╟п╩п╦я┌п╦ п╥ п©я─п╬п╣п╨я┌я┐" +##::msgcat::mcset ua "Delete project" "п▓п╦п╢п╟п╩п╦я┌п╦ п©я─п╬п╣п╨я┌" +##::msgcat::mcset ua "Docs dir" "п п╟я┌п╟п╩п╬пЁ п╢п╬п╨я┐п╪п╣п╫я┌п╟я├Б∙∙Б∙√" +::msgcat::mcset ua "Didn't find program" "п²п╣ п╥п╫п╟п╧п╢п╣п╫п╬ п©я─п╬пЁя─п╟п╪я┐" +::msgcat::mcset ua "Document" "п■п╬п╨я┐п╪п╣п╫я┌" +::msgcat::mcset ua "DVI" "DVI" +::msgcat::mcset ua "Edit" "п═п╣п╢п╟пЁя┐п╡п╟п╫п╫я▐" +##::msgcat::mcset ua "Editor font bold" "п╗я─п╦я└я┌ я─п╣п╢п╟п╨я┌п╬я─п╟ п╤п╦я─п╫п╦п╧" +##::msgcat::mcset ua "Editor font" "п╗я─п╦я└я┌ я─п╣п╢п╟п╨я┌п╬я─п╟" +##::msgcat::mcset ua "E-mail" "п∙п╩. п©п╬я┬я┌п╟" +::msgcat::mcset ua "Emphasise" "п▓п╦п╢Б∙∙п╩п╦я┌п╦ я┬я─п╦я└я┌п╬п╪" +::msgcat::mcset ua "Entire file" "п▓п╣я│я▄ я└п╟п╧п╩" +::msgcat::mcset ua "Error open URL" "п÷п╬п╪п╦п╩п╨п╟ п©я─п╦ п╡Б∙∙п╢п╨я─п╦я┌я┌Б∙∙ URL" +::msgcat::mcset ua "Exit" "п▓п╦я┘Б∙∙п╢" +::msgcat::mcset ua "File" "п╓п╟п╧п╩" +::msgcat::mcset ua "file" "я└п╟п╧п╩" +::msgcat::mcset ua "File already exists. Overwrite?" "п╓п╟п╧п╩ п╡п╤п╣ Б∙∙я│п╫я┐Б∙⌠. п÷п╣я─п╣п╥п╟п©п╦я│п╟я┌п╦?" +::msgcat::mcset ua "File modified" "п╓п╟п╧п╩ п╥п╪Б∙∙п╫п╣п╫п╬" +::msgcat::mcset ua "File not saved" "п╓п╟п╧п╩ п╫п╣ п╥п╠п╣я─п╣п╤п╣п╫п╬" +::msgcat::mcset ua "File opened" "п╓п╟п╧п╩ п╡Б∙∙п╢п╨я─п╦я┌п╬" +::msgcat::mcset ua "File open failed" "п²п╣ п╡п╢п╟п╩п╬я│я▄ п╡Б∙∙п╢п╨я─п╦я┌п╦ я└п╟п╧п╩" +::msgcat::mcset ua "Files" "п╓п╟п╧п╩п╦" +::msgcat::mcset ua "File saved" "п╓п╟п╧п╩ п╥п╠п╣я─п╣п╤п╣п╫п╬" +::msgcat::mcset ua "File save failed" "п²п╣ п╡п╢п╟п╩п╬я│я▄ п╥п╠п╣я─п╣пЁя┌п╦ я└п╟п╧п╩" +::msgcat::mcset ua "File was modified. Save?" "п╓п╟п╧п╩ п╠я┐п╩п╬ п╥п╪Б∙∙п╫п╣п╫п╬. п≈п╠п╣я─п╣пЁя┌п╦?" +::msgcat::mcset ua "Find" "п≈п╫п╟п╧я┌п╦" +::msgcat::mcset ua "Font bold" "п√п╦я─п╫п╦п╧ я┬я─п╦я└я┌" +::msgcat::mcset ua "Font normal" "п²п╬я─п╪п╟п╩я▄п╫п╦п╧ я┬я─п╦я└я┌" +::msgcat::mcset ua "Font size" "п═п╬п╥п╪Б∙∙я─ я┬я─п╦я└я┌п╟" +::msgcat::mcset ua "Font type" "п╒п╦п© я┬я─п╦я└я┌п╟" +::msgcat::mcset ua "footnotesize" "п≈п╫п╬я│п╬я┤п╫п╦п╧" +::msgcat::mcset ua "From cursor" "п▓Б∙∙п╢ п╨я┐я─я│п╬я─п╟" +::msgcat::mcset ua "Goto line" "п÷п╣я─п╣п╧я┌п╦ п╢п╬ я─я▐п╢п╨п╟ ..." +::msgcat::mcset ua "Greek 1" "п⌠я─п╣я├я▄п╨п╟ 1" +::msgcat::mcset ua "Greek 2" "п⌠я─п╣я├я▄п╨п╟ 2" +::msgcat::mcset ua "Greek" "п⌠я─п╣я├я▄п╨п╟" +::msgcat::mcset ua "Help" "п■п╬п©п╬п╪п╬пЁп╟" +::msgcat::mcset ua "Home dir" "п■п╬п╪п╟я┬п╫Б∙∙п╧ п╨п╟я┌п╟п╩п╬пЁ" +::msgcat::mcset ua "Home page" "п■п╬п╪п╟я┬п╫я▐ я│я┌п╬я─Б∙∙п╫п╨п╟" +::msgcat::mcset ua "huge" "п▓п╣п╩п╦я┤п╣п╥п╫п╦п╧" +::msgcat::mcset ua "Huge" "п⌠Б∙∙пЁп╟п╫я┌я│я▄п╨п╦п╧" +::msgcat::mcset ua "Image dir" "п п╟я┌п╟п╩п╬пЁ п╥п╬п╠я─п╟п╤п╣п╫я▄" +::msgcat::mcset ua "Included packages" "п▓п╨п╩я▌я┤п╣п╫Б∙∙ п©п╟п╨п╣я┌п╦" +::msgcat::mcset ua "Input file name" "п▓п╡п╣п╢Б∙∙я┌я▄ Б∙∙п╪'я▐ я└п╟п╧п╩п╟" +::msgcat::mcset ua "Input number of columns" "п▓п╨п╟п╤Б∙∙я┌я▄ п╨Б∙∙п╩я▄п╨Б∙∙я│я┌я▄ п╨п╬п╩п╬п╫п╬п╨" +::msgcat::mcset ua "Insert" "п▓я│я┌п╟п╡п╨п╟" +::msgcat::mcset ua "Insert function" "п▓я│я┌п╟п╡п╦я┌п╦ я└я┐п╫п╨я├Б∙∙я▌" +::msgcat::mcset ua "Insert image" "п▓я│я┌п╟п╡п╦я┌п╦ п╥п╬п╠я─п╟п╤п╣п╫п╫я▐" +##::msgcat::mcset ua "Install Tcl/Tk Project Manager" "п▓я│я┌п╟п╫п╬п╡п╦я┌п╦ Tcl/Tk Project Manager" +::msgcat::mcset ua "Interface language" "п°п╬п╡п╟ Б∙∙п╫я┌п╣я─я└п╣п╧я│я┐" +::msgcat::mcset ua "Italic" "Kя┐я─я│п╦п╡п╫п╦п╧" +::msgcat::mcset ua "Labels" "п÷п╬п╥п╫п╟я┤п╨п╦" +::msgcat::mcset ua "Language" "п°п╬п╡п╟" +::msgcat::mcset ua "LARGE" "п▓п∙п⌡п≤п п≤п≥" +::msgcat::mcset ua "Large" "п▓п╣п╩п╦п╨п╦п╧" +::msgcat::mcset ua "large" "п≈п╠Б∙∙п╩я▄я┬п╣п╫п╦п╧" +::msgcat::mcset ua "Line number" "п²п╬п╪п╣я─ я─я▐п╢п╨п╟" +::msgcat::mcset ua "Line type" "п╒п╦п© п╩Б∙∙п╫Б∙∙Б∙√" +::msgcat::mcset ua "List of Figures" "п║п©п╦я│п╬п╨ я─п╦я│я┐п╫п╨Б∙∙п╡" +::msgcat::mcset ua "List of Tables" "п║п©п╦я│п╬п╨ я┌п╟п╠п╩п╦я├я▄" +##::msgcat::mcset ua "Make archive" "п║я┌п╡п╬я─п╦я┌п╦ п╟я─я┘Б∙∙п╡" +##::msgcat::mcset ua "Make backup files" "п║я┌п╡п╬я─я▌п╡п╟я┌п╦ я┌п╦п╪я┤п╟я│п╬п╡Б∙∙ я└п╟п╧п╩п╦" +::msgcat::mcset ua "Make DVI" "п║я┌п╡п╬я─п╦я┌п╦ DVI" +::msgcat::mcset ua "Make PS" "п║я┌п╡п╬я─п╦я┌п╦ PS" +::msgcat::mcset ua "Make RPM" "п║я┌п╡п╬я─п╦я┌п╦ RPM" +##::msgcat::mcset ua "Make title" "п²п╟п╢я─я┐п╨я┐п╡п╟я┌п╦ п╥п╟пЁп╬п╩п╬п╡п╬п╨" +::msgcat::mcset ua "Make" "п║я┌п╡п╬я─п╦я┌п╦" +::msgcat::mcset ua "Mathematical fonts" "п°п╟я┌п╣п╪п╟я┌п╦я┤п╫п╦п╧ я┬я─п╦я└я┌" +::msgcat::mcset ua "Math mode" "п°п╟я┌п╣п╪п╟я┌п╦я┤п╫п╦п╧ я─п╣п╤п╦п╪" +::msgcat::mcset ua "Middle Face" "п║п╣я─п╣п╢п╫я▄п╬Б∙√ п╡п╟пЁп╦" +::msgcat::mcset ua "Modules" "п°п╬п╢я┐п╩Б∙∙" +##::msgcat::mcset ua "Must be one file select!" "п÷п╬я┌я─Б∙∙п╠п╫п╬ п╬п╠я─п╟я┌п╦ я┌Б∙∙п╩я▄п╨п╦ п╬п╢п╦п╫ я└п╟п╧п╩!" +::msgcat::mcset ua "Must be one or two file select!" "п÷п╬я┌я─Б∙∙п╠п╫п╬ п╬п╠я─п╟я┌п╦ п╬п╢п╦п╫ п╟п╠п╬ п╢п╡п╟ я└п╟п╧п╩п╦!" +::msgcat::mcset ua "New" "п²п╬п╡п╦п╧" +::msgcat::mcset ua "New file" "п²п╬п╡п╦п╧ я└п╟п╧п╩" +::msgcat::mcset ua "New file created" "п║я┌п╡п╬я─п╣п╫п╬ п╫п╬п╡п╦п╧ я└п╟п╧п╩" +::msgcat::mcset ua "New project" "п²п╬п╡п╦п╧ п©я─п╬п╣п╨я┌" +::msgcat::mcset ua "Next" "п÷я─п╬п╪п╦п╫я┐я┌п╦" +::msgcat::mcset ua "Normal" "п²п╬я─п╪п╟п╩я▄п╫п╦п╧" +::msgcat::mcset ua "No selected file" "п²п╣ п╬п╠я─п╟п╫п╬ я└п╟п╧п╩" +::msgcat::mcset ua "No valid file name" "п²п╣ п╡п╨п╟п╥п╟п╫п╬ п©я─п╦п╢п╟я┌п╫п╬пЁп╬ Б∙∙п╪п╣п╫Б∙∙ я└п╟п╧п╩п╟" +::msgcat::mcset ua "Active project not found" "п²п╣ п╥п╫п╟п╧п╢п╣п╫п╬ п╟п╨я┌п╦п╡п╫п╦п╧ п©я─п╬п╣п╨я┌" +##::msgcat::mcset ua "Not implemented yet" "п■п╟п╫я┐ я└я┐п╫п╨я├Б∙∙я▌ п©п╬п╨п╦ я┴п╬ п╫п╣ я─п╣п╟п╩Б∙∙п╥п╬п╡п╟п╫п╬" +::msgcat::mcset ua "Ok" "Ok" +::msgcat::mcset ua "Open" "п▓Б∙∙п╢п╨я─п╦я┌п╦" +##::msgcat::mcset ua "Opened file in progress" "п╒я─п╦п╡п╟Б∙⌠ п╡Б∙∙п╢п╨я─п╦я┌я┌я▐ я└п╟п╧п╩п╟" +::msgcat::mcset ua "Open file" "п▓Б∙∙п╢п╨я─п╦я┌п╦ я└п╟п╧п╩" +::msgcat::mcset ua "Opening file" "п▓Б∙∙п╢п╨я─п╦п╡п╟Б∙⌠п╪п╬ я└п╟п╧п╩" +##::msgcat::mcset ua "Open project" "п▓Б∙∙п╢п╨я─п╦я┌п╦ п©я─п╬п╣п╨я┌" +::msgcat::mcset ua "Overwrite" "п≈п╟п╪Б∙∙п╫п╟" +::msgcat::mcset ua "Packages" "п÷п╟п╨п╣я┌п╦" +##::msgcat::mcset ua "Package setup" "п²п╟я│я┌я─п╬п╧п╨п╟ п©п╟п╨п╣я┌Б∙∙п╡" +::msgcat::mcset ua "Paragraph" "п░п╠п╥п╟я├" +::msgcat::mcset ua "Part" "п╖п╟я│я┌п╦п╫п╟" +::msgcat::mcset ua "Paste" "п▓я│я┌п╟п╡п╦я┌п╦" +::msgcat::mcset ua "Paste from clipboard" "п▓я│я┌п╟п╡п╦я┌п╦ п╥ п╠я┐я└п╣я─п╟" +::msgcat::mcset ua "PDF" "PDF" +::msgcat::mcset ua "Preview" "п÷п╬п©п╣я─п╣п╢п╫Б∙∙п╧ п©п╣я─п╣пЁп╩я▐п╢" +::msgcat::mcset ua "Print ..." "п■я─я┐п╨ ..." +::msgcat::mcset ua "Print" "п■я─я┐п╨" +::msgcat::mcset ua "Print command" "п п╬п╪п╟п╫п╢п╟ п╢я─я┐п╨я┐" +::msgcat::mcset ua "Print selected text" "п■я─я┐п╨я┐п╡п╟я┌п╦ п╡п╦п╢Б∙∙п╩п╣п╫п╦п╧ я┌п╣п╨я│я┌" +::msgcat::mcset ua "Program failed" "п÷п╬п╪п╦п╩п╨п╟ п©я─п╦ п╡п╦п╨п╬п╫п╟п╫п╫Б∙∙" +::msgcat::mcset ua "Program finished successfully" "п÷я─п╬пЁя─п╟п╪я┐ я┐я│п©Б∙∙я┬п╫п╬ п╥п╟п╡п╣я─я┬п╣п╫п╬" +::msgcat::mcset ua "Program output" "п▓п╦п╡Б∙∙п╢ п©я─п╬пЁя─п╟п╪п╦" +##::msgcat::mcset ua "Project dir" "п п╟я┌п╟п╩п╬пЁ п©я─п╬п╣п╨я┌я┐" +##::msgcat::mcset ua "Project file" "п╓п╟п╧п╩ п©я─п╬п╣п╨я┌я┐" +##::msgcat::mcset ua "Project name" "п²п╟п╥п╡п╟ п©я─п╬п╣п╨я┌я┐" +##::msgcat::mcset ua "Project settings" "п²п╟я│я┌я─п╬п╧п╨п╦ п©я─п╬п╣п╨я┌я┐" +##::msgcat::mcset ua "Projects" "п÷я─п╬п╣п╨я┌п╦" +##::msgcat::mcset ua "Project" "п÷я─п╬п╣п╨я┌" +::msgcat::mcset ua "PS" "PS" +##::msgcat::mcset ua "Question" "п÷п╦я┌п╟п╫п╫я▐" +##::msgcat::mcset ua "Quit without saving?" "п▓п╦п╧я┌п╦ п╠п╣п╥ п╥п╠п╣я─п╣п╤п╣п╫п╫я▐?" +##::msgcat::mcset ua "Redo" "п÷п╬п╡я┌п╬я─п╦я┌п╦" +::msgcat::mcset ua "Refresh" "п·п╫п╬п╡п╦я┌п╦" +##::msgcat::mcset ua "Release" "п▓п╦п©я┐я│п╨" +::msgcat::mcset ua "Replace" "п≈п╟п╪Б∙∙п╫п╟" +::msgcat::mcset ua "Replace all" "п≈п╟п╪Б∙∙п╫п╦я┌п╦ п╡я│п╣" +::msgcat::mcset ua "Replace with" "п≈п╟п╪Б∙∙п╫п╦я┌п╦ п╫п╟" +::msgcat::mcset ua "Romanic" "п═п╬п╪п╟п╫я│я▄п╨п╦п╧" +##::msgcat::mcset ua "RPM dir" "п п╟я┌п╟п╩п╬пЁ RPM" +##::msgcat::mcset ua "RPM file mask" "п°п╟я│п╨п╟ RPM" +::msgcat::mcset ua "Run" "п▓п╦п╨п╬п╫п╟я┌п╦" +##::msgcat::mcset ua "Run file" "п≈п╟п©я┐я│я┌п╦я┌п╦ я└п╟п╧п╩" +::msgcat::mcset ua "Running project" "п▓п╦п╨п╬п╫п╟п╫п╫я▐ п©я─п╬п╣п╨я┌я┐" +::msgcat::mcset ua "Sans Serif" "п▒п╣п╥ п╥п╟я│Б∙∙я┤п╬п╨" +::msgcat::mcset ua "SansSerif" "п▒п╣п╥ п╥п╟я│Б∙∙я┤п╬п╨" +::msgcat::mcset ua "Save" "п≈п╠п╣я─п╣пЁя┌п╦" +::msgcat::mcset ua "Save all" "п≈п╠п╣я─п╣пЁя┌п╦ п╡я│Б∙∙" +::msgcat::mcset ua "Save as" "п≈п╠п╣я─п╣пЁя┌п╦ я▐п╨ ..." +::msgcat::mcset ua "Save file as" "п≈п╠п╣я─п╣пЁя┌п╦ я└п╟п╧п╩ я▐п╨ ..." +::msgcat::mcset ua "Save file" "п≈п╠п╣я─п╣пЁя┌п╦ я└п╟п╧п╩" +::msgcat::mcset ua "Saving file" "п≈п╠п╣я─Б∙∙пЁп╟Б∙⌠п╪п╬ я└п╟п╧п╩" +::msgcat::mcset ua "scriptsize" "Б∙╓п╫п╢п╣п╨я│п╫п╦п╧" +::msgcat::mcset ua "Search" "п÷п╬я┬я┐п╨" +::msgcat::mcset ua "Sections" "п═п╬п╥п╢Б∙∙п╩п╦" +::msgcat::mcset ua "Section" "п═п╬п╥п╢Б∙∙п╩" +##::msgcat::mcset ua "Select directory" "п·п╠я─п╟я┌п╦ п╨п╟я┌п╟п╩п╬пЁ" +##::msgcat::mcset ua "Selected directory" "п·п╠я─п╟п╫п╦п╧ п╨п╟я┌п╟п╩п╬пЁ" +::msgcat::mcset ua "Select image" "п·п╠я─п╟я┌п╦ п╥п╬п╠я─п╟п╤п╣п╫п╫я▐" +##::msgcat::mcset ua "Select" "п·п╠я─п╟я┌п╦" +::msgcat::mcset ua "Settings" "п²п╟я│я┌я─п╬п╧п╨п╦" +##::msgcat::mcset ua "Show backup files" "п÷п╬п╨п╟п╥я┐п╡п╟я┌п╦ я┌п╦п╪я┤п╟я│п╬п╡Б∙∙ я└п╟п╧п╩п╦" +::msgcat::mcset ua "Slanted" "п÷п╬я┘п╦п╩п╦п╧" +::msgcat::mcset ua "Small Caps" "Kп╟п©Б∙∙я┌п╣п╩я▄" +::msgcat::mcset ua "small" "п°п╟п╩п╣п╫я▄п╨п╦п╧" +::msgcat::mcset ua "Spell check" "п÷п╣я─п╣п╡Б∙∙я─п╨п╟ п©я─п╟п╡п╬п©п╦я│я┐" +::msgcat::mcset ua "Start" "п÷п╬я┤п╟я┌п╦" +::msgcat::mcset ua "Stop checking" "п÷я─п╦п©п╦п╫п╦я┌п╦ п©п╣я─п╣п╡Б∙∙я─п╨я┐" +::msgcat::mcset ua "SubParagraph" "п÷Б∙∙п╢п╟п╠п╥п╟я├" +::msgcat::mcset ua "SubSection" "п÷Б∙∙п╢я─п╬п╥п╢Б∙∙п╩" +::msgcat::mcset ua "SubSubSection" "п÷Б∙∙п╢п©Б∙∙п╢я─п╬п╥п╢Б∙∙п╩" +::msgcat::mcset ua "Syntax check" "п÷п╣я─п╣п╡Б∙∙я─п╨п╟ я│п╦п╫я┌п╟п╨я│п╦я│я┐" +::msgcat::mcset ua "Table of Contents" "п≈п╪Б∙∙я│я┌" +::msgcat::mcset ua "Table position" "п═п╬п╥я┌п╟я┬я┐п╡п╟п╫п╫я▐ я┌п╟п╠п╩п╦я├Б∙∙" +::msgcat::mcset ua "Tcl interpetator" "Б∙╓п╫я┌п╣я─п©я─п╣я┌п╟я┌п╬я─ Tcl" +::msgcat::mcset ua "Text autoformat" "п░п╡я┌п╬я└п╬я─п╪п╟я┌ я┌п╣п╨я│я┌я┐" +##::msgcat::mcset ua "TGZ dir" "п п╟я┌п╟п╩п╬пЁ TGZ" +##::msgcat::mcset ua "TGZ file mask" "п°п╟я│п╨п╟ TGZ" +##::msgcat::mcset ua "Thanks" "п÷п╬п╢я▐п╨п╦" +::msgcat::mcset ua "The Bibliography" "п▒Б∙∙п╠п╩Б∙∙п╬Б∙°я─п╟я└Б∙∙я▐" +::msgcat::mcset ua "This file is already edited" "п╕п╣п╧ я└п╟п╧п╩ п╡п╤п╣ я─п╣п╢п╟пЁя┐Б∙⌠я┌я▄я│я▐" +::msgcat::mcset ua "This name is for new files" "п╕п╣ Б∙∙п╪'я▐ п╢п╩я▐ п╫п╬п╡п╦я┘ я└п╟п╧п╩Б∙∙п╡" +::msgcat::mcset ua "tiny" "п я─п╦я┘Б∙∙я┌п╫п╦п╧" +::msgcat::mcset ua "Title page" "п╒п╦я┌я┐п╩я▄п╫п╟ я│я┌п╬я─Б∙∙п╫п╨п╟" +::msgcat::mcset ua "Title" "п≈п╟пЁп╬п╩п╬п╡п╬п╨" +::msgcat::mcset ua "Toolbar" "п÷п╟п╫п╣п╩я▄ Б∙∙п╫я│я┌я─я┐п╪п╣п╫я┌Б∙∙п╡" +::msgcat::mcset ua "Try another name?" "п║п©я─п╬п╠я┐п╡п╟я┌п╦ Б∙∙п╫я┬п╣ Б∙∙п╪'я▐?" +::msgcat::mcset ua "Try \"Save as\"?" "п║п©я─п╬п╠я┐п╡п╟я┌п╦ \"п≈п╠п╣я─п╣пЁя┌п╦ я▐п╨...\"?" +::msgcat::mcset ua "TypeWriter Typeset" "п■я─я┐п╨п╟я─я│я▄п╨п╦п╧" +::msgcat::mcset ua "Typewriter Typeset" "п■я─я┐п╨п╟я─я│я▄п╨п╦п╧" +::msgcat::mcset ua "UnboldMath" "п≈п╫я▐я┌п╦ п╫п╟п©Б∙∙п╡п╤п╦я─п╫п╦п╧" +::msgcat::mcset ua "Undo" "п÷п╬п╡п╣я─п╫я┐я┌п╦я│я▄" +##::msgcat::mcset ua "Update" "п·п╫п╬п╡п╦я┌п╦" +::msgcat::mcset ua "Up" "п÷я─я▐п╪п╦п╧" +::msgcat::mcset ua "Version" "п▓п╣я─я│Б∙∙я▐" +::msgcat::mcset ua "View" "п▓п╦пЁп╩я▐п╢" +::msgcat::mcset ua "View DVI" "п÷п╣я─п╣пЁп╩я▐п╫я┐я┌п╦ DVI" +::msgcat::mcset ua "View HTML" "п÷п╣я─п╣пЁп╩я▐п╫я┐я┌п╦ HTML" +::msgcat::mcset ua "View PDF" "п÷п╣я─п╣пЁп╩я▐п╫я┐я┌п╦ PDF" +::msgcat::mcset ua "View PS" "п÷п╣я─п╣пЁп╩я▐п╫я┐я┌п╦ PS" +::msgcat::mcset ua "Warning" "п÷п╬п©п╣я─п╣п╢п╤п╣п╫п╫я▐" +::msgcat::mcset ua "Was replacement" "п▒я┐п╩п╬ п╥п╟п╪Б∙∙п╫п╣п╫п╬" +##::msgcat::mcset ua "Work dir" "п═п╬п╠п╬я┤п╦п╧ п╨п╟я┌п╟п╩п╬пЁ" +::msgcat::mcset ua "Work with file" "п═п╬п╠п╬я┌п╟ п╥ я└п╟п╧п╩п╬п╪" diff --git a/share/template/art-wide.tex b/share/template/art-wide.tex new file mode 100755 index 0000000..36329d4 --- /dev/null +++ b/share/template/art-wide.tex @@ -0,0 +1,20 @@ +%-----------------------------------------------------% +% % +% Подготовка научных статей, широкая страница % +% (предусмотрена работа с рисунками) % +% % +%-----------------------------------------------------% + +\documentclass[12pt]{article} + +\usepackage[koi8-r]{inputenc} +\usepackage[english,russian]{babel} + +\usepackage{a4wide} +\usepackage{graphicx} + +\begin{document} + + +\end{document} + diff --git a/share/template/article.tex b/share/template/article.tex new file mode 100755 index 0000000..208486e --- /dev/null +++ b/share/template/article.tex @@ -0,0 +1,21 @@ +%-----------------------------------------------------% +% % +% Подготовка научных статей (предусмотрена % +% работа с рисунками) % +% % +%-----------------------------------------------------% + +\documentclass[12pt]{article} + +\usepackage[koi8-r]{inputenc} +\usepackage[english,russian]{babel} + +\usepackage{graphicx} + +\begin{document} + + +\end{document} + + + diff --git a/share/template/coding.tex b/share/template/coding.tex new file mode 100755 index 0000000..ec72137 --- /dev/null +++ b/share/template/coding.tex @@ -0,0 +1,19 @@ +%-----------------------------------------------------% +% % +% Универсальный шаблон с поддержкой стандартных % +% кириллических кодировок % +% % +%-----------------------------------------------------% + +\documentclass{article} + +\usepackage[cp1251,cp866av,koi8-r]{inputenc} +\usepackage[english,russian]{babel} + +\begin{document} + + +\end{document} + + + diff --git a/share/template/standard.tex b/share/template/standard.tex new file mode 100755 index 0000000..30e312e --- /dev/null +++ b/share/template/standard.tex @@ -0,0 +1,18 @@ +%-----------------------------------------------------% +% % +% Элементарный шаблон на все случаи жизни % +% % +%-----------------------------------------------------% + +\documentclass{article} + +\usepackage[koi8-r]{inputenc} +\usepackage[english,russian]{babel} + +\begin{document} + + +\end{document} + + + diff --git a/tle.exe b/tle.exe new file mode 100755 index 0000000..da700b4 Binary files /dev/null and b/tle.exe differ diff --git a/tle.spec b/tle.spec new file mode 100755 index 0000000..981899a --- /dev/null +++ b/tle.spec @@ -0,0 +1,93 @@ +Name: tle +Version: 1.0.3 +Release: alt4 +Summary: Tk LaTeX Editor +Summary(ru_RU.KOI8-R): Редактор файлов дя LaTeX +License: GPL +Group: Editors +Url: http://conero.lrn.ru +BuildArch: noarch +Source: %name-%version-%release.tar.gz +Requires: bwidget + +%description +TkLaTeXeditor (tle) it's a powerfull LaTeX editor. +Code highlight, document structure navigator, project and file manager, spellchecking and much more + +%description -l ru_RU.KOI8-R +TkLaTeXeditor (tle) полнофункциональный редактор файлов LaTeX. Поддерживает управление файлами, визуальное отображение структуры документа, навигацию по структуре, проверку орфографии, настраиваемые панели инструментов, настраиваемые команды для вставки тэгов и многое другое. + +%prep +%setup -n %name + +%build + +%install +mkdir -p $RPM_BUILD_ROOT{%_bindir,%_datadir/%name/img,%_datadir/%name/msg} +mkdir -p $RPM_BUILD_ROOT{%_datadir/%name/template,%_libdir/%name/command} +mkdir -p $RPM_BUILD_ROOT{%_libdir/%name/gui/toolbar,%_libdir/%name/modules,%_libdir/%name/conf} +mkdir -p $RPM_BUILD_ROOT{%_datadir/%name/img/default,%_datadir/%name/img/default/math} +mkdir -p $RPM_BUILD_ROOT{%_datadir/%name/img/stroke,%_datadir/%name/img/stroke/math} + +install -p -m755 tle.tcl $RPM_BUILD_ROOT%_bindir/%name + +install -p -m644 lib/modules/*.tcl $RPM_BUILD_ROOT%_libdir/%name/modules/ +install -p -m644 lib/conf/*.* $RPM_BUILD_ROOT%_libdir/%name/conf/ +install -p -m644 lib/command/*.* $RPM_BUILD_ROOT%_libdir/%name/command/ +install -p -m644 lib/gui/toolbar/* $RPM_BUILD_ROOT%_libdir/%name/gui/toolbar/ +install -p -m644 share/msg/*.* $RPM_BUILD_ROOT%_datadir/%name/msg/ +install -p -m644 share/template/*.* $RPM_BUILD_ROOT%_datadir/%name/template + +install -p -m644 share/img/default/*.* $RPM_BUILD_ROOT%_datadir/%name/img/default/ +install -p -m644 share/img/default/math/*.* $RPM_BUILD_ROOT%_datadir/%name/img/default/math/ +install -p -m644 share/img/stroke/*.* $RPM_BUILD_ROOT%_datadir/%name/img/stroke/ +install -p -m644 share/img/stroke/math/*.* $RPM_BUILD_ROOT%_datadir/%name/img/stroke/math/ + +# Menu support +mkdir -p $RPM_BUILD_ROOT/usr/lib/menu + +cat > $RPM_BUILD_ROOT/usr/lib/menu/%name << EOF +?package(%name): needs=x11 icon="tle.xpm" section="Applications/Editors" title=TkLaTeXeditor longtitle="Tk Latex Editor" command=tle +EOF + +#mdk icons +install -d $RPM_BUILD_ROOT{%_iconsdir,%_iconsdir/large,%_iconsdir/mini} +install -p -m644 share/icons/%name.xpm $RPM_BUILD_ROOT%_iconsdir +install -p -m644 share/icons/large/%name.xpm $RPM_BUILD_ROOT%_iconsdir/large/ +install -p -m644 share/icons/mini/%name.xpm $RPM_BUILD_ROOT%_iconsdir/mini/ + +%post +%update_menus + +%postun +%clean_menus + +%files +%doc INSTALL CHANGELOG TODO COPYING README THANKS KNOWBUG share/hlp/ru/*.* +%_bindir/%name +%_libdir/%name +%_datadir/%name +%_libdir/menu/%name +%_iconsdir/%name.xpm +%_liconsdir/%name.xpm +%_miconsdir/%name.xpm + + +%changelog +* Thu May 19 2005 Sergey Kalinin 1.0.3-alt4 +- Fixed work with directory and files included brakespace into names + +* Tue Sep 21 2004 Sergey Kalinin 1.0.3-alt3 +- Image thumbnails support - stable + +* Tue Sep 21 2004 Sergey Kalinin 1.0.3-alt2 +- Fixed work with directory and files included whitespace into names + +* Thu Sep 16 2004 Sergey Kalinin 1.0.3-alt1 +- Added thumbnails support into text widget for \includegraphics - unstable +- Fixed preview bugs +- Fixed bug with differents beetwen system encoding and LaTeX encoding +- Added encode.lst where writing encoding equivalent +- Fixed scroling text window + + diff --git a/tle.tcl b/tle.tcl new file mode 100755 index 0000000..a5ab503 --- /dev/null +++ b/tle.tcl @@ -0,0 +1,155 @@ +#!/usr/bin/wish +###################################################### +# Tk LaTeX Editor +# Distributed under GNU Public License +# Author: Sergey Kalinin (BanZaj) banzaj@lrn.ru +# Home page: http//conero.lrn.ru +###################################################### + +set ver "1.0.3" +set release "" + +package require BWidget +package require msgcat +package require Img + +## DIRECTORY SETINGS ## +if [file exists tle.tcl] { + set dir(root) [pwd] + set dir(lib) [file join $dir(root) lib] + set dir(share) [file join $dir(root) share] + set dir(hlp) [file join $dir(share) hlp] +} else { + set dir(root) /usr + set dir(lib) [file join $dir(root) lib tle] + set dir(share) [file join $dir(root) share tle] + set dir(hlp) [file join $dir(root) share doc tle-$ver] +} +# отладка +#set dir(root) /home/svk/projects/tcl/tle +#set dir(lib) [file join $dir(root) lib] +#set dir(share) [file join $dir(root) share] +#set dir(hlp) [file join $dir(share) hlp] + +set dir(mod) [file join $dir(lib) modules] +set dir(gui) [file join $dir(lib) gui] +set dir(msg) [file join $dir(share) msg] +set dir(tmpl) [file join $dir(share) template] +set dir(cmd) [file join $dir(lib) command] + +if {$tcl_platform(platform) == "unix"} { + set dir(work) [file join $env(HOME) .tle] +} elseif {$tcl_platform(platform) == "windows"} { + if {[info exist env(HOMEDRIVE)] && [info exists env(HOMEPATH)]} { + set dir(work) [file join $env(HOME) .tle] + set dir(work) [file join $env(HOMEDRIVE)/$env(HOMEPATH) .tle] + } +} +set dir(work_mod) [file join $dir(work) modules] +set dir(work_gui) [file join $dir(work) gui] +set dir(work_tmpl) [file join $dir(work) template] +set dir(work_cmd) [file join $dir(work) command] + +if {[file exists $dir(work)] == 0} {file mkdir $dir(work)} + +if {[file exists $dir(work_tmpl)] == 0} {file mkdir [file join $dir(work) template]} +if {[file exists [file join $dir(work_gui) toolbar]] == 0} {file mkdir [file join $dir(work) gui toolbar]} +if {[file exists [file join $dir(work_gui) hotkeys]] == 0} {file mkdir [file join $dir(work) gui hotkeys]} +if {[file exists $dir(work_cmd)] == 0} {file mkdir [file join $dir(work) command]} +if {[file exists $dir(work_mod)] == 0} {file mkdir [file join $dir(work) modules]} + +## LOAD CONFIG ## +if {[file exists [file join $dir(work) tle.conf]] == 0} { + file copy -- [file join $dir(lib) conf tle.conf] [file join $dir(work) tle.conf] +} +if {[file exists [file join $dir(work) encode.lst]] == 0} { + file copy -- [file join $dir(lib) conf encode.lst] [file join $dir(work) encode.lst] +} + +source [file join $dir(work) tle.conf] +if {[info exists theme] == 1} { + set dir(img) [file join $dir(share) img $theme] +} else { + set dir(img) [file join $dir(share) img] +} + +foreach d {tmp doc} { + if {[file exists $dir($d)] == 0} {file mkdir $dir($d)} +} + +set dir(current) $dir(doc) + +if {[info exists locale] == 1} { + # old locale settings via $locale + ::msgcat::mclocale $locale + ::msgcat::mcload $dir(msg) +} else { + # use system locale + set sysenc [encoding system] + encoding system utf-8 + ::msgcat::mcload $dir(msg) + encoding system $sysenc +} + +################################## +# new variable +# +if {[info exists thumb(show)] == 0} { + set thumb(show) "No" +} +if {[info exists thumb(resolution)] == 0} { + set thumb(resolution) "100x100" +} +if {[info exists thumb(format)] == 0} { + set thumb(format) "png" +} +#################################### +source [file join $dir(mod) splashscreen.tcl] + +foreach file [lsort [glob -nocomplain [file join $dir(mod) *.tcl]]] { + if {[file tail $file] != "gui.tcl" && [file tail $file] != "splashscreen.tcl"} { + puts "Load module $file" + source $file + } +} +foreach file [lsort [glob -nocomplain [file join $dir(work_mod) *.tcl]]] { + if {[file tail $file] != "gui.tcl"} { + puts "Load module $file" + source $file + } +} +source [file join $dir(mod) gui.tcl] + +GetPackage $dir(cmd) +GetPackage $dir(work_cmd) + + + +## Open files was opened in previouse session ## +if [file exists [file join $dir(work) bookmarks]] { + set f [open [file join $dir(work) bookmarks] "r"] + while {[gets $f line]>=0} { + scan $line "%s%s" file pos + if [file exists $file] { + EditFile $file + set text "$nb.f[$nb raise].f.text" + $text mark set insert $pos + $text see $pos + } + } + close $f +} + +set dir(current) $dir(doc) + +## COMMAND LINE EDITING FILE LOUNCH ## +if [file isdirectory $argv] { + puts "\'$argv\' is a directory" +} elseif [file exists $argv] { + EditFile $argv +} else { + puts stderr "File doesn't exist: $argv" +} + + +