set eol-style

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36379 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Vincent van Ravesteijn 2010-11-18 19:50:29 +00:00
parent cc84d35ed4
commit 7222ce9e31
35 changed files with 21044 additions and 21044 deletions

View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright (c) Microsoft Corporation. All rights reserved. --> <!-- Copyright (c) Microsoft Corporation. All rights reserved. -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable/> <noInheritable/>
<assemblyIdentity <assemblyIdentity
type="win32" type="win32"
name="Microsoft.VC90.CRT" name="Microsoft.VC90.CRT"
version="9.0.21022.8" version="9.0.21022.8"
processorArchitecture="x86" processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b" publicKeyToken="1fc8b3b9a1e18e3b"
/> />
<file name="msvcr90.dll" /> <file name="msvcp90.dll" /> <file name="msvcm90.dll" /> <file name="msvcr90.dll" /> <file name="msvcp90.dll" /> <file name="msvcm90.dll" />
</assembly> </assembly>

View File

@ -1,60 +1,60 @@
/* /*
dictlist.nsh dictlist.nsh
List of Aspell dictionaries supported by LyX List of Aspell dictionaries supported by LyX
*/ */
!macro Dictionaries DICT !macro Dictionaries DICT
${DICT} af-0.50-0 "Afrikaans" af 915 ${DICT} af-0.50-0 "Afrikaans" af 915
${DICT} ar-1.2-0 "Arabic" ar 4352 ${DICT} ar-1.2-0 "Arabic" ar 4352
${DICT} ms-0.50-0 "Bahasa Melayu" ms 187 ${DICT} ms-0.50-0 "Bahasa Melayu" ms 187
${DICT} bg-4.1-0 "Bulgarian" bg 5345 ${DICT} bg-4.1-0 "Bulgarian" bg 5345
${DICT} br-0.50-2 "Brezhoneg" br 375 ${DICT} br-0.50-2 "Brezhoneg" br 375
${DICT} be-0.01 "Byelaruskaya mova" be 9229 ${DICT} be-0.01 "Byelaruskaya mova" be 9229
${DICT} ca-20040130-1 "Català" ca 1095 ${DICT} ca-20040130-1 "Català" ca 1095
${DICT} cs-20040614-1 "Ceština" cs 2069 ${DICT} cs-20040614-1 "Ceština" cs 2069
${DICT} da-1.4.42-1 "Dansk" da 3036 ${DICT} da-1.4.42-1 "Dansk" da 3036
${DICT} de-20030222-1 "Deutsch" de 2872 ${DICT} de-20030222-1 "Deutsch" de 2872
${DICT} en-6.0-0 "English" en 1130 ${DICT} en-6.0-0 "English" en 1130
${DICT} es-0.50-2 "Español" es 2953 ${DICT} es-0.50-2 "Español" es 2953
${DICT} eo-2.1.20000225a-2 "Esperanto" eo 3773 ${DICT} eo-2.1.20000225a-2 "Esperanto" eo 3773
${DICT} et-0.1.21-1 "Estonian" et 922 ${DICT} et-0.1.21-1 "Estonian" et 922
${DICT} fr-0.50-3 "Français" fr 4331 ${DICT} fr-0.50-3 "Français" fr 4331
${DICT} gl-0.50-0 "Galego" gl 2974 ${DICT} gl-0.50-0 "Galego" gl 2974
${DICT} el-0.50-3 "Greek" el 3204 ${DICT} el-0.50-3 "Greek" el 3204
${DICT} hy-0.10.0-0 "Hayeren" hy 850 ${DICT} hy-0.10.0-0 "Hayeren" hy 850
${DICT} he-1.0-0 "Hebrew" he 2024 ${DICT} he-1.0-0 "Hebrew" he 2024
${DICT} hsb-0.01-1 "Hornjoserbsce" hsb 385 ${DICT} hsb-0.01-1 "Hornjoserbsce" hsb 385
${DICT} hr-0.51-0 "Hrvatski" hr 1967 ${DICT} hr-0.51-0 "Hrvatski" hr 1967
${DICT} ia-0.50-1 "Interlingua" ia 610 ${DICT} ia-0.50-1 "Interlingua" ia 610
${DICT} is-0.51.1-0 "Íslenska" is 1536 ${DICT} is-0.51.1-0 "Íslenska" is 1536
${DICT} it-2.2_20050523-0 "Italiano" it 696 ${DICT} it-2.2_20050523-0 "Italiano" it 696
${DICT} la-20020503-0 "Latin" la 193 ${DICT} la-20020503-0 "Latin" la 193
${DICT} lv-0.5.5-1 "Latviešu Valoda" lv 256 ${DICT} lv-0.5.5-1 "Latviešu Valoda" lv 256
${DICT} lt-1.1+cvs20060103-0 "Lietuviu kalba" lt 628 ${DICT} lt-1.1+cvs20060103-0 "Lietuviu kalba" lt 628
${DICT} hu-0.99.4.2-0 "Magyar" hu 1608 ${DICT} hu-0.99.4.2-0 "Magyar" hu 1608
${DICT} mn-0.01-0 "Mongolian" mn 141 ${DICT} mn-0.01-0 "Mongolian" mn 141
${DICT} nl-opentaal200711 "Nederlands" nl 1333 ${DICT} nl-opentaal200711 "Nederlands" nl 1333
${DICT} nb-0.50.1-0 "Norsk (Bokmål)" nb 3031 ${DICT} nb-0.50.1-0 "Norsk (Bokmål)" nb 3031
${DICT} nn-0.50.1-1 "Norsk (Nynorsk)" nn 1930 ${DICT} nn-0.50.1-1 "Norsk (Nynorsk)" nn 1930
${DICT} fa-0.11-0 "Persian" fa 1667 ${DICT} fa-0.11-0 "Persian" fa 1667
${DICT} pl-6.0_20061121-0 "Polski" pl 1859 ${DICT} pl-6.0_20061121-0 "Polski" pl 1859
${DICT} pt_PT-20070510-0 "Português" pt_PT 319 ${DICT} pt_PT-20070510-0 "Português" pt_PT 319
${DICT} pt_BR-20080221-1 "Português do Brasil" pt_BR 2453 ${DICT} pt_BR-20080221-1 "Português do Brasil" pt_BR 2453
${DICT} ro-0.50-2 "Româna" ro 341 ${DICT} ro-0.50-2 "Româna" ro 341
${DICT} ru-0.99f7-1 "Russian" ru 1458 ${DICT} ru-0.99f7-1 "Russian" ru 1458
${DICT} gd-0.1.1-1 "Scottish" gd 194 ${DICT} gd-0.1.1-1 "Scottish" gd 194
${DICT} sr-0.02 "Serbian" sr 3686 ${DICT} sr-0.02 "Serbian" sr 3686
${DICT} sk-0.52-0 "Slovencina" sk 4602 ${DICT} sk-0.52-0 "Slovencina" sk 4602
${DICT} sl-0.50-0 "Slovenšcina" sl 5236 ${DICT} sl-0.50-0 "Slovenšcina" sl 5236
${DICT} fi-0.7-0 "Suomi" fi 659 ${DICT} fi-0.7-0 "Suomi" fi 659
${DICT} sv-0.51-0 "Svenska" sv 1029 ${DICT} sv-0.51-0 "Svenska" sv 1029
${DICT} tr-0.50-0 "Türkçe" tr 547 ${DICT} tr-0.50-0 "Türkçe" tr 547
${DICT} uk-1.4.0-0 "Ukrainian" uk 770 ${DICT} uk-1.4.0-0 "Ukrainian" uk 770
${DICT} vi-0.01.1-1 "Vietnamese" vi 115 ${DICT} vi-0.01.1-1 "Vietnamese" vi 115
${DICT} cy-0.50-3 "Welsh" cy 1771 ${DICT} cy-0.50-3 "Welsh" cy 1771
!macroend !macroend

View File

@ -1,101 +1,101 @@
/* /*
gui.nsh gui.nsh
Installer user interface settings Installer user interface settings
*/ */
#-------------------------------- #--------------------------------
# General # General
Name "${APP_NAME} ${APP_VERSION}" Name "${APP_NAME} ${APP_VERSION}"
BrandingText " " BrandingText " "
#-------------------------------- #--------------------------------
# Interface settings # Interface settings
!define MUI_ABORTWARNING !define MUI_ABORTWARNING
!define MUI_ICON "${SETUP_ICON}" !define MUI_ICON "${SETUP_ICON}"
!define MUI_UNICON "${SETUP_ICON}" !define MUI_UNICON "${SETUP_ICON}"
!define MUI_HEADERIMAGE !define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "${SETUP_HEADERIMAGE}" !define MUI_HEADERIMAGE_BITMAP "${SETUP_HEADERIMAGE}"
!define MUI_HEADERIMAGE_RIGHT !define MUI_HEADERIMAGE_RIGHT
!define MUI_WELCOMEFINISHPAGE_BITMAP "${SETUP_WIZARDIMAGE}" !define MUI_WELCOMEFINISHPAGE_BITMAP "${SETUP_WIZARDIMAGE}"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${SETUP_WIZARDIMAGE}" !define MUI_UNWELCOMEFINISHPAGE_BITMAP "${SETUP_WIZARDIMAGE}"
!define MUI_COMPONENTSPAGE_NODESC !define MUI_COMPONENTSPAGE_NODESC
#-------------------------------- #--------------------------------
# Pages # Pages
# Installer # Installer
!define MUI_WELCOMEPAGE_TITLE_3LINES !define MUI_WELCOMEPAGE_TITLE_3LINES
!define MUI_WELCOMEPAGE_TEXT $(TEXT_WELCOME) !define MUI_WELCOMEPAGE_TEXT $(TEXT_WELCOME)
!insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "${FILES_LICENSE}" !insertmacro MUI_PAGE_LICENSE "${FILES_LICENSE}"
!insertmacro MULTIUSER_PAGE_INSTALLMODE !insertmacro MULTIUSER_PAGE_INSTALLMODE
Page custom PageReinstall PageReinstallValidate Page custom PageReinstall PageReinstallValidate
Page custom PageExternalLaTeX PageExternalLaTeXValidate Page custom PageExternalLaTeX PageExternalLaTeXValidate
!ifndef BUNDLE_IMAGEMAGICK !ifndef BUNDLE_IMAGEMAGICK
Page custom PageExternalImageMagick PageExternalImageMagickValidate Page custom PageExternalImageMagick PageExternalImageMagickValidate
!endif !endif
!ifndef BUNDLE_GHOSTSCRIPT !ifndef BUNDLE_GHOSTSCRIPT
Page custom PageExternalGhostscript PageExternalGhostscriptValidate Page custom PageExternalGhostscript PageExternalGhostscriptValidate
!endif !endif
Page custom PageLanguage PageLanguageValidate Page custom PageLanguage PageLanguageValidate
!define MUI_PAGE_HEADER_TEXT $(TEXT_DICT_TITLE) !define MUI_PAGE_HEADER_TEXT $(TEXT_DICT_TITLE)
!define MUI_PAGE_HEADER_SUBTEXT $(TEXT_DICT_SUBTITLE) !define MUI_PAGE_HEADER_SUBTEXT $(TEXT_DICT_SUBTITLE)
!define MUI_COMPONENTSPAGE_TEXT_TOP $(TEXT_DICT_TOP) !define MUI_COMPONENTSPAGE_TEXT_TOP $(TEXT_DICT_TOP)
!define MUI_COMPONENTSPAGE_TEXT_COMPLIST $(TEXT_DICT_LIST) !define MUI_COMPONENTSPAGE_TEXT_COMPLIST $(TEXT_DICT_LIST)
!insertmacro MUI_PAGE_COMPONENTS # For spell checker dictionaries !insertmacro MUI_PAGE_COMPONENTS # For spell checker dictionaries
!insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_RUN "$INSTDIR\${APP_RUN}" !define MUI_FINISHPAGE_RUN "$INSTDIR\${APP_RUN}"
!define MUI_FINISHPAGE_SHOWREADME !define MUI_FINISHPAGE_SHOWREADME
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
!define MUI_FINISHPAGE_SHOWREADME_FUNCTION CreateDesktopShortcut !define MUI_FINISHPAGE_SHOWREADME_FUNCTION CreateDesktopShortcut
!define MUI_FINISHPAGE_SHOWREADME_TEXT $(TEXT_FINISH_DESKTOP) !define MUI_FINISHPAGE_SHOWREADME_TEXT $(TEXT_FINISH_DESKTOP)
!define MUI_FINISHPAGE_LINK $(TEXT_FINISH_WEBSITE) !define MUI_FINISHPAGE_LINK $(TEXT_FINISH_WEBSITE)
!define MUI_FINISHPAGE_LINK_LOCATION "http://www.lyx.org/" !define MUI_FINISHPAGE_LINK_LOCATION "http://www.lyx.org/"
!define MUI_PAGE_CUSTOMFUNCTION_SHOW CheckDesktopShortcut !define MUI_PAGE_CUSTOMFUNCTION_SHOW CheckDesktopShortcut
!insertmacro MUI_PAGE_FINISH !insertmacro MUI_PAGE_FINISH
# Uninstaller # Uninstaller
!define MUI_WELCOMEPAGE_TITLE_3LINES !define MUI_WELCOMEPAGE_TITLE_3LINES
!define MUI_WELCOMEPAGE_TEXT $(UNTEXT_WELCOME) !define MUI_WELCOMEPAGE_TEXT $(UNTEXT_WELCOME)
!insertmacro MUI_UNPAGE_WELCOME !insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_COMPONENTS !insertmacro MUI_UNPAGE_COMPONENTS
!insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH !insertmacro MUI_UNPAGE_FINISH
#-------------------------------- #--------------------------------
# Installer Languages # Installer Languages
!macro LANG LANG_NAME !macro LANG LANG_NAME
# NSIS language file # NSIS language file
!insertmacro MUI_LANGUAGE "${LANG_NAME}" !insertmacro MUI_LANGUAGE "${LANG_NAME}"
# LyX language file # LyX language file
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "lang\${LANG_NAME}.nsh" "lang\English.nsh" !insertmacro LANGFILE_INCLUDE_WITHDEFAULT "lang\${LANG_NAME}.nsh" "lang\English.nsh"
!macroend !macroend
!insertmacro LANG "english" !insertmacro LANG "english"
!insertmacro LANG "french" !insertmacro LANG "french"
!insertmacro LANG "german" !insertmacro LANG "german"
!insertmacro LANG "italian" !insertmacro LANG "italian"
#-------------------------------- #--------------------------------
# Version information # Version information
VIProductVersion "${APP_VERSION_NUMBER}" VIProductVersion "${APP_VERSION_NUMBER}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "${APP_NAME}" VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "${APP_NAME}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "${APP_INFO}" VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "${APP_INFO}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${APP_VERSION}" VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${APP_VERSION}"
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "${APP_COPYRIGHT}" VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "${APP_COPYRIGHT}"

View File

@ -1,42 +1,42 @@
/* /*
nsis.nsh nsis.nsh
Configuration of standard NSIS header files Configuration of standard NSIS header files
*/ */
#-------------------------------- #--------------------------------
# Multi-User settings # Multi-User settings
!define MULTIUSER_EXECUTIONLEVEL Highest !define MULTIUSER_EXECUTIONLEVEL Highest
!define MULTIUSER_INSTALLMODE_COMMANDLINE !define MULTIUSER_INSTALLMODE_COMMANDLINE
!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "${APP_REGKEY}" !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "${APP_REGKEY}"
!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME "" !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME ""
!define MULTIUSER_INSTALLMODE_INSTDIR "${APP_DIR}" !define MULTIUSER_INSTALLMODE_INSTDIR "${APP_DIR}"
!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "${APP_REGKEY}" !define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "${APP_REGKEY}"
!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME "" !define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME ""
!define MULTIUSER_INSTALLMODE_FUNCTION InitUser !define MULTIUSER_INSTALLMODE_FUNCTION InitUser
!define MULTIUSER_MUI !define MULTIUSER_MUI
#-------------------------------- #--------------------------------
# Standard header files # Standard header files
!include MUI2.nsh !include MUI2.nsh
!include LogicLib.nsh !include LogicLib.nsh
!include StrFunc.nsh !include StrFunc.nsh
!include FileFunc.nsh !include FileFunc.nsh
!include WordFunc.nsh !include WordFunc.nsh
!include Sections.nsh !include Sections.nsh
!include WinVer.nsh !include WinVer.nsh
!include LangFile.nsh !include LangFile.nsh
!include MultiUser.nsh !include MultiUser.nsh
!include nsDialogs.nsh !include nsDialogs.nsh
#-------------------------------- #--------------------------------
# Include standard functions # Include standard functions
!insertmacro RefreshShellIcons !insertmacro RefreshShellIcons
!insertmacro WordFind2X !insertmacro WordFind2X

View File

@ -1,31 +1,31 @@
/* /*
variables.nsh variables.nsh
Variables that are shared between multiple files Variables that are shared between multiple files
*/ */
Var PathLaTeX Var PathLaTeX
Var PathLaTeXLocal Var PathLaTeXLocal
Var PathImageMagick Var PathImageMagick
Var PathGhostscript Var PathGhostscript
Var PathBibTeXEditor Var PathBibTeXEditor
Var SetupLaTeX Var SetupLaTeX
Var SizeLaTeX Var SizeLaTeX
!ifndef BUNDLE_IMAGEMAGICK !ifndef BUNDLE_IMAGEMAGICK
Var SetupImageMagick Var SetupImageMagick
Var SizeImageMagick Var SizeImageMagick
!endif !endif
!ifndef BUNDLE_GHOSTSCRIPT !ifndef BUNDLE_GHOSTSCRIPT
Var SetupGhostscript Var SetupGhostscript
Var SizeGhostscript Var SizeGhostscript
!endif !endif
Var LangName Var LangName
Var LangISOCode Var LangISOCode
Var PrinterConf Var PrinterConf

View File

@ -1,421 +1,421 @@
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\fswiss\fcharset0 Arial;}{\f2\fnil\fcharset2 Symbol;}} {\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\fswiss\fcharset0 Arial;}{\f2\fnil\fcharset2 Symbol;}}
{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\qc\b\f0\fs24 LyX Windows Distribution License Agreement\b0\fs36\par {\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\qc\b\f0\fs24 LyX Windows Distribution License Agreement\b0\fs36\par
\pard\fs16\par \pard\fs16\par
\pard\qc This Windows distribution of LyX contains:\par \pard\qc This Windows distribution of LyX contains:\par
\pard\par \pard\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\fi-720\li720 LyX. You can redistribute LyX and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par \pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\fi-720\li720 LyX. You can redistribute LyX and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}Components of Python. You can redistribute Python and/or modify it under the terms of the Python Software Foundation License Version 2.\par {\pntext\f2\'B7\tab}Components of Python. You can redistribute Python and/or modify it under the terms of the Python Software Foundation License Version 2.\par
{\pntext\f2\'B7\tab}Components of ImageMagick. You can redistribute the BaKoMa fonts under the terms of the ImageMagick license.\par {\pntext\f2\'B7\tab}Components of ImageMagick. You can redistribute the BaKoMa fonts under the terms of the ImageMagick license.\par
{\pntext\f2\'B7\tab}Components of GPL Ghostscript. You can redistribute Netpbm and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par {\pntext\f2\'B7\tab}Components of GPL Ghostscript. You can redistribute Netpbm and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}Components of Aspell. You can redistribute Aspell and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.\par {\pntext\f2\'B7\tab}Components of Aspell. You can redistribute Aspell and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}A modified version of the BaKoMa fonts. You can redistribute the BaKoMa fonts under the terms of the BaKoMa Font License.\par {\pntext\f2\'B7\tab}A modified version of the BaKoMa fonts. You can redistribute the BaKoMa fonts under the terms of the BaKoMa Font License.\par
{\pntext\f2\'B7\tab}The wasy font 'wasy10.ttf' from the latex-xft font bundle: http://packages.qa.debian.org/l/latex-xft-fonts.html. You can redistribute the latex-xft font bundle and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par {\pntext\f2\'B7\tab}The wasy font 'wasy10.ttf' from the latex-xft font bundle: http://packages.qa.debian.org/l/latex-xft-fonts.html. You can redistribute the latex-xft font bundle and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}Components of Netpbm. You can redistribute Netpbm and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par {\pntext\f2\'B7\tab}Components of Netpbm. You can redistribute Netpbm and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}Components of Dvipost. You can redistribute Dvipost and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par {\pntext\f2\'B7\tab}Components of Dvipost. You can redistribute Dvipost and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
{\pntext\f2\'B7\tab}Components of Aiksaurus. You can redistribute Aiksaurus and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par {\pntext\f2\'B7\tab}Components of Aiksaurus. You can redistribute Aiksaurus and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\par
\pard\par \pard\par
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\par This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\par
\par \par
\pard\qc\b\fs24 GNU GENERAL PUBLIC LICENSE\b0\fs16\par \pard\qc\b\fs24 GNU GENERAL PUBLIC LICENSE\b0\fs16\par
Version 2, June 1991\par Version 2, June 1991\par
\par \par
Copyright (C) 1989, 1991 Free Software Foundation, Inc.\par Copyright (C) 1989, 1991 Free Software Foundation, Inc.\par
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\par 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\par
Everyone is permitted to copy and distribute verbatim copies\par Everyone is permitted to copy and distribute verbatim copies\par
of this license document, but changing it is not allowed.\par of this license document, but changing it is not allowed.\par
\pard\par \pard\par
\b Preamble\b0\par \b Preamble\b0\par
\par \par
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.\par The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.\par
\par \par
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.\par When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.\par
\par \par
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.\par To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.\par
\par \par
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.\par For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.\par
\par \par
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.\par We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.\par
\par \par
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.\par Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.\par
\par \par
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.\par Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.\par
\par \par
The precise terms and conditions for copying, distribution and modification follow.\par The precise terms and conditions for copying, distribution and modification follow.\par
\page\b GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\b0\par \page\b GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\b0\par
\par \par
0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".\par 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".\par
\par \par
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.\par Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.\par
\par \par
1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.\par 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.\par
\par \par
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\par You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\par
\par \par
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:\par 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:\par
\par \par
a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.\par a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.\par
\par \par
b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.\par b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.\par
\par \par
c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)\par c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)\par
\page These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\par \page These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\par
\par \par
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.\par Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.\par
\par \par
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.\par In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.\par
\par \par
3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:\par 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:\par
\par \par
a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,\par a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,\par
\par \par
b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,\par b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,\par
\par \par
c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)\par c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)\par
\par \par
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\par The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\par
\par \par
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.\par If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.\par
\page 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\par \page 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\par
\par \par
5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.\par 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.\par
\par \par
6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.\par 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.\par
\par \par
7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.\par 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.\par
\par \par
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.\par If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.\par
\par \par
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\par It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\par
\par \par
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. \page 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.\par This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. \page 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.\par
\par \par
9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\par 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\par
\par \par
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.\par Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.\par
\par \par
10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\par 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\par
\par \par
\b NO WARRANTY\b0\par \b NO WARRANTY\b0\par
\par \par
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\par 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\par
\par \par
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\par 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\par
\par \par
\b END OF TERMS AND CONDITIONS\par \b END OF TERMS AND CONDITIONS\par
\par \par
\pard\qc How to Apply These Terms to Your New Programs\b0\par \pard\qc How to Apply These Terms to Your New Programs\b0\par
\pard\par \pard\par
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.\par If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.\par
\par \par
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.\par To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.\par
\par \par
<one line to give the program's name and a brief idea of what it does.>\par <one line to give the program's name and a brief idea of what it does.>\par
Copyright (C) <year> <name of author>\par Copyright (C) <year> <name of author>\par
\par \par
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or(at your option) any later version.\par This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or(at your option) any later version.\par
\par \par
This program is distributed in the hope that it will be useful,\par This program is distributed in the hope that it will be useful,\par
but WITHOUT ANY WARRANTY; without even the implied warranty of\par but WITHOUT ANY WARRANTY; without even the implied warranty of\par
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\par MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\par
GNU General Public License for more details.\par GNU General Public License for more details.\par
\par \par
You should have received a copy of the GNU General Public License along\par You should have received a copy of the GNU General Public License along\par
with this program; if not, write to the Free Software Foundation, Inc.,\par with this program; if not, write to the Free Software Foundation, Inc.,\par
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\par 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\par
\par \par
Also add information on how to contact you by electronic and paper mail.\par Also add information on how to contact you by electronic and paper mail.\par
\par \par
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:\par If the program is interactive, make it output a short notice like this when it starts in an interactive mode:\par
\par \par
Gnomovision version 69, Copyright (C) year name of author\par Gnomovision version 69, Copyright (C) year name of author\par
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\par Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\par
This is free software, and you are welcome to redistribute it\par This is free software, and you are welcome to redistribute it\par
under certain conditions; type `show c' for details.\par under certain conditions; type `show c' for details.\par
\par \par
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.\par The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.\par
\par \par
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:\par You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:\par
\par \par
Yoyodyne, Inc., hereby disclaims all copyright interest in the program\par Yoyodyne, Inc., hereby disclaims all copyright interest in the program\par
`Gnomovision' (which makes passes at compilers) written by James Hacker.\par `Gnomovision' (which makes passes at compilers) written by James Hacker.\par
\par \par
<signature of Ty Coon>, 1 April 1989\par <signature of Ty Coon>, 1 April 1989\par
Ty Coon, President of Vice\par Ty Coon, President of Vice\par
\par \par
This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License.\b\par This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License.\b\par
\b0\par \b0\par
\pard\qc\b\fs24 GNU LESSER GENERAL PUBLIC LICENSE\b0\fs16\par \pard\qc\b\fs24 GNU LESSER GENERAL PUBLIC LICENSE\b0\fs16\par
Version 2.1, February 1999\par Version 2.1, February 1999\par
\par \par
Copyright (C) 1991, 1999 Free Software Foundation, Inc.\par Copyright (C) 1991, 1999 Free Software Foundation, Inc.\par
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\par 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\par
Everyone is permitted to copy and distribute verbatim copies\par Everyone is permitted to copy and distribute verbatim copies\par
of this license document, but changing it is not allowed.\par of this license document, but changing it is not allowed.\par
\par \par
[This is the first released version of the Lesser GPL. It also counts\par [This is the first released version of the Lesser GPL. It also counts\par
as the successor of the GNU Library Public License, version 2, hence\par as the successor of the GNU Library Public License, version 2, hence\par
the version number 2.1.]\par the version number 2.1.]\par
\pard\b Preamble\b0\par \pard\b Preamble\b0\par
\par \par
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.\par The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.\par
\par \par
This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.\par This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.\par
\par \par
When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.\par When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.\par
\par \par
To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.\par To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.\par
\par \par
For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.\par For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.\par
\par \par
We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.\par We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.\par
\par \par
To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others.\par To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others.\par
\par \par
Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.\par Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.\par
\par \par
Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs.\par Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs.\par
\par \par
When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library.\par When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library.\par
\par \par
We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.\par We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances.\par
\par \par
For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.\par For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.\par
\par \par
In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.\par In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.\par
\par \par
Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.\par Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.\par
\par \par
The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run.\par The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run.\par
\par \par
\b TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\b0\par \b TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\b0\par
\par \par
0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you".\par 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you".\par
\par \par
A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.\par A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.\par
\par \par
The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)\par The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)\par
\par \par
"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.\par "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.\par
\par \par
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.\par Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.\par
\par \par
1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.\par 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.\par
\par \par
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\par You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\par
\par \par
2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:\par 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:\par
\par \par
* a) The modified work must itself be a software library.\par * a) The modified work must itself be a software library.\par
* b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.\par * b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.\par
* c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.\par * c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.\par
* d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.\par * d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.\par
\par \par
(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)\par (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)\par
\par \par
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\par These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\par
\par \par
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.\par Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.\par
\par \par
In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. \par In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. \par
\par \par
3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.\par 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.\par
\par \par
Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.\par Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.\par
\par \par
This option is useful when you wish to copy part of the code of the Library into a program that is not a library.\par This option is useful when you wish to copy part of the code of the Library into a program that is not a library.\par
\par \par
4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.\par 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.\par
\par \par
If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.\par If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.\par
\par \par
5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.\par 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.\par
\par \par
However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.\par However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.\par
\par \par
When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.\par When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.\par
\par \par
If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)\par If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)\par
\par \par
Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.\par Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.\par
\par \par
6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.\par 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.\par
\par \par
You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:\par You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:\par
\par \par
* a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)\par * a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)\par
* b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.\par * b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.\par
* c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.\par * c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.\par
* d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.\par * d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.\par
* e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. \par * e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. \par
\par \par
For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\par For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\par
\par \par
It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.\par It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.\par
\par \par
7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:\par 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:\par
\par \par
* a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.\par * a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.\par
* b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. \par * b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. \par
\par \par
8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\par 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\par
\par \par
9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.\par 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.\par
\par \par
10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.\par 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.\par
\par \par
11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.\par 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.\par
\par \par
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.\par If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.\par
\par \par
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\par It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\par
\par \par
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.\par This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.\par
\par \par
12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.\par 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.\par
\par \par
13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\par 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\par
\par \par
Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.\par Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.\par
\par \par
14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\par 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\par
\par \par
\b NO WARRANTY\b0\par \b NO WARRANTY\b0\par
\par \par
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\par 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\par
\par \par
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\par 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\par
\par \par
\b END OF TERMS AND CONDITIONS\b0\par \b END OF TERMS AND CONDITIONS\b0\par
\par \par
\pard\qc\b How to Apply These Terms to Your New Libraries\b0\par \pard\qc\b How to Apply These Terms to Your New Libraries\b0\par
\pard\par \pard\par
If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License).\par If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License).\par
\par \par
To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.\par To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.\par
\par \par
<one line to give the library's name and a brief idea of what it does.>\par <one line to give the library's name and a brief idea of what it does.>\par
Copyright (C) <year> <name of author>\par Copyright (C) <year> <name of author>\par
\par \par
This library is free software; you can redistribute it and/or\par This library is free software; you can redistribute it and/or\par
modify it under the terms of the GNU Lesser General Public\par modify it under the terms of the GNU Lesser General Public\par
License as published by the Free Software Foundation; either\par License as published by the Free Software Foundation; either\par
version 2.1 of the License, or (at your option) any later version.\par version 2.1 of the License, or (at your option) any later version.\par
\par \par
This library is distributed in the hope that it will be useful,\par This library is distributed in the hope that it will be useful,\par
but WITHOUT ANY WARRANTY; without even the implied warranty of\par but WITHOUT ANY WARRANTY; without even the implied warranty of\par
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\par MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\par
Lesser General Public License for more details.\par Lesser General Public License for more details.\par
\par \par
You should have received a copy of the GNU Lesser General Public\par You should have received a copy of the GNU Lesser General Public\par
License along with this library; if not, write to the Free Software\par License along with this library; if not, write to the Free Software\par
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\par Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\par
\par \par
Also add information on how to contact you by electronic and paper mail.\par Also add information on how to contact you by electronic and paper mail.\par
\par \par
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names:\par You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names:\par
\par \par
Yoyodyne, Inc., hereby disclaims all copyright interest in the\par Yoyodyne, Inc., hereby disclaims all copyright interest in the\par
library `Frob' (a library for tweaking knobs) written by James Random Hacker.\par library `Frob' (a library for tweaking knobs) written by James Random Hacker.\par
\par \par
<signature of Ty Coon>, 1 April 1990\par <signature of Ty Coon>, 1 April 1990\par
Ty Coon, President of Vice\par Ty Coon, President of Vice\par
\par \par
That's all there is to it!\par That's all there is to it!\par
\par \par
\pard\qc\b\fs24 PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2\b0\fs16\par \pard\qc\b\fs24 PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2\b0\fs16\par
\pard\par \pard\par
1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and the Individual or Organization ("Licensee") accessing and otherwise using this software ("Python") in source or binary form and its associated documentation.\par 1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and the Individual or Organization ("Licensee") accessing and otherwise using this software ("Python") in source or binary form and its associated documentation.\par
\par \par
2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights Reserved" are retained in Python alone or in any derivative version prepared by Licensee.\par 2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights Reserved" are retained in Python alone or in any derivative version prepared by Licensee.\par
\par \par
3. In the event Licensee prepares a derivative work that is based on or incorporates Python or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python.\par 3. In the event Licensee prepares a derivative work that is based on or incorporates Python or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python.\par
\par \par
4. PSF is making Python available to Licensee on an "AS IS" basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.\par 4. PSF is making Python available to Licensee on an "AS IS" basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.\par
\par \par
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.\par 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.\par
\par \par
6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.\par 6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.\par
\par \par
7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party.\par 7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party.\par
\par \par
8. By copying, installing or otherwise using Python, Licensee agrees to be bound by the terms and conditions of this License Agreement.\par 8. By copying, installing or otherwise using Python, Licensee agrees to be bound by the terms and conditions of this License Agreement.\par
\par \par
\pard\qc\b\fs24 IMAGEMAGICK LICENSE\b0\fs16\par \pard\qc\b\fs24 IMAGEMAGICK LICENSE\b0\fs16\par
\pard\par \pard\par
The legally binding and authoritative terms and conditions for use, reproduction, and distribution of ImageMagick follow:\par The legally binding and authoritative terms and conditions for use, reproduction, and distribution of ImageMagick follow:\par
\par \par
Copyright 1999-2007 ImageMagick Studio LLC, a non-profit organization dedicated to making software imaging solutions freely available.\par Copyright 1999-2007 ImageMagick Studio LLC, a non-profit organization dedicated to making software imaging solutions freely available.\par
\par \par
1. Definitions.\par 1. Definitions.\par
\par \par
License shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.\par License shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.\par
\par \par
Licensor shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.\par Licensor shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.\par
\par \par
Legal Entity shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, control means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.\par Legal Entity shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, control means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.\par
\par \par
You (or Your) shall mean an individual or Legal Entity exercising permissions granted by this License.\par You (or Your) shall mean an individual or Legal Entity exercising permissions granted by this License.\par
\par \par
Source form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.\par Source form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.\par
\par \par
Object form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.\par Object form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.\par
\par \par
Work shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).\par Work shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).\par
\par \par
Derivative Works shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\par Derivative Works shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\par
\par \par
Contribution shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, submitted means any form of electronic, verbal, or written communication intentionally sent to the Licensor by its copyright holder or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as Not a Contribution.\par Contribution shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, submitted means any form of electronic, verbal, or written communication intentionally sent to the Licensor by its copyright holder or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as Not a Contribution.\par
\par \par
Contributor shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.\par Contributor shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.\par
\par \par
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.\par 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.\par
\par \par
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted.\par 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted.\par
\par \par
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:\par 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:\par
\par \par
a. You must give any other recipients of the Work or Derivative Works a copy of this License; and\par a. You must give any other recipients of the Work or Derivative Works a copy of this License; and\par
b. You must cause any modified files to carry prominent notices stating that You changed the files; and\par b. You must cause any modified files to carry prominent notices stating that You changed the files; and\par
c. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and\par c. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and\par
d. If the Work includes a NOTICE text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.\par d. If the Work includes a NOTICE text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.\par
\par \par
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.\par You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.\par
\par \par
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.\par 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.\par
\par \par
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.\par 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.\par
\par \par
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.\par 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.\par
\par \par
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.\par 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.\par
\par \par
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License.\par 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License.\par
\par \par
\pard\qc\b\fs24 BaKoMa Fonts License\par \pard\qc\b\fs24 BaKoMa Fonts License\par
\pard\b0\fs16\par \pard\b0\fs16\par
This licence covers two font packs (known as BaKoMa Fonts Colelction, which is available at `CTAN:fonts/cm/ps-type1/bakoma/'):\par This licence covers two font packs (known as BaKoMa Fonts Colelction, which is available at `CTAN:fonts/cm/ps-type1/bakoma/'):\par
\par \par
1) BaKoMa-CM (1.1/12-Nov-94)\par 1) BaKoMa-CM (1.1/12-Nov-94)\par
Computer Modern Fonts in PostScript Type 1 and TrueType font formats.\par Computer Modern Fonts in PostScript Type 1 and TrueType font formats.\par
\par \par
2) BaKoMa-AMS (1.2/19-Jan-95)\par 2) BaKoMa-AMS (1.2/19-Jan-95)\par
AMS TeX fonts in PostScript Type 1 and TrueType font formats.\par AMS TeX fonts in PostScript Type 1 and TrueType font formats.\par
\par \par
Copyright (C) 1994, 1995, Basil K. Malyshev. All Rights Reserved.\par Copyright (C) 1994, 1995, Basil K. Malyshev. All Rights Reserved.\par
\par \par
Permission to copy and distribute these fonts for any purpose is hereby granted without fee, provided that the above copyright notice, author statement and this permission notice appear in all copies of these fonts and related documentation.\par Permission to copy and distribute these fonts for any purpose is hereby granted without fee, provided that the above copyright notice, author statement and this permission notice appear in all copies of these fonts and related documentation.\par
\par \par
Permission to modify and distribute modified fonts for any purpose is hereby granted without fee, provided that the copyright notice, author statement, this permission notice and location of original fonts (http://www.ctan.org/tex-archive/fonts/cm/ps-type1/bakoma) appear in all copies of modified fonts and related documentation.\par Permission to modify and distribute modified fonts for any purpose is hereby granted without fee, provided that the copyright notice, author statement, this permission notice and location of original fonts (http://www.ctan.org/tex-archive/fonts/cm/ps-type1/bakoma) appear in all copies of modified fonts and related documentation.\par
\par \par
Permission to use these fonts (embedding into PostScript, PDF, SVG and printing by using any software) is hereby granted without fee. It is not required to provide any notices about using these fonts.\par Permission to use these fonts (embedding into PostScript, PDF, SVG and printing by using any software) is hereby granted without fee. It is not required to provide any notices about using these fonts.\par
\par \par
Basil K. Malyshev\par Basil K. Malyshev\par
INSTITUTE FOR HIGH ENERGY PHYSICS\par INSTITUTE FOR HIGH ENERGY PHYSICS\par
IHEP, OMVT\par IHEP, OMVT\par
Moscow Region\par Moscow Region\par
142281 PROTVINO\par 142281 PROTVINO\par
RUSSIA\par RUSSIA\par
\par \par
E-Mail: bakoma@mail.ru or malyshev@mail.ihep.ru\f1\par E-Mail: bakoma@mail.ru or malyshev@mail.ihep.ru\f1\par
} }

