#!/bin/bash
# call "wish" \
export LIBPATH=$(dirname $0)/../lib/client ; export TCLLIBPATH="$LIBPATH $TCLLIBPATH" ; exec wish "$0" "$@"

#
# This script is part of TkKasse. You may use, modify and distribute it under the terms
# of the GNU General Public License, Version 2.
# See details at http://www.fsf.org/licenses/gpl.txt
# (C) by Jan Kandziora <tkkasse@users.sf.net> 
#


## Disable the Tk send command.
rename send {}


## Deny the Tix color scheme come into effect.
## It looks ugly if you use the Iwidgets widget set.
option add *TixScheme TK 99	
option add *TixSchemePriority 19 19


## Utility function: Center a toplevel window.
proc center_toplevel { TOPLEVEL_ARG } \
{
	wm geometry $TOPLEVEL_ARG "+[ expr ([ winfo screenwidth $TOPLEVEL_ARG ]-[ winfo reqwidth $TOPLEVEL_ARG ])/2 ]+[ expr ([ winfo screenheight $TOPLEVEL_ARG ]-[ winfo reqheight $TOPLEVEL_ARG ])/2 ]"
}


## Configuration and locale path setting:
set CONFIGURATION_PATH "/etc/opt/tkkasse"
set LOCALE_PATH [ file join $env(LIBPATH) i18n ]


## Determine the canonical name of the display, e.g. "janskiste:0"
## This is important for printing.
set HOST {}
set DPY {}
regexp {(.*):(.*)\.(.*)$} [ winfo screen . ] MATCH HOST DPY SCREEN
if { $HOST == {} } \
{
	## Local display (single or multi computer setup without terminal server).
	## Determine hostname to get a canonical display name.
	set DISPLAY "[ exec hostname ]:$DPY"
} \
{
	## Remote display (terminal server setup). 
	set DISPLAY "$HOST:$DPY"
}


## Setup default settings.
set SERVER_HOST localhost
set SERVER_PORT 19150 
set CONNECT_ON_STARTUP 1
set LOADING_FAILED_MESSAGE "Laden des Paketes %s fehlgeschlagen."
set LOADING_MESSAGE "Lade Paket %s..."
set SPLASH_SCREEN 1 
set SPLASH_SCREEN_NO_DECORATION 1 
set SPLASH_SCREEN_TITLE "TkKasse - Willkommen"
set HELP_COMMAND "konqueror %u"
set HELP_URL file:/usr/share/doc/packages/TkKasse-Doc/usermanual.html
set MAIL_COMMAND "kmail --subject %s --msg %t %a"

## Load system settings.
if [ catch { set CONFIGURATION_FILE "$CONFIGURATION_PATH/client" } ] {} \
{
	## Configuration path was set. Load the file.
	if [ catch { source "$CONFIGURATION_FILE" } RESULT ] \
	{
		## Catch only the error thrown by source itself, if the file did not exist.
		if { $RESULT != "couldn't read file \"$CONFIGURATION_FILE\": no such file or directory" } \
		{
			return -code error -errorcode $errorCode -errorinfo $errorInfo $RESULT
		}
	}
}

## Load user settings.
if [ catch { set USER_CONFIGURATION_FILE "$env(HOME)/.tkkasse" } ] {} \
{
	## User path was set. Load the file.
	if [ catch { source "$USER_CONFIGURATION_FILE" } RESULT ] \
	{
		## Catch only the error thrown by source itself, if the file did not exist.
		if { $RESULT != "couldn't read file \"$USER_CONFIGURATION_FILE\": no such file or directory" } \
		{
			return -code error -errorcode $errorCode -errorinfo $errorInfo $RESULT
		}
	}
}

## Reset the error switch.
set ERROR_WAS_NOT_CAUGHT 0


