# Copyright 1999 Jean-Louis Thirot
#
# This library is free software; you can redistribute it 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.
#
# This library 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
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#

set TO TO
set OK OK
set QUIT QUIT
set CANCEL CANCEL
set GO GO
set YES YES
set NO NO
set NEXT NEXT
set SAVE SAVE 
set SKIP SKIP
set MSG_title "TkWine:Messenger" 
set SUCCES succesfull
set HELP HELP; set START START
set RESTART RESTART
set CLOSE CLOSE
set OPTIONS Options
set pathtosetup [pwd]/setupfiles

set MAKE make
set CONF configure
set INSTALL install

#related to exit:
set EXIT_title "TkWineSetup Exit"
set CONFIRMQUIT "This will close TkWineSetup.\n \"Quit Saving\" will store your choices (source and install folders, compilation options etc..) for the next start. \"Quit No Save\" aborts any changes you made." 
set QUITSAVING "Quit Saving"
set QUITNOSAVE "Quit No Save"

#related to browsers:
set GETDIRtitle "TkWineSetup - Get directory"
set FOLDBROWSEtitle "TkWineSetup - Directories browser"
set BROWSE BROWSE
set CHFOLD "Choose folder"
set CHFOLDsel "Selected directory:"

#related to downloads:
set DOWNLOADING  "Dowload file:"

#related to the internal file viewer:
set ScrollEdits "Scroll to bottom on input"
set EditTitle "TkWine Text Viewer"

set errorTitle "\n*************** TkWine Error ****************\n\
\n An error occured, that I could not resolve. This might be \n\n\
a) An invalid entry \n\
b) An error in the script\n\
In any case, this error should be detected by the script, even an invalid\
entry deserve better error message than this one!!\n\
 The following lines are tk output. it might be uninteligible for you, but it makes sense for the maintainers. If you're keen to provide a bug reports, please, send the following info to thirot@univ-brest.fr.\n\n\
(this info can be send in attachement, the file name is /tmp/tkwerror)\n\
In some cases, however, the error is harmless. Feel free to add comment about this when you send me the file. If you want to receive the patch via email, please mention this in your mail. \n\
Sorry not to make it better at once... I'll try to improve. \
\nThanks for using TkWine.\
\n                    Bye,\
\n                           Jean-Louis,\
\n                                    TkWine primary contact.\n\
======================================================================="