View File

@ -1,55 +1,55 @@
/* /*
NSIS Script - LyX 1.5/1.6 Installer for Win32 NSIS Script - LyX 1.5/1.6 Installer for Win32
Authors: Joost Verburg, Angus Leeming, Uwe Stöhr Authors: Joost Verburg, Angus Leeming, Uwe Stöhr
Requires NSIS 2.36 or later Requires NSIS 2.36 or later
Licence details for all installer scripts can be found in the file COPYING Licence details for all installer scripts can be found in the file COPYING
*/ */
!include settings.nsh !include settings.nsh
#-------------------------------- #--------------------------------
# Header files # Header files
!include include\declarations.nsh !include include\declarations.nsh
!include include\variables.nsh !include include\variables.nsh
!include include\nsis.nsh !include include\nsis.nsh
!include include\dictlist.nsh !include include\dictlist.nsh
!include include\filelist.nsh !include include\filelist.nsh
!include include\langlist.nsh !include include\langlist.nsh
!include include\detection.nsh !include include\detection.nsh
!include include\gui.nsh !include include\gui.nsh
!include include\init.nsh !include include\init.nsh
#-------------------------------- #--------------------------------
# The following commands use makensis to compile two applications. # The following commands use makensis to compile two applications.
# Although these applications are written in NSIS, they do not install anything. # Although these applications are written in NSIS, they do not install anything.
# Compile the launcher # Compile the launcher
!system '"${NSISDIR}\makensis.exe" "${FILES_LAUNCHER}\launcher.nsi"' !system '"${NSISDIR}\makensis.exe" "${FILES_LAUNCHER}\launcher.nsi"'
# Compile Windows PDF view helper # Compile Windows PDF view helper
!system '"${NSISDIR}\makensis.exe" "${FILES_PDFVIEW}\pdfview.nsi"' !system '"${NSISDIR}\makensis.exe" "${FILES_PDFVIEW}\pdfview.nsi"'
#-------------------------------- #--------------------------------
# Setup # Setup
!include setup\install.nsh !include setup\install.nsh
!include setup\uninstall.nsh !include setup\uninstall.nsh
!include setup\configure.nsh !include setup\configure.nsh
#-------------------------------- #--------------------------------
# User interface (wizard pages) # User interface (wizard pages)
!include gui\external.nsh !include gui\external.nsh
!include gui\langselect.nsh !include gui\langselect.nsh
!include gui\reinstall.nsh !include gui\reinstall.nsh
#-------------------------------- #--------------------------------
# Output file # Output file
Outfile "${SETUP_EXE}" Outfile "${SETUP_EXE}"

View File

@ -1,59 +1,59 @@
/* /*
Settings for LyX installer Settings for LyX installer
These typically need to be modified for each LyX release These typically need to be modified for each LyX release
*/ */
#-------------------------------- #--------------------------------
# Windows version on which the complier is running # Windows version on which the complier is running
!define COMPILER_OS VISTA !define COMPILER_OS VISTA
#!define COMPILER_OS XP #!define COMPILER_OS XP
#-------------------------------- #--------------------------------
# Version number # Version number
!define APP_VERSION_MAJOR 1 !define APP_VERSION_MAJOR 1
!define APP_VERSION_MINOR 6 !define APP_VERSION_MINOR 6
!define APP_VERSION_REVISION 0 !define APP_VERSION_REVISION 0
!define APP_VERSION_BUILD 0 # Start with 1 for the installer releases of each version !define APP_VERSION_BUILD 0 # Start with 1 for the installer releases of each version
!define /date APP_VERSION "${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}svn %Y%m%d" # Version to display !define /date APP_VERSION "${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}svn %Y%m%d" # Version to display
#-------------------------------- #--------------------------------
# Installer file name # Installer file name
# Typical names for the release are "LyX-1.5.4-1-Installer.exe" etc. # Typical names for the release are "LyX-1.5.4-1-Installer.exe" etc.
!ifndef ExeFile !ifndef ExeFile
!define /date ExeFile "LyX-${APP_VERSION_MAJOR}${APP_VERSION_MINOR}svn-%Y%m%d-Installer.exe" !define /date ExeFile "LyX-${APP_VERSION_MAJOR}${APP_VERSION_MINOR}svn-%Y%m%d-Installer.exe"
!endif !endif
!ifndef BundleExeFile !ifndef BundleExeFile
!define /date BundleExeFile "LyX-${APP_VERSION_MAJOR}${APP_VERSION_MINOR}svn-%Y%m%d-Installer-Bundle.exe" !define /date BundleExeFile "LyX-${APP_VERSION_MAJOR}${APP_VERSION_MINOR}svn-%Y%m%d-Installer-Bundle.exe"
!endif !endif
!ifndef MinimalExeFile !ifndef MinimalExeFile
!define /date MinimalExeFile "LyX-${APP_VERSION_MAJOR}${APP_VERSION_MINOR}svn-%Y%m%d-Installer-Minimal.exe" !define /date MinimalExeFile "LyX-${APP_VERSION_MAJOR}${APP_VERSION_MINOR}svn-%Y%m%d-Installer-Minimal.exe"
!endif !endif
#-------------------------------- #--------------------------------
# File names of component installers # File names of component installers
!define SETUPFILE_LATEX "basic-miktex-2.7.3248.exe" !define SETUPFILE_LATEX "basic-miktex-2.7.3248.exe"
!define SETUPFILE_IMAGEMAGEMAGICK "ImageMagick-6.4.1-0-Q16-windows-dll.exe" !define SETUPFILE_IMAGEMAGEMAGICK "ImageMagick-6.4.1-0-Q16-windows-dll.exe"
!define SETUPFILE_GHOSTSCRIPT "gs861w32.exe" !define SETUPFILE_GHOSTSCRIPT "gs861w32.exe"
#-------------------------------- #--------------------------------
# Download size of components (in KB) # Download size of components (in KB)
!define SIZE_DOWNLOAD_LATEX 78493 !define SIZE_DOWNLOAD_LATEX 78493
!define SIZE_DOWNLOAD_IMAGEMAGICK 8565 !define SIZE_DOWNLOAD_IMAGEMAGICK 8565
!define SIZE_DOWNLOAD_GHOSTSCRIPT 12469 !define SIZE_DOWNLOAD_GHOSTSCRIPT 12469
#-------------------------------- #--------------------------------
# Approximations of space required for components (in KB) # Approximations of space required for components (in KB)
!define SIZE_LATEX 225000 !define SIZE_LATEX 225000
!define SIZE_IMAGEMAGICK 34500 !define SIZE_IMAGEMAGICK 34500
!define SIZE_GHOSTSCRIPT 31500 !define SIZE_GHOSTSCRIPT 31500

View File

@ -1,131 +1,131 @@
Index: base/Aiksaurus.cpp Index: base/Aiksaurus.cpp
=================================================================== ===================================================================
RCS file: /cvsroot/aiksaurus/base/Aiksaurus.cpp,v RCS file: /cvsroot/aiksaurus/base/Aiksaurus.cpp,v
retrieving revision 1.5 retrieving revision 1.5
diff -u -r1.5 Aiksaurus.cpp diff -u -r1.5 Aiksaurus.cpp
--- base/Aiksaurus.cpp 3 Apr 2005 19:10:55 -0000 1.5 --- base/Aiksaurus.cpp 3 Apr 2005 19:10:55 -0000 1.5
+++ base/Aiksaurus.cpp 12 Jul 2006 21:00:20 -0000 +++ base/Aiksaurus.cpp 12 Jul 2006 21:00:20 -0000
@@ -36,36 +36,69 @@ @@ -36,36 +36,69 @@
using namespace std; using namespace std;
#if defined WIN32 #if defined WIN32
+ +
#ifdef AIK_DATA_DIR #ifdef AIK_DATA_DIR
#undef AIK_DATA_DIR #undef AIK_DATA_DIR
#endif #endif
- #include <windows.h> - #include <windows.h>
- #define WIN32_LEAN_AND_MEAN - #define WIN32_LEAN_AND_MEAN
- // Default aik_data_dir is local directory - // Default aik_data_dir is local directory
- std::string AIK_DATA_DIR(".\\"); - std::string AIK_DATA_DIR(".\\");
- // Regestry Reading for AIK_DATA_DIR - // Regestry Reading for AIK_DATA_DIR
- void ReadRegistry() - void ReadRegistry()
- { - {
- HKEY hKey; - HKEY hKey;
- unsigned long lType; - unsigned long lType;
- DWORD dwSize; - DWORD dwSize;
- unsigned char* szValue = NULL; - unsigned char* szValue = NULL;
- if( ::RegOpenKeyEx( HKEY_LOCAL_MACHINE, "Software\\Aiksaurus", 0, KEY_READ, &hKey) == ERROR_SUCCESS ) - if( ::RegOpenKeyEx( HKEY_LOCAL_MACHINE, "Software\\Aiksaurus", 0, KEY_READ, &hKey) == ERROR_SUCCESS )
- { - {
- // Determine size of string - // Determine size of string
- if( ::RegQueryValueEx( hKey, "Data_Dir", NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS ) - if( ::RegQueryValueEx( hKey, "Data_Dir", NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS )
- { - {
- szValue = new unsigned char[dwSize + 1]; - szValue = new unsigned char[dwSize + 1];
- ::RegQueryValueEx( hKey, "Data_Dir", NULL, &lType, szValue, &dwSize); - ::RegQueryValueEx( hKey, "Data_Dir", NULL, &lType, szValue, &dwSize);
- AIK_DATA_DIR = (char*) szValue; - AIK_DATA_DIR = (char*) szValue;
- delete[] szValue; - delete[] szValue;
- } - }
- } - }
- } - }
+ +
+#ifndef HAVE_GETENV +#ifndef HAVE_GETENV
+#define HAVE_GETENV +#define HAVE_GETENV
+#endif +#endif
+ +
+#include <windows.h> +#include <windows.h>
+#define WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN
+ +
+// Default aik_data_dir is local directory +// Default aik_data_dir is local directory
+std::string AIK_DATA_DIR(".\\"); +std::string AIK_DATA_DIR(".\\");
+ +
+ std::string ReadRegString(HKEY hive, std::string key, std::string name) + std::string ReadRegString(HKEY hive, std::string key, std::string name)
+ { + {
+ +
+ // Reads a string from the Windows registry (used to get paths) + // Reads a string from the Windows registry (used to get paths)
+ +
+ HKEY hKey; + HKEY hKey;
+ unsigned long lType; + unsigned long lType;
+ DWORD dwSize; + DWORD dwSize;
+ unsigned char* szValue = NULL; + unsigned char* szValue = NULL;
+ +
+ if (::RegOpenKeyEx(hive, key.c_str(), 0, KEY_READ, &hKey) == ERROR_SUCCESS) + if (::RegOpenKeyEx(hive, key.c_str(), 0, KEY_READ, &hKey) == ERROR_SUCCESS)
+ { + {
+ if(::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS) + if(::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS)
+ { + {
+ szValue = new unsigned char[dwSize + 1]; + szValue = new unsigned char[dwSize + 1];
+ ::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, szValue, &dwSize); + ::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, szValue, &dwSize);
+ std::string RegistryReturn((char*)szValue); + std::string RegistryReturn((char*)szValue);
+ delete[] szValue; + delete[] szValue;
+ return RegistryReturn; + return RegistryReturn;
+ } else { + } else {
+ return ""; + return "";
+ } + }
+ } else { + } else {
+ return ""; + return "";
+ } + }
+ } + }
+ +
+ HKEY GetRegHive() + HKEY GetRegHive()
+ { + {
+ +
+ // Check whether Aiksaurus is installed for the current user or for all users + // Check whether Aiksaurus is installed for the current user or for all users
+ +
+ std::string value; + std::string value;
+ +
+ if (ReadRegString(HKEY_LOCAL_MACHINE, "Software\\Aiksaurus", "Data Path") == "") + if (ReadRegString(HKEY_LOCAL_MACHINE, "Software\\Aiksaurus", "Data Path") == "")
+ { + {
+ return HKEY_CURRENT_USER; + return HKEY_CURRENT_USER;
+ } else { + } else {
+ return HKEY_LOCAL_MACHINE; + return HKEY_LOCAL_MACHINE;
+ } + }
+ +
+ } + }
+ +
#if defined _DLL_BUILD #if defined _DLL_BUILD
//Add a DllMain Entry point //Add a DllMain Entry point
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; }
#endif #endif
+ +
#endif #endif
namespace AiksaurusImpl namespace AiksaurusImpl
@@ -256,14 +289,25 @@ @@ -256,14 +289,25 @@
try try
{ {
#if defined WIN32 #if defined WIN32
- ReadRegistry(); - ReadRegistry();
+ std::string base(AIK_DATA_DIR); + std::string base(AIK_DATA_DIR);
+ std::string value; + std::string value;
+ HKEY hive; + HKEY hive;
+ +
+ hive = GetRegHive(); + hive = GetRegHive();
+ value = (hive, "Software\\Aiksaurus", "Data Path"); + value = (hive, "Software\\Aiksaurus", "Data Path");
+ if (value != "") base == value; + if (value != "") base == value;
#endif #endif
- std::string base(AIK_DATA_DIR); - std::string base(AIK_DATA_DIR);
+ +
#ifdef HAVE_GETENV #ifdef HAVE_GETENV
- char * aikdatadir_envvar = getenv ("AIK_DATA_DIR"); - char * aikdatadir_envvar = getenv ("AIK_DATA_DIR");
- if (aikdatadir_envvar) base = std::string(aikdatadir_envvar); - if (aikdatadir_envvar) base = std::string(aikdatadir_envvar);
+ char * aikdatadir_envvar = getenv ("AIK_DATA_DIR"); + char * aikdatadir_envvar = getenv ("AIK_DATA_DIR");
+ if (aikdatadir_envvar) base = std::string(aikdatadir_envvar); + if (aikdatadir_envvar) base = std::string(aikdatadir_envvar);
+#endif +#endif
+ +
+#if defined WIN32 +#if defined WIN32
+ if (base.substr(base.length() - 1, 1) != "\\") base.append("\\"); + if (base.substr(base.length() - 1, 1) != "\\") base.append("\\");
#endif #endif
- std::string mfile(base + "meanings.dat"); - std::string mfile(base + "meanings.dat");
+ +
+ std::string mfile(base + "meanings.dat"); + std::string mfile(base + "meanings.dat");
std::string wfile(base + "words.dat"); std::string wfile(base + "words.dat");
d_impl_ptr = new ThesaurusImpl(mfile.c_str(), wfile.c_str()); d_impl_ptr = new ThesaurusImpl(mfile.c_str(), wfile.c_str());
} }

View File