## Function for closing the splash screen.
proc closeSplash {} \
{
	## If there was an error, close the application, otherwise just withdraw the splash screen.
	global ERROR_WAS_NOT_CAUGHT
	if $ERROR_WAS_NOT_CAUGHT \
		exit \
	{
		wm withdraw .
	}
}


## Prepare the the splash screen, if enabled.
if $SPLASH_SCREEN \
{
	## Set the color palette for the splash screen.
	. configure -background #00d0d0
	option add *Foreground #000000 61 
	option add *Background #00d0d0 21 

	## Set splash screen title.
	global SPLASH_SCREEN_TITLE
	wm title . $SPLASH_SCREEN_TITLE

	## Disable the splash resizing by user interaction .
	wm resizable . 0 0

	## Install a "delete_window" handler for the splash screen.
	## Same for "Esc"-Key and main mouse button
	wm protocol . WM_DELETE_WINDOW closeSplash
	bind . <KeyPress-Escape> closeSplash
	bind . <ButtonPress-1-> closeSplash

	## Set up a decorative frame.
	. configure -borderwidth 5 -relief raised

	## Define splash screen widgets.
	label .tkkasselogo \
		-image [ image create photo -data "\
			R0lGODlhggIzAPUwAEGB/0GF/0qF/0qJ/1KJ/1KN/1qR/1qV/2KV/2KZ/2qZ
			/2qd/3Oh/3Ol/3ul/3uq/4Oq/4Ou/4uy/4u2/5S2/5S6/5y6/5y+/6TC/6TG
			/6zG/6zK/7TK/7TO/73S/73W/8XW/8Xa/83a/83e/9Xi/9Xm/97m/97q/+bq
			/+bu/+7y/+72//b2//b6///6/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADAALAAAAACCAjMAAAb+
			QJhwSIQlCoSkcslsOp/Q6LKQKFqv2OERwO16v+CweEwGU7No9OJgaLvf8Lh8
			Tq+7D4u0Hru2+/+Ac3h7hER9gYiJdIOFhYeKkJCMjXuPkZeAk4UGZZ2en6Be
			CJRFBKGnqKgFpEQIqa+wYgasrbG2trO0Qq63vai5ury+w57AtMLEybJ7ys2d
			rAnO0mJ5pNPXXdXW2NfalNzdtODT3o3j0uVEnOfTB40F7NOrhQdeChgkKi/7
			/P3+/wADChy4z0UKEhcUeJlHzx4+fQQjSpz4zyBChV0YEqrX5V4+iiBDCrR4
			IVpGShy5eIQosqVIkia5aNyTEsBKlzhBksQo88r+unjSjKGBB1TazCw/FYzI
			yRQniQVdCGzquLSpVZBPo05VWfWqV4IjoHKRSihp169o/4XVWpZq2rf+so4t
			IraotD0x7TZTwIyLBbiA/WHoMqovgL+BEw/mUlhPlwqJE18gTOhx5MCTGVf2
			exnwYgCNYei95niYlCRRT98qDaBD58Aguhh2/RpubC6z0abgICGBgQEAAhBI
			AEHDibQfZLOm7XV379/Bhxc/jjY57uW1bSuHQdQW3FtCSxGT2EXiz1dH1XG5
			kB0wBy4C0qxj77WD/fv483dggfY9gPhozPdVCHWRYYAG/Hm1AXzyrTdggWMc
			mOBVC/7XIAD0tZeWfwD++vLdalkkQx4X5oGIhUpWfdJPJzg9cF2INn2lQigi
			pOUiAGlwkYBXLEBwigATpOCVAy+eCMCOV/X4Y5BDFnkFikxR4AsGTd0ohIdv
			9YKGiBGVF9F5r2wJAAkperJiGTil4KQVXJDpVQihUKnbmkVwcVZOLCBzigQs
			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
			====" ]
		
	label .jklogo \
		-image [ image create photo -data "\
			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
			udmal0554O8TFBAAOw==
			====" ]

	label .version \
		-text "Version 1.0" \
		-font [ font create -family Helvetica -size 24 -weight bold ]
	label .author \
		-text "Autor: Jan Kandziora\n<tkkasse@users.sourceforge.net>" \
		-font [ font create -family Helvetica -size 24 ]
	label .copyright \
		-text "(C)2004-2005 - GNU General Public License V2" \
		-font [ font create -family Helvetica -size 18 ]

	label .tcllogo \
		-image [ image create photo -data "\
			R0lGODlhKAA8AKUkAMyZAP/MzP//zP/Mmf+Zmf+ZZsyZZsxmZsxmM8wzM8wz
			AMxmAP/MAP+ZAMzM/5nM/zNmmQAzmWZmmWaZzJkzM2YzZpmZzDMzZsyZmf9m
			MzMzmZlmZszMzJmZmWZmZplmmWZmzDNmzAAzzAAzZv//////////////////
			////////////////////////////////////////////////////////////
			/////////////////////////////////yH5BAEKAD8ALAAAAAAoADwAAAb+
			QIBwSCwWA8iAcUkUJAMDgrRgOBwQWERCweUiCEomMdAtm89oxSE5iEoNVQM5
			Ta/XEXO7fo/f++0HAn+DaAUAW2kLAFwLDIuEXQQACHQMC1wMlpBdA5OVXA0N
			m2VKlGgLogoMaAgHf6WJl6hnnQ4DfrCJCg2XpA8QERKIdgIArnWrpBMRzBEU
			eglCx4mpXAXLzRV80nUAvQoIFs0RF2WKoN/g3HS8XRjjzmUNyaFlB0IEddUZ
			2Mza5skWpLsHoIC+LgY0jKOwgcOcBo/OSAKQj863DvCYaQiwJRmaiRX1SMhI
			juMuOp0A3NozMqMHMgLphFmpR2FGDPnSnQmTx47+zXEXBpiqw9OPTWDMJBjU
			UwxAzzoXIlRoGeHDnmhCnqZBEHWqxmF3hmilxUHhhpbPtmXVQwAEswMhImjY
			ELIOQads414wgBRCXToGxOrhSw4DUhBLAQm2UwDYBQw2J2TYc3esmQwjK7xj
			1mGyHgSL73yQujnCAc92QK/Vs4F0sytq8e5x/RYsHawq/RRmdmEoUyE0fT5m
			RqGA7zpN/9LR8FiEMwvT7IRRnubC47gRQByXiW8PBwgjMGDv8Kq7ns3imRko
			T9EPxgNuIWzn3p6PhA3LNgxKSZ3OBgvl7LfOHxhAMlF0yHHRnwKCfCSEbw2i
			0WBdETKYxkRDCaChghpqIjKhKRpGKEiFCj5YhohceOhFSBVueAZBEHZBYoQs
			DjPiiybKGImLFlqjY4oCJECiOp50YduFhKh25ChhDclkWJY9yYpsUu5BZZXE
			RJnFAXBUYcUVWWSxZBdItGIAAQMk0ZQYYjzhJgBBAAA7
			====" ]

	label .status \
		-text " " \
		-font [ font create -family Helvetica -size 18 ]

	## Arrange the splash screen widgets.
	grid .tkkasselogo -row 0 -column 0 -columnspan 3 -ipadx 10 -ipady 10 -sticky nsew 
	grid .jklogo      -row 1 -column 0                         -ipady 10 -sticky e
	grid .version     -row 1 -column 1               -ipadx 10 -ipady 10  
	grid .tcllogo     -row 1 -column 2                         -ipady 10 -sticky w
	grid .author      -row 2 -column 0 -columnspan 3 -ipadx 10 -ipady 10 
	grid .copyright   -row 3 -column 0 -columnspan 3 -ipadx 10 -ipady 10 
	grid .status      -row 4 -column 0 -columnspan 3 -ipadx 10 -ipady 10 
	
	
	## Disable the window manager decoration for the splash screen, if enabled.
	if $SPLASH_SCREEN_NO_DECORATION \
	{
		wm overrideredirect . 1
	}
	
	## Locate the splash screen in the center of the screen and show it.
	update idletasks
	center_toplevel .
} \
{
	## Hide the splash screen.
	wm withdraw .
}


## Set an error handler.
proc bgerror { MESSAGE_ARG } \
{
	## Set the error switch.
	global ERROR_WAS_NOT_CAUGHT
	set ERROR_WAS_NOT_CAUGHT 1

	## Show the failed package inside the splash screen.
	global CURRENT_PACKAGE
	global LOADING_FAILED_MESSAGE
	.status configure -fg red -text [ format $LOADING_FAILED_MESSAGE $CURRENT_PACKAGE ]

	## Print the stack trace to stderr.
	global errorInfo
	puts stderr $errorInfo
}


## Load packages required for the application.
proc loadPackage { PACKAGE_ARG args } \
{
	## Set the current package name.
	global CURRENT_PACKAGE
	set CURRENT_PACKAGE $PACKAGE_ARG

	## Show the loading message.
	global LOADING_MESSAGE
	.status configure -text [ format $LOADING_MESSAGE $CURRENT_PACKAGE ]
	update idletasks

	## Load the package.
	if { $args == "" } \
	{
		package require $PACKAGE_ARG
	} \
	{
		package require $PACKAGE_ARG $args
	}
}

## Load localisation required for the application.
proc loadLocalisation { } \
{
	## Set the current package name.
	global CURRENT_PACKAGE
	set CURRENT_PACKAGE "Localisation"

	## Show the loading message.
	global LOADING_MESSAGE
	.status configure -text [ format $LOADING_MESSAGE $CURRENT_PACKAGE ]
	update idletasks

	## Load the localisation.
	global LOCALE_PATH
	if [ msgcat::mcload $LOCALE_PATH ] {} \
	{
		## Show the failed localisation inside the splash screen.
		return -code error
	}
}

## Application start procedure.
proc start {} \
{
	## Load msgcat for internationalization support.
	loadPackage msgcat

	## Apply message catalog for internationalization.
	loadLocalisation

	global CURRENT_PACKAGE LOADING_FAILED_MESSAGE LOADING_MESSAGE SPLASH_SCREEN_TITLE
	set LOADING_FAILED_MESSAGE [ msgcat::mc <SplashScreen.loadingFailedMessage> ]
	set LOADING_MESSAGE [ msgcat::mc <SplashScreen.loadingMessage> ]
	set SPLASH_SCREEN_TITLE [ msgcat::mc <SplashScreen.title> ]
	wm title . $SPLASH_SCREEN_TITLE
	.status configure -text [ format $LOADING_MESSAGE $CURRENT_PACKAGE ]

	## Load Tix for transparent xpm support, and tixHList widget in articles and bill view.
	loadPackage Tix

	## Load BLT for tabset widget in bills view.
	loadPackage BLT

	## Load Itcl for OO support.
	loadPackage Itcl

	## Load Itk for generic OO widget support.
	loadPackage Itk

	## Load some standard OO widgets.
	loadPackage Iwidgets

	## Load the client program files.
	uplevel #0 { source [ file join $env(LIBPATH) Apperance.tcl ] }
	uplevel #0 { source [ file join $env(LIBPATH) Widgets.tcl ] }
	uplevel #0 { source [ file join $env(LIBPATH) Dialogs.tcl ] }
	uplevel #0 { source [ file join $env(LIBPATH) Main.tcl ] }

	## Show success by erasing the loading messages.
	.status configure \
		-relief flat \
		-text ""

	## Hide splash screen.
	wm withdraw .

	## Start the application in the global scope. (Supplied by tkkasse package.)
	after idle main
}

## Prepare the start of the application.
## The start is done this little obfucated to enable the Tk event loop.
after idle start

## This is the last line of the script. After this line, the Tk event loop takes control and calls "start".
