#!/bin/sh
#-*- tcl -*- \
exec wish "$0" "$@"
#
#------------------------------------------------------------------------
#
#	Catalog Archive TK GUI interface
#
#       Peter Kunszt, July 20, 1999
#
#       Last Mod. 25 Jun 01 DCD
#------------------------------------------------------------------------
#
# (c) Copyright The Johns Hopkins University 1999-2000
# All Rights Reserved
#
# Modification History:
#
# PZK 2.9.2000
#    New design layout implementation
#    - login panel replaced by query manager
#    - query window simplified/updated
# PZK 3.26.2000
#    All stuff for v2.0a
#-------------------------------------------------------------------------
#	Define Windows and load up.
#-------------------------------------------------------------------------

if { ($tcl_version < 8.0) || ($tk_version < 8.0) } {
    puts "Need Tcl/Tk8.0 or higher to run ..."
    exit
}

# keep SXGUI_DIR for backward compability
#if { ![info exist env(SXQT_DIR)] } {
#    if { ![info exist env(SXGUI_DIR)] } {
#       puts "Set SXQT_DIR environment variable first."
#       puts "Read README how to install sxQT."
#       exit
#    } else {
#       set sxQTDir $env(SXGUI_DIR)
#    }
#} else {
#    set sxQTDir $env(SXQT_DIR)
#}

# Mod to update SXQT to SDSSQT DCD 25 Jun 01
# keep SXGUI_DIR and SXQT_DIR for backward compability

if { ![info exist env(SDSSQT_DIR)] } {
    if { ![info exist env(SXQT_DIR)] } {
       if { ![info exist env(SXGUI_DIR)] } {
          puts "Set SDSSQT_DIR environment variable first."
          puts "Read README how to install sdssQT."
          exit
       } else {
          set sxQTDir $env(SXGUI_DIR)
       }
    } else {
      set sxQTDir $env(SXQT_DIR)
    }
} else {
    set sxQTDir $env(SDSSQT_DIR)
}

if { ![info exist env(HOME)] } {
    puts "Set HOME environment variable first."
    exit
} else {
    set homeDir $env(HOME)
}

set auto_path "$sxQTDir/tcl $auto_path"
set develVersion "Not a CVS-exported version"

wm withdraw .
set debug 0

#clientSocket = 1 for new firewall-busting mode.
set clientSocket 1

set sxwm 1
foreach arg $argv {
    set arg [string range $arg 1 end]
    switch -exact -- $arg {
	debug { set debug 1; puts "Debug mode..." }
	debug2 { set debug 2; puts "Debug mode: no output monitor..." }
	nosxwm { set sxwm 0 }
	version { puts "sxQT Version : [sxGetQTVersion]"; exit }
	oldserver { 
	    set clientSocket 0
	    puts "sxQT: running in old server mode..."
	}
	{} {}
	default { 
	    puts "Invalid option -$arg."
	    puts "Usage: sxQT \[-nosxwm\] \[-version\]"
#	    puts " -debug   : some output will be written to stdout"
	    puts " -nosxwm  : do not use the sxQT Window Manager"
	    puts " -version : print the current QT version"
	    puts " -oldserver : old protocol (will be gone in next version)"
	    exit
	}
    }
}

#-------------------------------------------------------------------------
# fill global variable: screen information
#
#

set screen(scrminx) 5
set screen(scrminy) 21
# DCD 14 Jun Added brackets below to avoid double substitution
set screen(scrmaxx) [expr {[winfo screenwidth  .]} - {$screen(scrminx)}]
set screen(scrmaxy) [expr {[winfo screenheight .]} - {$screen(scrminx)}]

#-------------------------------------------------------------------------
# fill global variables:

set sxGlobal(Version) [sxGetQTVersion]
set sxGlobal(siteFile) "$homeDir/.sxSite"
set sxGlobal(rootDir) "$sxQTDir"
set sxGlobal(dataDir) "$sxQTDir/etc"
set sxGlobal(docDir) "$sxQTDir/doc"
set sxGlobal(imageDir) "$sxQTDir/images"
set sxGlobal(exampleDir) "$sxQTDir/examples"
set sxGlobal(docNewWindow) 0
set sxGlobal(netscapeCmd) "netscape"
set sxGlobal(siteList) "$homeDir/.sxSites"
set sxGlobal(mainSiteList) "$sxQTDir/etc/.sxSites"
set sxGlobal(pollFrequency) 10
set sxGlobal(lastUser) ""
set sxGlobal(id) 0
set sxGlobal(servers) {}
set sxGlobal(unwantedClasses) {}
set sxGlobal(activeQueries) {}
set sxGlobal(queryWinWidth) 600
set sxGlobal(queryWinHeight) 600
set sxGlobal(background) grey
set sxGlobal(foreground) black
set sxGlobal(commentColor) #3aaa16
set sxGlobal(activebackground) blue
set sxGlobal(activeforeground) white
set sxGlobal(cascadeX) 0
set sxGlobal(cascadeY) 0
set sxGlobal(iconWidth) 250
set sxGlobal(iconHeight) 28
set sxGlobal(iconMinStart) 500
set sxGlobal(iconList) {}
set sxGlobal(maxWindows) 16
set sxGlobal(Undolevel) 40
set sxGlobal(OIDLimit) 10000
set sxGlobal(MatchLimit) 100000
set sxGlobal(fontType) Courier
set sxGlobal(fonts) {Courier Helvetica}
set sxGlobal(fontSize) 9
set sxGlobal(fontsizes) {8 9 10 11 12 14 16}
set sxGlobal(errorCount) 0
set sxGlobal(fileDialog,name) ""
set sxGlobal(lastLoadedFiles) ""
set sxGlobal(lastLoadLen) 6
set sxGlobal(echoPort) 8900