@ -1,220 +1,220 @@
diff -riwBu -Xex dtl\dt2dv.c dtl-modified\dt2dv.c diff -riwBu -Xex dtl\dt2dv.c dtl-modified\dt2dv.c
--- dtl\dt2dv.c Wed Mar 08 01:00:00 1995 --- dtl\dt2dv.c Wed Mar 08 01:00:00 1995
+++ dtl-modified\dt2dv.c Mon Oct 02 13:28:35 2006 +++ dtl-modified\dt2dv.c Mon Oct 02 13:28:35 2006
@@ -1,9 +1,11 @@ @@ -1,9 +1,11 @@
/* dt2dv - convert human-readable "DTL" file to DVI format /* dt2dv - convert human-readable "DTL" file to DVI format
- this is intended to invert dv2dt version 0.6.0 - this is intended to invert dv2dt version 0.6.0
- - version 0.6.1 - 14:38 GMT +11 Thu 9 March 1995 - - version 0.6.1 - 14:38 GMT +11 Thu 9 March 1995
+ - version 0.6.2 - 27 July 2005 + - version 0.6.2 - 27 July 2005
- Geoffrey Tobin G.Tobin@ee.latrobe.edu.au - Geoffrey Tobin G.Tobin@ee.latrobe.edu.au
- fixes: Michal Tomczak-Jaegermann ntomczak@vm.ucs.ualberta.ca - fixes: Michal Tomczak-Jaegermann ntomczak@vm.ucs.ualberta.ca
Nelson H. F. Beebe beebe@math.utah.edu Nelson H. F. Beebe beebe@math.utah.edu
+ Angus Leeming leeming@lyx.org: Enable dt2dv to handle + Angus Leeming leeming@lyx.org: Enable dt2dv to handle
+ .dvi files containing strings longer than 1024 chars. + .dvi files containing strings longer than 1024 chars.
- Reference: "The DVI Driver Standard, Level 0", - Reference: "The DVI Driver Standard, Level 0",
by The TUG DVI Driver Standards Committee. by The TUG DVI Driver Standards Committee.
Appendix A, "Device-Independent File Format". Appendix A, "Device-Independent File Format".
@@ -34,7 +36,7 @@ @@ -34,7 +36,7 @@
size_t max; /* capacity of buf */ size_t max; /* capacity of buf */
S4 wrote; /* number of characters written into buf */ S4 wrote; /* number of characters written into buf */
size_t read; /* position in buf of next character to read from buf */ size_t read; /* position in buf of next character to read from buf */
- char * buf; /* line buffer */ - char * buf; /* line buffer */
+ unsigned char * buf; /* line buffer */ + unsigned char * buf; /* line buffer */
} Line; } Line;
char linebuf[MAXLINE+1]; char linebuf[MAXLINE+1];
@@ -1089,7 +1091,7 @@ @@ -1089,7 +1091,7 @@
dinfo(); dinfo();
status = 0; status = 0;
} }
- else if ( ! isprint (c) && ! isspace (c)) - else if ( ! isprint (c) && ! isspace (c))
+ else if ( ! isprint (c & 0x7f) && ! isspace (c)) + else if ( ! isprint (c & 0x7f) && ! isspace (c))
{ {
PRINT_PROGNAME; PRINT_PROGNAME;
fprintf (stderr, fprintf (stderr,
@@ -2223,7 +2225,7 @@ @@ -2223,7 +2225,7 @@
/* transfer (length and) quoted string from dtl to dvi file, */ /* transfer (length and) quoted string from dtl to dvi file, */
/* return number of bytes written to dvi file. */ /* return number of bytes written to dvi file. */
{ {
- U4 k, k2; - U4 k, k2;
+ U4 k, k2, lstr_maxsize; + U4 k, k2, lstr_maxsize;
Lstring lstr; Lstring lstr;
if (debug) if (debug)
@@ -2232,12 +2234,13 @@ @@ -2232,12 +2234,13 @@
fprintf (stderr, "(xfer_len_string) : entering xfer_len_string.\n"); fprintf (stderr, "(xfer_len_string) : entering xfer_len_string.\n");
} }
- init_Lstring (&lstr, LSIZE); - init_Lstring (&lstr, LSIZE);
- -
/* k[n] : length of special string */ /* k[n] : length of special string */
k = get_unsigned (dtl); k = get_unsigned (dtl);
+ lstr_maxsize = (k > LSIZE) ? k : LSIZE; + lstr_maxsize = (k > LSIZE) ? k : LSIZE;
+ init_Lstring (&lstr, lstr_maxsize); + init_Lstring (&lstr, lstr_maxsize);
+ +
if (debug) if (debug)
{ {
PRINT_PROGNAME; PRINT_PROGNAME;
@@ -2567,7 +2570,7 @@ @@ -2567,7 +2570,7 @@
#ifdef HEX_CHECKSUM #ifdef HEX_CHECKSUM
/* c[4] : (hexadecimal) checksum : I (gt) would prefer this */ /* c[4] : (hexadecimal) checksum : I (gt) would prefer this */
xfer_hex (4, dtl, dvi); xfer_hex (4, dtl, dvi);
-#else /NOT HEX_CHECKSUM */ -#else /NOT HEX_CHECKSUM */
+#else /*NOT HEX_CHECKSUM */ +#else /*NOT HEX_CHECKSUM */
/* c[4] : checksum (octal, for comparison with tftopl's .pl file) */ /* c[4] : checksum (octal, for comparison with tftopl's .pl file) */
xfer_oct (4, dtl, dvi); xfer_oct (4, dtl, dvi);
#endif #endif
diff -riwBu -Xex dtl\Makefile dtl-modified\Makefile diff -riwBu -Xex dtl\Makefile dtl-modified\Makefile
--- dtl\Makefile Tue Sep 19 23:59:17 2006 --- dtl\Makefile Tue Sep 19 23:59:17 2006
+++ dtl-modified\Makefile Wed Jul 05 17:54:20 2006 +++ dtl-modified\Makefile Wed Jul 05 17:54:20 2006
@@ -3,6 +3,14 @@ @@ -3,6 +3,14 @@
# Thu 9 March 1995 # Thu 9 March 1995
# Geoffrey Tobin # Geoffrey Tobin
# Nelson H. F. Beebe # Nelson H. F. Beebe
+# +#
+# Changes 27 July 2005 by Angus Leeming to enable the Makefile to +# Changes 27 July 2005 by Angus Leeming to enable the Makefile to
+# work out of the box on both *nix and Windows machines under +# work out of the box on both *nix and Windows machines under
+# the MinSYS environment. +# the MinSYS environment.
+# +#
+# The Makefile can also be used unaltered to build a Windows executable +# The Makefile can also be used unaltered to build a Windows executable
+# from a Linux box if make is invoked as: +# from a Linux box if make is invoked as:
+# $ make EXEEXT='.exe' CC='i386-mingw32-gcc' +# $ make EXEEXT='.exe' CC='i386-mingw32-gcc'
#======================================================================= #=======================================================================
BINDIR = /usr/local/bin BINDIR = /usr/local/bin
@@ -16,10 +24,22 @@ @@ -16,10 +24,22 @@
CP = /bin/cp CP = /bin/cp
DITROFF = ditroff DITROFF = ditroff
DITROFF = groff DITROFF = groff
-EXES = dt2dv dv2dt -EXES = dt2dv dv2dt
+ +
+# This is a GNU make extension. +# This is a GNU make extension.
+# If you're flavour of make refuses to accept it, +# If you're flavour of make refuses to accept it,
+# then simply hardcode EXEEXT. +# then simply hardcode EXEEXT.
+ifeq ($(WINDIR),) +ifeq ($(WINDIR),)
+ EXEEXT = + EXEEXT =
+else +else
+ EXEEXT = .exe + EXEEXT = .exe
+endif +endif
+ +
+DT2DV = dt2dv$(EXEEXT) +DT2DV = dt2dv$(EXEEXT)
+DV2DT = dv2dt$(EXEEXT) +DV2DT = dv2dt$(EXEEXT)
+EXES = $(DT2DV) $(DV2DT) +EXES = $(DT2DV) $(DV2DT)
LDFLAGS = -s LDFLAGS = -s
LDFLAGS = LDFLAGS =
-MAN2PS = ./man2ps -MAN2PS = ./man2ps
+MAN2PS = sh ./man2ps +MAN2PS = sh ./man2ps
MANDIR = /usr/local/man/man$(MANEXT) MANDIR = /usr/local/man/man$(MANEXT)
MANEXT = 1 MANEXT = 1
OBJS = dt2dv.o dv2dt.o OBJS = dt2dv.o dv2dt.o
@@ -44,23 +64,24 @@ @@ -44,23 +64,24 @@
#======================================================================= #=======================================================================
-all: dtl check doc -all: dtl check doc
+#all: dtl check doc +#all: dtl check doc
+all: dtl check +all: dtl check
doc: dt2dv.hlp dv2dt.hlp dt2dv.ps dv2dt.ps doc: dt2dv.hlp dv2dt.hlp dt2dv.ps dv2dt.ps
-dtl: $(EXES) -dtl: $(EXES)
+dtl: dv2dt dt2dv +dtl: dv2dt dt2dv
check tests: hello example tripvdu edited check tests: hello example tripvdu edited
dv2dt: dv2dt.o dtl.h dv2dt: dv2dt.o dtl.h
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.o - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.o
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $(DV2DT) dv2dt.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $(DV2DT) dv2dt.o
dt2dv: dt2dv.o dtl.h dt2dv: dt2dv.o dtl.h
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.o - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.o
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $(DT2DV) dt2dv.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $(DT2DV) dt2dv.o
-hello: hello.dtl $(EXES) -hello: hello.dtl $(EXES)
- dt2dv hello.dtl hello2.dvi - dt2dv hello.dtl hello2.dvi
- dv2dt hello2.dvi hello2.dtl - dv2dt hello2.dvi hello2.dtl
+hello: hello.dtl dv2dt dt2dv +hello: hello.dtl dv2dt dt2dv
+ ./$(DT2DV) hello.dtl hello2.dvi + ./$(DT2DV) hello.dtl hello2.dvi
+ ./$(DV2DT) hello2.dvi hello2.dtl + ./$(DV2DT) hello2.dvi hello2.dtl
-@diff hello.dtl hello2.dtl > hello.dif -@diff hello.dtl hello2.dtl > hello.dif
@if [ -s hello.dif ] ; \ @if [ -s hello.dif ] ; \
then echo ERROR: differences in hello.dif ; \ then echo ERROR: differences in hello.dif ; \
@@ -69,11 +90,11 @@ @@ -69,11 +90,11 @@
hello.dtl: hello.tex hello.dtl: hello.tex
tex hello tex hello
- dv2dt hello.dvi hello.dtl - dv2dt hello.dvi hello.dtl
+ ./$(DV2DT) hello.dvi hello.dtl + ./$(DV2DT) hello.dvi hello.dtl
-example: example.dtl $(EXES) -example: example.dtl $(EXES)
- dt2dv example.dtl example2.dvi - dt2dv example.dtl example2.dvi
- dv2dt example2.dvi example2.dtl - dv2dt example2.dvi example2.dtl
+example: example.dtl dv2dt dt2dv +example: example.dtl dv2dt dt2dv
+ ./$(DT2DV) example.dtl example2.dvi + ./$(DT2DV) example.dtl example2.dvi
+ ./$(DV2DT) example2.dvi example2.dtl + ./$(DV2DT) example2.dvi example2.dtl
-@diff example.dtl example2.dtl > example.dif -@diff example.dtl example2.dtl > example.dif
@if [ -s example.dif ] ; \ @if [ -s example.dif ] ; \
then echo ERROR: differences in example.dif ; \ then echo ERROR: differences in example.dif ; \
@@ -82,11 +103,11 @@ @@ -82,11 +103,11 @@
example.dtl: example.tex example.dtl: example.tex
tex example tex example
- dv2dt example.dvi example.dtl - dv2dt example.dvi example.dtl
+ ./$(DV2DT) example.dvi example.dtl + ./$(DV2DT) example.dvi example.dtl
-tripvdu: tripvdu.dtl $(EXES) -tripvdu: tripvdu.dtl $(EXES)
- dt2dv tripvdu.dtl tripvdu2.dvi - dt2dv tripvdu.dtl tripvdu2.dvi
- dv2dt tripvdu2.dvi tripvdu2.dtl - dv2dt tripvdu2.dvi tripvdu2.dtl
+tripvdu: tripvdu.dtl dv2dt dt2dv +tripvdu: tripvdu.dtl dv2dt dt2dv
+ ./$(DT2DV) tripvdu.dtl tripvdu2.dvi + ./$(DT2DV) tripvdu.dtl tripvdu2.dvi
+ ./$(DV2DT) tripvdu2.dvi tripvdu2.dtl + ./$(DV2DT) tripvdu2.dvi tripvdu2.dtl
-@diff tripvdu.dtl tripvdu2.dtl > tripvdu.dif -@diff tripvdu.dtl tripvdu2.dtl > tripvdu.dif
@if [ -s tripvdu.dif ] ; \ @if [ -s tripvdu.dif ] ; \
then echo ERROR: differences in tripvdu.dif ; \ then echo ERROR: differences in tripvdu.dif ; \
@@ -95,15 +116,15 @@ @@ -95,15 +116,15 @@
tripvdu.dtl: tripvdu.tex tripvdu.dtl: tripvdu.tex
tex tripvdu tex tripvdu
- dv2dt tripvdu.dvi tripvdu.dtl - dv2dt tripvdu.dvi tripvdu.dtl
+ ./$(DV2DT) tripvdu.dvi tripvdu.dtl + ./$(DV2DT) tripvdu.dvi tripvdu.dtl
# edited.txt is already a dtl file. # edited.txt is already a dtl file.
-edited: edited.txt $(EXES) -edited: edited.txt $(EXES)
- dt2dv edited.txt edited.dvi - dt2dv edited.txt edited.dvi
- dv2dt edited.dvi edited2.dtl - dv2dt edited.dvi edited2.dtl
- dt2dv edited2.dtl edited2.dvi - dt2dv edited2.dtl edited2.dvi
- dv2dt edited2.dvi edited3.dtl - dv2dt edited2.dvi edited3.dtl
+edited: edited.txt dv2dt dt2dv +edited: edited.txt dv2dt dt2dv
+ ./$(DT2DV) edited.txt edited.dvi + ./$(DT2DV) edited.txt edited.dvi
+ ./$(DV2DT) edited.dvi edited2.dtl + ./$(DV2DT) edited.dvi edited2.dtl
+ ./$(DT2DV) edited2.dtl edited2.dvi + ./$(DT2DV) edited2.dtl edited2.dvi
+ ./$(DV2DT) edited2.dvi edited3.dtl + ./$(DV2DT) edited2.dvi edited3.dtl
@if [ -s edited.dif ] ; \ @if [ -s edited.dif ] ; \
then echo ERROR : differences in edited.dif ; \ then echo ERROR : differences in edited.dif ; \
else $(RM) edited.dif ; \ else $(RM) edited.dif ; \
diff -riwBu -Xex dtl\man2ps dtl-modified\man2ps diff -riwBu -Xex dtl\man2ps dtl-modified\man2ps
--- dtl\man2ps Tue Sep 19 23:59:22 2006 --- dtl\man2ps Tue Sep 19 23:59:22 2006
+++ dtl-modified\man2ps Wed Sep 20 00:03:05 2006 +++ dtl-modified\man2ps Wed Sep 20 00:03:05 2006
@@ -20,16 +20,16 @@ @@ -20,16 +20,16 @@
esac esac
# We can use either GNU groff or Sun Solaris troff + dpost # We can use either GNU groff or Sun Solaris troff + dpost
-if [ -x /usr/local/bin/groff ] -if [ -x /usr/local/bin/groff ]
+if [ which groff > /dev/null ] +if [ which groff > /dev/null ]
then # GNU groff then # GNU groff
TROFF="groff $FORMAT" TROFF="groff $FORMAT"
TROFF2PS="cat" TROFF2PS="cat"
-elif [ -x /usr/lib/lp/postscript/dpost ] -elif [ -x /usr/lib/lp/postscript/dpost ]
++elif [ which dpost > /dev/null ] ++elif [ which dpost > /dev/null ]
then # Solaris 2.1 then # Solaris 2.1
TROFF="troff $FORMAT" TROFF="troff $FORMAT"
TROFF2PS="/usr/lib/lp/postscript/dpost" TROFF2PS="/usr/lib/lp/postscript/dpost"
else else
- echo "Cannot find troff-to-PostScript filter" - echo "Cannot find troff-to-PostScript filter"
++ echo "Cannot find troff-to-PostScript filter" >&2 ++ echo "Cannot find troff-to-PostScript filter" >&2
exit 1 exit 1
fi fi

View File

@ -1,360 +1,360 @@
diff -riwbBu -Xex dvipost-1.1/dvi.c dvipost-1.1-modified/dvi.c diff -riwbBu -Xex dvipost-1.1/dvi.c dvipost-1.1-modified/dvi.c
--- dvipost-1.1/dvi.c Wed Mar 22 14:59:58 2006 --- dvipost-1.1/dvi.c Wed Mar 22 14:59:58 2006
+++ dvipost-1.1-modified/dvi.c Wed May 31 11:27:44 2006 +++ dvipost-1.1-modified/dvi.c Wed May 31 11:27:44 2006
@@ -502,8 +502,12 @@ @@ -502,8 +502,12 @@
for (i = 0; i < pos_changed.dim; i++) for (i = 0; i < pos_changed.dim; i++)
{ {
POS *p = pos_changed.tab + i; POS *p = pos_changed.tab + i;
+ if (!p->type) + if (!p->type)
+ dout_special(out, osstart); + dout_special(out, osstart);
cmd_goto(out, p->end, cbcol); cmd_goto(out, p->end, cbcol);
dout_putrule(out, p->end - p->beg, cbrule); dout_putrule(out, p->end - p->beg, cbrule);
+ if (!p->type) + if (!p->type)
+ dout_special(out, osend); + dout_special(out, osend);
} }
dout_special(out, cbend); dout_special(out, cbend);
@@ -625,10 +629,9 @@ @@ -625,10 +629,9 @@
mv_right(w); mv_right(w);
text_cnt++; text_cnt++;
- if (!cbmode[page_stat]) return; - if (!cbmode[page_stat]) return;
- -
+ if (!cbmode[page_stat] && !osmode[page_stat]) return; + if (!cbmode[page_stat] && !osmode[page_stat]) return;
pos_add(&pos_changed, dvi_stat.v - text_height - cbexp, pos_add(&pos_changed, dvi_stat.v - text_height - cbexp,
- dvi_stat.v + text_depth + cbexp); - dvi_stat.v + text_depth + cbexp);
+ dvi_stat.v + text_depth + cbexp, cbmode[page_stat]); + dvi_stat.v + text_depth + cbexp, cbmode[page_stat]);
if (cbframe) if (cbframe)
{ {
diff -riwbBu -Xex dvipost-1.1/dvipost.c dvipost-1.1-modified/dvipost.c diff -riwbBu -Xex dvipost-1.1/dvipost.c dvipost-1.1-modified/dvipost.c
--- dvipost-1.1/dvipost.c Mon Nov 4 08:44:46 2002 --- dvipost-1.1/dvipost.c Mon Nov 4 08:44:46 2002
+++ dvipost-1.1-modified/dvipost.c Mon Sep 18 13:11:58 2006 +++ dvipost-1.1-modified/dvipost.c Mon Sep 18 13:11:58 2006
@@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
/* dvi file post processing /* dvi file post processing
$Copyright (C) 2002 Erich Fruehstueck $Copyright (C) 2002 Erich Fruehstueck
+Modified version by LyX Team +Modified version by LyX Team
Dvipost is free software; you can redistribute it and/or Dvipost is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public modify it under the terms of the GNU General Public
@@ -18,13 +19,20 @@ @@ -18,13 +19,20 @@
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*/ */
- -
#include "dvipost.h" #include "dvipost.h"
#include "dvi.h" #include "dvi.h"
+#if !defined(_MSC_VER) +#if !defined(_MSC_VER)
#include <unistd.h> #include <unistd.h>
#include <dirent.h> #include <dirent.h>
+#else +#else
+#include "dirent.h" +#include "dirent.h"
+#endif +#endif
#include <sys/stat.h> #include <sys/stat.h>
+#ifdef _WIN32 +#ifdef _WIN32
+#include <windows.h> +#include <windows.h>
+#endif +#endif
+ +
int dvipost (const char *iname, const char *oname) int dvipost (const char *iname, const char *oname)
{ {
FILE *input, *tmp, *output; FILE *input, *tmp, *output;
@@ -33,7 +41,19 @@ @@ -33,7 +41,19 @@
/* open temporary file /* open temporary file
*/ */
+#ifndef _WIN32 +#ifndef _WIN32
tmp = tmpfile(); tmp = tmpfile();
+#else +#else
+ /* create temporary file in Windows temp directory */ + /* create temporary file in Windows temp directory */
+ +
+ char tmppath[MAX_PATH-14]; + char tmppath[MAX_PATH-14];
+ char tmpname[MAX_PATH]; + char tmpname[MAX_PATH];
+ +
+ GetTempPath(MAX_PATH-14, tmppath); + GetTempPath(MAX_PATH-14, tmppath);
+ GetTempFileName(tmppath, "dvp", 0, tmpname); + GetTempFileName(tmppath, "dvp", 0, tmpname);
+ +
+ tmp = fopen(tmpname, "r+b"); + tmp = fopen(tmpname, "r+b");
+#endif +#endif
if (!tmp) if (!tmp)
{ {
@@ -57,8 +77,10 @@ @@ -57,8 +77,10 @@
} }
else else
{ {
+#ifndef _WIN32 +#ifndef _WIN32
iname = "<stdin>"; iname = "<stdin>";
input = stdin; input = stdin;
+#endif +#endif
} }
/* check magic and process input /* check magic and process input
@@ -94,6 +116,8 @@ @@ -94,6 +116,8 @@
/* copy file to output /* copy file to output
*/ */
+ +
+#ifndef _WIN32 +#ifndef _WIN32
rewind(tmp); rewind(tmp);
if (oname && strcmp(oname, "-") != 0) if (oname && strcmp(oname, "-") != 0)
@@ -113,23 +137,20 @@ @@ -113,23 +137,20 @@
oname = "<stdout>"; oname = "<stdout>";
output = stdout; output = stdout;
} }
+#endif +#endif
message(NOTE, "$!: Copy data to %s\n", oname); message(NOTE, "$!: Copy data to %s\n", oname);
- while ((c = getc(tmp)) != EOF) - while ((c = getc(tmp)) != EOF)
- putc(c, output); - putc(c, output);
- -
+#ifndef _WIN32 +#ifndef _WIN32
+ while ((c = getc(tmp)) != EOF) putc(c, output); + while ((c = getc(tmp)) != EOF) putc(c, output);
fclose(tmp); fclose(tmp);
+#else +#else
+ /* Copy file directly */ + /* Copy file directly */
+ fclose(tmp); + fclose(tmp);
+ CopyFile(tmpname, oname, FALSE); + CopyFile(tmpname, oname, FALSE);
+ DeleteFile(tmpname); + DeleteFile(tmpname);
+#endif +#endif
- if (ferror(output)) - if (ferror(output))
- { - {
- fprintf(stderr, "%s: ", pname); - fprintf(stderr, "%s: ", pname);
- perror(oname); - perror(oname);
- stat = EXIT_FAILURE; - stat = EXIT_FAILURE;
- } - }
- else stat = EXIT_SUCCESS; - else stat = EXIT_SUCCESS;
- -
- fclose(output); - fclose(output);
return stat; return stat;
} }
diff -riwbBu -Xex dvipost-1.1/dvipost.h dvipost-1.1-modified/dvipost.h diff -riwbBu -Xex dvipost-1.1/dvipost.h dvipost-1.1-modified/dvipost.h
--- dvipost-1.1/dvipost.h Mon Nov 4 08:44:46 2002 --- dvipost-1.1/dvipost.h Mon Nov 4 08:44:46 2002
+++ dvipost-1.1-modified/dvipost.h Sun Sep 17 22:03:51 2006 +++ dvipost-1.1-modified/dvipost.h Sun Sep 17 22:03:51 2006
@@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
/* postfilter /* postfilter
$Copyright (C) 2002 Erich Fruehstueck $Copyright (C) 2002 Erich Fruehstueck
+Modified version by LyX Team +Modified version by LyX Team
Dvipost is free software; you can redistribute it and/or Dvipost is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public modify it under the terms of the GNU General Public
@@ -44,6 +45,7 @@ @@ -44,6 +45,7 @@
typedef struct { typedef struct {
int beg; int beg;
int end; int end;
+ int type; + int type;
} POS; } POS;
typedef struct { typedef struct {
@@ -53,7 +55,7 @@ @@ -53,7 +55,7 @@
} PosTab; } PosTab;
void pos_init (PosTab *pos); void pos_init (PosTab *pos);
-void pos_add (PosTab *pos, int beg, int end); -void pos_add (PosTab *pos, int beg, int end);
+void pos_add (PosTab *pos, int beg, int end, int type); +void pos_add (PosTab *pos, int beg, int end, int type);
extern int process_dvi (const char *id, FILE *in, FILE *out); extern int process_dvi (const char *id, FILE *in, FILE *out);
extern int dvipost (const char *iname, const char *oname); extern int dvipost (const char *iname, const char *oname);
diff -riwbBu -Xex dvipost-1.1/main.c dvipost-1.1-modified/main.c diff -riwbBu -Xex dvipost-1.1/main.c dvipost-1.1-modified/main.c
--- dvipost-1.1/main.c Wed Nov 27 15:19:14 2002 --- dvipost-1.1/main.c Wed Nov 27 15:19:14 2002
+++ dvipost-1.1-modified/main.c Sun Sep 17 21:56:42 2006 +++ dvipost-1.1-modified/main.c Sun Sep 17 21:56:42 2006
@@ -24,15 +24,19 @@ @@ -24,15 +24,19 @@
#define TEX_ACCEPT_OPTIONS 1 #define TEX_ACCEPT_OPTIONS 1
#endif #endif
-static char *version = "dvipost version 1.0\n\ -static char *version = "dvipost version 1.0\n\
+static char *version = "dvipost version 1.1 with modifications by LyX Team (sep 2006)\n\ +static char *version = "dvipost version 1.1 with modifications by LyX Team (sep 2006)\n\
Dvipost is copyright (C) 2002 Erich Fruehstueck.\n"; Dvipost is copyright (C) 2002 Erich Fruehstueck.\n";
#include "dvipost.h" #include "dvipost.h"
#include "dvi.h" #include "dvi.h"
+#if !defined(_MSC_VER) +#if !defined(_MSC_VER)
#include <unistd.h> #include <unistd.h>
+#endif +#endif
#include <string.h> #include <string.h>
#include <sys/types.h> #include <sys/types.h>
+#ifndef _WIN32 +#ifndef _WIN32
#include <sys/wait.h> #include <sys/wait.h>
+#endif +#endif
char **tex_argv = NULL; char **tex_argv = NULL;
int tex_argc = 0; int tex_argc = 0;
@@ -233,17 +237,26 @@ @@ -233,17 +237,26 @@
return stat; return stat;
} }
-static char *get_dvi_name (const char *arg) -static char *get_dvi_name (const char *arg)
+static char *get_dvi_name (char *arg) +static char *get_dvi_name (char *arg)
{ {
char *p, *dvi; char *p, *dvi;
+#ifdef _WIN32 +#ifdef _WIN32
+ int i; + int i;
+ +
+ for (i=0; i < strlen(arg); ++i) { + for (i=0; i < strlen(arg); ++i) {
+ if (arg[i] == '\\') + if (arg[i] == '\\')
+ arg[i] = '/'; + arg[i] = '/';
+ } + }
+#endif +#endif
+ +
p = strrchr(arg, '/'); p = strrchr(arg, '/');
if (p && p[1]) if (p && p[1])
arg = p + 1; arg = p + 1;
- dvi = strcpy(xalloc(strlen(arg) + 4), arg); - dvi = strcpy(xalloc(strlen(arg) + 4), arg);
- p = strchr(dvi, '.'); - p = strchr(dvi, '.');
+ dvi = strcpy(xalloc(strlen(arg) + 5), arg); + dvi = strcpy(xalloc(strlen(arg) + 5), arg);
+ p = strrchr(dvi, '.'); + p = strrchr(dvi, '.');
if (p && strcmp(p, ".tex") == 0) if (p && strcmp(p, ".tex") == 0)
*p = 0; *p = 0;
@@ -267,14 +280,32 @@ @@ -267,14 +280,32 @@
char *dviname; char *dviname;
int flag; int flag;
int i, n; int i, n;
+#ifdef _WIN32 +#ifdef _WIN32
+ char *cmd; + char *cmd;
+ char *qch; + char *qch;
+ char *p; + char *p;
+#else +#else
int status; int status;
pid_t pid; pid_t pid;
+#endif +#endif
time_t stamp; time_t stamp;
tex_argv = xalloc((1 + argc) * sizeof(char*)); tex_argv = xalloc((1 + argc) * sizeof(char*));
tex_argv[0] = argv[0]; tex_argv[0] = argv[0];
tex_argc = 1; tex_argc = 1;
+#ifdef _WIN32 +#ifdef _WIN32
+ for (i=0; i < strlen(argv[0]); ++i) { + for (i=0; i < strlen(argv[0]); ++i) {
+ if (argv[0][i] == '\\') + if (argv[0][i] == '\\')
+ argv[0][i] = '/'; + argv[0][i] = '/';
+ } + }
+ +
+ p = strrchr(argv[0], '.'); + p = strrchr(argv[0], '.');
+ +
+ if (p && strcmp(p, ".exe") == 0) + if (p && strcmp(p, ".exe") == 0)
+ *p = 0; + *p = 0;
+#endif +#endif
+ +
pname = strrchr(argv[0], '/'); pname = strrchr(argv[0], '/');
if (pname == NULL) pname = argv[0]; if (pname == NULL) pname = argv[0];
@@ -356,6 +387,34 @@ @@ -356,6 +387,34 @@
fflush(stdout); fflush(stdout);
time(&stamp); time(&stamp);
+#ifdef _WIN32 +#ifdef _WIN32
+ for (i=0, n=0; i < tex_argc; ++i) { + for (i=0, n=0; i < tex_argc; ++i) {
+ n += strlen(tex_argv[i]); + n += strlen(tex_argv[i]);
+ qch = tex_argv[i]; + qch = tex_argv[i];
+ while ((qch = strchr(qch, '"'))) { + while ((qch = strchr(qch, '"'))) {
+ ++qch; + ++qch;
+ ++n; + ++n;
+ } + }
+ } + }
+ +
+ cmd = xalloc(1 + n + 3*(tex_argc-1)); + cmd = xalloc(1 + n + 3*(tex_argc-1));
+ strcpy(cmd, tex_argv[0]); + strcpy(cmd, tex_argv[0]);
+ +
+ for (i=1, n=strlen(cmd); i < tex_argc; ++i) + for (i=1, n=strlen(cmd); i < tex_argc; ++i)
+ { + {
+ cmd[n++] = ' '; + cmd[n++] = ' ';
+ cmd[n++] = '"'; + cmd[n++] = '"';
+ for (qch=tex_argv[i]; *qch; ++qch) { + for (qch=tex_argv[i]; *qch; ++qch) {
+ if (*qch == '"') + if (*qch == '"')
+ cmd[n++] = '\\'; + cmd[n++] = '\\';
+ cmd[n++] = *qch; + cmd[n++] = *qch;
+ } + }
+ cmd[n++] = '"'; + cmd[n++] = '"';
+ } + }
+ cmd[n] = '\0'; + cmd[n] = '\0';
+ system(cmd); + system(cmd);
+ xfree(cmd); + xfree(cmd);
+#else +#else
pid = fork(); pid = fork();
if (pid == -1) if (pid == -1)
@@ -368,6 +427,7 @@ @@ -368,6 +427,7 @@
execvp(tex_argv[0], tex_argv); execvp(tex_argv[0], tex_argv);
waitpid(pid, &status, 0); waitpid(pid, &status, 0);
+#endif +#endif
if (dviname) if (dviname)
return dvipost(dviname, dviname); return dvipost(dviname, dviname);
diff -riwbBu -Xex dvipost-1.1/pos.c dvipost-1.1-modified/pos.c diff -riwbBu -Xex dvipost-1.1/pos.c dvipost-1.1-modified/pos.c
--- dvipost-1.1/pos.c Tue Oct 29 12:54:02 2002 --- dvipost-1.1/pos.c Tue Oct 29 12:54:02 2002
+++ dvipost-1.1-modified/pos.c Sun Sep 17 22:03:41 2006 +++ dvipost-1.1-modified/pos.c Sun Sep 17 22:03:41 2006
@@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
/* position table /* position table
$Copyright (C) 2002 Erich Fruehstueck $Copyright (C) 2002 Erich Fruehstueck
+Modified version by LyX Team +Modified version by LyX Team
Dvipost is free software; you can redistribute it and/or Dvipost is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public modify it under the terms of the GNU General Public
@@ -39,7 +40,7 @@ @@ -39,7 +40,7 @@
pos->dim = 0; pos->dim = 0;
} }
-void pos_add (PosTab *pos, int beg, int end) -void pos_add (PosTab *pos, int beg, int end)
+void pos_add (PosTab *pos, int beg, int end, int type) +void pos_add (PosTab *pos, int beg, int end, int type)
{ {
if (beg > end) if (beg > end)
{ {
@@ -56,7 +57,7 @@ @@ -56,7 +57,7 @@
{ {
if (last->end < end) last->end = end; if (last->end < end) last->end = end;
if (last->beg > beg) last->beg = beg; if (last->beg > beg) last->beg = beg;
- -
+ if (last->type < type) last->type = type; + if (last->type < type) last->type = type;
return; return;
} }
} }
@@ -64,5 +65,6 @@ @@ -64,5 +65,6 @@
pos_expand(pos); pos_expand(pos);
pos->tab[pos->dim].beg = beg; pos->tab[pos->dim].beg = beg;
pos->tab[pos->dim].end = end; pos->tab[pos->dim].end = end;
+ pos->tab[pos->dim].type = type; + pos->tab[pos->dim].type = type;
pos->dim++; pos->dim++;
} }
diff -riwbBu -Xex dvipost-1.1/tfm.c dvipost-1.1-modified/tfm.c diff -riwbBu -Xex dvipost-1.1/tfm.c dvipost-1.1-modified/tfm.c
--- dvipost-1.1/tfm.c Sun Nov 3 09:52:04 2002 --- dvipost-1.1/tfm.c Sun Nov 3 09:52:04 2002
+++ dvipost-1.1-modified/tfm.c Sun Sep 17 22:03:44 2006 +++ dvipost-1.1-modified/tfm.c Sun Sep 17 22:03:44 2006
@@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
/* tfm data /* tfm data
$Copyright (C) 2002 Erich Fruehstueck $Copyright (C) 2002 Erich Fruehstueck
+Modified version by LyX Team +Modified version by LyX Team
Dvipost is free software; you can redistribute it and/or Dvipost is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public modify it under the terms of the GNU General Public
@@ -22,6 +23,11 @@ @@ -22,6 +23,11 @@
#include "dvi.h" #include "dvi.h"
#include <ctype.h> #include <ctype.h>
+#if defined(_MSC_VER) +#if defined(_MSC_VER)
+#define popen _popen +#define popen _popen
+#define pclose _pclose +#define pclose _pclose
+#endif +#endif
+ +
static char tfm_buf[1024]; static char tfm_buf[1024];
static int tfm_err = 0; static int tfm_err = 0;
static int tfm_pos = 0; static int tfm_pos = 0;
@@ -112,6 +118,8 @@ @@ -112,6 +118,8 @@
{ {
if (tfm_buf[n] == '\n') if (tfm_buf[n] == '\n')
{ {
+ if (n && tfm_buf[n-1] == '\r') + if (n && tfm_buf[n-1] == '\r')
+ n--; + n--;
tfm_buf[n] = 0; tfm_buf[n] = 0;
break; break;
} }

View File

@ -1,329 +1,329 @@
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/hostname.c gettext-tools/src/hostname.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/hostname.c gettext-tools/src/hostname.c
--- gettext-tools/src/hostname.c 2005-05-20 16:40:02.000000000 -0400 --- gettext-tools/src/hostname.c 2005-05-20 16:40:02.000000000 -0400
+++ gettext-tools/src/hostname.c 2005-11-11 11:02:07.203125000 -0500 +++ gettext-tools/src/hostname.c 2005-11-11 11:02:07.203125000 -0500
@@ -99,7 +99,7 @@ @@ -99,7 +99,7 @@
static enum { default_format, short_format, long_format, ip_format } format; static enum { default_format, short_format, long_format, ip_format } format;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "fqdn", no_argument, NULL, 'f' }, { "fqdn", no_argument, NULL, 'f' },
{ "help", no_argument, NULL, 'h' }, { "help", no_argument, NULL, 'h' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgattrib.c gettext-tools/src/msgattrib.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgattrib.c gettext-tools/src/msgattrib.c
--- gettext-tools/src/msgattrib.c 2005-05-20 16:40:15.000000000 -0400 --- gettext-tools/src/msgattrib.c 2005-05-20 16:40:15.000000000 -0400
+++ gettext-tools/src/msgattrib.c 2005-11-11 11:01:39.484375000 -0500 +++ gettext-tools/src/msgattrib.c 2005-11-11 11:01:39.484375000 -0500
@@ -69,7 +69,7 @@ @@ -69,7 +69,7 @@
static int to_change; static int to_change;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "add-location", no_argument, &line_comment, 1 }, { "add-location", no_argument, &line_comment, 1 },
{ "clear-fuzzy", no_argument, NULL, CHAR_MAX + 8 }, { "clear-fuzzy", no_argument, NULL, CHAR_MAX + 8 },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgcat.c gettext-tools/src/msgcat.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgcat.c gettext-tools/src/msgcat.c
--- gettext-tools/src/msgcat.c 2005-05-20 16:40:19.000000000 -0400 --- gettext-tools/src/msgcat.c 2005-05-20 16:40:19.000000000 -0400
+++ gettext-tools/src/msgcat.c 2005-11-11 11:02:33.109375000 -0500 +++ gettext-tools/src/msgcat.c 2005-11-11 11:02:33.109375000 -0500
@@ -53,7 +53,7 @@ @@ -53,7 +53,7 @@
static const char *to_code; static const char *to_code;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "add-location", no_argument, &line_comment, 1 }, { "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' }, { "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgcmp.c gettext-tools/src/msgcmp.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgcmp.c gettext-tools/src/msgcmp.c
--- gettext-tools/src/msgcmp.c 2005-05-20 16:40:23.000000000 -0400 --- gettext-tools/src/msgcmp.c 2005-05-20 16:40:23.000000000 -0400
+++ gettext-tools/src/msgcmp.c 2005-11-11 11:02:51.906250000 -0500 +++ gettext-tools/src/msgcmp.c 2005-11-11 11:02:51.906250000 -0500
@@ -49,7 +49,7 @@ @@ -49,7 +49,7 @@
static bool multi_domain_mode = false; static bool multi_domain_mode = false;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "directory", required_argument, NULL, 'D' }, { "directory", required_argument, NULL, 'D' },
{ "help", no_argument, NULL, 'h' }, { "help", no_argument, NULL, 'h' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgcomm.c gettext-tools/src/msgcomm.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgcomm.c gettext-tools/src/msgcomm.c
--- gettext-tools/src/msgcomm.c 2005-05-20 16:40:27.000000000 -0400 --- gettext-tools/src/msgcomm.c 2005-05-20 16:40:27.000000000 -0400
+++ gettext-tools/src/msgcomm.c 2005-11-11 11:03:09.406250000 -0500 +++ gettext-tools/src/msgcomm.c 2005-11-11 11:03:09.406250000 -0500
@@ -55,7 +55,7 @@ @@ -55,7 +55,7 @@
static const char *to_code; static const char *to_code;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "add-location", no_argument, &line_comment, 1 }, { "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' }, { "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgconv.c gettext-tools/src/msgconv.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgconv.c gettext-tools/src/msgconv.c
--- gettext-tools/src/msgconv.c 2005-05-20 16:40:31.000000000 -0400 --- gettext-tools/src/msgconv.c 2005-05-20 16:40:31.000000000 -0400
+++ gettext-tools/src/msgconv.c 2005-11-11 11:03:21.671875000 -0500 +++ gettext-tools/src/msgconv.c 2005-11-11 11:03:21.671875000 -0500
@@ -52,7 +52,7 @@ @@ -52,7 +52,7 @@
static const char *to_code; static const char *to_code;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "add-location", no_argument, &line_comment, 1 }, { "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' }, { "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgen.c gettext-tools/src/msgen.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgen.c gettext-tools/src/msgen.c
--- gettext-tools/src/msgen.c 2005-05-20 16:40:35.000000000 -0400 --- gettext-tools/src/msgen.c 2005-05-20 16:40:35.000000000 -0400
+++ gettext-tools/src/msgen.c 2005-11-11 11:03:54.531250000 -0500 +++ gettext-tools/src/msgen.c 2005-11-11 11:03:54.531250000 -0500
@@ -48,7 +48,7 @@ @@ -48,7 +48,7 @@
static int force_po; static int force_po;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "add-location", no_argument, &line_comment, 1 }, { "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' }, { "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgexec.c gettext-tools/src/msgexec.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgexec.c gettext-tools/src/msgexec.c
--- gettext-tools/src/msgexec.c 2005-05-20 16:40:40.000000000 -0400 --- gettext-tools/src/msgexec.c 2005-05-20 16:40:40.000000000 -0400
+++ gettext-tools/src/msgexec.c 2005-11-11 11:04:07.546875000 -0500 +++ gettext-tools/src/msgexec.c 2005-11-11 11:04:07.546875000 -0500
@@ -74,7 +74,7 @@ @@ -74,7 +74,7 @@
static int exitcode; static int exitcode;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "directory", required_argument, NULL, 'D' }, { "directory", required_argument, NULL, 'D' },
{ "help", no_argument, NULL, 'h' }, { "help", no_argument, NULL, 'h' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgfilter.c gettext-tools/src/msgfilter.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgfilter.c gettext-tools/src/msgfilter.c
--- gettext-tools/src/msgfilter.c 2005-05-20 16:40:44.000000000 -0400 --- gettext-tools/src/msgfilter.c 2005-05-20 16:40:44.000000000 -0400
+++ gettext-tools/src/msgfilter.c 2005-11-11 11:04:19.062500000 -0500 +++ gettext-tools/src/msgfilter.c 2005-11-11 11:04:19.062500000 -0500
@@ -97,7 +97,7 @@ @@ -97,7 +97,7 @@
static int sub_argc; static int sub_argc;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "add-location", no_argument, &line_comment, 1 }, { "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' }, { "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgfmt.c gettext-tools/src/msgfmt.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgfmt.c gettext-tools/src/msgfmt.c
--- gettext-tools/src/msgfmt.c 2005-11-11 00:58:30.000000000 -0500 --- gettext-tools/src/msgfmt.c 2005-11-11 00:58:30.000000000 -0500
+++ gettext-tools/src/msgfmt.c 2005-11-11 11:04:30.546875000 -0500 +++ gettext-tools/src/msgfmt.c 2005-11-11 11:04:30.546875000 -0500
@@ -163,7 +163,7 @@ @@ -163,7 +163,7 @@
static int do_statistics; static int do_statistics;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "alignment", required_argument, NULL, 'a' }, { "alignment", required_argument, NULL, 'a' },
{ "check", no_argument, NULL, 'c' }, { "check", no_argument, NULL, 'c' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msggrep.c gettext-tools/src/msggrep.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msggrep.c gettext-tools/src/msggrep.c
--- gettext-tools/src/msggrep.c 2005-05-20 16:41:05.000000000 -0400 --- gettext-tools/src/msggrep.c 2005-05-20 16:41:05.000000000 -0400
+++ gettext-tools/src/msggrep.c 2005-11-11 11:03:39.796875000 -0500 +++ gettext-tools/src/msggrep.c 2005-11-11 11:03:39.796875000 -0500
@@ -81,7 +81,7 @@ @@ -81,7 +81,7 @@
static struct grep_task grep_task[3]; static struct grep_task grep_task[3];
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "add-location", no_argument, &line_comment, 1 }, { "add-location", no_argument, &line_comment, 1 },
{ "comment", no_argument, NULL, 'C' }, { "comment", no_argument, NULL, 'C' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msginit.c gettext-tools/src/msginit.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msginit.c gettext-tools/src/msginit.c
--- gettext-tools/src/msginit.c 2005-11-11 00:59:01.000000000 -0500 --- gettext-tools/src/msginit.c 2005-11-11 00:59:01.000000000 -0500
+++ gettext-tools/src/msginit.c 2005-11-11 11:04:42.078125000 -0500 +++ gettext-tools/src/msginit.c 2005-11-11 11:04:42.078125000 -0500
@@ -125,7 +125,7 @@ @@ -125,7 +125,7 @@
static bool no_translator; static bool no_translator;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "help", no_argument, NULL, 'h' }, { "help", no_argument, NULL, 'h' },
{ "input", required_argument, NULL, 'i' }, { "input", required_argument, NULL, 'i' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgmerge.c gettext-tools/src/msgmerge.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgmerge.c gettext-tools/src/msgmerge.c
--- gettext-tools/src/msgmerge.c 2005-05-20 16:42:09.000000000 -0400 --- gettext-tools/src/msgmerge.c 2005-05-20 16:42:09.000000000 -0400
+++ gettext-tools/src/msgmerge.c 2005-11-11 11:04:51.328125000 -0500 +++ gettext-tools/src/msgmerge.c 2005-11-11 11:04:51.328125000 -0500
@@ -84,7 +84,7 @@ @@ -84,7 +84,7 @@
static const char *backup_suffix_string; static const char *backup_suffix_string;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "add-location", no_argument, &line_comment, 1 }, { "add-location", no_argument, &line_comment, 1 },
{ "backup", required_argument, NULL, CHAR_MAX + 1 }, { "backup", required_argument, NULL, CHAR_MAX + 1 },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgunfmt.c gettext-tools/src/msgunfmt.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msgunfmt.c gettext-tools/src/msgunfmt.c
--- gettext-tools/src/msgunfmt.c 2005-05-20 16:42:11.000000000 -0400 --- gettext-tools/src/msgunfmt.c 2005-05-20 16:42:11.000000000 -0400
+++ gettext-tools/src/msgunfmt.c 2005-11-11 11:05:45.718750000 -0500 +++ gettext-tools/src/msgunfmt.c 2005-11-11 11:05:45.718750000 -0500
@@ -73,7 +73,7 @@ @@ -73,7 +73,7 @@
static int force_po; static int force_po;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "csharp", no_argument, NULL, CHAR_MAX + 4 }, { "csharp", no_argument, NULL, CHAR_MAX + 4 },
{ "csharp-resources", no_argument, NULL, CHAR_MAX + 5 }, { "csharp-resources", no_argument, NULL, CHAR_MAX + 5 },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msguniq.c gettext-tools/src/msguniq.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/msguniq.c gettext-tools/src/msguniq.c
--- gettext-tools/src/msguniq.c 2005-05-20 16:42:23.000000000 -0400 --- gettext-tools/src/msguniq.c 2005-05-20 16:42:23.000000000 -0400
+++ gettext-tools/src/msguniq.c 2005-11-11 11:05:57.968750000 -0500 +++ gettext-tools/src/msguniq.c 2005-11-11 11:05:57.968750000 -0500
@@ -52,7 +52,7 @@ @@ -52,7 +52,7 @@
static const char *to_code; static const char *to_code;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "add-location", no_argument, &line_comment, 1 }, { "add-location", no_argument, &line_comment, 1 },
{ "directory", required_argument, NULL, 'D' }, { "directory", required_argument, NULL, 'D' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/urlget.c gettext-tools/src/urlget.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/urlget.c gettext-tools/src/urlget.c
--- gettext-tools/src/urlget.c 2005-05-20 16:44:41.000000000 -0400 --- gettext-tools/src/urlget.c 2005-05-20 16:44:41.000000000 -0400
+++ gettext-tools/src/urlget.c 2005-11-11 11:06:10.968750000 -0500 +++ gettext-tools/src/urlget.c 2005-11-11 11:06:10.968750000 -0500
@@ -65,7 +65,7 @@ @@ -65,7 +65,7 @@
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "help", no_argument, NULL, 'h' }, { "help", no_argument, NULL, 'h' },
{ "version", no_argument, NULL, 'V' }, { "version", no_argument, NULL, 'V' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/xgettext.c gettext-tools/src/xgettext.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/src/xgettext.c gettext-tools/src/xgettext.c
--- gettext-tools/src/xgettext.c 2005-05-20 16:47:42.000000000 -0400 --- gettext-tools/src/xgettext.c 2005-05-20 16:47:42.000000000 -0400
+++ gettext-tools/src/xgettext.c 2005-11-11 11:06:25.406250000 -0500 +++ gettext-tools/src/xgettext.c 2005-11-11 11:06:25.406250000 -0500
@@ -176,7 +176,7 @@ @@ -176,7 +176,7 @@
#endif #endif
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "add-comments", optional_argument, NULL, 'c' }, { "add-comments", optional_argument, NULL, 'c' },
{ "add-location", no_argument, &line_comment, 1 }, { "add-location", no_argument, &line_comment, 1 },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/tests/tstgettext.c gettext-tools/tests/tstgettext.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/tests/tstgettext.c gettext-tools/tests/tstgettext.c
--- gettext-tools/tests/tstgettext.c 2005-05-20 16:48:17.000000000 -0400 --- gettext-tools/tests/tstgettext.c 2005-05-20 16:48:17.000000000 -0400
+++ gettext-tools/tests/tstgettext.c 2005-11-11 11:10:29.046875000 -0500 +++ gettext-tools/tests/tstgettext.c 2005-11-11 11:10:29.046875000 -0500
@@ -52,7 +52,7 @@ @@ -52,7 +52,7 @@
static bool do_expand; static bool do_expand;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "domain", required_argument, NULL, 'd' }, { "domain", required_argument, NULL, 'd' },
{ "env", required_argument, NULL, '=' }, { "env", required_argument, NULL, '=' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/tests/tstngettext.c gettext-tools/tests/tstngettext.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/tests/tstngettext.c gettext-tools/tests/tstngettext.c
--- gettext-tools/tests/tstngettext.c 2005-05-20 16:48:20.000000000 -0400 --- gettext-tools/tests/tstngettext.c 2005-05-20 16:48:20.000000000 -0400
+++ gettext-tools/tests/tstngettext.c 2005-11-11 11:10:39.875000000 -0500 +++ gettext-tools/tests/tstngettext.c 2005-11-11 11:10:39.875000000 -0500
@@ -42,7 +42,7 @@ @@ -42,7 +42,7 @@
#define _(str) gettext (str) #define _(str) gettext (str)
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "domain", required_argument, NULL, 'd' }, { "domain", required_argument, NULL, 'd' },
{ "env", required_argument, NULL, '=' }, { "env", required_argument, NULL, '=' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-runtime/configure.ac gettext-runtime/configure.ac diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-runtime/configure.ac gettext-runtime/configure.ac
--- gettext-runtime/configure.ac 2005-11-11 00:04:26.000000000 -0500 --- gettext-runtime/configure.ac 2005-11-11 00:04:26.000000000 -0500
+++ gettext-runtime/configure.ac 2005-11-11 11:34:46.687500000 -0500 +++ gettext-runtime/configure.ac 2005-11-11 11:34:46.687500000 -0500
@@ -111,6 +111,28 @@ @@ -111,6 +111,28 @@
#endif #endif
]) ])
+dnl Since gcc-3.3.3, const variables are placed in .rdata section +dnl Since gcc-3.3.3, const variables are placed in .rdata section
+dnl On windows (cygwin, mingw) this is a problem if the variable +dnl On windows (cygwin, mingw) this is a problem if the variable
+dnl is a composite containing references to other variables, because +dnl is a composite containing references to other variables, because
+dnl the runtime relocation machinery can't fixup the address. Thus +dnl the runtime relocation machinery can't fixup the address. Thus
+dnl these composite vars must NOT be declared const. This typically +dnl these composite vars must NOT be declared const. This typically
+dnl occurs in long_options structs, containing references to variables +dnl occurs in long_options structs, containing references to variables
+dnl that are the targets of an option flag. +dnl that are the targets of an option flag.
+case "$host_os" in +case "$host_os" in
+ *cygwin* | *mingw* ) + *cygwin* | *mingw* )
+ AC_DEFINE([CONST_IS_PROBLEMATIC_WIN32], 1, + AC_DEFINE([CONST_IS_PROBLEMATIC_WIN32], 1,
+ [Define to 1 if structs-containing-references must not be declared const]) + [Define to 1 if structs-containing-references must not be declared const])
+ ;; + ;;
+esac +esac
+AH_VERBATIM([DEF_CONST_PROBLEMATIC_WIN32], +AH_VERBATIM([DEF_CONST_PROBLEMATIC_WIN32],
+[/* On some platforms, structs-containing-references must not be declared const */ +[/* On some platforms, structs-containing-references must not be declared const */
+#if defined CONST_IS_PROBLEMATIC_WIN32 +#if defined CONST_IS_PROBLEMATIC_WIN32
+# define CONST_PROBLEMATIC_WIN32 +# define CONST_PROBLEMATIC_WIN32
+#else +#else
+# define CONST_PROBLEMATIC_WIN32 const +# define CONST_PROBLEMATIC_WIN32 const
+#endif +#endif
+]) +])
+ +
AH_VERBATIM([DEF_OS2], AH_VERBATIM([DEF_OS2],
[/* Extra OS/2 (emx+gcc) defines. */ [/* Extra OS/2 (emx+gcc) defines. */
#ifdef __EMX__ #ifdef __EMX__
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/configure.ac gettext-tools/configure.ac diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-tools/configure.ac gettext-tools/configure.ac
--- gettext-tools/configure.ac 2005-11-11 00:26:09.000000000 -0500 --- gettext-tools/configure.ac 2005-11-11 00:26:09.000000000 -0500
+++ gettext-tools/configure.ac 2005-11-11 11:34:03.140625000 -0500 +++ gettext-tools/configure.ac 2005-11-11 11:34:03.140625000 -0500
@@ -214,6 +214,28 @@ @@ -214,6 +214,28 @@
#endif #endif
]) ])
+dnl Since gcc-3.3.3, const variables are placed in .rdata section +dnl Since gcc-3.3.3, const variables are placed in .rdata section
+dnl On windows (cygwin, mingw) this is a problem if the variable +dnl On windows (cygwin, mingw) this is a problem if the variable
+dnl is a composite containing references to other variables, because +dnl is a composite containing references to other variables, because
+dnl the runtime relocation machinery can't fixup the address. Thus +dnl the runtime relocation machinery can't fixup the address. Thus
+dnl these composite vars must NOT be declared const. This typically +dnl these composite vars must NOT be declared const. This typically
+dnl occurs in long_options structs, containing references to variables +dnl occurs in long_options structs, containing references to variables
+dnl that are the targets of an option flag. +dnl that are the targets of an option flag.
+case "$host_os" in +case "$host_os" in
+ *cygwin* | *mingw* ) + *cygwin* | *mingw* )
+ AC_DEFINE([CONST_IS_PROBLEMATIC_WIN32], 1, + AC_DEFINE([CONST_IS_PROBLEMATIC_WIN32], 1,
+ [Define to 1 if structs-containing-references must not be declared const]) + [Define to 1 if structs-containing-references must not be declared const])
+ ;; + ;;
+esac +esac
+AH_VERBATIM([DEF_CONST_PROBLEMATIC_WIN32], +AH_VERBATIM([DEF_CONST_PROBLEMATIC_WIN32],
+[/* On some platforms, structs-containing-references must not be declared const */ +[/* On some platforms, structs-containing-references must not be declared const */
+#if defined CONST_IS_PROBLEMATIC_WIN32 +#if defined CONST_IS_PROBLEMATIC_WIN32
+# define CONST_PROBLEMATIC_WIN32 +# define CONST_PROBLEMATIC_WIN32
+#else +#else
+# define CONST_PROBLEMATIC_WIN32 const +# define CONST_PROBLEMATIC_WIN32 const
+#endif +#endif
+]) +])
+ +
dnl Check for the expat XML parser. dnl Check for the expat XML parser.
dnl On operating systems where binary distribution vendors are likely to dnl On operating systems where binary distribution vendors are likely to
dnl ship both gettext and expat, we use dynamic loading to avoid a hard dnl ship both gettext and expat, we use dynamic loading to avoid a hard
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-runtime/src/envsubst.c gettext-runtime/src/envsubst.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-runtime/src/envsubst.c gettext-runtime/src/envsubst.c
--- gettext-runtime/src/envsubst.c 2005-05-20 16:14:16.000000000 -0400 --- gettext-runtime/src/envsubst.c 2005-05-20 16:14:16.000000000 -0400
+++ gettext-runtime/src/envsubst.c 2005-11-11 11:07:50.796875000 -0500 +++ gettext-runtime/src/envsubst.c 2005-11-11 11:07:50.796875000 -0500
@@ -43,7 +43,7 @@ @@ -43,7 +43,7 @@
static bool all_variables; static bool all_variables;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "help", no_argument, NULL, 'h' }, { "help", no_argument, NULL, 'h' },
{ "variables", no_argument, NULL, 'v' }, { "variables", no_argument, NULL, 'v' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-runtime/src/gettext.c gettext-runtime/src/gettext.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-runtime/src/gettext.c gettext-runtime/src/gettext.c
--- gettext-runtime/src/gettext.c 2005-05-20 16:14:21.000000000 -0400 --- gettext-runtime/src/gettext.c 2005-05-20 16:14:21.000000000 -0400
+++ gettext-runtime/src/gettext.c 2005-11-11 11:08:03.859375000 -0500 +++ gettext-runtime/src/gettext.c 2005-11-11 11:08:03.859375000 -0500
@@ -48,7 +48,7 @@ @@ -48,7 +48,7 @@
static bool do_expand; static bool do_expand;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "domain", required_argument, NULL, 'd' }, { "domain", required_argument, NULL, 'd' },
{ "help", no_argument, NULL, 'h' }, { "help", no_argument, NULL, 'h' },
diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-runtime/src/ngettext.c gettext-runtime/src/ngettext.c diff -urN -x .build -x .inst -x .sinst -x '*~' gettext-runtime/src/ngettext.c gettext-runtime/src/ngettext.c
--- gettext-runtime/src/ngettext.c 2005-05-20 16:14:39.000000000 -0400 --- gettext-runtime/src/ngettext.c 2005-05-20 16:14:39.000000000 -0400
+++ gettext-runtime/src/ngettext.c 2005-11-11 11:08:16.062500000 -0500 +++ gettext-runtime/src/ngettext.c 2005-11-11 11:08:16.062500000 -0500
@@ -44,7 +44,7 @@ @@ -44,7 +44,7 @@
static int do_expand; static int do_expand;
/* Long options. */ /* Long options. */
-static const struct option long_options[] = -static const struct option long_options[] =
+static CONST_PROBLEMATIC_WIN32 struct option long_options[] = +static CONST_PROBLEMATIC_WIN32 struct option long_options[] =
{ {
{ "domain", required_argument, NULL, 'd' }, { "domain", required_argument, NULL, 'd' },
{ "help", no_argument, NULL, 'h' }, { "help", no_argument, NULL, 'h' },

View File

@ -1,264 +1,264 @@
diff -riwBu -Xex aspell-setter-sep06/common/config.cpp aspell-setter-sep06-modified/common/config.cpp diff -riwBu -Xex aspell-setter-sep06/common/config.cpp aspell-setter-sep06-modified/common/config.cpp
--- aspell-setter-sep06/common/config.cpp 2005-12-12 17:41:06.000000000 +0100 --- aspell-setter-sep06/common/config.cpp 2005-12-12 17:41:06.000000000 +0100
+++ aspell-setter-sep06-modified/common/config.cpp 2007-02-16 22:40:26.947401600 +0100 +++ aspell-setter-sep06-modified/common/config.cpp 2007-02-16 22:40:26.947401600 +0100
@@ -78,6 +78,10 @@ @@ -78,6 +78,10 @@
namespace aspell { namespace aspell {
+#ifdef WIN32PORT +#ifdef WIN32PORT
+ String GetWindowsDir(String registry_name, String default_directory); + String GetWindowsDir(String registry_name, String default_directory);
+#endif +#endif
+ +
const char * const keyinfo_type_name[4] = { const char * const keyinfo_type_name[4] = {
N_("string"), N_("integer"), N_("boolean"), N_("list") N_("string"), N_("integer"), N_("boolean"), N_("list")
}; };
@@ -642,20 +646,19 @@ @@ -642,20 +646,19 @@
} else if (strcmp(i, "home-dir") == 0) { } else if (strcmp(i, "home-dir") == 0) {
- //get the personal folder (e.g. "c:\My Documents") - //get the personal folder (e.g. "c:\My Documents")
- char * dir = new char[MAX_PATH]; - char * dir = new char[MAX_PATH];
- LPITEMIDLIST items = 0; - LPITEMIDLIST items = 0;
- HRESULT hand = SHGetSpecialFolderLocation(0, CSIDL_PERSONAL, &items); - HRESULT hand = SHGetSpecialFolderLocation(0, CSIDL_PERSONAL, &items);
- if ((NOERROR == hand) && items) { - if ((NOERROR == hand) && items) {
- if (SHGetPathFromIDList(items, dir)) { - if (SHGetPathFromIDList(items, dir)) {
- for (char *ptr = dir; *ptr; ++ptr) - for (char *ptr = dir; *ptr; ++ptr)
- if ('\\' == *ptr) - if ('\\' == *ptr)
- *ptr = '/'; - *ptr = '/';
- final_str = dir; - final_str = dir;
- } - }
- CoTaskMemFree(items); - CoTaskMemFree(items);
- } - }
- delete [] dir; - delete [] dir;
+ final_str = GetWindowsDir("Base Path", ""); + final_str = GetWindowsDir("Base Path", "");
+ +
+ } else if (strcmp(i, "dict-dir") == 0) { + } else if (strcmp(i, "dict-dir") == 0) {
+ +
+ final_str = GetWindowsDir("Dictionary Path", "Dictionaries"); + final_str = GetWindowsDir("Dictionary Path", "Dictionaries");
+ +
+ } else if (strcmp(i, "data-dir") == 0) { + } else if (strcmp(i, "data-dir") == 0) {
+ +
+ final_str = GetWindowsDir("Data Path", "Data"); + final_str = GetWindowsDir("Data Path", "Data");
+ +
+ } else if (strcmp(i, "personal-dir") == 0) { + } else if (strcmp(i, "personal-dir") == 0) {
+ +
+ final_str = GetWindowsDir("Personal Path", "Personal"); + final_str = GetWindowsDir("Personal Path", "Personal");
} }
#endif #endif
@@ -1394,20 +1397,6 @@ @@ -1394,20 +1397,6 @@
return no_err; return no_err;
} }
-#if defined(WIN32_USE_PERSONAL_DIR) -#if defined(WIN32_USE_PERSONAL_DIR)
-# define HOME_DIR "!home-dir" -# define HOME_DIR "!home-dir"
-# define PERSONAL "<lang>.pws" -# define PERSONAL "<lang>.pws"
-# define REPL "<lang>.prepl" -# define REPL "<lang>.prepl"
-#elif defined(ENABLE_WIN32_RELOCATABLE) -#elif defined(ENABLE_WIN32_RELOCATABLE)
-# define HOME_DIR "<prefix>" -# define HOME_DIR "<prefix>"
-# define PERSONAL "<lang>.pws" -# define PERSONAL "<lang>.pws"
-# define REPL "<lang>.prepl" -# define REPL "<lang>.prepl"
-#else -#else
-# define HOME_DIR "<$HOME|./>" -# define HOME_DIR "<$HOME|./>"
-# define PERSONAL ".aspell.<lang>.pws" -# define PERSONAL ".aspell.<lang>.pws"
-# define REPL ".aspell.<lang>.prepl" -# define REPL ".aspell.<lang>.prepl"
-#endif -#endif
- -
static const KeyInfo config_keys[] = { static const KeyInfo config_keys[] = {
// the description should be under 50 chars // the description should be under 50 chars
{"actual-dict-dir", KeyInfoString, "<dict-dir^master>", 0} {"actual-dict-dir", KeyInfoString, "<dict-dir^master>", 0}
@@ -1484,12 +1473,12 @@ @@ -1484,12 +1473,12 @@
, {"per-conf-path", KeyInfoString, "<home-dir/per-conf>", 0} , {"per-conf-path", KeyInfoString, "<home-dir/per-conf>", 0}
, {"personal", KeyInfoString, PERSONAL, , {"personal", KeyInfoString, PERSONAL,
N_("personal dictionary file name")} N_("personal dictionary file name")}
- , {"personal-path", KeyInfoString, "<home-dir/personal>", 0} - , {"personal-path", KeyInfoString, "<home-dir/personal>", 0}
+ , {"personal-path", KeyInfoString, "<personal-dir/personal>", 0} + , {"personal-path", KeyInfoString, "<personal-dir/personal>", 0}
, {"prefix", KeyInfoString, PREFIX, , {"prefix", KeyInfoString, PREFIX,
N_("prefix directory")} N_("prefix directory")}
, {"repl", KeyInfoString, REPL, , {"repl", KeyInfoString, REPL,
N_("replacements list file name") } N_("replacements list file name") }
- , {"repl-path", KeyInfoString, "<home-dir/repl>", 0} - , {"repl-path", KeyInfoString, "<home-dir/repl>", 0}
+ , {"repl-path", KeyInfoString, "<personal-dir/repl>", 0} + , {"repl-path", KeyInfoString, "<personal-dir/repl>", 0}
, {"run-together", KeyInfoBool, "false", , {"run-together", KeyInfoBool, "false",
N_("consider run-together words legal"), KEYINFO_MAY_CHANGE} N_("consider run-together words legal"), KEYINFO_MAY_CHANGE}
, {"run-together-limit", KeyInfoInt, "2", , {"run-together-limit", KeyInfoInt, "2",
@@ -1524,12 +1513,6 @@ @@ -1524,12 +1513,6 @@
N_("search path for word list information files"), KEYINFO_HIDDEN} N_("search path for word list information files"), KEYINFO_HIDDEN}
, {"warn", KeyInfoBool, "true", , {"warn", KeyInfoBool, "true",
N_("enable warnings")} N_("enable warnings")}
-#ifdef WIN32PORT -#ifdef WIN32PORT
- , {"dict-subdir", KeyInfoString, "dicts", - , {"dict-subdir", KeyInfoString, "dicts",
- N_("sub directory for dictionaries")} - N_("sub directory for dictionaries")}
- , {"data-subdir", KeyInfoString, "data", - , {"data-subdir", KeyInfoString, "data",
- N_("sub directory for other data")} - N_("sub directory for other data")}
-#endif -#endif
// //
// These options are generally used when creating dictionaries // These options are generally used when creating dictionaries
@@ -1574,7 +1557,10 @@ @@ -1574,7 +1557,10 @@
N_("suggest possible replacements"), KEYINFO_MAY_CHANGE} N_("suggest possible replacements"), KEYINFO_MAY_CHANGE}
, {"time" , KeyInfoBool, "false", , {"time" , KeyInfoBool, "false",
N_("time load time and suggest time in pipe mode"), KEYINFO_MAY_CHANGE} N_("time load time and suggest time in pipe mode"), KEYINFO_MAY_CHANGE}
- -
+ #ifdef WIN32PORT + #ifdef WIN32PORT
+ , {"personal-dir", KeyInfoString, PERSONAL_DIR, + , {"personal-dir", KeyInfoString, PERSONAL_DIR,
+ N_("directory for personal dictionaries")} + N_("directory for personal dictionaries")}
+ #endif + #endif
}; };
const KeyInfo * config_impl_keys_begin = config_keys; const KeyInfo * config_impl_keys_begin = config_keys;
@@ -1588,4 +1574,87 @@ @@ -1588,4 +1574,87 @@
config_impl_keys_end); config_impl_keys_end);
} }
+#ifdef WIN32PORT +#ifdef WIN32PORT
+ +
+ String ReadRegString(HKEY hive, String key, String name) + String ReadRegString(HKEY hive, String key, String name)
+ { + {
+ +
+ // Reads a string from the Windows registry (used to get paths) + // Reads a string from the Windows registry (used to get paths)
+ +
+ HKEY hKey; + HKEY hKey;
+ unsigned long lType; + unsigned long lType;
+ DWORD dwSize; + DWORD dwSize;
+ unsigned char* szValue = NULL; + unsigned char* szValue = NULL;
+ +
+ if (::RegOpenKeyEx(hive, key.c_str(), 0, KEY_READ, &hKey) == ERROR_SUCCESS) + if (::RegOpenKeyEx(hive, key.c_str(), 0, KEY_READ, &hKey) == ERROR_SUCCESS)
+ { + {
+ if(::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS) + if(::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS)
+ { + {
+ szValue = new unsigned char[dwSize + 1]; + szValue = new unsigned char[dwSize + 1];
+ ::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, szValue, &dwSize); + ::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, szValue, &dwSize);
+ String RegistryReturn((char*)szValue); + String RegistryReturn((char*)szValue);
+ delete[] szValue; + delete[] szValue;
+ return RegistryReturn; + return RegistryReturn;
+ } else { + } else {
+ return ""; + return "";
+ } + }
+ } else { + } else {
+ return ""; + return "";
+ } + }
+ +
+ } + }
+ +
+ HKEY GetRegHive() + HKEY GetRegHive()
+ { + {
+ +
+ // Check whether Aspell is installed for the current user or for all users + // Check whether Aspell is installed for the current user or for all users
+ +
+ String value; + String value;
+ +
+ if (ReadRegString(HKEY_CURRENT_USER, "Software\\Aspell", "Base Path").empty()) + if (ReadRegString(HKEY_CURRENT_USER, "Software\\Aspell", "Base Path").empty())
+ { + {
+ return HKEY_LOCAL_MACHINE; + return HKEY_LOCAL_MACHINE;
+ } else { + } else {
+ return HKEY_CURRENT_USER; + return HKEY_CURRENT_USER;
+ } + }
+ +
+ } + }
+ +
+ String GetWindowsDir(String registry_name, String default_dir) + String GetWindowsDir(String registry_name, String default_dir)
+ { + {
+ +
+ String final_dir; + String final_dir;
+ +
+ // Get directory from registry + // Get directory from registry
+ HKEY hive; + HKEY hive;
+ hive = GetRegHive(); + hive = GetRegHive();
+ final_dir = ReadRegString(hive, "Software\\Aspell", registry_name); + final_dir = ReadRegString(hive, "Software\\Aspell", registry_name);
+ +
+ // Default location in "Documents and Settings" + // Default location in "Documents and Settings"
+ if (final_dir.empty()) { + if (final_dir.empty()) {
+ +
+ char * dir = new char[MAX_PATH]; + char * dir = new char[MAX_PATH];
+ LPITEMIDLIST items = 0; + LPITEMIDLIST items = 0;
+ HRESULT hand = SHGetSpecialFolderLocation(0, CSIDL_APPDATA, &items); + HRESULT hand = SHGetSpecialFolderLocation(0, CSIDL_APPDATA, &items);
+ +
+ if ((NOERROR == hand) && items) { + if ((NOERROR == hand) && items) {
+ if (SHGetPathFromIDList(items, dir)) { + if (SHGetPathFromIDList(items, dir)) {
+ for (char *ptr = dir; *ptr; ++ptr) + for (char *ptr = dir; *ptr; ++ptr)
+ if ('\\' == *ptr) + if ('\\' == *ptr)
+ *ptr = '/'; + *ptr = '/';
+ final_dir = dir; + final_dir = dir;
+ final_dir.append("/Aspell/"); + final_dir.append("/Aspell/");
+ final_dir.append(default_dir.c_str()); + final_dir.append(default_dir.c_str());
+ } + }
+ CoTaskMemFree(items); + CoTaskMemFree(items);
+ } + }
+ +
+ } + }
+ +
+ return final_dir; + return final_dir;
+ +
+ } + }
+ +
+#endif +#endif
+ +
} }
diff -riwBu -Xex aspell-setter-sep06/common/vector.hpp aspell-setter-sep06-modified/common/vector.hpp diff -riwBu -Xex aspell-setter-sep06/common/vector.hpp aspell-setter-sep06-modified/common/vector.hpp
--- aspell-setter-sep06/common/vector.hpp 2005-10-13 09:42:54.000000000 +0200 --- aspell-setter-sep06/common/vector.hpp 2005-10-13 09:42:54.000000000 +0200
+++ aspell-setter-sep06-modified/common/vector.hpp 2006-09-17 19:50:45.730606400 +0200 +++ aspell-setter-sep06-modified/common/vector.hpp 2006-09-17 19:50:45.730606400 +0200
@@ -50,10 +50,10 @@ @@ -50,10 +50,10 @@
T * data_end() {return &*this->end();} T * data_end() {return &*this->end();}
T * pbegin() {return &*this->begin();} T * pbegin() {return &*this->begin();}
- T * pend() {return &*this->end();} - T * pend() {return &*this->end();}
+ T * pend() {return &this->back()+1;} + T * pend() {return &this->back()+1;}
const T * pbegin() const {return &*this->begin();} const T * pbegin() const {return &*this->begin();}
- const T * pend() const {return &*this->end();} - const T * pend() const {return &*this->end();}
+ const T * pend() const {return &this->back()+1;} + const T * pend() const {return &this->back()+1;}
template <typename U> template <typename U>
U * datap() { U * datap() {
diff -riwBu -Xex aspell-setter-sep06/win32/dirs.h aspell-setter-sep06-modified/win32/dirs.h diff -riwBu -Xex aspell-setter-sep06/win32/dirs.h aspell-setter-sep06-modified/win32/dirs.h
--- aspell-setter-sep06/win32/dirs.h 2005-10-13 13:29:34.000000000 +0200 --- aspell-setter-sep06/win32/dirs.h 2005-10-13 13:29:34.000000000 +0200
+++ aspell-setter-sep06-modified/win32/dirs.h 2007-02-16 22:52:43.486492800 +0100 +++ aspell-setter-sep06-modified/win32/dirs.h 2007-02-16 22:52:43.486492800 +0100
@@ -1,16 +1,26 @@ @@ -1,16 +1,26 @@
#ifndef dirs_h #ifndef dirs_h
#define dirs_h #define dirs_h
-#ifdef WIN32_USE_EXECUTABLE_DIR -#ifdef WIN32_USE_EXECUTABLE_DIR
-# define DATA_DIR "<prefix/data-subdir>" -# define DATA_DIR "<prefix/data-subdir>"
-# define CONF_DIR "<prefix>" -# define CONF_DIR "<prefix>"
-# define DICT_DIR "<prefix/dict-subdir>" -# define DICT_DIR "<prefix/dict-subdir>"
+# define DATA_DIR "!data-dir" +# define DATA_DIR "!data-dir"
+# define DICT_DIR "!dict-dir" +# define DICT_DIR "!dict-dir"
+# define PERSONAL_DIR "!personal-dir" +# define PERSONAL_DIR "!personal-dir"
+# define CONF_DIR "<home-dir>" +# define CONF_DIR "<home-dir>"
+ +
+#if defined(WIN32_USE_EXECUTABLE_DIR) +#if defined(WIN32_USE_EXECUTABLE_DIR)
+# define HOME_DIR "<prefix>" +# define HOME_DIR "<prefix>"
+# define PERSONAL "<lang>.pws" +# define PERSONAL "<lang>.pws"
+# define REPL "<lang>.prepl" +# define REPL "<lang>.prepl"
# define PREFIX "!prefix" # define PREFIX "!prefix"
+#elif defined(WIN32_USE_PERSONAL_DIR) +#elif defined(WIN32_USE_PERSONAL_DIR)
+# define HOME_DIR "!home-dir" +# define HOME_DIR "!home-dir"
+# define PERSONAL "<lang>.pws" +# define PERSONAL "<lang>.pws"
+# define REPL "<lang>.prepl" +# define REPL "<lang>.prepl"
+# define PREFIX "<home-dir>" +# define PREFIX "<home-dir>"
#else #else
-# define DATA_DIR "aspell-win32/data" -# define DATA_DIR "aspell-win32/data"
-# define CONF_DIR "aspell-win32" -# define CONF_DIR "aspell-win32"
-# define DICT_DIR "dicts" -# define DICT_DIR "dicts"
-# define PREFIX "aspell-win32" -# define PREFIX "aspell-win32"
+# define HOME_DIR "<$HOME|./>" +# define HOME_DIR "<$HOME|./>"
+# define PERSONAL ".aspell.<lang>.pws" +# define PERSONAL ".aspell.<lang>.pws"
+# define REPL ".aspell.<lang>.prepl" +# define REPL ".aspell.<lang>.prepl"
+# define PREFIX "<home-dir>" +# define PREFIX "<home-dir>"
#endif #endif
#endif #endif
diff -riwBu -Xex aspell-setter-sep06/win32/settings.h aspell-setter-sep06-modified/win32/settings.h diff -riwBu -Xex aspell-setter-sep06/win32/settings.h aspell-setter-sep06-modified/win32/settings.h
--- aspell-setter-sep06/win32/settings.h 2006-09-06 10:51:16.000000000 +0200 --- aspell-setter-sep06/win32/settings.h 2006-09-06 10:51:16.000000000 +0200
+++ aspell-setter-sep06-modified/win32/settings.h 2006-09-17 18:55:23.112916800 +0200 +++ aspell-setter-sep06-modified/win32/settings.h 2006-09-17 18:55:23.112916800 +0200
@@ -9,9 +9,6 @@ @@ -9,9 +9,6 @@
/* Defined if curses like POSIX Functions should be used */ /* Defined if curses like POSIX Functions should be used */
#undef CURSES_ONLY #undef CURSES_ONLY
-/* Defined if win32 relocation should be used */ -/* Defined if win32 relocation should be used */
-#define ENABLE_WIN32_RELOCATABLE 1 -#define ENABLE_WIN32_RELOCATABLE 1
- -
/* Define to 1 if you have the <dlfcn.h> header file. */ /* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H #undef HAVE_DLFCN_H

File diff suppressed because it is too large Load Diff

View File

@ -1,131 +1,131 @@
diff -riwBu -Xex libiconv-1.11\config.h.msvc libiconv-1.11-modified\config.h.msvc diff -riwBu -Xex libiconv-1.11\config.h.msvc libiconv-1.11-modified\config.h.msvc
--- libiconv-1.11\config.h.msvc Wed Jul 19 21:10:22 2006 --- libiconv-1.11\config.h.msvc Wed Jul 19 21:10:22 2006
+++ libiconv-1.11-modified\config.h.msvc Sat Oct 14 01:36:15 2006 +++ libiconv-1.11-modified\config.h.msvc Sat Oct 14 01:36:15 2006
@@ -1,5 +1,11 @@ @@ -1,5 +1,11 @@
/* config.h.in. Generated from configure.ac by autoheader. */ /* config.h.in. Generated from configure.ac by autoheader. */
+#define EXEEXT '.exe' +#define EXEEXT '.exe'
+ +
+typedef __int8 uint8_t; +typedef __int8 uint8_t;
+typedef __int16 uint16_t; +typedef __int16 uint16_t;
+typedef __int32 uint32_t; +typedef __int32 uint32_t;
+ +
/* Define to the number of bits in type 'int16_t'. */ /* Define to the number of bits in type 'int16_t'. */
#undef BITSIZEOF_INT16_T #undef BITSIZEOF_INT16_T
diff -riwBu -Xex libiconv-1.11\lib\Makefile.msvc libiconv-1.11-modified\lib\Makefile.msvc diff -riwBu -Xex libiconv-1.11\lib\Makefile.msvc libiconv-1.11-modified\lib\Makefile.msvc
--- libiconv-1.11\lib\Makefile.msvc Thu Jan 06 18:37:08 2005 --- libiconv-1.11\lib\Makefile.msvc Thu Jan 06 18:37:08 2005
+++ libiconv-1.11-modified\lib\Makefile.msvc Fri Oct 20 12:25:08 2006 +++ libiconv-1.11-modified\lib\Makefile.msvc Fri Oct 20 12:25:08 2006
@@ -121,6 +121,7 @@ @@ -121,6 +121,7 @@
# iconv.dll and iconv.lib are created together. # iconv.dll and iconv.lib are created together.
iconv.lib : $(OBJECTS) $(RESOURCES) iconv.lib : $(OBJECTS) $(RESOURCES)
$(CC) $(MFLAGS) $(DEBUGFLAGS) -LD $(OBJECTS) $(RESOURCES) -Feiconv.dll $(CC) $(MFLAGS) $(DEBUGFLAGS) -LD $(OBJECTS) $(RESOURCES) -Feiconv.dll
+ mt.exe -manifest iconv.dll.manifest -outputresource:iconv.dll;2 + mt.exe -manifest iconv.dll.manifest -outputresource:iconv.dll;2
iconv.res : $(srcdir)/../windows/iconv.rc iconv.res : $(srcdir)/../windows/iconv.rc
rc -Fo iconv.res $(srcdir)/../windows/iconv.rc rc -Fo iconv.res $(srcdir)/../windows/iconv.rc
diff -riwBu -Xex libiconv-1.11\libcharset\lib\Makefile.msvc libiconv-1.11-modified\libcharset\lib\Makefile.msvc diff -riwBu -Xex libiconv-1.11\libcharset\lib\Makefile.msvc libiconv-1.11-modified\libcharset\lib\Makefile.msvc
--- libiconv-1.11\libcharset\lib\Makefile.msvc Thu Jan 06 18:46:04 2005 --- libiconv-1.11\libcharset\lib\Makefile.msvc Thu Jan 06 18:46:04 2005
+++ libiconv-1.11-modified\libcharset\lib\Makefile.msvc Sat Oct 21 23:23:55 2006 +++ libiconv-1.11-modified\libcharset\lib\Makefile.msvc Sat Oct 21 23:23:55 2006
@@ -116,6 +116,7 @@ @@ -116,6 +116,7 @@
# charset.dll and charset.lib are created together. # charset.dll and charset.lib are created together.
charset.lib : $(OBJECTS) $(RESOURCES) charset.lib : $(OBJECTS) $(RESOURCES)
$(CC) $(MFLAGS) $(DEBUGFLAGS) -LD $(OBJECTS) $(RESOURCES) -Fecharset.dll $(CC) $(MFLAGS) $(DEBUGFLAGS) -LD $(OBJECTS) $(RESOURCES) -Fecharset.dll
+ mt.exe -manifest charset.dll.manifest -outputresource:charset.dll;2 + mt.exe -manifest charset.dll.manifest -outputresource:charset.dll;2
charset.res : $(srcdir)/../windows/charset.rc charset.res : $(srcdir)/../windows/charset.rc
rc -Fo charset.res $(srcdir)/../windows/charset.rc rc -Fo charset.res $(srcdir)/../windows/charset.rc
diff -riwBu -Xex libiconv-1.11\src\Makefile.msvc libiconv-1.11-modified\src\Makefile.msvc diff -riwBu -Xex libiconv-1.11\src\Makefile.msvc libiconv-1.11-modified\src\Makefile.msvc
--- libiconv-1.11\src\Makefile.msvc Sun May 18 13:27:30 2003 --- libiconv-1.11\src\Makefile.msvc Sun May 18 13:27:30 2003
+++ libiconv-1.11-modified\src\Makefile.msvc Fri Oct 20 12:24:14 2006 +++ libiconv-1.11-modified\src\Makefile.msvc Fri Oct 20 12:24:14 2006
@@ -93,18 +93,29 @@ @@ -93,18 +93,29 @@
SHELL = /bin/sh SHELL = /bin/sh
+!if $(NO_NLS) +!if $(NO_NLS)
all : iconv_no_i18n.exe iconv.exe all : iconv_no_i18n.exe iconv.exe
+!else +!else
+all : iconv.exe +all : iconv.exe
+!endif +!endif
# This is the temporary iconv executable, without internationalization. # This is the temporary iconv executable, without internationalization.
+ +
+!if $(NO_NLS) +!if $(NO_NLS)
+ +
iconv_no_i18n.exe : $(srcdir)/iconv_no_i18n.c $(srcdir)/iconv.c ../srclib/icrt.lib ../lib/iconv.lib iconv_no_i18n.exe : $(srcdir)/iconv_no_i18n.c $(srcdir)/iconv.c ../srclib/icrt.lib ../lib/iconv.lib
$(CC) $(INCLUDES) -I..\lib $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" $(srcdir)/iconv_no_i18n.c ../srclib/icrt.lib ../lib/iconv.lib -Feiconv_no_i18n.exe $(CC) $(INCLUDES) -I..\lib $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" $(srcdir)/iconv_no_i18n.c ../srclib/icrt.lib ../lib/iconv.lib -Feiconv_no_i18n.exe
+ mt.exe -manifest iconv_no_i18n.exe.manifest -outputresource:iconv_no_i18n.exe;1 + mt.exe -manifest iconv_no_i18n.exe.manifest -outputresource:iconv_no_i18n.exe;1
$(RM) iconv_no_i18n.obj $(RM) iconv_no_i18n.obj
!if $(DLL) !if $(DLL)
copy ..\lib\iconv.dll iconv.dll copy ..\lib\iconv.dll iconv.dll
!endif !endif
+!endif +!endif
+ +
iconv.exe : $(srcdir)/iconv.c ../srclib/icrt.lib ../lib/iconv.lib iconv.exe : $(srcdir)/iconv.c ../srclib/icrt.lib ../lib/iconv.lib
$(CC) $(INCLUDES) -I..\lib $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" $(srcdir)/iconv.c ../srclib/icrt.lib $(LIBINTL) ../lib/iconv.lib -Feiconv.exe $(CC) $(INCLUDES) -I..\lib $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" $(srcdir)/iconv.c ../srclib/icrt.lib $(LIBINTL) ../lib/iconv.lib -Feiconv.exe
+ mt.exe -manifest iconv.exe.manifest -outputresource:iconv.exe;1 + mt.exe -manifest iconv.exe.manifest -outputresource:iconv.exe;1
$(RM) iconv.obj $(RM) iconv.obj
!if $(DLL) !if $(DLL)
copy ..\lib\iconv.dll iconv.dll copy ..\lib\iconv.dll iconv.dll
diff -riwBu -Xex libiconv-1.11\srclib\Makefile.msvc libiconv-1.11-modified\srclib\Makefile.msvc diff -riwBu -Xex libiconv-1.11\srclib\Makefile.msvc libiconv-1.11-modified\srclib\Makefile.msvc
--- libiconv-1.11\srclib\Makefile.msvc Sat Jan 24 11:11:24 2004 --- libiconv-1.11\srclib\Makefile.msvc Sat Jan 24 11:11:24 2004
+++ libiconv-1.11-modified\srclib\Makefile.msvc Fri Oct 13 22:54:03 2006 +++ libiconv-1.11-modified\srclib\Makefile.msvc Fri Oct 13 22:54:03 2006
@@ -90,7 +90,7 @@ @@ -90,7 +90,7 @@
xmalloc.obj xstrdup.obj \ xmalloc.obj xstrdup.obj \
\ \
relocatable.obj \ relocatable.obj \
- setenv.obj unsetenv.obj - setenv.obj unsetenv.obj
+ setenv.obj unsetenv.obj width.obj + setenv.obj unsetenv.obj width.obj
all : icrt.lib all : icrt.lib
@@ -120,6 +120,9 @@ @@ -120,6 +120,9 @@
unsetenv.obj : unsetenv.c unsetenv.obj : unsetenv.c
$(CC) $(INCLUDES) $(CFLAGS) -c unsetenv.c $(CC) $(INCLUDES) $(CFLAGS) -c unsetenv.c
+ +
+width.obj : width.c +width.obj : width.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c width.c + $(CC) $(INCLUDES) $(CFLAGS) -c width.c
icrt.lib : $(OBJECTS) icrt.lib : $(OBJECTS)
-$(RM) icrt.lib -$(RM) icrt.lib
diff -riwBu -Xex libiconv-1.11\srclib\progreloc.c libiconv-1.11-modified\srclib\progreloc.c diff -riwBu -Xex libiconv-1.11\srclib\progreloc.c libiconv-1.11-modified\srclib\progreloc.c
--- libiconv-1.11\srclib\progreloc.c Wed May 17 12:12:44 2006 --- libiconv-1.11\srclib\progreloc.c Wed May 17 12:12:44 2006
+++ libiconv-1.11-modified\srclib\progreloc.c Fri Oct 13 22:23:31 2006 +++ libiconv-1.11-modified\srclib\progreloc.c Fri Oct 13 22:23:31 2006
@@ -313,7 +313,7 @@ @@ -313,7 +313,7 @@
the filenames may have undergone a case conversion since the filenames may have undergone a case conversion since
they were packaged. In other words, EXEEXT may be ".exe" they were packaged. In other words, EXEEXT may be ".exe"
on one system and ".EXE" on another. */ on one system and ".EXE" on another. */
- static const char exeext[] = EXEEXT; - static const char exeext[] = EXEEXT;
+ static const char exeext = EXEEXT; + static const char exeext = EXEEXT;
const char *s1 = argv0 + argv0_len - exeext_len; const char *s1 = argv0 + argv0_len - exeext_len;
const char *s2 = exeext; const char *s2 = exeext;
for (; *s1 != '\0'; s1++, s2++) for (; *s1 != '\0'; s1++, s2++)
diff -riwBu -Xex libiconv-1.11\srclib\unitypes.h libiconv-1.11-modified\srclib\unitypes.h diff -riwBu -Xex libiconv-1.11\srclib\unitypes.h libiconv-1.11-modified\srclib\unitypes.h
--- libiconv-1.11\srclib\unitypes.h Thu May 19 18:58:24 2005 --- libiconv-1.11\srclib\unitypes.h Thu May 19 18:58:24 2005
+++ libiconv-1.11-modified\srclib\unitypes.h Fri Oct 13 22:37:58 2006 +++ libiconv-1.11-modified\srclib\unitypes.h Fri Oct 13 22:37:58 2006
@@ -20,7 +20,9 @@ @@ -20,7 +20,9 @@
#define _UNITYPES_H #define _UNITYPES_H
/* Get uint8_t, uint16_t, uint32_t. */ /* Get uint8_t, uint16_t, uint32_t. */
+#ifdef FULL_PATH_STDINT_H +#ifdef FULL_PATH_STDINT_H
#include <stdint.h> #include <stdint.h>
+#endif +#endif
/* Type representing a Unicode character. */ /* Type representing a Unicode character. */
typedef uint32_t ucs4_t; typedef uint32_t ucs4_t;
diff -riwBu -Xex libiconv-1.11\srclib\unsetenv.c libiconv-1.11-modified\srclib\unsetenv.c diff -riwBu -Xex libiconv-1.11\srclib\unsetenv.c libiconv-1.11-modified\srclib\unsetenv.c
--- libiconv-1.11\srclib\unsetenv.c Sat Jun 17 17:51:52 2006 --- libiconv-1.11\srclib\unsetenv.c Sat Jun 17 17:51:52 2006
+++ libiconv-1.11-modified\srclib\unsetenv.c Fri Oct 13 22:24:29 2006 +++ libiconv-1.11-modified\srclib\unsetenv.c Fri Oct 13 22:24:29 2006
@@ -27,7 +27,10 @@ @@ -27,7 +27,10 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
+ +
+#ifdef HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H
#include <unistd.h> #include <unistd.h>
+#endif +#endif
#if !_LIBC #if !_LIBC
# define __environ environ # define __environ environ

File diff suppressed because it is too large Load Diff

View File

@ -1,250 +1,250 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="8,00" Version="8,00"
Name="vld" Name="vld"
ProjectGUID="{0D30FFCB-45DA-4D2B-8E3C-81BC145BF2DE}" ProjectGUID="{0D30FFCB-45DA-4D2B-8E3C-81BC145BF2DE}"
RootNamespace="vld" RootNamespace="vld"
> >
<Platforms> <Platforms>
<Platform <Platform
Name="Win32" Name="Win32"
/> />
</Platforms> </Platforms>
<ToolFiles> <ToolFiles>
</ToolFiles> </ToolFiles>
<Configurations> <Configurations>
<Configuration <Configuration
Name="Debug|Win32" Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)" OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)" IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2" ConfigurationType="2"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
PreprocessorDefinitions="WIN32, UNICODE, _UNICODE" PreprocessorDefinitions="WIN32, UNICODE, _UNICODE"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="3" RuntimeLibrary="3"
EnableFunctionLevelLinking="true" EnableFunctionLevelLinking="true"
WarningLevel="4" WarningLevel="4"
DebugInformationFormat="4" DebugInformationFormat="4"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
GenerateDebugInformation="true" GenerateDebugInformation="true"
BaseAddress="0x03200000" BaseAddress="0x03200000"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
AssemblyIdentity="" AssemblyIdentity=""
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCWebDeploymentTool" Name="VCWebDeploymentTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration <Configuration
Name="Release|Win32" Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)" OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)" IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2" ConfigurationType="2"
WholeProgramOptimization="1" WholeProgramOptimization="1"
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
/> />
<Tool <Tool
Name="VCXMLDataGeneratorTool" Name="VCXMLDataGeneratorTool"
/> />
<Tool <Tool
Name="VCWebServiceProxyGeneratorTool" Name="VCWebServiceProxyGeneratorTool"
/> />
<Tool <Tool
Name="VCMIDLTool" Name="VCMIDLTool"
/> />
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="3" Optimization="3"
FavorSizeOrSpeed="1" FavorSizeOrSpeed="1"
EnableFiberSafeOptimizations="true" EnableFiberSafeOptimizations="true"
PreprocessorDefinitions="UNICODE, _UNICODE" PreprocessorDefinitions="UNICODE, _UNICODE"
StringPooling="true" StringPooling="true"
RuntimeLibrary="2" RuntimeLibrary="2"
BufferSecurityCheck="false" BufferSecurityCheck="false"
FloatingPointModel="2" FloatingPointModel="2"
DebugInformationFormat="3" DebugInformationFormat="3"
/> />
<Tool <Tool
Name="VCManagedResourceCompilerTool" Name="VCManagedResourceCompilerTool"
/> />
<Tool <Tool
Name="VCResourceCompilerTool" Name="VCResourceCompilerTool"
/> />
<Tool <Tool
Name="VCPreLinkEventTool" Name="VCPreLinkEventTool"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
GenerateDebugInformation="true" GenerateDebugInformation="true"
OptimizeReferences="2" OptimizeReferences="2"
EnableCOMDATFolding="2" EnableCOMDATFolding="2"
OptimizeForWindows98="1" OptimizeForWindows98="1"
BaseAddress="0x03200000" BaseAddress="0x03200000"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
/> />
<Tool <Tool
Name="VCManifestTool" Name="VCManifestTool"
AssemblyIdentity="" AssemblyIdentity=""
/> />
<Tool <Tool
Name="VCXDCMakeTool" Name="VCXDCMakeTool"
/> />
<Tool <Tool
Name="VCBscMakeTool" Name="VCBscMakeTool"
/> />
<Tool <Tool
Name="VCFxCopTool" Name="VCFxCopTool"
/> />
<Tool <Tool
Name="VCAppVerifierTool" Name="VCAppVerifierTool"
/> />
<Tool <Tool
Name="VCWebDeploymentTool" Name="VCWebDeploymentTool"
/> />
<Tool <Tool
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
</Configurations> </Configurations>
<References> <References>
</References> </References>
<Files> <Files>
<Filter <Filter
Name="Source Files" Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
> >
<File <File
RelativePath="..\..\src\callstack.cpp" RelativePath="..\..\src\callstack.cpp"
> >
</File> </File>
<File <File
RelativePath="..\..\src\ntapi.cpp" RelativePath="..\..\src\ntapi.cpp"
> >
</File> </File>
<File <File
RelativePath="..\..\src\utility.cpp" RelativePath="..\..\src\utility.cpp"
> >
</File> </File>
<File <File
RelativePath="..\..\src\vld.cpp" RelativePath="..\..\src\vld.cpp"
> >
</File> </File>
<File <File
RelativePath="..\..\src\vldapi.cpp" RelativePath="..\..\src\vldapi.cpp"
> >
</File> </File>
<File <File
RelativePath="..\..\src\vldheap.cpp" RelativePath="..\..\src\vldheap.cpp"
> >
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Header Files" Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd" Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
> >
<File <File
RelativePath="..\..\src\callstack.h" RelativePath="..\..\src\callstack.h"
> >
</File> </File>
<File <File
RelativePath="..\..\src\map.h" RelativePath="..\..\src\map.h"
> >
</File> </File>
<File <File
RelativePath="..\..\src\ntapi.h" RelativePath="..\..\src\ntapi.h"
> >
</File> </File>
<File <File
RelativePath="..\..\src\set.h" RelativePath="..\..\src\set.h"
> >
</File> </File>
<File <File
RelativePath="..\..\src\tree.h" RelativePath="..\..\src\tree.h"
> >
</File> </File>
<File <File
RelativePath="..\..\src\utility.h" RelativePath="..\..\src\utility.h"
> >
</File> </File>
<File <File
RelativePath="..\..\include\vld.h" RelativePath="..\..\include\vld.h"
> >
</File> </File>
<File <File
RelativePath="..\..\src\vldheap.h" RelativePath="..\..\src\vldheap.h"
> >
</File> </File>
<File <File
RelativePath="..\..\src\vldint.h" RelativePath="..\..\src\vldint.h"
> >
</File> </File>
</Filter> </Filter>
<Filter <Filter
Name="Resource Files" Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
> >
</Filter> </Filter>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>
</VisualStudioProject> </VisualStudioProject>

View File

@ -1,158 +1,158 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; $Id: vld.ini,v 1.7 2006/11/18 03:12:35 dmouldin Exp $ ;; $Id: vld.ini,v 1.7 2006/11/18 03:12:35 dmouldin Exp $
;; ;;
;; Visual Leak Detector - Initialization/Configuration File ;; Visual Leak Detector - Initialization/Configuration File
;; Copyright (c) 2006 Dan Moulding ;; Copyright (c) 2006 Dan Moulding
;; ;;
;; This library is free software; you can redistribute it and/or ;; This library is free software; you can redistribute it and/or
;; modify it under the terms of the GNU Lesser General Public ;; modify it under the terms of the GNU Lesser General Public
;; License as published by the Free Software Foundation; either ;; License as published by the Free Software Foundation; either
;; version 2.1 of the License, or (at your option) any later version. ;; version 2.1 of the License, or (at your option) any later version.
;; ;;
;; This library is distributed in the hope that it will be useful, ;; This library is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; Lesser General Public License for more details. ;; Lesser General Public License for more details.
;; ;;
;; You should have received a copy of the GNU Lesser General Public ;; You should have received a copy of the GNU Lesser General Public
;; License along with this library; if not, write to the Free Software ;; License along with this library; if not, write to the Free Software
;; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ;; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
;; ;;
;; See COPYING.txt for the full terms of the GNU Lesser General Public License. ;; See COPYING.txt for the full terms of the GNU Lesser General Public License.
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Any options left blank or not present will revert to their default values. ; Any options left blank or not present will revert to their default values.
[Options] [Options]
; The main on/off switch. If off, Visual Leak Detector will be completely ; The main on/off switch. If off, Visual Leak Detector will be completely
; disabled. It will do nothing but print a message to the debugger indicating ; disabled. It will do nothing but print a message to the debugger indicating
; that it has been turned off. ; that it has been turned off.
; ;
; Valid Values: on, off ; Valid Values: on, off
; Default: on ; Default: on
; ;
VLD = on VLD = on
; If yes, duplicate leaks (those that are identical) are not shown individually. ; If yes, duplicate leaks (those that are identical) are not shown individually.
; Only the first such leak is shown, along with a number indicating the total ; Only the first such leak is shown, along with a number indicating the total
; number of duplicate leaks. ; number of duplicate leaks.
; ;
; Valid Values: yes, no ; Valid Values: yes, no
; Default: no ; Default: no
; ;
AggregateDuplicates = no AggregateDuplicates = no
; Lists any additional modules to be included in memory leak detection. This can ; Lists any additional modules to be included in memory leak detection. This can
; be useful for checking for memory leaks in debug builds of 3rd party modules ; be useful for checking for memory leaks in debug builds of 3rd party modules
; which can not be easily rebuilt with '#include "vld.h"'. This option should be ; which can not be easily rebuilt with '#include "vld.h"'. This option should be
; used only if absolutely necessary and only if you really know what you are ; used only if absolutely necessary and only if you really know what you are
; doing. ; doing.
; ;
; CAUTION: Avoid listing any modules that link with the release CRT libraries. ; CAUTION: Avoid listing any modules that link with the release CRT libraries.
; Only modules that link with the debug CRT libraries should be listed here. ; Only modules that link with the debug CRT libraries should be listed here.
; Doing otherwise might result in false memory leak reports or even crashes. ; Doing otherwise might result in false memory leak reports or even crashes.
; ;
; Valid Values: Any list containing module names (i.e. names of EXEs or DLLs). ; Valid Values: Any list containing module names (i.e. names of EXEs or DLLs).
; Default: None. ; Default: None.
; ;
; Also track Qt's allocations: (not 100% sure that the reported leaks are correct) ; Also track Qt's allocations: (not 100% sure that the reported leaks are correct)
;ForceIncludeModules = QtCored4.dll QtGuid4.dll ;ForceIncludeModules = QtCored4.dll QtGuid4.dll
ForceIncludeModules = ForceIncludeModules =
; Maximum number of data bytes to display for each leaked block. If zero, then ; Maximum number of data bytes to display for each leaked block. If zero, then
; the data dump is completely suppressed and only call stacks are shown. ; the data dump is completely suppressed and only call stacks are shown.
; Limiting this to a low number can be useful if any of the leaked blocks are ; Limiting this to a low number can be useful if any of the leaked blocks are
; very large and cause unnecessary clutter in the memory leak report. ; very large and cause unnecessary clutter in the memory leak report.
; ;
; Value Values: 0 - 4294967295 ; Value Values: 0 - 4294967295
; Default: 4294967295 ; Default: 4294967295
; ;
MaxDataDump = MaxDataDump =
; Maximum number of call stack frames to trace back during leak detection. ; Maximum number of call stack frames to trace back during leak detection.
; Limiting this to a low number can reduce the CPU utilization overhead imposed ; Limiting this to a low number can reduce the CPU utilization overhead imposed
; by memory leak detection, especially when using the slower "safe" stack ; by memory leak detection, especially when using the slower "safe" stack
; walking method (see StackWalkMethod below). ; walking method (see StackWalkMethod below).
; ;
; Valid Values: 1 - 4294967295 ; Valid Values: 1 - 4294967295
; Default: 4294967295 ; Default: 4294967295
; ;
MaxTraceFrames = MaxTraceFrames =
; Sets the type of encoding to use for the generated memory leak report. This ; Sets the type of encoding to use for the generated memory leak report. This
; option is really only useful in conjuction with sending the report to a file. ; option is really only useful in conjuction with sending the report to a file.
; Sending a Unicode encoded report to the debugger is not useful because the ; Sending a Unicode encoded report to the debugger is not useful because the
; debugger cannot display Unicode characters. Using Unicode encoding might be ; debugger cannot display Unicode characters. Using Unicode encoding might be
; useful if the data contained in leaked blocks is likely to consist of Unicode ; useful if the data contained in leaked blocks is likely to consist of Unicode
; text. ; text.
; ;
; Valid Values: ascii, unicode ; Valid Values: ascii, unicode
; Default: ascii ; Default: ascii
; ;
ReportEncoding = ascii ReportEncoding = ascii
; Sets the report file destination, if reporting to file is enabled. A relative ; Sets the report file destination, if reporting to file is enabled. A relative
; path may be specified and is considered relative to the process' working ; path may be specified and is considered relative to the process' working
; directory. ; directory.
; ;
; Valid Values: Any valid path and filename. ; Valid Values: Any valid path and filename.
; Default: .\memory_leak_report.txt ; Default: .\memory_leak_report.txt
; ;
ReportFile = ReportFile =
; Sets the report destination to either a file, the debugger, or both. If ; Sets the report destination to either a file, the debugger, or both. If
; reporting to file is enabled, the report is sent to the file specified by the ; reporting to file is enabled, the report is sent to the file specified by the
; ReportFile option. ; ReportFile option.
; ;
; Valid Values: debugger, file, both ; Valid Values: debugger, file, both
; Default: debugger ; Default: debugger
; ;
ReportTo = debugger ReportTo = debugger
; Turns on or off a self-test mode which is used to verify that VLD is able to ; Turns on or off a self-test mode which is used to verify that VLD is able to
; detect memory leaks in itself. Intended to be used for debugging VLD itself, ; detect memory leaks in itself. Intended to be used for debugging VLD itself,
; not for debugging other programs. ; not for debugging other programs.
; ;
; Valid Values: on, off ; Valid Values: on, off
; Default: off ; Default: off
; ;
SelfTest = off SelfTest = off
; Selects the method to be used for walking the stack to obtain stack traces for ; Selects the method to be used for walking the stack to obtain stack traces for
; allocated memory blocks. The "fast" method may not always be able to ; allocated memory blocks. The "fast" method may not always be able to
; successfully trace completely through all call stacks. In such cases, the ; successfully trace completely through all call stacks. In such cases, the
; "safe" method may prove to more reliably obtain the full stack trace. The ; "safe" method may prove to more reliably obtain the full stack trace. The
; disadvantage is that the "safe" method is significantly slower than the "fast" ; disadvantage is that the "safe" method is significantly slower than the "fast"
; method and will probably result in very noticeable performance degradation of ; method and will probably result in very noticeable performance degradation of
; the program being debugged. ; the program being debugged.
; ;
; Valid Values: fast, safe ; Valid Values: fast, safe
; Default: fast ; Default: fast
; ;
StackWalkMethod = fast StackWalkMethod = fast
; Determines whether memory leak detection should be initially enabled for all ; Determines whether memory leak detection should be initially enabled for all
; threads, or whether it should be initially disabled for all threads. If set ; threads, or whether it should be initially disabled for all threads. If set
; to "yes", then any threads requiring memory leak detection to be enabled will ; to "yes", then any threads requiring memory leak detection to be enabled will
; need to call VLDEnable at some point to enable leak detection for those ; need to call VLDEnable at some point to enable leak detection for those
; threads. ; threads.
; ;
; Valid Values: yes, no ; Valid Values: yes, no
; Default: no ; Default: no
; ;
StartDisabled = no StartDisabled = no
; Determines whether or not all frames, including frames internal to the heap, ; Determines whether or not all frames, including frames internal to the heap,
; are traced. There will always be a number of frames internal to Visual Leak ; are traced. There will always be a number of frames internal to Visual Leak
; Detector and C/C++ or Win32 heap APIs that aren't generally useful for ; Detector and C/C++ or Win32 heap APIs that aren't generally useful for
; determining the cause of a leak. Normally these frames are skipped during the ; determining the cause of a leak. Normally these frames are skipped during the
; stack trace, which somewhat reduces the time spent tracing and amount of data ; stack trace, which somewhat reduces the time spent tracing and amount of data
; collected and stored in memory. Including all frames in the stack trace, all ; collected and stored in memory. Including all frames in the stack trace, all
; the way down into VLD's own code can, however, be useful for debugging VLD ; the way down into VLD's own code can, however, be useful for debugging VLD
; itself. ; itself.
; ;
; Valid Values: yes, no ; Valid Values: yes, no
; Default: no ; Default: no
; ;
TraceInternalFrames = no TraceInternalFrames = no

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,166 +1,166 @@
#LyX 1.6.2svn created this file. For more info see http://www.lyx.org/ #LyX 1.6.2svn created this file. For more info see http://www.lyx.org/
\lyxformat 345 \lyxformat 345
\begin_document \begin_document
\begin_header \begin_header
\textclass article \textclass article
\use_default_options false \use_default_options false
\language czech \language czech
\inputencoding auto \inputencoding auto
\font_roman default \font_roman default
\font_sans default \font_sans default
\font_typewriter default \font_typewriter default
\font_default_family default \font_default_family default
\font_sc false \font_sc false
\font_osf false \font_osf false
\font_sf_scale 100 \font_sf_scale 100
\font_tt_scale 100 \font_tt_scale 100
\graphics default \graphics default
\paperfontsize default \paperfontsize default
\spacing single \spacing single
\use_hyperref false \use_hyperref false
\papersize default \papersize default
\use_geometry false \use_geometry false
\use_amsmath 0 \use_amsmath 0
\use_esint 0 \use_esint 0
\cite_engine basic \cite_engine basic
\use_bibtopic false \use_bibtopic false
\paperorientation portrait \paperorientation portrait
\secnumdepth 3 \secnumdepth 3
\tocdepth 3 \tocdepth 3
\paragraph_separation indent \paragraph_separation indent
\defskip medskip \defskip medskip
\quotes_language english \quotes_language english
\papercolumns 1 \papercolumns 1
\papersides 1 \papersides 1
\paperpagestyle default \paperpagestyle default
\tracking_changes false \tracking_changes false
\output_changes false \output_changes false
\author "" \author ""
\author "" \author ""
\end_header \end_header
\begin_body \begin_body
\begin_layout Title \begin_layout Title
Vítejte v LyXu ! Vítejte v LyXu !
\end_layout \end_layout
\begin_layout Section* \begin_layout Section*
Co byste měli vědět pro používání LyXu Co byste měli vědět pro používání LyXu
\end_layout \end_layout
\begin_layout Enumerate \begin_layout Enumerate
LyX přichází s LyX přichází s
\size largest \size largest
\noun off \noun off
\color none \color none
\size default \size default
\noun default \noun default
\color inherit \color inherit
výbornou dokumentací—prosíme používejte ji! Český úvod můžete najít v menu výbornou dokumentací—prosíme používejte ji! Český úvod můžete najít v menu
\family sans \family sans
Nápověda\SpecialChar \menuseparator Nápověda\SpecialChar \menuseparator
Průvodce Průvodce
\begin_inset space ~ \begin_inset space ~
\end_inset \end_inset
LyXem LyXem
\family default \family default
. .
\end_layout \end_layout
\begin_layout Enumerate \begin_layout Enumerate
LyX nazýváme LyX nazýváme
\begin_inset Quotes eld \begin_inset Quotes eld
\end_inset \end_inset
editorem dokumentů. editorem dokumentů.
\begin_inset Quotes erd \begin_inset Quotes erd
\end_inset \end_inset
Svým návrhem je odlišný od klasického textového editoru—způsobem, který Svým návrhem je odlišný od klasického textového editoru—způsobem, který
činí psaní dokumentů mnohem jednodušší. činí psaní dokumentů mnohem jednodušší.
Ale nelekejte se, je odlišný jenom trochu. Ale nelekejte se, je odlišný jenom trochu.
Průvodce vám v tom udělá jasno. Průvodce vám v tom udělá jasno.
\begin_inset Foot \begin_inset Foot
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Už jsme se zmínili o tom, že byste si mohli přečíst dokumnetaci? Už jsme se zmínili o tom, že byste si mohli přečíst dokumnetaci?
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Enumerate \begin_layout Enumerate
Výstup z LyXu vypadá skvěle! Zkuste vybrat v menu Výstup z LyXu vypadá skvěle! Zkuste vybrat v menu
\family sans \family sans
Prohlížet\SpecialChar \menuseparator Prohlížet\SpecialChar \menuseparator
DVI DVI
\family default \family default
, ať se přesvědčíte na vlastní oči. , ať se přesvědčíte na vlastní oči.
\end_layout \end_layout
\begin_layout Enumerate \begin_layout Enumerate
LyX umí napodobit (téměř) veškerou funkcionalitu LaTeXu. LyX umí napodobit (téměř) veškerou funkcionalitu LaTeXu.
A ano, LyX umí importovat LaTeXové soubory. A ano, LyX umí importovat LaTeXové soubory.
Zkušení uživatelé LaTeXu mohou jen zbežně prolétnout začátek Zkušení uživatelé LaTeXu mohou jen zbežně prolétnout začátek
\emph on \emph on
Průvodce Průvodce
\emph default \emph default
, a pak si přečíst kapitolu , a pak si přečíst kapitolu
\begin_inset Quotes eld \begin_inset Quotes eld
\end_inset \end_inset
LyX pro uživatele LaTeXu LyX pro uživatele LaTeXu
\begin_inset Quotes erd \begin_inset Quotes erd
\end_inset \end_inset
. .
(Ostatní se nemusíte znepokojovat: nepotřebujete znát LaTeX pro používání (Ostatní se nemusíte znepokojovat: nepotřebujete znát LaTeX pro používání
LyXu.) LyXu.)
\end_layout \end_layout
\begin_layout Enumerate \begin_layout Enumerate
LyX nabízí mnoho možností lidem, kteří čtou a píší jiným jazykem, nežli LyX nabízí mnoho možností lidem, kteří čtou a píší jiným jazykem, nežli
je angličtina. je angličtina.
Navíc jsou klávesové zkratky, nástrojová lišta a i další vlasnosti dobře Navíc jsou klávesové zkratky, nástrojová lišta a i další vlasnosti dobře
konfigurovatelné. konfigurovatelné.
Viz Viz
\family sans \family sans
Nápověda\SpecialChar \menuseparator Nápověda\SpecialChar \menuseparator
Přizpůsobení Přizpůsobení
\family default \family default
LyXu. LyXu.
\end_layout \end_layout
\begin_layout Enumerate \begin_layout Enumerate
Domácí stránka LyXu je na Domácí stránka LyXu je na
\family typewriter \family typewriter
\begin_inset Flex URL \begin_inset Flex URL
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
http://www.lyx.org/ http://www.lyx.org/
\end_layout \end_layout
\end_inset \end_inset
\family default \family default
. .
Můžete zde najít další informace, přihlásit se do konference, udělat si Můžete zde najít další informace, přihlásit se do konference, udělat si
grafickou výpravu do Lyxu (Graphical Tour) a najít spousty rad a triků grafickou výpravu do Lyxu (Graphical Tour) a najít spousty rad a triků
v rámci wiki. v rámci wiki.
\end_layout \end_layout
\end_body \end_body
\end_document \end_document