#set sxGlobal(minImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/minimize.gif]

# DCD 14 Jun 01 Used join below instead of syntax above to 
# avoid pratform separator incompatibility.
# ie / UNIX \ Windows & : mac

set tmp71 [file join $sxGlobal(imageDir) minimize.gif]

set sxGlobal(minImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(maxImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/maximize.gif]

set tmp71 [file join $sxGlobal(imageDir) maximize.gif]

set sxGlobal(maxImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(closeImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/close.gif]

set tmp71 [file join $sxGlobal(imageDir) close.gif]

set sxGlobal(closeImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(iconImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/sxqlIcon.gif]

set tmp71 [file join $sxGlobal(imageDir) sxqlIcon.gif]

set sxGlobal(iconImg) [image create photo -format gif \
        -file $tmp71]


#set sxGlobal(newImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/new.gif]

set tmp71 [file join $sxGlobal(imageDir) new.gif]

set sxGlobal(newImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(openImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/open.gif]

set tmp71 [file join $sxGlobal(imageDir) open.gif]

set sxGlobal(openImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(saveImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/save.gif]

set tmp71 [file join $sxGlobal(imageDir) save.gif]

set sxGlobal(saveImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(startImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/start.gif]

set tmp71 [file join $sxGlobal(imageDir) start.gif]

set sxGlobal(startImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(stopImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/stop.gif]

set tmp71 [file join $sxGlobal(imageDir) stop.gif]

set sxGlobal(stopImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(checkImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/check.gif]

set tmp71 [file join $sxGlobal(imageDir) check.gif]

set sxGlobal(checkImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(pauseImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/pause.gif]

set tmp71 [file join $sxGlobal(imageDir) pause.gif]

set sxGlobal(pauseImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(copyImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/copy.gif]

set tmp71 [file join $sxGlobal(imageDir) copy.gif]

set sxGlobal(copyImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(cutImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/cut.gif]

set tmp71 [file join $sxGlobal(imageDir) cut.gif]

set sxGlobal(cutImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(pasteImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/paste.gif]

set tmp71 [file join $sxGlobal(imageDir) paste.gif]

set sxGlobal(pasteImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(undoImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/undo.gif]

set tmp71 [file join $sxGlobal(imageDir) undo.gif]

set sxGlobal(undoImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(connImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/connected.gif]

set tmp71 [file join $sxGlobal(imageDir) connected.gif]

set sxGlobal(connImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(disconnImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/disconnected.gif]

set tmp71 [file join $sxGlobal(imageDir) disconnected.gif]

set sxGlobal(disconnImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(fileImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/file.gif]

set tmp71 [file join $sxGlobal(imageDir) file.gif]

set sxGlobal(fileImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(dirImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/folder.gif]

set tmp71 [file join $sxGlobal(imageDir) folder.gif]

set sxGlobal(dirImg) [image create photo -format gif \
        -file $tmp71]

#set sxGlobal(upImg) [image create photo -format gif \
#	-file $sxGlobal(imageDir)/up.gif]

set tmp71 [file join $sxGlobal(imageDir) up.gif]

set sxGlobal(upImg) [image create photo -format gif \
        -file $tmp71]

#fill globals with the default site information for speed
# this can be read from a config file later

sxGetSiteList

# get other configurations

set sxGlobal(configFile) $homeDir/.sxconfig
if {![file exists $sxGlobal(configFile)]} {
    sxConfigure CREATE
}

sxGetConfig

font create helv -family Helvetica -weight bold
font create Courier -family Courier -size $sxGlobal(fontSize)
font create Helvetica -family Helvetica -size $sxGlobal(fontSize)

#-------------------------------------------------------------------------
# initialize stuff

readSchema "$sxGlobal(dataDir)/schema.dat"
readFlags  "$sxGlobal(dataDir)/flags.dat"


# now start up main window

sxMainWindow
update
sxDoLogin