View File

@ -1,379 +1,379 @@
#LyX 1.6.5svn created this file. For more info see http://www.lyx.org/ #LyX 1.6.5svn created this file. For more info see http://www.lyx.org/
\lyxformat 345 \lyxformat 345
\begin_document \begin_document
\begin_header \begin_header
\textclass article \textclass article
\use_default_options false \use_default_options false
\language galician \language galician
\inputencoding auto \inputencoding auto
\font_roman default \font_roman default
\font_sans default \font_sans default
\font_typewriter default \font_typewriter default
\font_default_family default \font_default_family default
\font_sc false \font_sc false
\font_osf false \font_osf false
\font_sf_scale 100 \font_sf_scale 100
\font_tt_scale 100 \font_tt_scale 100
\graphics default \graphics default
\paperfontsize 12 \paperfontsize 12
\spacing single \spacing single
\use_hyperref false \use_hyperref false
\papersize default \papersize default
\use_geometry false \use_geometry false
\use_amsmath 0 \use_amsmath 0
\use_esint 0 \use_esint 0
\cite_engine basic \cite_engine basic
\use_bibtopic false \use_bibtopic false
\paperorientation portrait \paperorientation portrait
\secnumdepth 3 \secnumdepth 3
\tocdepth 3 \tocdepth 3
\paragraph_separation indent \paragraph_separation indent
\defskip medskip \defskip medskip
\quotes_language english \quotes_language english
\papercolumns 1 \papercolumns 1
\papersides 1 \papersides 1
\paperpagestyle plain \paperpagestyle plain
\tracking_changes false \tracking_changes false
\output_changes false \output_changes false
\author "" \author ""
\author "" \author ""
\end_header \end_header
\begin_body \begin_body
\begin_layout Standard \begin_layout Standard
ESTE É O TÍTULO DO DOCUMENTO ESTE É O TÍTULO DO DOCUMENTO
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Dica: O título deberia semellar-se mais a un título Dica: O título deberia semellar-se mais a un título
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
por Pepe LyX por Pepe LyX
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Dica: Pepe é o AUTOR Dica: Pepe é o AUTOR
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
12 de Xuño de 1972 12 de Xuño de 1972
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Dica: Esta é unha data Dica: Esta é unha data
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Táboa de contidos Táboa de contidos
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Comentário: Agradeceria-se non ter que escreber a táboa de contidos explicitamen Comentário: Agradeceria-se non ter que escreber a táboa de contidos explicitamen
te. te.
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
1. 1.
Filosofia básica..................1 Filosofia básica..................1
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
1.1 Como o traballa o LyX...............1 1.1 Como o traballa o LyX...............1
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
1.2 Por que o LyX é mellor...............1 1.2 Por que o LyX é mellor...............1
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
2. 2.
Características de LyX Características de LyX
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
3. 3.
Tentativas eivadas de usar mais facilidades do LyX Tentativas eivadas de usar mais facilidades do LyX
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
4. 4.
Cuestións matemáticas Cuestións matemáticas
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
--------------------------------------------------- ---------------------------------------------------
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
1. 1.
Filosofia básica Filosofia básica
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Observación: Probabelmente os títulos das seccións deberian salientar máis. Observación: Probabelmente os títulos das seccións deberian salientar máis.
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A filosofia básica de LyX é conseguir que o usuário só se deba preocupar A filosofia básica de LyX é conseguir que o usuário só se deba preocupar
do contido do documento e non do formato. do contido do documento e non do formato.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
1.1 Como o traballa o LyX 1.1 Como o traballa o LyX
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
LyX basea-se no LaTeX, un sistema de preparación de documentos deseñado LyX basea-se no LaTeX, un sistema de preparación de documentos deseñado
por Leslie Lamport en 1985. por Leslie Lamport en 1985.
Por sua vez o LaTeX elaborou-se sobre unha linguaxe tipográfica chamada Por sua vez o LaTeX elaborou-se sobre unha linguaxe tipográfica chamada
TeX, criada por Donald Knuth en 1984. TeX, criada por Donald Knuth en 1984.
Por outra banda a filosofia do LaTeX é similar á de LyX. Por outra banda a filosofia do LaTeX é similar á de LyX.
Leslie Lamport dixo (ver referéncia [1]) Leslie Lamport dixo (ver referéncia [1])
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Observación: Probabelmente, esta referéncia non deberia estar escrita directamen Observación: Probabelmente, esta referéncia non deberia estar escrita directamen
te. te.
Que acontecerá se inserimos outro iten na bibliografia antes do libro de Que acontecerá se inserimos outro iten na bibliografia antes do libro de
Lamport. Lamport.
\end_layout \end_layout
\end_inset \end_inset
: :
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
"A función do deseño tipográfico é axudar ao leitor a comprender as ideas "A función do deseño tipográfico é axudar ao leitor a comprender as ideas
do autor. do autor.
Para un documento ser de fácil leitura, a sua estrutura visual debe reflectir Para un documento ser de fácil leitura, a sua estrutura visual debe reflectir
a sua estrutura lóxica. a sua estrutura lóxica.
As citas e os programas de computador, sendo elementos estruturalmente As citas e os programas de computador, sendo elementos estruturalmente
diferentes, deberian distinguir-se visualmente un de outro [...] Como LaTeX diferentes, deberian distinguir-se visualmente un de outro [...] Como LaTeX
non pode entender directamente o sentido do seu texto, debe indicar-lle non pode entender directamente o sentido do seu texto, debe indicar-lle
a estrutura lóxica mediante comandos especiais [...] Entanto escrebe o documento, a estrutura lóxica mediante comandos especiais [...] Entanto escrebe o documento,
deberia preocupar-se da sua estrutura lóxica, non da sua aparéncia." deberia preocupar-se da sua estrutura lóxica, non da sua aparéncia."
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Dica: esta é unha cita Dica: esta é unha cita
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
1.2 Por que o LyX é mellor 1.2 Por que o LyX é mellor
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
LyX pode ser útil a mais xente que LaTeX. LyX pode ser útil a mais xente que LaTeX.
É considerabelmente mais doado de aprender, pois non é como LaTeX unha É considerabelmente mais doado de aprender, pois non é como LaTeX unha
linguaxe de programazón. linguaxe de programazón.
LyX é basicamente como outros procesadores de texto "WYSIWYG (o que vé LyX é basicamente como outros procesadores de texto "WYSIWYG (o que vé
é o que obtén), agás que o LyX realmente é WYSIWYM (o que vé é o que pretende é o que obtén), agás que o LyX realmente é WYSIWYM (o que vé é o que pretende
facer). facer).
De maneira que combina a facilidade de uso dos procesadores de texto coa De maneira que combina a facilidade de uso dos procesadores de texto coa
poténcia do LaTeX. poténcia do LaTeX.
O cal é unha boa cousa. O cal é unha boa cousa.
Ademais, o formato de arquivo é independente do sistema operativo. Ademais, o formato de arquivo é independente do sistema operativo.
E o mellor de todo, é LIBRE! E o mellor de todo, é LIBRE!
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
2. 2.
Características do LyX Características do LyX
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
LyX posui moitas características que facilitan a escrita de documentos. LyX posui moitas características que facilitan a escrita de documentos.
(Senón, porque o ia querer usar? (Senón, porque o ia querer usar?
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Dica: Esta frase entre parénteses ficaria mellor nunha nota de rodapé. Dica: Esta frase entre parénteses ficaria mellor nunha nota de rodapé.
\end_layout \end_layout
\end_inset \end_inset
) E a min AGRADA-ME ) E a min AGRADA-ME
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Dica: enfatizar Dica: enfatizar
\end_layout \end_layout
\end_inset \end_inset
moito poder falar delas. moito poder falar delas.
Eis unha pequena lista: Eis unha pequena lista:
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
* O LyX encarrega-se sen intervención do usuário das marxes e a numeración * O LyX encarrega-se sen intervención do usuário das marxes e a numeración
das notas de rodapé. das notas de rodapé.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
* LyX facilita a escrita e edición de fórmulas matemáticas. * LyX facilita a escrita e edición de fórmulas matemáticas.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Para unha discusión mais filosófica de por que LyX é mellor que a competéncia Para unha discusión mais filosófica de por que LyX é mellor que a competéncia
vexa a sección 1.2, que se acha na páxina 1. vexa a sección 1.2, que se acha na páxina 1.
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Observación: Probabelmente esta REFERÉNCIA-CRUZADA non debia estar escrita Observación: Probabelmente esta REFERÉNCIA-CRUZADA non debia estar escrita
directamente, que pasará se mudarmos o número da sección? directamente, que pasará se mudarmos o número da sección?
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
3. 3.
Tentivas eivadas de empregar máis facilidades do LyX Tentivas eivadas de empregar máis facilidades do LyX
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
O outro dia escrebin un programa, algo asi como: O outro dia escrebin un programa, algo asi como:
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
5 REMARK O MEU MAGNIFICO PROGRAMA 5 REMARK O MEU MAGNIFICO PROGRAMA
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
10 PRINT "SON INIGUALÁBEL!" 10 PRINT "SON INIGUALÁBEL!"
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
20 GOTO 10 20 GOTO 10
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Dica: Isto é código fonte dun programa Dica: Isto é código fonte dun programa
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Após desta inxente lavoura informática, arrebatou-me unha vea poética e Após desta inxente lavoura informática, arrebatou-me unha vea poética e
escrebin este haiku: escrebin este haiku:
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
LyX, veloz palilleira LyX, veloz palilleira
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
teces as miñas palabras teces as miñas palabras
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
nunha fermosa renda de letras. nunha fermosa renda de letras.
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Dica: Se cadra non é moi boa poesia, mais non deixa de estar en VERSO Dica: Se cadra non é moi boa poesia, mais non deixa de estar en VERSO
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
4. 4.
Cuestións matemáticas Cuestións matemáticas
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Dica: Semella lóxico escreber fórmulas no modo matemático! Dica: Semella lóxico escreber fórmulas no modo matemático!
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A miña ecuación favorita é a solución da ecuación de segundo grau. A miña ecuación favorita é a solución da ecuación de segundo grau.
Se ax^2+bx+c=0 (ec.1), entón x= -b + ou menos a raiz cadrada de b^2-4ac, Se ax^2+bx+c=0 (ec.1), entón x= -b + ou menos a raiz cadrada de b^2-4ac,
todo dividido por 2a (ec. todo dividido por 2a (ec.
2). 2).
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Outra das miñas ecuacións favoritas é base do cálculo: f'(x) define-se como Outra das miñas ecuacións favoritas é base do cálculo: f'(x) define-se como
o limite cando deltax tende a zero de f(x+deltax) - f(x) dividido por deltax o limite cando deltax tende a zero de f(x+deltax) - f(x) dividido por deltax
(ec. (ec.
3). 3).
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
------------------------------------------------ ------------------------------------------------
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
REFERÉNCIAS REFERÉNCIAS
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
[1] Lamport, Leslie. [1] Lamport, Leslie.
LaTeX: A Document Preparation System. LaTeX: A Document Preparation System.
Addison-Wesley, Reading, Massachusetts, segunda edición, 1994. Addison-Wesley, Reading, Massachusetts, segunda edición, 1994.
\end_layout \end_layout
\end_body \end_body
\end_document \end_document

View File

@ -1,314 +1,314 @@
#LyX 1.6.5svn created this file. For more info see http://www.lyx.org/ #LyX 1.6.5svn created this file. For more info see http://www.lyx.org/
\lyxformat 345 \lyxformat 345
\begin_document \begin_document
\begin_header \begin_header
\textclass article \textclass article
\use_default_options false \use_default_options false
\language galician \language galician
\inputencoding auto \inputencoding auto
\font_roman default \font_roman default
\font_sans default \font_sans default
\font_typewriter default \font_typewriter default
\font_default_family default \font_default_family default
\font_sc false \font_sc false
\font_osf false \font_osf false
\font_sf_scale 100 \font_sf_scale 100
\font_tt_scale 100 \font_tt_scale 100
\graphics default \graphics default
\paperfontsize 12 \paperfontsize 12
\spacing single \spacing single
\use_hyperref false \use_hyperref false
\papersize default \papersize default
\use_geometry false \use_geometry false
\use_amsmath 0 \use_amsmath 0
\use_esint 0 \use_esint 0
\cite_engine basic \cite_engine basic
\use_bibtopic false \use_bibtopic false
\paperorientation portrait \paperorientation portrait
\secnumdepth 3 \secnumdepth 3
\tocdepth 3 \tocdepth 3
\paragraph_separation indent \paragraph_separation indent
\defskip medskip \defskip medskip
\quotes_language english \quotes_language english
\papercolumns 1 \papercolumns 1
\papersides 1 \papersides 1
\paperpagestyle plain \paperpagestyle plain
\tracking_changes false \tracking_changes false
\output_changes false \output_changes false
\author "" \author ""
\author "" \author ""
\end_header \end_header
\begin_body \begin_body
\begin_layout Title \begin_layout Title
ESTE É O TÍTULO DO DOCUMENTO ESTE É O TÍTULO DO DOCUMENTO
\end_layout \end_layout
\begin_layout Author \begin_layout Author
por Pepe LyX por Pepe LyX
\end_layout \end_layout
\begin_layout Date \begin_layout Date
12 de Xuño de 1972 12 de Xuño de 1972
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
\begin_inset CommandInset toc \begin_inset CommandInset toc
LatexCommand tableofcontents LatexCommand tableofcontents
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Section \begin_layout Section
Filosofia básica Filosofia básica
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A filosofia básica de LyX é conseguir que o usuário só se deba preocupar A filosofia básica de LyX é conseguir que o usuário só se deba preocupar
do contido do documento e non do formato. do contido do documento e non do formato.
\end_layout \end_layout
\begin_layout Subsection \begin_layout Subsection
Como o traballa o LyX Como o traballa o LyX
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
LyX basea-se no LaTeX, un sistema de preparación de documentos deseñado LyX basea-se no LaTeX, un sistema de preparación de documentos deseñado
por Leslie Lamport en 1985. por Leslie Lamport en 1985.
Por sua vez o LaTeX elaborou-se sobre unha linguaxe tipográfica chamada Por sua vez o LaTeX elaborou-se sobre unha linguaxe tipográfica chamada
TeX, criada por Donald Knuth en 1984. TeX, criada por Donald Knuth en 1984.
Por outra banda a filosofia do LaTeX é similar á de LyX. Por outra banda a filosofia do LaTeX é similar á de LyX.
Leslie Lamport dixo (ver referéncia Leslie Lamport dixo (ver referéncia
\begin_inset CommandInset citation \begin_inset CommandInset citation
LatexCommand cite LatexCommand cite
key "Lamport" key "Lamport"
\end_inset \end_inset
) : ) :
\end_layout \end_layout
\begin_layout Quote \begin_layout Quote
"A función do deseño tipográfico é axudar ao leitor a comprender as ideas "A función do deseño tipográfico é axudar ao leitor a comprender as ideas
do autor. do autor.
Para un documento ser de fácil leitura, a sua estrutura visual debe reflectir Para un documento ser de fácil leitura, a sua estrutura visual debe reflectir
a sua estrutura lóxica. a sua estrutura lóxica.
As citas e os programas de computador, sendo elementos estruturalmente As citas e os programas de computador, sendo elementos estruturalmente
diferentes, deberian distinguir-se visualmente un de outro [...] Como LaTeX diferentes, deberian distinguir-se visualmente un de outro [...] Como LaTeX
non pode entender directamente o sentido do seu texto, debe indicar-lle non pode entender directamente o sentido do seu texto, debe indicar-lle
a estrutura lóxica mediante comandos especiais [...] Entanto escrebe o documento, a estrutura lóxica mediante comandos especiais [...] Entanto escrebe o documento,
deberia preocupar-se da sua estrutura lóxica, non da sua aparéncia." deberia preocupar-se da sua estrutura lóxica, non da sua aparéncia."
\end_layout \end_layout
\begin_layout Subsection \begin_layout Subsection
Por que o LyX é mellor Por que o LyX é mellor
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
\begin_inset CommandInset label \begin_inset CommandInset label
LatexCommand label LatexCommand label
name "sub:LyX-mellor" name "sub:LyX-mellor"
\end_inset \end_inset
LyX pode ser útil a mais xente que LaTeX. LyX pode ser útil a mais xente que LaTeX.
É considerabelmente mais doado de aprender, pois non é como LaTeX unha É considerabelmente mais doado de aprender, pois non é como LaTeX unha
linguaxe de programazón. linguaxe de programazón.
LyX é basicamente como outros procesadores de texto "WYSIWYG (o que vé LyX é basicamente como outros procesadores de texto "WYSIWYG (o que vé
é o que obtén), agás que o LyX realmente é WYSIWYM (o que vé é o que pretende é o que obtén), agás que o LyX realmente é WYSIWYM (o que vé é o que pretende
facer). facer).
De maneira que combina a facilidade de uso dos procesadores de texto coa De maneira que combina a facilidade de uso dos procesadores de texto coa
poténcia do LaTeX. poténcia do LaTeX.
O cal é unha boa cousa. O cal é unha boa cousa.
Ademais, o formato de arquivo é independente do sistema operativo. Ademais, o formato de arquivo é independente do sistema operativo.
E o mellor de todo, é LIBRE! E o mellor de todo, é LIBRE!
\end_layout \end_layout
\begin_layout Section \begin_layout Section
Características do LyX Características do LyX
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
LyX posui moitas características que facilitan a escrita de documentos LyX posui moitas características que facilitan a escrita de documentos
\begin_inset Foot \begin_inset Foot
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Senón, porque o ia querer usar? Senón, porque o ia querer usar?
\end_layout \end_layout
\end_inset \end_inset
. .
E a min E a min
\emph on \emph on
agrada-me agrada-me
\emph default \emph default
moito poder falar delas. moito poder falar delas.
Eis unha pequena lista: Eis unha pequena lista:
\end_layout \end_layout
\begin_layout Itemize \begin_layout Itemize
O LyX encarrega-se sen intervención do usuário das marxes e a numeración O LyX encarrega-se sen intervención do usuário das marxes e a numeración
das notas de rodapé. das notas de rodapé.
\end_layout \end_layout
\begin_layout Itemize \begin_layout Itemize
LyX facilita a escrita e edición de fórmulas matemáticas. LyX facilita a escrita e edición de fórmulas matemáticas.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Para unha discusión mais filosófica de por que LyX é mellor que a competéncia Para unha discusión mais filosófica de por que LyX é mellor que a competéncia
vexa a sección vexa a sección
\begin_inset CommandInset ref \begin_inset CommandInset ref
LatexCommand ref LatexCommand ref
reference "sub:LyX-mellor" reference "sub:LyX-mellor"
\end_inset \end_inset
, que se acha na páxina , que se acha na páxina
\begin_inset CommandInset ref \begin_inset CommandInset ref
LatexCommand pageref LatexCommand pageref
reference "sub:LyX-mellor" reference "sub:LyX-mellor"
\end_inset \end_inset
. .
\end_layout \end_layout
\begin_layout Section \begin_layout Section
Tentivas eivadas de empregar máis facilidades do LyX Tentivas eivadas de empregar máis facilidades do LyX
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
O outro dia escrebin un programa, algo asi como: O outro dia escrebin un programa, algo asi como:
\end_layout \end_layout
\begin_layout LyX-Code \begin_layout LyX-Code
5 REMARK O MEU MAGNIFICO PROGRAMA 5 REMARK O MEU MAGNIFICO PROGRAMA
\end_layout \end_layout
\begin_layout LyX-Code \begin_layout LyX-Code
10 PRINT "SON INIGUALÁBEL!" 10 PRINT "SON INIGUALÁBEL!"
\end_layout \end_layout
\begin_layout LyX-Code \begin_layout LyX-Code
20 GOTO 10 20 GOTO 10
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Após desta inxente lavoura informática, arrebatou-me unha vea poética e Após desta inxente lavoura informática, arrebatou-me unha vea poética e
escrebin este haiku: escrebin este haiku:
\end_layout \end_layout
\begin_layout Verse \begin_layout Verse
LyX, veloz palilleira LyX, veloz palilleira
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
teces as miñas palabras teces as miñas palabras
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
nunha fermosa renda de letras. nunha fermosa renda de letras.
\end_layout \end_layout
\begin_layout Section \begin_layout Section
Cuestións matemáticas Cuestións matemáticas
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A miña ecuación favorita é a solución da ecuación de segundo grau. A miña ecuación favorita é a solución da ecuación de segundo grau.
Se Se
\begin_inset Formula $a^{2}+bx+c=0$ \begin_inset Formula $a^{2}+bx+c=0$
\end_inset \end_inset
(ec. (ec.
1), entón 1), entón
\begin_inset Formula $x=\frac{-b\pm\sqrt{b^{2}-4ac}}{2a}$ \begin_inset Formula $x=\frac{-b\pm\sqrt{b^{2}-4ac}}{2a}$
\end_inset \end_inset
(ec. (ec.
2). 2).
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Outra das miñas ecuacións favoritas é base do cálculo: Outra das miñas ecuacións favoritas é base do cálculo:
\begin_inset Formula $f'(x)\equiv\lim_{\Delta x\rightarrow0}\frac{f(x+\Delta x)-f(x)}{\Delta x}$ \begin_inset Formula $f'(x)\equiv\lim_{\Delta x\rightarrow0}\frac{f(x+\Delta x)-f(x)}{\Delta x}$
\end_inset \end_inset
(ec. (ec.
3). 3).
\end_layout \end_layout
\begin_layout Section \begin_layout Section
Notes Notes
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Tres cousiñas sobre este ficheiro: Tres cousiñas sobre este ficheiro:
\end_layout \end_layout
\begin_layout Itemize \begin_layout Itemize
Eliminei as liñas a trazos que separaban o título e a bibliografia do resto Eliminei as liñas a trazos que separaban o título e a bibliografia do resto
do documento. do documento.
O LyX (LaTeX) xa separa tais partes do documento con os espazos axeitados. O LyX (LaTeX) xa separa tais partes do documento con os espazos axeitados.
\end_layout \end_layout
\begin_layout Itemize \begin_layout Itemize
Non coloquei as fórmulas en liñas independentes, nen usei a numeración automátic Non coloquei as fórmulas en liñas independentes, nen usei a numeración automátic
a que fornece o LyX, porque non se descreben no a que fornece o LyX, porque non se descreben no
\emph on \emph on
Tutorial Tutorial
\emph default \emph default
. .
\end_layout \end_layout
\begin_layout Itemize \begin_layout Itemize
Non é necesário dixitar a palabra Non é necesário dixitar a palabra
\begin_inset Quotes eld \begin_inset Quotes eld
\end_inset \end_inset
References References
\begin_inset Quotes erd \begin_inset Quotes erd
\end_inset \end_inset
que vai a seguir, xa que o LyX a escrebe automaticamente (ou ben a palabra que vai a seguir, xa que o LyX a escrebe automaticamente (ou ben a palabra
\begin_inset Quotes eld \begin_inset Quotes eld
\end_inset \end_inset
Bibliography, Bibliography,
\begin_inset Quotes erd \begin_inset Quotes erd
\end_inset \end_inset
segundo a clase de documento) ao seleccionar o ambiente segundo a clase de documento) ao seleccionar o ambiente
\family sans \family sans
Bibliografia Bibliografia
\family default \family default
. .
\end_layout \end_layout
\begin_layout Bibliography \begin_layout Bibliography
\begin_inset CommandInset bibitem \begin_inset CommandInset bibitem
LatexCommand bibitem LatexCommand bibitem
key "Lamport" key "Lamport"
\end_inset \end_inset
Lamport, Leslie. Lamport, Leslie.
\emph on \emph on
LaTeX: A Document Preparation System. LaTeX: A Document Preparation System.
\emph default \emph default
Addison-Wesley, Reading, Massachusetts, second edition, 1994. Addison-Wesley, Reading, Massachusetts, second edition, 1994.
\end_layout \end_layout
\end_body \end_body
\end_document \end_document

View File

@ -1,165 +1,165 @@
#LyX 1.6.2svn created this file. For more info see http://www.lyx.org/ #LyX 1.6.2svn created this file. For more info see http://www.lyx.org/
\lyxformat 345 \lyxformat 345
\begin_document \begin_document
\begin_header \begin_header
\textclass article \textclass article
\use_default_options false \use_default_options false
\language galician \language galician
\inputencoding default \inputencoding default
\font_roman default \font_roman default
\font_sans default \font_sans default
\font_typewriter default \font_typewriter default
\font_default_family default \font_default_family default
\font_sc false \font_sc false
\font_osf false \font_osf false
\font_sf_scale 100 \font_sf_scale 100
\font_tt_scale 100 \font_tt_scale 100
\graphics default \graphics default
\paperfontsize default \paperfontsize default
\spacing single \spacing single
\use_hyperref false \use_hyperref false
\papersize default \papersize default
\use_geometry false \use_geometry false
\use_amsmath 0 \use_amsmath 0
\use_esint 0 \use_esint 0
\cite_engine basic \cite_engine basic
\use_bibtopic false \use_bibtopic false
\paperorientation portrait \paperorientation portrait
\secnumdepth 3 \secnumdepth 3
\tocdepth 3 \tocdepth 3
\paragraph_separation indent \paragraph_separation indent
\defskip medskip \defskip medskip
\quotes_language english \quotes_language english
\papercolumns 1 \papercolumns 1
\papersides 1 \papersides 1
\paperpagestyle default \paperpagestyle default
\tracking_changes false \tracking_changes false
\output_changes false \output_changes false
\author "" \author ""
\author "" \author ""
\end_header \end_header
\begin_body \begin_body
\begin_layout Title \begin_layout Title
Ben-vido ao LyX! Ben-vido ao LyX!
\end_layout \end_layout
\begin_layout Section* \begin_layout Section*
O primeiro que debe saber para empregar o LyX O primeiro que debe saber para empregar o LyX
\end_layout \end_layout
\begin_layout Enumerate \begin_layout Enumerate
LyX ven con unha excelente documentación —use-a, por favor! Comece con LyX ven con unha excelente documentación —use-a, por favor! Comece con
\family sans \family sans
Axuda\SpecialChar \menuseparator Axuda\SpecialChar \menuseparator
Introdución Introdución
\family default \family default
, onde se apresenta a filosofia que guia o LyX, e a sua documentación. , onde se apresenta a filosofia que guia o LyX, e a sua documentación.
A seguir é o momento de ler o tutorial, A seguir é o momento de ler o tutorial,
\family sans \family sans
Axuda\SpecialChar \menuseparator Axuda\SpecialChar \menuseparator
Tutorial Tutorial
\family default \family default
, para aprender as cuestións mais básicas. , para aprender as cuestións mais básicas.
\end_layout \end_layout
\begin_layout Enumerate \begin_layout Enumerate
LyX é o que nos chamamos un LyX é o que nos chamamos un
\begin_inset Quotes eld \begin_inset Quotes eld
\end_inset \end_inset
procesador de documentos procesador de documentos
\begin_inset Quotes erd \begin_inset Quotes erd
\end_inset \end_inset
. .
Non está moi lonxe dos procesadores de texto comuns, mais parte dunha filosofia Non está moi lonxe dos procesadores de texto comuns, mais parte dunha filosofia
diferente, facilitando a escrita de documentos, sobre todo os complexos. diferente, facilitando a escrita de documentos, sobre todo os complexos.
A documentación permitira-lle ver as diferéncias, e a forma de sacar proveito A documentación permitira-lle ver as diferéncias, e a forma de sacar proveito
das características únicas do LyX. das características únicas do LyX.
\begin_inset Foot \begin_inset Foot
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Mencionamos xa que debe ler a documentación? Mencionamos xa que debe ler a documentación?
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Enumerate \begin_layout Enumerate
O resultado ao imprimir os documentos no LyX é excelente! Seleccione O resultado ao imprimir os documentos no LyX é excelente! Seleccione
\family sans \family sans
Arquivo\SpecialChar \menuseparator Arquivo\SpecialChar \menuseparator
Ver Ver
\begin_inset space ~ \begin_inset space ~
\end_inset \end_inset
Postcript Postcript
\family default \family default
para comproba-lo por si mesmo. para comproba-lo por si mesmo.
\end_layout \end_layout
\begin_layout Enumerate \begin_layout Enumerate
Si, LyX pode reproducir (case todas) as funcionalidades do LaTeX. Si, LyX pode reproducir (case todas) as funcionalidades do LaTeX.
E si, LyX pode importar arquivos do LaTeX. E si, LyX pode importar arquivos do LaTeX.
Os usuários experientes do LaTeX deben ler o capítulo Os usuários experientes do LaTeX deben ler o capítulo
\begin_inset Quotes eld \begin_inset Quotes eld
\end_inset \end_inset
LyX para usuários de LaTeX LyX para usuários de LaTeX
\begin_inset Quotes erd \begin_inset Quotes erd
\end_inset \end_inset
do do
\emph on \emph on
Tutorial, Tutorial,
\emph default \emph default
e ler por riba o resto do documento. e ler por riba o resto do documento.
(O resto dos mortais non teñen por que se preocupar, non é preciso coñecer (O resto dos mortais non teñen por que se preocupar, non é preciso coñecer
LaTeX para usar o LyX.) LaTeX para usar o LyX.)
\end_layout \end_layout
\begin_layout Enumerate \begin_layout Enumerate
LyX incorpora diversos recursos para os que non escrebemos en inglés. LyX incorpora diversos recursos para os que non escrebemos en inglés.
As teclas de atallo, barra de ferramentas, e moitas outras características As teclas de atallo, barra de ferramentas, e moitas outras características
son altamente configurábeis (a maioria editando o seu arquivo son altamente configurábeis (a maioria editando o seu arquivo
\family typewriter \family typewriter
lyxrc lyxrc
\family default \family default
). ).
Vexa Vexa
\family sans \family sans
Axuda\SpecialChar \menuseparator Axuda\SpecialChar \menuseparator
Personalización Personalización
\family default \family default
para máis detalles. para máis detalles.
\end_layout \end_layout
\begin_layout Enumerate \begin_layout Enumerate
A páxina na internet do LyX é A páxina na internet do LyX é
\family typewriter \family typewriter
\begin_inset Flex URL \begin_inset Flex URL
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
http://www.lyx.org/ http://www.lyx.org/
\end_layout \end_layout
\end_inset \end_inset
\family default \family default
. .
Nela pode obter mais información sobre o programa, inscreber-se na(s) lista(s) Nela pode obter mais información sobre o programa, inscreber-se na(s) lista(s)
de discusión, ver a Turnê Gráfica etc. de discusión, ver a Turnê Gráfica etc.
\end_layout \end_layout
\end_body \end_body
\end_document \end_document

View File

@ -1,345 +1,345 @@
#LyX 1.6.5svn created this file. For more info see http://www.lyx.org/ #LyX 1.6.5svn created this file. For more info see http://www.lyx.org/
\lyxformat 345 \lyxformat 345
\begin_document \begin_document
\begin_header \begin_header
\textclass article \textclass article
\begin_preamble \begin_preamble
%\def\magyarOptions{defaults=over-1.4,footnote=huplain} %\def\magyarOptions{defaults=over-1.4,footnote=huplain}
\usepackage{indentfirst} \usepackage{indentfirst}
\frenchspacing \frenchspacing
\end_preamble \end_preamble
\use_default_options false \use_default_options false
\language magyar \language magyar
\inputencoding auto \inputencoding auto
\font_roman default \font_roman default
\font_sans default \font_sans default
\font_typewriter default \font_typewriter default
\font_default_family default \font_default_family default
\font_sc false \font_sc false
\font_osf false \font_osf false
\font_sf_scale 100 \font_sf_scale 100
\font_tt_scale 100 \font_tt_scale 100
\graphics default \graphics default
\paperfontsize 12 \paperfontsize 12
\spacing single \spacing single
\use_hyperref false \use_hyperref false
\papersize default \papersize default
\use_geometry false \use_geometry false
\use_amsmath 1 \use_amsmath 1
\use_esint 0 \use_esint 0
\cite_engine basic \cite_engine basic
\use_bibtopic false \use_bibtopic false
\paperorientation portrait \paperorientation portrait
\secnumdepth 3 \secnumdepth 3
\tocdepth 3 \tocdepth 3
\paragraph_separation indent \paragraph_separation indent
\defskip medskip \defskip medskip
\quotes_language polish \quotes_language polish
\papercolumns 1 \papercolumns 1
\papersides 1 \papersides 1
\paperpagestyle plain \paperpagestyle plain
\tracking_changes false \tracking_changes false
\output_changes false \output_changes false
\author "" \author ""
\author "" \author ""
\end_header \end_header
\begin_body \begin_body
\begin_layout Title \begin_layout Title
Ez a dokumentum címe Ez a dokumentum címe
\end_layout \end_layout
\begin_layout Author \begin_layout Author
készítette egy LyX-es készítette egy LyX-es
\end_layout \end_layout
\begin_layout Date \begin_layout Date
1972. 1972.
június 12 június 12
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
\begin_inset CommandInset toc \begin_inset CommandInset toc
LatexCommand tableofcontents LatexCommand tableofcontents
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Section \begin_layout Section
Alap filozófia Alap filozófia
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A LyX alapfilozófiája az, hogy csak arra kell koncentrálnia amit le akarni A LyX alapfilozófiája az, hogy csak arra kell koncentrálnia amit le akarni
írni, nem arra hogyan fog kinézni. írni, nem arra hogyan fog kinézni.
\end_layout \end_layout
\begin_layout Subsection \begin_layout Subsection
Hogyan valósítja meg ezt a LyX Hogyan valósítja meg ezt a LyX
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A LyX a LaTeX-et használja, ami egy dokumentum elkészítő rendszer, amit A LyX a LaTeX-et használja, ami egy dokumentum elkészítő rendszer, amit
1985-ben készített Leslie Lamport. 1985-ben készített Leslie Lamport.
Ezt egy TeX nevű írásszedő rendszerre építette, amit Donald Knuth készített Ezt egy TeX nevű írásszedő rendszerre építette, amit Donald Knuth készített
1984-ben. 1984-ben.
A LaTeX-et, a LyX-hez hasonló filozófia miatt készítették. A LaTeX-et, a LyX-hez hasonló filozófia miatt készítették.
Leslie Lamport egyszer azt mondta (lásd a hivatkozásban Leslie Lamport egyszer azt mondta (lásd a hivatkozásban
\begin_inset CommandInset citation \begin_inset CommandInset citation
LatexCommand cite LatexCommand cite
key "lamport" key "lamport"
\end_inset \end_inset
): ):
\end_layout \end_layout
\begin_layout Quote \begin_layout Quote
A tipográfiai tervezés célja az, hogy segítsen az olvasónak megérteni a A tipográfiai tervezés célja az, hogy segítsen az olvasónak megérteni a
szerző mondanivalóját. szerző mondanivalóját.
Ahhoz, hogy egy művet könnyen el lehessen olvasni, a vizuális szerkezetének Ahhoz, hogy egy művet könnyen el lehessen olvasni, a vizuális szerkezetének
követnie kell a logikai felépítését. követnie kell a logikai felépítését.
Az idézetek és számítógépprogramok teljesen különálló logikai elemek, ezért Az idézetek és számítógépprogramok teljesen különálló logikai elemek, ezért
meg kell tudni őket egymásól különböztetni\SpecialChar \ldots{} meg kell tudni őket egymásól különböztetni\SpecialChar \ldots{}
Mivel a LyX nem érti az írott Mivel a LyX nem érti az írott
szöveget, ezért világosan meg kell adnia a logikai struktúrát bizonyos szöveget, ezért világosan meg kell adnia a logikai struktúrát bizonyos
parancsok használatával\SpecialChar \ldots{} parancsok használatával\SpecialChar \ldots{}
Miközben művét készíti, a logikai felépítésével Miközben művét készíti, a logikai felépítésével
kell törődnie, nem a megjelenésével. kell törődnie, nem a megjelenésével.
\end_layout \end_layout
\begin_layout Subsection \begin_layout Subsection
Miért jobb a LyX Miért jobb a LyX
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
\begin_inset CommandInset label \begin_inset CommandInset label
LatexCommand label LatexCommand label
name "sec:lyxbetter" name "sec:lyxbetter"
\end_inset \end_inset
A LyX sokkal több embernek lehet hasznos, mint a LaTeX. A LyX sokkal több embernek lehet hasznos, mint a LaTeX.
Meglehetősen könnyebb megtanulni, mivel nem kell megtanulni a LaTeX-et Meglehetősen könnyebb megtanulni, mivel nem kell megtanulni a LaTeX-et
(ami gyakorlatilag egy programozási nyelv). (ami gyakorlatilag egy programozási nyelv).
A LyX alapvetően egy másik A LyX alapvetően egy másik
\begin_inset Quotes pld \begin_inset Quotes pld
\end_inset \end_inset
azt kapod amit látsz azt kapod amit látsz
\begin_inset Quotes prd \begin_inset Quotes prd
\end_inset \end_inset
szövegszerkesztő, bár inkább szövegszerkesztő, bár inkább
\begin_inset Quotes pld \begin_inset Quotes pld
\end_inset \end_inset
amit lát arra gondol amit lát arra gondol
\begin_inset Quotes prd \begin_inset Quotes prd
\end_inset \end_inset
típusú. típusú.
Ezáltal a word típusú szövegszerkesztők könnyű használatát kombinálja, Ezáltal a word típusú szövegszerkesztők könnyű használatát kombinálja,
a LaTeX hatékonyságával. a LaTeX hatékonyságával.
Ez egy jó dolog. Ez egy jó dolog.
A fájl formátuma platform független. A fájl formátuma platform független.
De legfőképpen, ingyenes! De legfőképpen, ingyenes!
\end_layout \end_layout
\begin_layout Section \begin_layout Section
A LyX jellemzői A LyX jellemzői
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A LyX rengeteg olyan jellemzővel rendelkezik, amelyek megkönnyítik az írást. A LyX rengeteg olyan jellemzővel rendelkezik, amelyek megkönnyítik az írást.
\begin_inset Foot \begin_inset Foot
status open status open
\begin_layout Plain Layout \begin_layout Plain Layout
\begin_inset space ~ \begin_inset space ~
\end_inset \end_inset
Ezek után, miért ne akarná használni? Ezek után, miért ne akarná használni?
\end_layout \end_layout
\end_inset \end_inset
\shape italic \shape italic
Nagyon igazgatott Nagyon igazgatott
\shape default \shape default
vagyok, hogy beszélhessek róluk. vagyok, hogy beszélhessek róluk.
Íme közülük néhány. Íme közülük néhány.
\end_layout \end_layout
\begin_layout Itemize \begin_layout Itemize
A LyX gondoskodik a margókról és a lábjegyzetek számozásáról A LyX gondoskodik a margókról és a lábjegyzetek számozásáról
\end_layout \end_layout
\begin_layout Itemize \begin_layout Itemize
A LyX-el könnyen készíthet és szerkeszthet képleteket A LyX-el könnyen készíthet és szerkeszthet képleteket
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A filozófiai értekezést, hogy miért jobb a LyX a többi szövegszerkesztőnél, A filozófiai értekezést, hogy miért jobb a LyX a többi szövegszerkesztőnél,
megtalálja a megtalálja a
\begin_inset CommandInset ref \begin_inset CommandInset ref
LatexCommand ref LatexCommand ref
reference "sec:lyxbetter" reference "sec:lyxbetter"
\end_inset \end_inset
. .
szakaszban, amit a szakaszban, amit a
\begin_inset CommandInset ref \begin_inset CommandInset ref
LatexCommand pageref LatexCommand pageref
reference "sec:lyxbetter" reference "sec:lyxbetter"
\end_inset \end_inset
. .
oldalon talál. oldalon talál.
\end_layout \end_layout
\begin_layout Section \begin_layout Section
Gyenge próbálkozások más LyX-es cuccok használatához Gyenge próbálkozások más LyX-es cuccok használatához
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Egy nap írtam egy programot. Egy nap írtam egy programot.
Így nézett ki. Így nézett ki.
\end_layout \end_layout
\begin_layout LyX-Code \begin_layout LyX-Code
5 REMARK A FELEMETES PROGRAMOM 5 REMARK A FELEMETES PROGRAMOM
\end_layout \end_layout
\begin_layout LyX-Code \begin_layout LyX-Code
10 PRINT 10 PRINT
\begin_inset Quotes eld \begin_inset Quotes eld
\end_inset \end_inset
FELEMETES VAGYOK! FELEMETES VAGYOK!
\begin_inset Quotes erd \begin_inset Quotes erd
\end_inset \end_inset
\end_layout \end_layout
\begin_layout LyX-Code \begin_layout LyX-Code
20 GOTO 10 20 GOTO 10
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A tudományos gondolkodás után, teljesen művészien éreztem magam, és írtam A tudományos gondolkodás után, teljesen művészien éreztem magam, és írtam
egy haiku-t egy haiku-t
\end_layout \end_layout
\begin_layout Verse \begin_layout Verse
A LyX egy nagyon szuper A LyX egy nagyon szuper
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
Szövegszedő szövegszerkesztő Szövegszedő szövegszerkesztő
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
Sok időt takarít meg Sok időt takarít meg
\end_layout \end_layout
\begin_layout Section \begin_layout Section
Képletes dolgok Képletes dolgok
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A kedvenc egyenletem a másodfokú egyenlet megoldóképlete. A kedvenc egyenletem a másodfokú egyenlet megoldóképlete.
Ha Ha
\begin_inset Formula $ax^{2}+bx+c=0$ \begin_inset Formula $ax^{2}+bx+c=0$
\end_inset \end_inset
(1. (1.
képlet), akkor képlet), akkor
\begin_inset Formula $x=\frac{-b\pm\sqrt{b^{2}-4ac}}{2a}$ \begin_inset Formula $x=\frac{-b\pm\sqrt{b^{2}-4ac}}{2a}$
\end_inset \end_inset
(2. (2.
képlet). képlet).
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A másik kedvenc képletem egy elemi kalkulus: A másik kedvenc képletem egy elemi kalkulus:
\begin_inset Formula $f'(x)\equiv\lim_{\Delta x\rightarrow0}\frac{f(x+\Delta x)-f(x)}{\Delta x}$ \begin_inset Formula $f'(x)\equiv\lim_{\Delta x\rightarrow0}\frac{f(x+\Delta x)-f(x)}{\Delta x}$
\end_inset \end_inset
(3. (3.
képlet). képlet).
\end_layout \end_layout
\begin_layout Section \begin_layout Section
Megjegyzések Megjegyzések
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Pár megjegyzés a fájl lyx-esítéséről: Pár megjegyzés a fájl lyx-esítéséről:
\end_layout \end_layout
\begin_layout Itemize \begin_layout Itemize
Ki tudtam szedni a kötőjeles sorokat. Ki tudtam szedni a kötőjeles sorokat.
Amelyek egyszerűen elválasztották a címet és a hivatkozást a dokumentum Amelyek egyszerűen elválasztották a címet és a hivatkozást a dokumentum
többi részétől. többi részétől.
A LyX (LaTeX) elég sokat tud arról, hogyan kell ezt az elkülönítést elvégezni. A LyX (LaTeX) elég sokat tud arról, hogyan kell ezt az elkülönítést elvégezni.
\end_layout \end_layout
\begin_layout Itemize \begin_layout Itemize
Nem zavartam be a képlet megjelenítési módjával. Nem zavartam be a képlet megjelenítési módjával.
Valamint nem használtam az automatikus képlet számozást sem, mivel az nincs Valamint nem használtam az automatikus képlet számozást sem, mivel az nincs
leírva a leírva a
\emph on \emph on
Tankönyvben Tankönyvben
\emph default \emph default
. .
\end_layout \end_layout
\begin_layout Itemize \begin_layout Itemize
Nem kellett begépelnem a Nem kellett begépelnem a
\begin_inset Quotes pld \begin_inset Quotes pld
\end_inset \end_inset
Hivatkozások Hivatkozások
\begin_inset Quotes prd \begin_inset Quotes prd
\end_inset \end_inset
szót lentebb. szót lentebb.
A LyX magától odaírta nekem (vagy az A LyX magától odaírta nekem (vagy az
\begin_inset Quotes pld \begin_inset Quotes pld
\end_inset \end_inset
Irodalomjegyzék Irodalomjegyzék
\begin_inset Quotes prd \begin_inset Quotes prd
\end_inset \end_inset
szót, függően a szövegosztálytól) szót, függően a szövegosztálytól)
\end_layout \end_layout
\begin_layout Bibliography \begin_layout Bibliography
\begin_inset CommandInset bibitem \begin_inset CommandInset bibitem
LatexCommand bibitem LatexCommand bibitem
key "lamport" key "lamport"
\end_inset \end_inset
Lamport, Leslie. Lamport, Leslie.
\emph on \emph on
LaTeX: A Document Preparation System. LaTeX: A Document Preparation System.
\emph default \emph default
Addison-Wesley, Reading, Massachusetts, második kiadás, 1994. Addison-Wesley, Reading, Massachusetts, második kiadás, 1994.
\end_layout \end_layout
\end_body \end_body
\end_document \end_document

View File

@ -1,424 +1,424 @@
#LyX 1.6.5svn created this file. For more info see http://www.lyx.org/ #LyX 1.6.5svn created this file. For more info see http://www.lyx.org/
\lyxformat 345 \lyxformat 345
\begin_document \begin_document
\begin_header \begin_header
\textclass article \textclass article
\begin_preamble \begin_preamble
%\def\magyarOptions{defaults=over-1.4,footnote=huplain} %\def\magyarOptions{defaults=over-1.4,footnote=huplain}
\usepackage{indentfirst} \usepackage{indentfirst}
\frenchspacing \frenchspacing
\end_preamble \end_preamble
\use_default_options false \use_default_options false
\language magyar \language magyar
\inputencoding auto \inputencoding auto
\font_roman default \font_roman default
\font_sans default \font_sans default
\font_typewriter default \font_typewriter default
\font_default_family default \font_default_family default
\font_sc false \font_sc false
\font_osf false \font_osf false
\font_sf_scale 100 \font_sf_scale 100
\font_tt_scale 100 \font_tt_scale 100
\graphics default \graphics default
\paperfontsize 12 \paperfontsize 12
\spacing single \spacing single
\use_hyperref false \use_hyperref false
\papersize default \papersize default
\use_geometry false \use_geometry false
\use_amsmath 1 \use_amsmath 1
\use_esint 0 \use_esint 0
\cite_engine basic \cite_engine basic
\use_bibtopic false \use_bibtopic false
\paperorientation portrait \paperorientation portrait
\secnumdepth 3 \secnumdepth 3
\tocdepth 3 \tocdepth 3
\paragraph_separation indent \paragraph_separation indent
\defskip medskip \defskip medskip
\quotes_language polish \quotes_language polish
\papercolumns 1 \papercolumns 1
\papersides 1 \papersides 1
\paperpagestyle plain \paperpagestyle plain
\tracking_changes false \tracking_changes false
\output_changes false \output_changes false
\author "" \author ""
\author "" \author ""
\end_header \end_header
\begin_body \begin_body
\begin_layout Standard \begin_layout Standard
EZ A DOKUMENTUM CÍME EZ A DOKUMENTUM CÍME
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Tanács: a címnek jobban CÍMNEK kell látszania Tanács: a címnek jobban CÍMNEK kell látszania
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
készítette egy LyX-es készítette egy LyX-es
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Tanács: ide kerül a SZERZŐ Tanács: ide kerül a SZERZŐ
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
1972. 1972.
június 12 június 12
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Tanács: ez lesz a DÁTUM Tanács: ez lesz a DÁTUM
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Tartalomjegyzék Tartalomjegyzék
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Tanács: jó lenne nem kellene külön begépelni a tartalomjegyzéket Tanács: jó lenne nem kellene külön begépelni a tartalomjegyzéket
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
1. 1.
Alap filozófia..................1 Alap filozófia..................1
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
1.1 Hogyan valósítja meg ezt a LyX...............1 1.1 Hogyan valósítja meg ezt a LyX...............1
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
1.2 Miért jobb a LyX ...............1 1.2 Miért jobb a LyX ...............1
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
2. 2.
A LyX jellemzői A LyX jellemzői
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
3. 3.
Gyenge próbálkozások más LyX-es cuccok használatához Gyenge próbálkozások más LyX-es cuccok használatához
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
4. 4.
Képletes dolgok Képletes dolgok
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
--------------------------------------------------- ---------------------------------------------------
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
1. 1.
Alap filozófia Alap filozófia
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Tanács: a szakaszcímnek jobban ki kellene tűnnie Tanács: a szakaszcímnek jobban ki kellene tűnnie
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A LyX alapfilozófiája az, hogy csak arra kell koncentrálnia amit le akarni A LyX alapfilozófiája az, hogy csak arra kell koncentrálnia amit le akarni
írni, nem arra hogyan fog kinézni. írni, nem arra hogyan fog kinézni.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
1.1 Hogyan valósítja meg ezt a LyX 1.1 Hogyan valósítja meg ezt a LyX
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A LyX a LaTeX-et használja, ami egy dokumentum elkészítő rendszer, amit A LyX a LaTeX-et használja, ami egy dokumentum elkészítő rendszer, amit
1985-ben készített Leslie Lamport. 1985-ben készített Leslie Lamport.
Ezt egy TeX nevű írásszedő rendszerre építette, amit Donald Knuth készített Ezt egy TeX nevű írásszedő rendszerre építette, amit Donald Knuth készített
1984-ben. 1984-ben.
A LaTeX-et, a LyX-hez hasonló filozófia miatt készítették. A LaTeX-et, a LyX-hez hasonló filozófia miatt készítették.
Leslie Lamport egyszer azt mondta (lásd a [2] hivatkozásban): Leslie Lamport egyszer azt mondta (lásd a [2] hivatkozásban):
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Tanács: valószínűleg ennek az IDÉZET HIVATKOZÁSNAK nem kellene be betonozva Tanács: valószínűleg ennek az IDÉZET HIVATKOZÁSNAK nem kellene be betonozva
lennie. lennie.
Mi lenne, ha Lamport könyve a második elem lenne az irodalomjegyzéknek? Mi lenne, ha Lamport könyve a második elem lenne az irodalomjegyzéknek?
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
\begin_inset Quotes pld \begin_inset Quotes pld
\end_inset \end_inset
A tipográfiai tervezés célja az, hogy segítsen az olvasónak megérteni a A tipográfiai tervezés célja az, hogy segítsen az olvasónak megérteni a
szerző mondanivalóját. szerző mondanivalóját.
Ahhoz, hogy egy művet könnyen el lehessen olvasni, a vizuális szerkezetének Ahhoz, hogy egy művet könnyen el lehessen olvasni, a vizuális szerkezetének
követnie kell a logikai felépítését. követnie kell a logikai felépítését.
Az idézetek és számítógépprogramok teljesen különálló logikai elemek, ezért Az idézetek és számítógépprogramok teljesen különálló logikai elemek, ezért
meg kell tudni őket egymásól különböztetni... meg kell tudni őket egymásól különböztetni...
Mivel a LyX nem érti az írott szöveget, ezért világosan meg kell adnia Mivel a LyX nem érti az írott szöveget, ezért világosan meg kell adnia
a logikai struktúrát bizonyos parancsok használatával\SpecialChar \ldots{} a logikai struktúrát bizonyos parancsok használatával\SpecialChar \ldots{}
Miközben művét készíti, Miközben művét készíti,
a logikai felépítésével kell törődnie, nem a megjelenésével. a logikai felépítésével kell törődnie, nem a megjelenésével.
\begin_inset Quotes prd \begin_inset Quotes prd
\end_inset \end_inset
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Tanács: ez egy IDÉZET Tanács: ez egy IDÉZET
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
1.2 Miért jobb a LyX 1.2 Miért jobb a LyX
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A LyX sokkal több embernek lehet hasznos, mint a LaTeX. A LyX sokkal több embernek lehet hasznos, mint a LaTeX.
Meglehetősen könnyebb megtanulni, mivel nem kell megtanulni a LaTeX-et Meglehetősen könnyebb megtanulni, mivel nem kell megtanulni a LaTeX-et
(ami gyakorlatilag egy programozási nyelv). (ami gyakorlatilag egy programozási nyelv).
A LyX alapvetően egy másik A LyX alapvetően egy másik
\begin_inset Quotes pld \begin_inset Quotes pld
\end_inset \end_inset
azt kapod amit látsz azt kapod amit látsz
\begin_inset Quotes prd \begin_inset Quotes prd
\end_inset \end_inset
szövegszerkesztő, bár inkább szövegszerkesztő, bár inkább
\begin_inset Quotes pld \begin_inset Quotes pld
\end_inset \end_inset
amit lát arra gondol amit lát arra gondol
\begin_inset Quotes prd \begin_inset Quotes prd
\end_inset \end_inset
típusú. típusú.
Ezáltal a word típusú szövegszerkesztők könnyű használatát kombinálja, Ezáltal a word típusú szövegszerkesztők könnyű használatát kombinálja,
a LaTeX hatékonyságával. a LaTeX hatékonyságával.
Ez egy jó dolog. Ez egy jó dolog.
A fájl formátuma platform független. A fájl formátuma platform független.
De legfőképpen, ingyenes! De legfőképpen, ingyenes!
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
2. 2.
A LyX jellemzői A LyX jellemzői
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A LyX rengeteg olyan jellemzővel rendelkezik, amelyek megkönnyítik az írást. A LyX rengeteg olyan jellemzővel rendelkezik, amelyek megkönnyítik az írást.
(Ezek után, miért ne akarná használni? (Ezek után, miért ne akarná használni?
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Tanács: a zárójelben lévő sokkal jobban mutatna a LÁBJEGYZETben Tanács: a zárójelben lévő sokkal jobban mutatna a LÁBJEGYZETben
\end_layout \end_layout
\end_inset \end_inset
). ).
\shape italic \shape italic
\emph on \emph on
NAGYON IZGATOTT NAGYON IZGATOTT
\shape default \shape default
\emph default \emph default
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Tanács: KIEMELÉS! Tanács: KIEMELÉS!
\end_layout \end_layout
\end_inset \end_inset
vagyok, hogy beszélhessek róluk. vagyok, hogy beszélhessek róluk.
Íme közülük néhány. Íme közülük néhány.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
*A LyX gondoskodik a margókról és a lábjegyzetek számozásáról *A LyX gondoskodik a margókról és a lábjegyzetek számozásáról
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
*A LyX-el könnyen készíthet és szerkeszthet képleteket *A LyX-el könnyen készíthet és szerkeszthet képleteket
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A filozófiai értekezést, hogy miért jobb a LyX a többi szövegszerkesztőnél, A filozófiai értekezést, hogy miért jobb a LyX a többi szövegszerkesztőnél,
megtalálja a 1.2 szakaszban, amit az 1. megtalálja a 1.2 szakaszban, amit az 1.
oldalon talál. oldalon talál.
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Tanács: ennek a KERESZT-HIVATKOZÁSNAK nem kellene fixnek lennie. Tanács: ennek a KERESZT-HIVATKOZÁSNAK nem kellene fixnek lennie.
Mi történik, ha megváltoztatjuk a szakaszszámozást? Mi történik, ha megváltoztatjuk a szakaszszámozást?
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
3. 3.
Gyenge próbálkozások más LyX-es cuccok használatához Gyenge próbálkozások más LyX-es cuccok használatához
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Egy nap írtam egy programot. Egy nap írtam egy programot.
Így nézett ki. Így nézett ki.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
5 REMARK A FELEMETES PROGRAMOM 5 REMARK A FELEMETES PROGRAMOM
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
10 PRINT 10 PRINT
\begin_inset Quotes eld \begin_inset Quotes eld
\end_inset \end_inset
FELEMETES VAGYOK! FELEMETES VAGYOK!
\begin_inset Quotes erd \begin_inset Quotes erd
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
20 GOTO 10 20 GOTO 10
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Tanács: ez egy PROGRAM-KÓD Tanács: ez egy PROGRAM-KÓD
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A tudományos gondolkodás után, teljesen művészien éreztem magam, és írtam A tudományos gondolkodás után, teljesen művészien éreztem magam, és írtam
egy haiku-t egy haiku-t
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A LyX egy nagyon szuper A LyX egy nagyon szuper
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
Szövegszedő szövegszerkesztő Szövegszedő szövegszerkesztő
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
Sok időt takarít meg Sok időt takarít meg
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Tanács: ez így nem túl jó mivel egy költemény, azaz egy VERS Tanács: ez így nem túl jó mivel egy költemény, azaz egy VERS
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
4. 4.
Képletes dolgok Képletes dolgok
\begin_inset Note Note \begin_inset Note Note
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Tanács: ezek a képletek normális módon kellene hogy megjelenjenek. Tanács: ezek a képletek normális módon kellene hogy megjelenjenek.
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A kedvenc egyenletem a másodfokú egyenlet megoldóképlete. A kedvenc egyenletem a másodfokú egyenlet megoldóképlete.
Ha ax^2+bx+c=0 (1. Ha ax^2+bx+c=0 (1.
képlet), akkor x= -b plusz vagy mínusz a b^2-4ac négyzetgyöke, majd mindez képlet), akkor x= -b plusz vagy mínusz a b^2-4ac négyzetgyöke, majd mindez
osztva 2a-val (2. osztva 2a-val (2.
képlet). képlet).
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A másik kedvenc képletem egy elemi kalkulus: f'(x) határérték, amikor [f(x+delta A másik kedvenc képletem egy elemi kalkulus: f'(x) határérték, amikor [f(x+delta
x)- f(x)]-ben deltax tart a nullához és az egész osztva deltax-el (3. x)- f(x)]-ben deltax tart a nullához és az egész osztva deltax-el (3.
képlet). képlet).
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
------------------------------------------------ ------------------------------------------------
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
HIVATKOZÁSOK HIVATKOZÁSOK
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
[1] Lamport, Leslie. [1] Lamport, Leslie.
\emph on \emph on
LaTeX: A Document Preparation System. LaTeX: A Document Preparation System.
\emph default \emph default
Addison-Wesley, Reading, Massachusetts, második kiadás, 1994. Addison-Wesley, Reading, Massachusetts, második kiadás, 1994.
\end_layout \end_layout
\end_body \end_body
\end_document \end_document

View File

@ -1,361 +1,361 @@
#LyX 1.6.1 created this file. For more info see http://www.lyx.org/ #LyX 1.6.1 created this file. For more info see http://www.lyx.org/
\lyxformat 345 \lyxformat 345
\begin_document \begin_document
\begin_header \begin_header
\textclass article \textclass article
\use_default_options true \use_default_options true
\begin_modules \begin_modules
sweave sweave
\end_modules \end_modules
\language english \language english
\inputencoding auto \inputencoding auto
\font_roman default \font_roman default
\font_sans default \font_sans default
\font_typewriter default \font_typewriter default
\font_default_family default \font_default_family default
\font_sc false \font_sc false
\font_osf false \font_osf false
\font_sf_scale 100 \font_sf_scale 100
\font_tt_scale 100 \font_tt_scale 100
\graphics default \graphics default
\paperfontsize default \paperfontsize default
\spacing single \spacing single
\use_hyperref false \use_hyperref false
\papersize default \papersize default
\use_geometry false \use_geometry false
\use_amsmath 1 \use_amsmath 1
\use_esint 1 \use_esint 1
\cite_engine basic \cite_engine basic
\use_bibtopic false \use_bibtopic false
\paperorientation portrait \paperorientation portrait
\secnumdepth 3 \secnumdepth 3
\tocdepth 3 \tocdepth 3
\paragraph_separation skip \paragraph_separation skip
\defskip medskip \defskip medskip
\quotes_language english \quotes_language english
\papercolumns 1 \papercolumns 1
\papersides 1 \papersides 1
\paperpagestyle default \paperpagestyle default
\tracking_changes false \tracking_changes false
\output_changes false \output_changes false
\author "" \author ""
\author "" \author ""
\end_header \end_header
\begin_body \begin_body
\begin_layout Title \begin_layout Title
A Test File A Test File
\end_layout \end_layout
\begin_layout Author \begin_layout Author
Friedrich Leisch Friedrich Leisch
\begin_inset Foot \begin_inset Foot
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
LyX LyX
\begin_inset Quotes eld \begin_inset Quotes eld
\end_inset \end_inset
port port
\begin_inset Quotes erd \begin_inset Quotes erd
\end_inset \end_inset
by Gregor Gorjanc by Gregor Gorjanc
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A simple example that will run in any S engine: The integers from 1 to 10 A simple example that will run in any S engine: The integers from 1 to 10
are are
\end_layout \end_layout
\begin_layout Chunk \begin_layout Chunk
<<print=TRUE>>= <<print=TRUE>>=
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
1:10 1:10
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
<<results=hide>>= <<results=hide>>=
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
print(1:20) print(1:20)
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
@ % the above is just to ensure that 2 code chunks can follow each other @ % the above is just to ensure that 2 code chunks can follow each other
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
We can also emulate a simple calculator: We can also emulate a simple calculator:
\end_layout \end_layout
\begin_layout Chunk \begin_layout Chunk
<<echo=TRUE,print=TRUE>>= <<echo=TRUE,print=TRUE>>=
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
1 + 1 1 + 1
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
1 + pi 1 + pi
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
sin(pi/2) sin(pi/2)
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
@ @
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Now we look at Gaussian data: Now we look at Gaussian data:
\end_layout \end_layout
\begin_layout Chunk \begin_layout Chunk
<<>>= <<>>=
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
library(stats) library(stats)
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
x <- rnorm(20) x <- rnorm(20)
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
print(x) print(x)
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
print(t1 <- t.test(x)) print(t1 <- t.test(x))
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
@ @
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Note that we can easily integrate some numbers into standard text: The third Note that we can easily integrate some numbers into standard text: The third
element of vector element of vector
\family typewriter \family typewriter
x x
\family default \family default
is is
\begin_inset Flex S/R expression \begin_inset Flex S/R expression
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
x[3] x[3]
\end_layout \end_layout
\end_inset \end_inset
, the , the
\begin_inset Formula $p$ \begin_inset Formula $p$
\end_inset \end_inset
-value of the test is -value of the test is
\begin_inset Flex S/R expression \begin_inset Flex S/R expression
status collapsed status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
format.pval(t1$p.value) format.pval(t1$p.value)
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
\family roman \family roman
\series medium \series medium
\shape up \shape up
\size normal \size normal
\emph off \emph off
\bar no \bar no
\noun off \noun off
\color none \color none
Now we look at a summary of the famous iris dataset, and we want to see Now we look at a summary of the famous iris dataset, and we want to see
the commands in the code chunks: the commands in the code chunks:
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
\begin_inset Flex Sweave Options \begin_inset Flex Sweave Options
status open status open
\begin_layout Plain Layout \begin_layout Plain Layout
echo=true,keep.source=true echo=true,keep.source=true
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Chunk \begin_layout Chunk
<<engine=R>>= <<engine=R>>=
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
# A comment # A comment
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
data(iris) data(iris)
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
summary(iris) summary(iris)
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
@ % def @ % def
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
\begin_inset Float figure \begin_inset Float figure
placement tbph placement tbph
wide false wide false
sideways false sideways false
status collapsed status collapsed
\begin_layout Chunk \begin_layout Chunk
\align center \align center
<<fig=TRUE>>= <<fig=TRUE>>=
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
library(graphics) library(graphics)
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
pairs(iris) pairs(iris)
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
@ @
\end_layout \end_layout
\begin_layout Plain Layout \begin_layout Plain Layout
\begin_inset Caption \begin_inset Caption
\begin_layout Plain Layout \begin_layout Plain Layout
Pairs plot of the iris data. Pairs plot of the iris data.
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
\begin_inset Float figure \begin_inset Float figure
placement tbph placement tbph
wide false wide false
sideways false sideways false
status collapsed status collapsed
\begin_layout Chunk \begin_layout Chunk
\align center \align center
<<fig=true>>= <<fig=true>>=
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
boxplot(Sepal.Length~Species,data=iris) boxplot(Sepal.Length~Species,data=iris)
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
@ @
\end_layout \end_layout
\begin_layout Plain Layout \begin_layout Plain Layout
\begin_inset Caption \begin_inset Caption
\begin_layout Plain Layout \begin_layout Plain Layout
Boxplot of sepal length grouped by species. Boxplot of sepal length grouped by species.
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\begin_layout Chunk \begin_layout Chunk
<<engine=S4>>= <<engine=S4>>=
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
function.that.comes.only.with.Splus(x) function.that.comes.only.with.Splus(x)
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
@ @
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
\begin_inset Float figure \begin_inset Float figure
wide false wide false
sideways false sideways false
status open status open
\begin_layout Chunk \begin_layout Chunk
\align center \align center
<<fig=true>>= <<fig=true>>=
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
boxplot(Sepal.Length~Species,data=iris) boxplot(Sepal.Length~Species,data=iris)
\begin_inset Newline newline \begin_inset Newline newline
\end_inset \end_inset
@ @
\end_layout \end_layout
\begin_layout Plain Layout \begin_layout Plain Layout
\begin_inset Caption \begin_inset Caption
\begin_layout Plain Layout \begin_layout Plain Layout
Boxplot of sepal length grouped by species Boxplot of sepal length grouped by species
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\end_inset \end_inset
\end_layout \end_layout
\end_body \end_body
\end_document \end_document

View File

@ -1,286 +1,286 @@
/** /**
* \file InsetParamsDialog.cpp * \file InsetParamsDialog.cpp
* This file is part of LyX, the document processor. * This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING. * Licence details can be found in the file COPYING.
* *
* \author Abdelrazak Younes * \author Abdelrazak Younes
* *
* Full author contact details are available in file CREDITS. * Full author contact details are available in file CREDITS.
*/ */
#include <config.h> #include <config.h>
#include "InsetParamsDialog.h" #include "InsetParamsDialog.h"
#include "GuiBox.h" #include "GuiBox.h"
#include "GuiBranch.h" #include "GuiBranch.h"
#include "GuiBibitem.h" #include "GuiBibitem.h"
#include "GuiERT.h" #include "GuiERT.h"
#include "GuiHSpace.h" #include "GuiHSpace.h"
#include "GuiHyperlink.h" #include "GuiHyperlink.h"
#include "GuiInfo.h" #include "GuiInfo.h"
#include "GuiLabel.h" #include "GuiLabel.h"
#include "GuiLine.h" #include "GuiLine.h"
#include "GuiNomenclature.h" #include "GuiNomenclature.h"
#include "GuiPrintNomencl.h" #include "GuiPrintNomencl.h"
#include "GuiTabular.h" #include "GuiTabular.h"
#include "GuiVSpace.h" #include "GuiVSpace.h"
#include "FloatPlacement.h" #include "FloatPlacement.h"
#include "InsetParamsWidget.h" #include "InsetParamsWidget.h"
#include "qt_helpers.h" #include "qt_helpers.h"
#include "Buffer.h" #include "Buffer.h"
#include "buffer_funcs.h" #include "buffer_funcs.h"
#include "BufferParams.h" #include "BufferParams.h"
#include "BufferView.h" #include "BufferView.h"
#include "Cursor.h" #include "Cursor.h"
#include "FuncRequest.h" #include "FuncRequest.h"
#include "FuncStatus.h" #include "FuncStatus.h"
#include "LyX.h" #include "LyX.h"
#include "support/debug.h" #include "support/debug.h"
#include "support/lstrings.h" #include "support/lstrings.h"
using namespace std; using namespace std;
using namespace lyx::support; using namespace lyx::support;
namespace lyx { namespace lyx {
namespace frontend { namespace frontend {
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// //
// InsetParamsDialog::Private // InsetParamsDialog::Private
// //
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
struct InsetParamsDialog::Private struct InsetParamsDialog::Private
{ {
Private() : widget_(0), inset_(0), changed_(false) {} Private() : widget_(0), inset_(0), changed_(false) {}
/// ///
InsetParamsWidget * widget_; InsetParamsWidget * widget_;
/// The inset that was used at last Restore or Apply operation. /// The inset that was used at last Restore or Apply operation.
Inset const * inset_; Inset const * inset_;
/// Set to true whenever the dialog is changed and set back to /// Set to true whenever the dialog is changed and set back to
/// false when the dialog is applied or restored. /// false when the dialog is applied or restored.
bool changed_; bool changed_;
}; };
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// //
// InsetParamsDialog // InsetParamsDialog
// //
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
InsetParamsDialog::InsetParamsDialog(GuiView & lv, InsetParamsWidget * widget) InsetParamsDialog::InsetParamsDialog(GuiView & lv, InsetParamsWidget * widget)
: DialogView(lv, toqstr(insetName(widget->insetCode())), : DialogView(lv, toqstr(insetName(widget->insetCode())),
toqstr(insetName(widget->insetCode()))), d(new Private) toqstr(insetName(widget->insetCode()))), d(new Private)
{ {
setupUi(this); setupUi(this);
setInsetParamsWidget(widget); setInsetParamsWidget(widget);
synchronizedViewCB->setChecked(false); synchronizedViewCB->setChecked(false);
on_synchronizedViewCB_stateChanged(false); on_synchronizedViewCB_stateChanged(false);
setFocusProxy(widget); setFocusProxy(widget);
} }
InsetParamsDialog::~InsetParamsDialog() InsetParamsDialog::~InsetParamsDialog()
{ {
delete d; delete d;
} }
bool InsetParamsDialog::initialiseParams(std::string const & data) bool InsetParamsDialog::initialiseParams(std::string const & data)
{ {
if (!d->widget_->initialiseParams(data)) if (!d->widget_->initialiseParams(data))
on_restorePB_clicked(); on_restorePB_clicked();
return true; return true;
} }
void InsetParamsDialog::setInsetParamsWidget(InsetParamsWidget * widget) void InsetParamsDialog::setInsetParamsWidget(InsetParamsWidget * widget)
{ {
d->widget_ = widget; d->widget_ = widget;
stackedWidget->addWidget(widget); stackedWidget->addWidget(widget);
stackedWidget->setCurrentWidget(widget); stackedWidget->setCurrentWidget(widget);
connect(d->widget_, SIGNAL(changed()), this, SLOT(onWidget_changed())); connect(d->widget_, SIGNAL(changed()), this, SLOT(onWidget_changed()));
} }
void InsetParamsDialog::on_restorePB_clicked() void InsetParamsDialog::on_restorePB_clicked()
{ {
updateView(true); updateView(true);
restorePB->setEnabled(false); restorePB->setEnabled(false);
d->changed_ = false; d->changed_ = false;
d->inset_ = inset(d->widget_->insetCode()); d->inset_ = inset(d->widget_->insetCode());
} }
void InsetParamsDialog::on_okPB_clicked() void InsetParamsDialog::on_okPB_clicked()
{ {
Inset const * i = inset(d->widget_->insetCode()); Inset const * i = inset(d->widget_->insetCode());
if (i) if (i)
applyView(); applyView();
else else
newInset(); newInset();
hide(); hide();
} }
void InsetParamsDialog::newInset() void InsetParamsDialog::newInset()
{ {
docstring const argument = d->widget_->dialogToParams(); docstring const argument = d->widget_->dialogToParams();
dispatch(FuncRequest(d->widget_->creationCode(), argument)); dispatch(FuncRequest(d->widget_->creationCode(), argument));
} }
void InsetParamsDialog::on_newPB_clicked() void InsetParamsDialog::on_newPB_clicked()
{ {
newInset(); newInset();
} }
void InsetParamsDialog::on_applyPB_clicked() void InsetParamsDialog::on_applyPB_clicked()
{ {
applyView(); applyView();
} }
void InsetParamsDialog::on_closePB_clicked() void InsetParamsDialog::on_closePB_clicked()
{ {
hide(); hide();
} }
void InsetParamsDialog::on_synchronizedViewCB_stateChanged(int state) void InsetParamsDialog::on_synchronizedViewCB_stateChanged(int state)
{ {
checkWidgets(state == Qt::Checked); checkWidgets(state == Qt::Checked);
} }
docstring InsetParamsDialog::checkWidgets(bool synchronized_view) docstring InsetParamsDialog::checkWidgets(bool synchronized_view)
{ {
bool const widget_ok = d->widget_->checkWidgets(); bool const widget_ok = d->widget_->checkWidgets();
Inset const * ins = inset(d->widget_->insetCode()); Inset const * ins = inset(d->widget_->insetCode());
docstring const argument = d->widget_->dialogToParams(); docstring const argument = d->widget_->dialogToParams();
bool valid_argument = !argument.empty(); bool valid_argument = !argument.empty();
if (ins) if (ins)
valid_argument &= ins->validateModifyArgument(argument); valid_argument &= ins->validateModifyArgument(argument);
FuncCode const code = synchronized_view FuncCode const code = synchronized_view
? d->widget_->creationCode() : LFUN_INSET_MODIFY; ? d->widget_->creationCode() : LFUN_INSET_MODIFY;
bool const lfun_ok = lyx::getStatus(FuncRequest(code, argument)).enabled(); bool const lfun_ok = lyx::getStatus(FuncRequest(code, argument)).enabled();
bool const read_only = buffer().isReadonly(); bool const read_only = buffer().isReadonly();
okPB->setEnabled(!synchronized_view && widget_ok && !read_only && valid_argument); okPB->setEnabled(!synchronized_view && widget_ok && !read_only && valid_argument);
bool const can_be_restored = !synchronized_view && !read_only bool const can_be_restored = !synchronized_view && !read_only
&& ins && (ins != d->inset_ || d->changed_); && ins && (ins != d->inset_ || d->changed_);
restorePB->setEnabled(can_be_restored); restorePB->setEnabled(can_be_restored);
applyPB->setEnabled(lfun_ok && widget_ok && !read_only && valid_argument); applyPB->setEnabled(lfun_ok && widget_ok && !read_only && valid_argument);
d->widget_->setEnabled(!read_only); d->widget_->setEnabled(!read_only);
return argument; return argument;
} }
void InsetParamsDialog::onWidget_changed() void InsetParamsDialog::onWidget_changed()
{ {
d->changed_ = true; d->changed_ = true;
docstring const argument = checkWidgets(synchronizedViewCB->isChecked()); docstring const argument = checkWidgets(synchronizedViewCB->isChecked());
if (synchronizedViewCB->isChecked()) if (synchronizedViewCB->isChecked())
dispatch(FuncRequest(LFUN_INSET_MODIFY, argument)); dispatch(FuncRequest(LFUN_INSET_MODIFY, argument));
} }
void InsetParamsDialog::applyView() void InsetParamsDialog::applyView()
{ {
docstring const argument = checkWidgets(synchronizedViewCB->isChecked()); docstring const argument = checkWidgets(synchronizedViewCB->isChecked());
dispatch(FuncRequest(LFUN_INSET_MODIFY, argument)); dispatch(FuncRequest(LFUN_INSET_MODIFY, argument));
d->changed_ = false; d->changed_ = false;
d->inset_ = inset(d->widget_->insetCode()); d->inset_ = inset(d->widget_->insetCode());
updateView(true); updateView(true);
} }
void InsetParamsDialog::updateView(bool update_widget) void InsetParamsDialog::updateView(bool update_widget)
{ {
if (update_widget) { if (update_widget) {
Inset const * i = inset(d->widget_->insetCode()); Inset const * i = inset(d->widget_->insetCode());
if (i) { if (i) {
d->widget_->blockSignals(true); d->widget_->blockSignals(true);
d->widget_->paramsToDialog(i); d->widget_->paramsToDialog(i);
d->widget_->blockSignals(false); d->widget_->blockSignals(false);
} }
} }
checkWidgets(synchronizedViewCB->isChecked()); checkWidgets(synchronizedViewCB->isChecked());
} }
void InsetParamsDialog::updateView() void InsetParamsDialog::updateView()
{ {
updateView(synchronizedViewCB->isChecked()); updateView(synchronizedViewCB->isChecked());
} }
Dialog * createDialog(GuiView & lv, InsetCode code) Dialog * createDialog(GuiView & lv, InsetCode code)
{ {
InsetParamsWidget * widget; InsetParamsWidget * widget;
switch (code) { switch (code) {
case ERT_CODE: case ERT_CODE:
widget = new GuiERT; widget = new GuiERT;
break; break;
case FLOAT_CODE: case FLOAT_CODE:
widget = new FloatPlacement(true); widget = new FloatPlacement(true);
break; break;
case BIBITEM_CODE: case BIBITEM_CODE:
widget = new GuiBibitem; widget = new GuiBibitem;
break; break;
case BRANCH_CODE: case BRANCH_CODE:
widget = new GuiBranch; widget = new GuiBranch;
break; break;
case BOX_CODE: case BOX_CODE:
widget = new GuiBox; widget = new GuiBox;
break; break;
case HYPERLINK_CODE: case HYPERLINK_CODE:
widget = new GuiHyperlink; widget = new GuiHyperlink;
break; break;
case INFO_CODE: case INFO_CODE:
widget = new GuiInfo; widget = new GuiInfo;
break; break;
case LABEL_CODE: case LABEL_CODE:
widget = new GuiLabel; widget = new GuiLabel;
break; break;
case LINE_CODE: case LINE_CODE:
widget = new GuiLine; widget = new GuiLine;
break; break;
case MATH_SPACE_CODE: case MATH_SPACE_CODE:
widget = new GuiHSpace(true); widget = new GuiHSpace(true);
break; break;
case NOMENCL_CODE: case NOMENCL_CODE:
widget = new GuiNomenclature; widget = new GuiNomenclature;
break; break;
case NOMENCL_PRINT_CODE: case NOMENCL_PRINT_CODE:
widget = new GuiPrintNomencl; widget = new GuiPrintNomencl;
break; break;
case SPACE_CODE: case SPACE_CODE:
widget = new GuiHSpace(false); widget = new GuiHSpace(false);
break; break;
case TABULAR_CODE: case TABULAR_CODE:
widget = new GuiTabular; widget = new GuiTabular;
break; break;
case VSPACE_CODE: case VSPACE_CODE:
widget = new GuiVSpace; widget = new GuiVSpace;
break; break;
default: return 0; default: return 0;
} }
InsetParamsDialog * dialog = new InsetParamsDialog(lv, widget); InsetParamsDialog * dialog = new InsetParamsDialog(lv, widget);
return dialog; return dialog;
} }
Dialog * createDialog(GuiView & lv, string const & name) Dialog * createDialog(GuiView & lv, string const & name)
{ {
return createDialog(lv, insetCode(name)); return createDialog(lv, insetCode(name));
} }
} // namespace frontend } // namespace frontend
} // namespace lyx } // namespace lyx
#include "moc_InsetParamsDialog.cpp" #include "moc_InsetParamsDialog.cpp"

View File

@ -1,71 +1,71 @@
// -*- C++ -*- // -*- C++ -*-
/** /**
* \file InsetParamsDialog.h * \file InsetParamsDialog.h
* This file is part of LyX, the document processor. * This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING. * Licence details can be found in the file COPYING.
* *
* \author Abdelrazak Younes * \author Abdelrazak Younes
* *
* Full author contact details are available in file CREDITS. * Full author contact details are available in file CREDITS.
*/ */
#ifndef INSET_PARAMS_DIALOG_H #ifndef INSET_PARAMS_DIALOG_H
#define INSET_PARAMS_DIALOG_H #define INSET_PARAMS_DIALOG_H
#include "DialogView.h" #include "DialogView.h"
#include "ui_InsetParamsUi.h" #include "ui_InsetParamsUi.h"
#include "qt_i18n.h" #include "qt_i18n.h"
namespace lyx { namespace lyx {
class Inset; class Inset;
namespace frontend { namespace frontend {
class InsetParamsWidget; class InsetParamsWidget;
class InsetParamsDialog : public DialogView, public Ui::InsetParamsUi class InsetParamsDialog : public DialogView, public Ui::InsetParamsUi
{ {
Q_OBJECT Q_OBJECT
public: public:
InsetParamsDialog(GuiView & lv, InsetParamsWidget * widget); InsetParamsDialog(GuiView & lv, InsetParamsWidget * widget);
~InsetParamsDialog(); ~InsetParamsDialog();
/// ///
void setInsetParamsWidget(InsetParamsWidget * widget); void setInsetParamsWidget(InsetParamsWidget * widget);
protected Q_SLOTS: protected Q_SLOTS:
void onWidget_changed(); void onWidget_changed();
void applyView(); void applyView();
void on_restorePB_clicked(); void on_restorePB_clicked();
void on_newPB_clicked(); void on_newPB_clicked();
void on_okPB_clicked(); void on_okPB_clicked();
void on_applyPB_clicked(); void on_applyPB_clicked();
void on_closePB_clicked(); void on_closePB_clicked();
void on_synchronizedViewCB_stateChanged(int state); void on_synchronizedViewCB_stateChanged(int state);
private: private:
/// \name DialogView inherited methods /// \name DialogView inherited methods
//@{ //@{
void updateView(); void updateView();
void dispatchParams() {} void dispatchParams() {}
bool isBufferDependent() const { return true; } bool isBufferDependent() const { return true; }
bool canApply() const { return true; } bool canApply() const { return true; }
bool initialiseParams(std::string const &); bool initialiseParams(std::string const &);
//@} //@}
/// ///
void newInset(); void newInset();
/// ///
void updateView(bool update_widget); void updateView(bool update_widget);
/// ///
docstring checkWidgets(bool synchronized_view); docstring checkWidgets(bool synchronized_view);
/// pimpl /// pimpl
struct Private; struct Private;
Private * d; Private * d;
}; };
} // namespace frontend } // namespace frontend
} // namespace lyx } // namespace lyx
#endif // INSET_PARAMS_DIALOG_H #endif // INSET_PARAMS_DIALOG_H

View File

@ -1,64 +1,64 @@
// -*- C++ -*- // -*- C++ -*-
/** /**
* \file InsetParamsWidget.cpp * \file InsetParamsWidget.cpp
* This file is part of LyX, the document processor. * This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING. * Licence details can be found in the file COPYING.
* *
* \author Abdelrazak Younes * \author Abdelrazak Younes
* *
* Full author contact details are available in file CREDITS. * Full author contact details are available in file CREDITS.
*/ */
#include <config.h> #include <config.h>
#include "InsetParamsWidget.h" #include "InsetParamsWidget.h"
#include "qt_helpers.h" #include "qt_helpers.h"
#include <QLineEdit> #include <QLineEdit>
namespace lyx { namespace lyx {
namespace frontend { namespace frontend {
CheckedWidget::CheckedWidget(QLineEdit * input, QWidget * label) CheckedWidget::CheckedWidget(QLineEdit * input, QWidget * label)
: input_(input), label_(label) : input_(input), label_(label)
{ {
} }
bool CheckedWidget::check() const bool CheckedWidget::check() const
{ {
bool const valid = input_->hasAcceptableInput(); bool const valid = input_->hasAcceptableInput();
// Visual feedback. // Visual feedback.
setValid(input_, valid); setValid(input_, valid);
if (label_) if (label_)
setValid(label_, valid); setValid(label_, valid);
return valid; return valid;
} }
InsetParamsWidget::InsetParamsWidget(QWidget * parent) : QWidget(parent) InsetParamsWidget::InsetParamsWidget(QWidget * parent) : QWidget(parent)
{ {
} }
void InsetParamsWidget::addCheckedWidget(QLineEdit * input, QWidget * label) void InsetParamsWidget::addCheckedWidget(QLineEdit * input, QWidget * label)
{ {
checked_widgets_.append(CheckedWidget(input, label)); checked_widgets_.append(CheckedWidget(input, label));
} }
bool InsetParamsWidget::checkWidgets() const bool InsetParamsWidget::checkWidgets() const
{ {
bool valid = true; bool valid = true;
Q_FOREACH(CheckedWidget const & le, checked_widgets_) Q_FOREACH(CheckedWidget const & le, checked_widgets_)
valid &= le.check(); valid &= le.check();
return valid; return valid;
} }
} // namespace frontend } // namespace frontend
} // namespace lyx } // namespace lyx
#include "moc_InsetParamsWidget.cpp" #include "moc_InsetParamsWidget.cpp"

View File

@ -1,87 +1,87 @@
// -*- C++ -*- // -*- C++ -*-
/** /**
* \file InsetParamsWidget.h * \file InsetParamsWidget.h
* This file is part of LyX, the document processor. * This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING. * Licence details can be found in the file COPYING.
* *
* \author Abdelrazak Younes * \author Abdelrazak Younes
* *
* Full author contact details are available in file CREDITS. * Full author contact details are available in file CREDITS.
*/ */
#ifndef INSET_PARAMS_WIDGET_H #ifndef INSET_PARAMS_WIDGET_H
#define INSET_PARAMS_WIDGET_H #define INSET_PARAMS_WIDGET_H
#include "insets/InsetCode.h" #include "insets/InsetCode.h"
#include "FuncCode.h" #include "FuncCode.h"
#include "support/strfwd.h" #include "support/strfwd.h"
#include <QWidget> #include <QWidget>
class QLineEdit; class QLineEdit;
namespace lyx { namespace lyx {
class Inset; class Inset;
namespace frontend { namespace frontend {
/// CheckedWidget /// CheckedWidget
// FIXME: Get rid of CheckedLineEdit in ButtonController and rename this one // FIXME: Get rid of CheckedLineEdit in ButtonController and rename this one
// to it. // to it.
class CheckedWidget class CheckedWidget
{ {
public: public:
CheckedWidget(QLineEdit * input, QWidget * label = 0); CheckedWidget(QLineEdit * input, QWidget * label = 0);
/// ///
bool check() const; bool check() const;
private: private:
// non-owned // non-owned
QLineEdit * input_; QLineEdit * input_;
QWidget * label_; QWidget * label_;
}; };
typedef QList<CheckedWidget> CheckedWidgets; typedef QList<CheckedWidget> CheckedWidgets;
class InsetParamsWidget : public QWidget class InsetParamsWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
Q_SIGNALS: Q_SIGNALS:
void changed(); void changed();
public: public:
InsetParamsWidget(QWidget * parent); InsetParamsWidget(QWidget * parent);
/// This is a base class; destructor must exist and be virtual. /// This is a base class; destructor must exist and be virtual.
virtual ~InsetParamsWidget() {} virtual ~InsetParamsWidget() {}
/// ///
virtual InsetCode insetCode() const = 0; virtual InsetCode insetCode() const = 0;
/// ///
virtual FuncCode creationCode() const = 0; virtual FuncCode creationCode() const = 0;
/// ///
virtual void paramsToDialog(Inset const *) = 0; virtual void paramsToDialog(Inset const *) = 0;
/// ///
virtual docstring dialogToParams() const = 0; virtual docstring dialogToParams() const = 0;
/// ///
virtual bool initialiseParams(std::string const & /*data*/) virtual bool initialiseParams(std::string const & /*data*/)
{ return false; } { return false; }
/// \return true if all CheckedWidgets are in a valid state. /// \return true if all CheckedWidgets are in a valid state.
virtual bool checkWidgets() const; virtual bool checkWidgets() const;
protected: protected:
/// Add a widget to the list of all widgets whose validity should /// Add a widget to the list of all widgets whose validity should
/// be checked explicitly when the buttons are refreshed. /// be checked explicitly when the buttons are refreshed.
void addCheckedWidget(QLineEdit * input, QWidget * label = 0); void addCheckedWidget(QLineEdit * input, QWidget * label = 0);
private: private:
/// ///
CheckedWidgets checked_widgets_; CheckedWidgets checked_widgets_;
}; };
} // namespace frontend } // namespace frontend
} // namespace lyx } // namespace lyx
#endif // INSET_PARAMS_WIDGET_H #endif // INSET_PARAMS_WIDGET_H

View File

@ -1,166 +1,166 @@
/** /**
* \file InsetPreview.cpp * \file InsetPreview.cpp
* This file is part of LyX, the document processor. * This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING. * Licence details can be found in the file COPYING.
* *
* \author Vincent van Ravesteijn * \author Vincent van Ravesteijn
* *
* Full author contact details are available in file CREDITS. * Full author contact details are available in file CREDITS.
*/ */
#include "config.h" #include "config.h"
#include "InsetPreview.h" #include "InsetPreview.h"
#include "Buffer.h" #include "Buffer.h"
#include "BufferParams.h" #include "BufferParams.h"
#include "BufferView.h" #include "BufferView.h"
#include "Cursor.h" #include "Cursor.h"
#include "Lexer.h" #include "Lexer.h"
#include "LyXRC.h" #include "LyXRC.h"
#include "MetricsInfo.h" #include "MetricsInfo.h"
#include "OutputParams.h" #include "OutputParams.h"
#include "RenderPreview.h" #include "RenderPreview.h"
#include "frontends/Painter.h" #include "frontends/Painter.h"
#include "graphics/PreviewImage.h" #include "graphics/PreviewImage.h"
#include <sstream> #include <sstream>
using namespace std; using namespace std;
namespace lyx { namespace lyx {
InsetPreview::InsetPreview(Buffer * buf) InsetPreview::InsetPreview(Buffer * buf)
: InsetText(buf), : InsetText(buf),
preview_(new RenderPreview(this)), use_preview_(true) preview_(new RenderPreview(this)), use_preview_(true)
{ {
setAutoBreakRows(true); setAutoBreakRows(true);
setDrawFrame(true); setDrawFrame(true);
setFrameColor(Color_previewframe); setFrameColor(Color_previewframe);
} }
InsetPreview::~InsetPreview() InsetPreview::~InsetPreview()
{} {}
InsetPreview::InsetPreview(InsetPreview const & other) InsetPreview::InsetPreview(InsetPreview const & other)
: InsetText(other) : InsetText(other)
{ {
preview_.reset(new RenderPreview(*other.preview_, this)); preview_.reset(new RenderPreview(*other.preview_, this));
} }
void InsetPreview::write(ostream & os) const void InsetPreview::write(ostream & os) const
{ {
os << "Preview" << "\n"; os << "Preview" << "\n";
text().write(os); text().write(os);
} }
void InsetPreview::addPreview(DocIterator const & inset_pos, void InsetPreview::addPreview(DocIterator const & inset_pos,
graphics::PreviewLoader &) const graphics::PreviewLoader &) const
{ {
preparePreview(inset_pos); preparePreview(inset_pos);
} }
void InsetPreview::preparePreview(DocIterator const & pos) const void InsetPreview::preparePreview(DocIterator const & pos) const
{ {
odocstringstream str; odocstringstream str;
OutputParams runparams(&pos.buffer()->params().encoding()); OutputParams runparams(&pos.buffer()->params().encoding());
latex(str, runparams); latex(str, runparams);
docstring const snippet = str.str(); docstring const snippet = str.str();
preview_->addPreview(snippet, *pos.buffer()); preview_->addPreview(snippet, *pos.buffer());
} }
bool InsetPreview::previewState(BufferView * bv) const bool InsetPreview::previewState(BufferView * bv) const
{ {
if (!editing(bv) && (RenderPreview::status() == LyXRC::PREVIEW_ON || if (!editing(bv) && (RenderPreview::status() == LyXRC::PREVIEW_ON ||
RenderPreview::status() == LyXRC::PREVIEW_NO_MATH)) { RenderPreview::status() == LyXRC::PREVIEW_NO_MATH)) {
graphics::PreviewImage const * pimage = graphics::PreviewImage const * pimage =
preview_->getPreviewImage(bv->buffer()); preview_->getPreviewImage(bv->buffer());
return pimage && pimage->image(); return pimage && pimage->image();
} }
return false; return false;
} }
void InsetPreview::reloadPreview(DocIterator const & pos) const void InsetPreview::reloadPreview(DocIterator const & pos) const
{ {
preparePreview(pos); preparePreview(pos);
preview_->startLoading(*pos.buffer()); preview_->startLoading(*pos.buffer());
} }
void InsetPreview::draw(PainterInfo & pi, int x, int y) const void InsetPreview::draw(PainterInfo & pi, int x, int y) const
{ {
use_preview_ = previewState(pi.base.bv); use_preview_ = previewState(pi.base.bv);
if (use_preview_) { if (use_preview_) {
// one pixel gap in front // one pixel gap in front
preview_->draw(pi, x + 1 + TEXT_TO_INSET_OFFSET, y); preview_->draw(pi, x + 1 + TEXT_TO_INSET_OFFSET, y);
setPosCache(pi, x, y); setPosCache(pi, x, y);
return; return;
} }
InsetText::draw(pi, x, y); InsetText::draw(pi, x, y);
} }
void InsetPreview::edit(Cursor & cur, bool front, EntryDirection entry_from) void InsetPreview::edit(Cursor & cur, bool front, EntryDirection entry_from)
{ {
cur.push(*this); cur.push(*this);
InsetText::edit(cur, front, entry_from); InsetText::edit(cur, front, entry_from);
} }
Inset * InsetPreview::editXY(Cursor & cur, int x, int y) Inset * InsetPreview::editXY(Cursor & cur, int x, int y)
{ {
if (use_preview_) { if (use_preview_) {
edit(cur, true, ENTRY_DIRECTION_IGNORE); edit(cur, true, ENTRY_DIRECTION_IGNORE);
return this; return this;
} }
cur.push(*this); cur.push(*this);
return InsetText::editXY(cur, x, y); return InsetText::editXY(cur, x, y);
} }
void InsetPreview::metrics(MetricsInfo & mi, Dimension & dim) const void InsetPreview::metrics(MetricsInfo & mi, Dimension & dim) const
{ {
if (previewState(mi.base.bv)) { if (previewState(mi.base.bv)) {
preview_->metrics(mi, dim); preview_->metrics(mi, dim);
mi.base.textwidth += 2 * TEXT_TO_INSET_OFFSET; mi.base.textwidth += 2 * TEXT_TO_INSET_OFFSET;
dim.wid = max(dim.wid, 4); dim.wid = max(dim.wid, 4);
dim.asc = max(dim.asc, 4); dim.asc = max(dim.asc, 4);
dim.asc += TEXT_TO_INSET_OFFSET; dim.asc += TEXT_TO_INSET_OFFSET;
dim.des += TEXT_TO_INSET_OFFSET; dim.des += TEXT_TO_INSET_OFFSET;
dim.wid += TEXT_TO_INSET_OFFSET; dim.wid += TEXT_TO_INSET_OFFSET;
dim_ = dim; dim_ = dim;
dim.wid += TEXT_TO_INSET_OFFSET; dim.wid += TEXT_TO_INSET_OFFSET;
// insert a one pixel gap // insert a one pixel gap
dim.wid += 1; dim.wid += 1;
// Cache the inset dimension. // Cache the inset dimension.
setDimCache(mi, dim); setDimCache(mi, dim);
Dimension dim_dummy; Dimension dim_dummy;
MetricsInfo mi_dummy = mi; MetricsInfo mi_dummy = mi;
InsetText::metrics(mi_dummy, dim_dummy); InsetText::metrics(mi_dummy, dim_dummy);
return; return;
} }
InsetText::metrics(mi, dim); InsetText::metrics(mi, dim);
} }
bool InsetPreview::notifyCursorLeaves(Cursor const & old, Cursor & cur) bool InsetPreview::notifyCursorLeaves(Cursor const & old, Cursor & cur)
{ {
reloadPreview(old); reloadPreview(old);
cur.screenUpdateFlags(Update::Force); cur.screenUpdateFlags(Update::Force);
return InsetText::notifyCursorLeaves(old, cur); return InsetText::notifyCursorLeaves(old, cur);
} }
} // namespace lyx } // namespace lyx

View File

@ -1,95 +1,95 @@
// -*- C++ -*- // -*- C++ -*-
/** /**
* \file InsetPreview.h * \file InsetPreview.h
* This file is part of LyX, the document processor. * This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING. * Licence details can be found in the file COPYING.
* *
* \author Vincent van Ravesteijn * \author Vincent van Ravesteijn
* *
* Full author contact details are available in file CREDITS. * Full author contact details are available in file CREDITS.
*/ */
#ifndef INSETPREVIEW_H #ifndef INSETPREVIEW_H
#define INSETPREVIEW_H #define INSETPREVIEW_H
#include "InsetText.h" #include "InsetText.h"
#include "Dimension.h" #include "Dimension.h"
#include <boost/scoped_ptr.hpp> #include <boost/scoped_ptr.hpp>
namespace lyx { namespace lyx {
class RenderPreview; class RenderPreview;
namespace graphics { namespace graphics {
class PreviewLoader; class PreviewLoader;
} }
/// An inset with an instant preview /// An inset with an instant preview
class InsetPreview : public InsetText { class InsetPreview : public InsetText {
public: public:
/// ///
InsetPreview(Buffer *); InsetPreview(Buffer *);
/// ///
~InsetPreview(); ~InsetPreview();
/// ///
InsetPreview(InsetPreview const & other); InsetPreview(InsetPreview const & other);
/// \name Methods inherited from Inset class /// \name Methods inherited from Inset class
//@{ //@{
Inset * clone() const { return new InsetPreview(*this); } Inset * clone() const { return new InsetPreview(*this); }
bool neverIndent() const { return true; } bool neverIndent() const { return true; }
InsetCode lyxCode() const { return PREVIEW_CODE; } InsetCode lyxCode() const { return PREVIEW_CODE; }
docstring name() const { return from_ascii("Preview"); } docstring name() const { return from_ascii("Preview"); }
bool descendable(BufferView const & /*bv*/) const { return true; } bool descendable(BufferView const & /*bv*/) const { return true; }
docstring contextMenu(BufferView const &, int, int) const docstring contextMenu(BufferView const &, int, int) const
{ return from_ascii("context-preview"); } { return from_ascii("context-preview"); }
void metrics(MetricsInfo & mi, Dimension & dim) const; void metrics(MetricsInfo & mi, Dimension & dim) const;
Inset * editXY(Cursor & cur, int x, int y); Inset * editXY(Cursor & cur, int x, int y);
void draw(PainterInfo & pi, int x, int y) const; void draw(PainterInfo & pi, int x, int y) const;
void addPreview(DocIterator const & inset_pos, void addPreview(DocIterator const & inset_pos,
graphics::PreviewLoader & ploader) const; graphics::PreviewLoader & ploader) const;
bool notifyCursorLeaves(Cursor const & old, Cursor & cur); bool notifyCursorLeaves(Cursor const & old, Cursor & cur);
void write(std::ostream & os) const; void write(std::ostream & os) const;
void edit(Cursor & cur, bool front, EntryDirection entry_from); void edit(Cursor & cur, bool front, EntryDirection entry_from);
//@} //@}
protected: protected:
/// Retrieves the preview state. Returns true if preview /// Retrieves the preview state. Returns true if preview
/// is enabled and the preview image is availabled. /// is enabled and the preview image is availabled.
bool previewState(BufferView * bv) const; bool previewState(BufferView * bv) const;
/// Recreates the preview if preview is enabled. /// Recreates the preview if preview is enabled.
void reloadPreview(DocIterator const & pos) const; void reloadPreview(DocIterator const & pos) const;
/// Prepare the preview if preview is enabled. /// Prepare the preview if preview is enabled.
void preparePreview(DocIterator const & pos) const; void preparePreview(DocIterator const & pos) const;
/// ///
boost::scoped_ptr<RenderPreview> preview_; boost::scoped_ptr<RenderPreview> preview_;
/// ///
mutable bool use_preview_; mutable bool use_preview_;
private: private:
/// ///
mutable Dimension dim_; mutable Dimension dim_;
}; };
} // namespace lyx } // namespace lyx
#endif #endif