Sweden-Number/tools/wineconf.libs/wineconf.tcl

1411 lines
49 KiB
Tcl

# 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
#
proc TkW:wineconf {DefaultConfFile} {
global WC_banner WC_driveSect WC_path WC_type WC_label WC_fstype
global EDIT SAVE REMOVE ADD WC_wineSect WC_windows WC_system WC_temp
global WC_Symbols WC_winepath WC_serialSect CLEAR WC_parallelSect
global WC_logSect WC_exclude WC_wineLook
global windowspath varpath syspath tmppath symbols winelook
global ndrives drive drivepath drivetype drivefstype drivelabel
global drivedevice driveserial
global resolution defaultfont
global readport writeport TKW WAITconf
global exclude default_progs startup allocsyscolors winelook wine_logfile
global com lpt spool nspool alias nalias
global WC_helpondrives WC_helponwine WC_helponserial WC_helponPP
global WC_helponmisc WAIT WC_quit WC_quit
global WC_quitreally WC_noquit
if {[winfo exist .choosemethod] } {destroy .choosemethod}
if {[winfo exist .install] } {destroy .install}
set base .wineconf
if {[winfo exists .wineconf]} {
wm deiconify .wineconf; return
}
###################
# CREATING WIDGETS
###################
toplevel .wineconf -class Toplevel \
-background #3c1cfe
wm focusmodel .wineconf passive
wm geometry .wineconf 462x600+148+153
wm maxsize .wineconf 1265 994
wm minsize .wineconf 1 1
wm overrideredirect .wineconf 0
wm resizable .wineconf 1 1
wm deiconify .wineconf
wm title .wineconf "TkWineSetup Configuring Wine"
#wm iconbitmap .wineconf @$TKW/setupfiles/images/setup2.xbm
#wm iconmask .wineconf @$TKW/setupfiles/images/setupmask2.xbm
label .wineconf.lab18 \
-background #fcfefe \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-relief groove -text label -textvariable WC_banner
canvas .wineconf.can01 \
-background #fee0b4 -borderwidth 2 -height 207 -relief ridge \
-width 296
label .wineconf.can01.lab22 \
-background #fefefe \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-relief groove -text label -textvariable WC_drivesSect
listbox .wineconf.can01.lis23 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-yscrollcommand {.wineconf.can01.scrDrives set }
scrollbar .wineconf.can01.scrDrives \
-borderwidth 1 -orient vert -width 10 \
-command { .wineconf.can01.lis23 yview }
listbox .wineconf.can01.lis24 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*
listbox .wineconf.can01.lis25 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*
listbox .wineconf.can01.lis26 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*
button .wineconf.can01.but28 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* -padx 9 \
-pady 3 -text button -textvariable ADD \
-command {TkW:drives new}
button .wineconf.can01.but29 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* -padx 9 \
-pady 3 -state disabled -text button -textvariable REMOVE \
-command {TkW:delDrive $sel_drive}
button .wineconf.can01.but30 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* -padx 9 \
-pady 3 -state disabled -text button -textvariable EDIT \
-command {TkW:drives $sel_drive}
label .wineconf.can01.lab31 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-relief groove -text label -textvariable WC_path
label .wineconf.can01.lab32 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-relief groove -text label -textvariable WC_type
label .wineconf.can01.lab33 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-relief groove -text label -textvariable WC_label
label .wineconf.can01.lab34 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-relief groove -text label -textvariable WC_fstype
button .wineconf.can01.but51 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* -padx 9 \
-pady 3 -text button -textvariable HELP \
-command {TkW:message $WC_helpondrives}
#section wine
canvas .wineconf.can37 \
-background #fedcdc -borderwidth 2 -height 207 -relief ridge \
-width 296
label .wineconf.can37.lab39 \
-background #fefefe \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-relief groove -text label -textvariable WC_wineSect
label .wineconf.can37.lab40 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-relief groove -text label -textvariable WC_windows
label .wineconf.can37.lab41 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-relief groove -text label -textvariable WC_system
button .wineconf.can37.but42 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-relief groove -textvariable WC_winepath \
-command TkW:editWinePath
button .wineconf.can37.but43 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* -padx 9 \
-pady 3 -text button -textvariable HELP \
-command {TkW:message $WC_helponwine}
entry .wineconf.can37.ent45 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-textvariable windowspath
entry .wineconf.can37.ent46 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-textvariable syspath
label .wineconf.can37.lab47 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-relief groove -text label -textvariable WC_temp
label .wineconf.can37.lab48 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-relief groove -text label -textvariable WC_Symbols
entry .wineconf.can37.ent49 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-textvariable tmppath
entry .wineconf.can37.ent50 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-textvariable symbols
# section serialports
canvas .wineconf.can53 \
-background #fedcdc -borderwidth 2 -relief ridge
label .wineconf.can53.lab57 \
-background #fefefe \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-relief groove -text label -textvariable WC_serialSect
listbox .wineconf.can53.lis58 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*
listbox .wineconf.can53.lis59 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-yscrollcommand {.wineconf.can53.scr60 set }
scrollbar .wineconf.can53.scr60 \
-borderwidth 1 -orient vert -width 10 \
-command { .wineconf.can53.lis59 yview }
button .wineconf.can53.but63 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* -padx 9 \
-pady 3 -text button -textvariable EDIT \
-command {TkW:editports com}
button .wineconf.can53.but64 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* -padx 9 \
-pady 3 -text button -textvariable CLEAR -state disabled \
-command {
set com([expr $sel_com + 1]) " "
TkW:setboxes
.wineconf.can53.but64 configure -state disabled
}
button .wineconf.can53.help \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* -padx 9 \
-pady 3 -text button -textvariable HELP\
-command {TkW:message $WC_helponserial}
#section parallelports
canvas .wineconf.can54 \
-background #fedcdc -borderwidth 2 -relief ridge
label .wineconf.can54.lab65 \
-background #fefefe \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-relief groove -text label -textvariable WC_parallelSect
listbox .wineconf.can54.lis67 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-yscrollcommand {.wineconf.can54.scr71 set }
listbox .wineconf.can54.lis68 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*
button .wineconf.can54.but69 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* -padx 9 \
-pady 3 -text button -textvariable EDIT \
-command {TkW:editports lpt}
button .wineconf.can54.but70 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* -padx 9 \
-pady 3 -text button -textvariable CLEAR -state disabled \
-command {
set lpt([expr $sel_port + 1]) " "
TkW:setboxes
.wineconf.can54.but70 configure -state disabled
}
scrollbar .wineconf.can54.scr71 \
-borderwidth 1 -orient vert -width 10 \
-command {.wineconf.can54.lis67 yview}
button .wineconf.can54.help \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* -padx 9 \
-pady 3 -text button -textvariable HELP\
-command {TkW:message $WC_helponPP}
#sections spy et Tweak.Layout
canvas .wineconf.can55 \
-background #fedcdc -borderwidth 2 -height 207 -relief ridge \
-width 296
label .wineconf.can55.lab72 \
-background #fefefe \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-relief groove -text label -textvariable WC_logSect
entry .wineconf.can55.ent74 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-textvariable wine_logfile
button .wineconf.can55.but75 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* -padx 9 \
-pady 3 -text button -textvariable WC_exclude
label .wineconf.can55.lab76 \
-background #fefefe \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-relief groove -text label -textvariable WC_wineLook
menubutton .wineconf.can55.men78 \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-menu .wineconf.can55.men78.m -padx 4 -pady 3 -text menu \
-textvariable winelook
menu .wineconf.can55.men78.m \
-cursor {} -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*
.wineconf.can55.men78.m add command \
-command {set winelook "Win31"} -label {Win 3.1}
.wineconf.can55.men78.m add command \
-command {set winelook "Win95"} -label win95/98
.wineconf.can55.men78.m add command \
-command {set winelook "Win98"} -label {Win 98}
button .wineconf.can55.help \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* -padx 9 \
-pady 3 -text button -textvariable HELP \
-command {TkW:message $WC_helponmisc}
#main window buttons:
button .wineconf.but80 \
-command {
set WAIT wait
TkW:message2 $WC_quit $WC_quitreally $WC_noquit
while {$WAIT == "wait"} {update}
if {$WAIT == "opt1"} { if {[winfo exists .desktop]} {
destroy .wineconf
set WAITconf 0
return
} else {
exit
}
}
} \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* -padx 9 \
-pady 3 -text button -textvariable QUIT
button .wineconf.save \
-command TkW:writewinerc \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* -padx 9 \
-pady 3 -text button -textvariable SAVE
###################
# SETTING GEOMETRY
###################
place .wineconf.lab18 \
-x 3 -y 5 -width 453 -height 20 -anchor nw -bordermode ignore
#placing drives sctions widgets:
place .wineconf.can01 \
-x 5 -y 35 -width 466 -height 180 -anchor nw -bordermode ignore
place .wineconf.can01.lab22 \
-x 0 -y 0 -width 443 -height 25 -anchor nw -bordermode ignore
place .wineconf.can01.lis23 \
-x 10 -y 56 -width 130 -height 113 -anchor nw -bordermode ignore
place .wineconf.can01.lis24 \
-x 139 -y 55 -width 85 -height 113 -anchor nw -bordermode ignore
place .wineconf.can01.lis25 \
-x 223 -y 55 -width 65 -height 113 -anchor nw -bordermode ignore
place .wineconf.can01.lis26 \
-x 288 -y 55 -width 65 -height 113 -anchor nw -bordermode ignore
place .wineconf.can01.scrDrives \
-x 353 -y 55 -width 16 -height 113 -anchor nw -bordermode ignore
# bind lis23-26
bind .wineconf.can01.lis23 <ButtonRelease> {
set sel_drive [ .wineconf.can01.lis23 nearest %y]
#enable related button
.wineconf.can01.but30 configure -state normal
.wineconf.can01.but29 configure -state normal
# disable the tow CLEAR buttons of ports:
.wineconf.can54.but70 configure -state disabled
.wineconf.can53.but64 configure -state disabled
}
bind .wineconf.can01.lis24 <ButtonRelease> {
set sel_drive [ .wineconf.can01.lis23 nearest %y]
.wineconf.can01.lis23 selection set $sel_drive
.wineconf.can01.but30 configure -state normal
.wineconf.can01.but29 configure -state normal
# disable the tow CLEAR buttons of ports:
.wineconf.can54.but70 configure -state disabled
.wineconf.can53.but64 configure -state disabled
}
bind .wineconf.can01.lis25 <ButtonRelease> {
set sel_drive [ .wineconf.can01.lis23 nearest %y]
.wineconf.can01.lis23 selection set $sel_drive
.wineconf.can01.but30 configure -state normal
.wineconf.can01.but29 configure -state normal
# disble the tow CLEAR buttons of ports:
.wineconf.can54.but70 configure -state disabled
.wineconf.can53.but64 configure -state disabled
}
bind .wineconf.can01.lis26 <ButtonRelease> {
set sel_drive [ .wineconf.can01.lis23 nearest %y]
.wineconf.can01.lis23 selection set $sel_drive
.wineconf.can01.but30 configure -state normal
.wineconf.can01.but29 configure -state normal
# disble the tow CLEAR buttons of ports:
.wineconf.can54.but70 configure -state disabled
.wineconf.can53.but64 configure -state disabled
}
place .wineconf.can01.but28 \
-x 375 -y 44 -width 60 -height 28 -anchor nw -bordermode ignore
place .wineconf.can01.but29 \
-x 375 -y 76 -width 60 -height 28 -anchor nw -bordermode ignore
place .wineconf.can01.but30 \
-x 375 -y 110 -width 60 -height 28 -anchor nw -bordermode ignore
place .wineconf.can01.lab31 \
-x 13 -y 36 -width 128 -height 20 -anchor nw -bordermode ignore
place .wineconf.can01.lab32 \
-x 140 -y 36 -width 83 -height 20 -anchor nw -bordermode ignore
place .wineconf.can01.lab33 \
-x 223 -y 36 -width 68 -height 20 -anchor nw -bordermode ignore
place .wineconf.can01.lab34 \
-x 290 -y 36 -width 68 -height 20 -anchor nw -bordermode ignore
place .wineconf.can01.but51 \
-x 375 -y 141 -width 60 -height 28 -anchor nw -bordermode ignore
#placing wine sctions widgets:
place .wineconf.can37 \
-x 5 -y 230 -width 449 -height 115 -anchor nw -bordermode ignore
place .wineconf.can37.lab39 \
-x 3 -y 1 -width 443 -height 20 -anchor nw -bordermode ignore
place .wineconf.can37.lab40 \
-x 7 -y 29 -width 58 -height 20 -anchor nw -bordermode ignore
place .wineconf.can37.lab41 \
-x 7 -y 55 -width 58 -height 20 -anchor nw -bordermode ignore
place .wineconf.can37.but42 \
-x 7 -y 84 -width 248 -height 20 -anchor nw -bordermode ignore
place .wineconf.can37.but43 \
-x 375 -y 80 -width 60 -height 28 -anchor nw -bordermode ignore
place .wineconf.can37.ent45 \
-x 74 -y 26 -width 150 -height 24 -anchor nw -bordermode ignore
place .wineconf.can37.ent46 \
-x 74 -y 52 -width 150 -height 24 -anchor nw -bordermode ignore
place .wineconf.can37.lab47 \
-x 239 -y 29 -width 58 -height 20 -anchor nw -bordermode ignore
place .wineconf.can37.lab48 \
-x 239 -y 54 -width 58 -height 20 -anchor nw -bordermode ignore
place .wineconf.can37.ent49 \
-x 304 -y 26 -width 135 -height 24 -anchor nw -bordermode ignore
place .wineconf.can37.ent50 \
-x 304 -y 52 -width 135 -height 24 -anchor nw -bordermode ignore
#placing serialports sections widgets:
place .wineconf.can53 \
-x 9 -y 356 -width 144 -height 180 -anchor nw -bordermode ignore
place .wineconf.can53.lab57 \
-x 3 -y 3 -width 138 -height 20 -anchor nw -bordermode ignore
place .wineconf.can53.lis58 \
-x 3 -y 25 -width 40 -height 83 -anchor nw -bordermode ignore
place .wineconf.can53.lis59 \
-x 44 -y 25 -width 85 -height 83 -anchor nw -bordermode ignore
# bind lis59 to select lis58 at the same time...
bind .wineconf.can53.lis58 <ButtonRelease> {
set sel_com [ .wineconf.can53.lis58 nearest %y]
.wineconf.can53.lis58 selection set $sel_com
#disbale other list related buttons:
.wineconf.can01.but30 configure -state disabled
.wineconf.can01.but29 configure -state disabled
# disable/enable the tow CLEAR buttons of ports:
.wineconf.can54.but70 configure -state disabled
.wineconf.can53.but64 configure -state normal
}
# bind lis58 to select lis59 at the same time...
bind .wineconf.can53.lis59 <ButtonRelease> {
set sel_com [ .wineconf.can53.lis59 nearest %y]
.wineconf.can53.lis58 selection set $sel_com
#disbale other list related buttons:
.wineconf.can01.but30 configure -state disabled
.wineconf.can01.but29 configure -state disabled
# disable/enable the tow CLEAR buttons of ports:
.wineconf.can54.but70 configure -state disabled
.wineconf.can53.but64 configure -state normal
}
place .wineconf.can53.scr60 \
-x 123 -y 26 -width 16 -height 80 -anchor nw -bordermode ignore
place .wineconf.can53.but63 \
-x 10 -y 115 -width 60 -height 28 -anchor nw -bordermode ignore
place .wineconf.can53.but64 \
-x 78 -y 115 -width 60 -height 28 -anchor nw -bordermode ignore
place .wineconf.can53.help \
-x 10 -y 145 -width 130 -height 28 -anchor nw -bordermode ignore
#placing parallelports sections widgets:
place .wineconf.can54 \
-x 160 -y 356 -width 144 -height 180 -anchor nw -bordermode ignore
place .wineconf.can54.lab65 \
-x 1 -y 3 -width 143 -height 20 -anchor nw -bordermode ignore
place .wineconf.can54.lis67 \
-x 5 -y 26 -width 45 -height 83 -anchor nw -bordermode ignore
place .wineconf.can54.lis68 \
-x 50 -y 25 -width 75 -height 83 -anchor nw -bordermode ignore
# bind lis67
bind .wineconf.can54.lis68 <ButtonRelease> {
set sel_port [ .wineconf.can53.lis59 nearest %y]
#disbale other list related buttons:
.wineconf.can01.but30 configure -state disabled
.wineconf.can01.but29 configure -state disabled
# disable/enable the tow CLEAR buttons of ports:
.wineconf.can54.but70 configure -state normal
.wineconf.can53.but64 configure -state disabled
}
# bind lis68 to select lis67 at the same time...
bind .wineconf.can54.lis67 <ButtonRelease> {
set sel_port [ .wineconf.can53.lis59 nearest %y]
.wineconf.can54.lis67 selection set $sel_port
#disbale other list related buttons:
.wineconf.can01.but30 configure -state disabled
.wineconf.can01.but29 configure -state disabled
# disable/enable the tow CLEAR buttons of ports:
.wineconf.can54.but70 configure -state normal
.wineconf.can53.but64 configure -state disabled
}
place .wineconf.can54.but69 \
-x 10 -y 115 -width 60 -height 28 -anchor nw -bordermode ignore
place .wineconf.can54.but70 \
-x 78 -y 115 -width 60 -height 28 -anchor nw -bordermode ignore
place .wineconf.can54.scr71 \
-x 123 -y 26 -width 16 -height 80 -anchor nw -bordermode ignore
place .wineconf.can54.help \
-x 10 -y 145 -width 130 -height 28 -anchor nw -bordermode ignore
#placing spy and Tweak.Layout sections widgets:
place .wineconf.can55 \
-x 313 -y 357 -width 139 -height 180 -anchor nw -bordermode ignore
place .wineconf.can55.lab72 \
-x 3 -y 3 -width 133 -height 20 -anchor nw -bordermode ignore
place .wineconf.can55.ent74 \
-x 5 -y 25 -width 130 -height 24 -anchor nw -bordermode ignore
place .wineconf.can55.but75 \
-x 5 -y 50 -width 130 -height 28 -anchor nw -bordermode ignore
place .wineconf.can55.lab76 \
-x 3 -y 83 -width 133 -height 20 -anchor nw -bordermode ignore
place .wineconf.can55.men78 \
-x 10 -y 110 -width 122 -height 24 -anchor nw -bordermode ignore
place .wineconf.can55.help \
-x 5 -y 145 -width 130 -height 28 -anchor nw -bordermode ignore
#Main window buttons:
pack .wineconf.but80 -padx 5 -pady 1 -side bottom -fill x
pack .wineconf.save -padx 5 -side bottom -fill x
# initialise the arrays
TkW:initarrays
# Now start reading the .winerc (or the default wine.ini)
TkW:readwinerc $DefaultConfFile
# Set the listboxes:
TkW:setboxes
#updates the scollings
set WAITconf 1
while {$WAITconf == 1} { TkW:scrollwindows }
}
proc TkW:readwinerc {DefaultConfFile} {
global sect ndrives drive n rcout line wine_logfile winelook
global nspool nalias srcdest TKW
TkW:debug "Entering readwinerc -----------------------------"
# OPEN THE FILE Read-Only:
TkW:fixme "TkW:wineconf::\
Detection of wine.ini will fail when ~/.winerc ~/wine.conf not there"
if {[file exist $DefaultConfFile] } then {
set winerc [open $DefaultConfFile r]
} else {
TkW:message "No file $DefaultConfFile... This is a TkWine error"
return
}
# Adds a fe setting in case they're missing (actually, they are in the std file) in the wine.ini
set winelook Win95
set wine_logfile /tmp/winelog
# OPEN /tmp/tkwwinerc for writting
set rcout [open /tmp/tkwinerc w]
set ndrives -1
set nspool 0
set nalias -1
global NDllOver NDllPairs DllPairs DllOver
set NDllOver 0
set NDllPairs 0
# Read line by line
set charread 0
while {$charread != -1} {
set charread [gets $winerc line]
set line [string trim $line]
set n [expr $charread - 1]
set idok 0
TkW:debug "READ:$line-$charread"
if {[string match ";*" $line]} {
#puts $rcout $line
TkW:debug Comment; set idok 1}
# The two lines below SHOULD work... they don't
#if {[string match "\[*\]" $line]} \
#{TkW:debug Section;set idok 1}
## a ugly replacement:
if {"[string range $line 0 0][string range $line $n $n]"\
== "\[\]"} {
TkW:sections
set idok 1
}
if {$idok != 1 && [string match "*=*" $line]} {
TkW:assign
TkW:debug Assignment
set idok 1
}
if {!$idok && $charread > 0} {
TkW:debug "Error::Unknow line in .winerc"
puts "************Warning: Error in config \
file ****************"
puts "Line $line incomprehensible"
}
}
}
proc TkW:sections {} {
global sect ndrives drive n rcout line
global drivepath drivelabel drivetype drivefstype driveserial drivedevice
set sect [string tolower [string range $line 1 [expr $n - 1]]]
if {[string tolower [string range $sect 0 4]] == "drive"} {
set ndrives [expr $ndrives + 1]
set drive($ndrives) [string range $sect 6 6]
set drivepath($ndrives) ""
set drivelabel($ndrives) ""
set drivetype($ndrives) ""
set drivefstype($ndrives) ""
set driveserial($ndrives) ""
set drivedevice($ndrives) ""
set sect drive
TkW:debug "Section $sect $drive($ndrives)"
#puts $rcout "\[$sect $drive($ndrives)\]"
} else {
TkW:debug "Section $sect"
#puts $rcout "\[$sect]"
}
}
proc TkW:assign {} {
global sect ndrives drive n rcout line
global windowspath varpath syspath tmppath symbols winelook
global ndrives drive drivepath drivetype drivefstype drivelabel
global drivedevice driveserial
global resolution defaultfont
global readport writeport
global exclude default_progs startup allocsyscolors winelook wine_logfile
global com lpt spool nspool alias nalias
global NDllOver NDllPairs
global DllOver DllPairs
set equalis [string first "=" $line ]
set varname [string tolower [string trim [string range $line 0 [expr $equalis - 1]]]]
set value [string trim [string range $line [expr $equalis + 1] $n]]
if {$varname == "default"} {set varname Default}
switch $varname {
{path} {
switch $sect {
{drive} {set drivepath($ndrives) $value}
{wine} {set varpath $value;update}
{default} {TkW:conferror $sect $varname $value}
}
}
{type} {
if {$sect != "drive"} then {
TkW:conferror $sect $varname $value
} else {
set drivetype($ndrives) $value
}
}
{label} {
if {$sect != "drive"} then {
TkW:conferror $sect $varname $value
} else {
set drivelabel($ndrives) $value
}
}
{serial} {
if {$sect != "drive"} then {
TkW:conferror $sect $varname $value
} else {
set driveserial($ndrives) $value
}
}
{filesystem} {
if {$sect != "drive"} then {
TkW:conferror $sect $varname $value
} else {
set drivefstype($ndrives) $value
}
}
{device} {
if {$sect != "drive"} then {
TkW:conferror $sect $varname $value
} else {
set drivedevice($ndrives) $value
}
}
{windows} {
if {$sect != "wine"} then {
TkW:conferror $sect $varname $value
} else {
set windowspath $value
}
}
{system} {
if {$sect != "wine"} then {
TkW:conferror $sect $varname $value
} else {
set syspath $value
}
}
{temp} {
if {$sect != "wine"} then {
TkW:conferror $sect $varname $value
} else {
set tmppath $value
}
}
{symboltablefile} {
if {$sect != "wine"} then {
TkW:conferror $sect\
$varname $value
} else {
set symbols $value
}
}
{resolution} {
if {$sect != "fonts"} then {
TkW:conferror $sect $varname $value
} else {
set resolution $value
}
}
{Default} {
switch $sect {
{fonts} { set defaultfont $value}
{programs} {set default_progs $value}
{default} { TkW:conferror \
$sect $varname $value }
}
}
{read} {
if {$sect != "ports"} then {
TkW:conferror $sect $varname $value
} else {
set readport $value
}
}
{write} {
if {$sect != "ports"} then {
TkW:conferror $sect $varname $value
} else {
set writeport $value
}
}
{file} {
if {$sect != "spy"} then {
TkW:conferror $sect $varname $value
} else {
set wine_logfile $value
}
}
{exclude} {
if {$sect != "spy"} then {
TkW:conferror $sect $varname $value
} else {
set Exclude $value
}
}
{allocsystemcolors} {
if {$sect != "options"} then {
TkW:conferror $sect $varname\
$value
} else {
set allocsyscolors $value
}
}
{winelook} {
if {$sect != "tweak.layout"} then {
TkW:conferror $sect $varname\
$value
} else {
set winelook $value
}
}
{startup} {
if {$sect != "programs"} then {
TkW:conferror $sect $varname\
$value
} else {
set startup $value
}
}
{printer} {
if {$sect != "wine"} then {
TkW:conferror $sect $varname\
$value
} else {
set printer $value
}
}
{default} {
if {$sect == "dllpairs"} {
set NDllPairs [expr $NDllPairs + 1]
set DllPairs($NDllPairs) "$varname = $value"
return
}
if {$sect == "dlloverrides"} {
set NDllOver [expr $NDllOver + 1]
set DllOver($NDllOver) "$varname = $value"
return
}
if {[string tolower [string trim [string range $line 0 2]]] == "lpt" && [string range $line 4 4 ] == ":" } {
if {$sect != "spooler"} then {
TkW:conferror $sect $varname $value
} else {
set nspool [expr $nspool + 1]
set spool($nspool) $value
}
return
}
set varname2 [string tolower [string trim \
[string range $line 0 [expr $equalis - 2]]]]
set letter [string tolower [string range $line [expr $equalis - 1]\
[expr $equalis - 1] ]]
#set varname2 [string tolower $varname2]
switch $varname2 {
{com} {
if {$sect != "serialports"} then {
TkW:conferror $sect $varname\
$value
} else {
set com($letter) $value
}
}
{lpt} {
if {$sect != "parallelports"} then {
TkW:conferror $sect $varname\
$value
} else {
set lpt($letter) $value
}
}
{alias} {
if {$sect != "fonts"} then {
TkW:conferror $sect $varname\
$value
} else {
set nalias [expr $nalias + 1]
set alias($nalias) $value
}
}
{default} {
TkW:conferror $sect $varname $value
}
}
}
}
}
proc TkW:conferror {sect varname value} {
puts "ERROR IN CONFIG FILE, FOUND $varname=$value in section $sect"
}
proc TkW:setboxes {} {
global ndrives drive drivepath drivetype drivefstype drivelabel
global drivedevice driveserial
global com lpt
.wineconf.can01.lis23 delete 0 end
.wineconf.can01.lis24 delete 0 end
.wineconf.can01.lis25 delete 0 end
.wineconf.can01.lis26 delete 0 end
for {set i 0} {$i <= $ndrives } {set i [expr $i + 1]} {
TkW:debug "Drive $i : $drive($i) $drivepath($i) $drivetype($i)\
$drivelabel($i)"
TkW:debug " $drivefstype($i) $drivedevice($i) $driveserial($i)"
set yes " "
if {![file isdirectory $drivepath($i)]} {set yes "*"}
.wineconf.can01.lis23 insert end \
"$yes\($drive($i):\\) $drivepath($i) "
.wineconf.can01.lis24 insert end \
"$yes$drivetype($i)"
.wineconf.can01.lis25 insert end \
"$yes$drivelabel($i)"
.wineconf.can01.lis26 insert end \
"$yes$drivefstype($i)"
}
.wineconf.can53.lis59 delete 0 end
.wineconf.can53.lis58 delete 0 end
for {set i 1} {$i <= 8 } {set i [expr $i + 1]} {
.wineconf.can53.lis58 insert end "com$i"
.wineconf.can53.lis59 insert end $com($i)
}
.wineconf.can54.lis67 delete 0 end
.wineconf.can54.lis68 delete 0 end
for {set i 1} {$i <= 8 } {set i [expr $i + 1]} {
.wineconf.can54.lis67 insert end "lpt$i"
.wineconf.can54.lis68 insert end $lpt($i)
}
}
proc TkW:scrollwindows {} {
global OldPos
if {![info exists OldPos]} {set OldPos 0}
# Serial
set lis58pos [.wineconf.can53.lis59 yview]; set a 1
foreach i $lis58pos { if {$a} {set pos $i}; set a 0 }
.wineconf.can53.lis58 yview moveto $pos
# // ports
set lis67pos [.wineconf.can54.lis67 yview]; set a 1
foreach i $lis67pos { if {$a} {set pos $i}; set a 0 }
.wineconf.can54.lis68 yview moveto $pos
# drives:
set lis23pos [.wineconf.can01.lis23 yview]; set a 1
foreach i $lis23pos { if {$a} {set pos $i}; set a 0 }
if {$lis23pos != $OldPos} {
TkW:debug "listbox23 has move from $OldPos to $lis23pos"
TkW:debug "listbox24 goes to $pos "
}
set OldPos $lis23pos
.wineconf.can01.lis24 yview moveto $pos
.wineconf.can01.lis25 yview moveto $pos
.wineconf.can01.lis26 yview moveto $pos
update
}
proc TkW:initarrays {} {
global com lpt spool
for {set i 1 } {$i <= 8 } {set i [expr $i + 1]} {
set com($i) ""
set lpt($i) ""
}
for {set i 1 } {$i <= 8 } {set i [expr $i + 1]} {
set spool($i) ""
}
}
proc TkW:editports {comlpt} {
global OK CANCEL com portch lpt lptcom win banner TKW
global WC_confserial WC_confparallel WC_PPbanner WC_serialbanner
.wineconf.can54.but69 configure -state disabled
.wineconf.can53.but63 configure -state disabled
# this is a ugly trick as buttons command need a global variable, not an arg
set lptcom $comlpt
if {$comlpt == "com"} then {
set win .comedit
set title $WC_confserial
set banner $WC_serialbanner
} else {
set win .lptedit
set title $WC_confparallel
set banner $WC_PPbanner
}
toplevel $win -class Toplevel \
-background #3c1cfe
wm focusmodel $win passive
wm geometry $win 205x365+448+253
wm maxsize $win 1265 994
wm minsize $win 1 1
wm overrideredirect $win 0
wm resizable $win 1 1
wm deiconify $win
wm title $win $title
#wm iconbitmap $win @$TKW/setupfiles/images/setup2.xbm
#wm iconmask $win @$TKW/setupfiles/images/setupmask2.xbm
# creating the Banner
label "$win.banner" \
-background #dc96dc \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-relief groove -text $banner
# creating the labels and entries
for {set i 1} {$i <= 8} {set i [expr $i + 1 ]} {
set portch($i) $com($i)
if {$comlpt == "com"} then {
set portch($i) $com($i)
} else {
set portch($i) $lpt($i)
}
label "$win.lab$i" \
-background #dc96dc \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-relief groove -text "Com$i"
entry "$win.ent$i" \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-textvariable portch($i)
set Y [expr 55 + $i * 30]
place "$win.lab$i"\
-x 5 -y $Y -width 45 -height 28 \
-anchor nw -bordermode ignore
place "$win.ent$i"\
-x 55 -y $Y -width 145 -height 28 \
-anchor nw -bordermode ignore
}
button $win.but80 \
-command {
for {set i 1} {$i <= 8} {set i [expr $i + 1]} {
if {$lptcom == "com"} then {
set com($i) $portch($i)
} else {
set lpt($i) $portch($i)
}
.wineconf.can54.but69 configure -state normal
.wineconf.can53.but63 configure -state normal
}
destroy $win
TkW:setboxes
} \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-padx 9 -pady 3 -text button -textvariable OK
place $win.banner -x 5 -y 5 -width 195 -height 70
place $win.but80 \
-x 5 -y 335 -width 100 -height 28 \
-anchor nw -bordermode ignore
button $win.but81 \
-command {destroy $win
.wineconf.can54.but69 configure -state normal
.wineconf.can53.but63 configure -state normal
}\
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-padx 9 -pady 3 -text button -textvariable CANCEL \
place $win.but81 \
-x 105 -y 335 -width 100 -height 28 \
-anchor nw -bordermode ignore
}
proc TkW:drives {n} {
global ndrives drive drivepath drivetype drivefstype drivelabel
global drivedevice driveserial TKW
global WC_confdrives HELP WCHLP WC_driveSetBanner
global chdrives1 chdrives2 chdrives3 chdrives4
global chdrives5 chdrives6 chdrives7
global win i num ch drOK
set chdrives(1) $chdrives1
set chdrives(2) $chdrives2
set chdrives(3) $chdrives3
set chdrives(4) $chdrives4
set chdrives(5) $chdrives5
set chdrives(6) $chdrives6
set chdrives(7) $chdrives7
if {$n == "new"} then {
set num [expr $ndrives + 1]
set ch(1) ""
set ch(2) ""
set ch(3) ""
set ch(4) ""
set ch(5) ""
set ch(6) ""
set ch(7) ""
} else {
set num $n
set ch(1) $drive($num)
set ch(2) $drivepath($num)
set ch(3) $drivetype($num)
set ch(4) $drivefstype($num)
set ch(5) $drivelabel($num)
set ch(6) $drivedevice($num)
set ch(7) $driveserial($num)
}
TkW:debug "Entering TkW:drives - drive number: $num"
.wineconf.can01.but28 configure -state disabled
.wineconf.can01.but29 configure -state disabled
.wineconf.can01.but30 configure -state disabled
# re-enable the tow EDIT buttons of ports:
.wineconf.can54.but69 configure -state disabled
.wineconf.can53.but63 configure -state disabled
set win .drivedit
set title $WC_confdrives
toplevel $win -class Toplevel \
-background #3c1cfe
wm focusmodel $win passive
wm geometry $win 305x325+448+253
wm maxsize $win 1265 994
wm minsize $win 1 1
wm overrideredirect $win 0
wm resizable $win 1 1
wm deiconify $win
wm title $win $title
#wm iconbitmap $win @$TKW/setupfiles/images/setup2.xbm
#wm iconmask $win @$TKW/setupfiles/images/setupmask2.xbm
# setting the banner:
label "$win.banner" \
-background #dc96dc \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-relief groove -text $WC_driveSetBanner -height 35
# creating the labels and entries
# setting HELP buttons
button $win.hlp1\
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-padx 9 -pady 3 -text button -textvariable HELP \
-command {TkW:message $WCHLP(1)}
button $win.hlp2\
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-padx 9 -pady 3 -text button -textvariable HELP \
-command {TkW:message $WCHLP(2)}
button $win.hlp3\
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-padx 9 -pady 3 -text button -textvariable HELP \
-command {TkW:message $WCHLP(3)}
button $win.hlp4\
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-padx 9 -pady 3 -text button -textvariable HELP \
-command {TkW:message $WCHLP(4)}
button $win.hlp5\
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-padx 9 -pady 3 -text button -textvariable HELP \
-command {TkW:message $WCHLP(5)}
button $win.hlp6\
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-padx 9 -pady 3 -text button -textvariable HELP \
-command {TkW:message $WCHLP(6)}
button $win.hlp7\
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-padx 9 -pady 3 -text button -textvariable HELP \
-command {TkW:message $WCHLP(7)}
for {set i 1} {$i <= 7} {set i [expr $i + 1 ]} {
label "$win.lab$i" \
-background #dc96dc \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-relief groove -text $chdrives($i)
if {$i < 3 || $i > 4} then {
entry "$win.ent$i" \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-text text -textvariable ch($i)
} else {
menubutton $win.ent$i \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
-menu $win.ent$i.m -padx 4 -pady 3 \
-text text -textvariable ch($i)
}
# settings the menus:
if {$i == 3} then {
menu $win.ent$i.m \
-cursor {} \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*
$win.ent$i.m add command \
-command {set ch(3) "hd"} -label {Hard Drive}
$win.ent$i.m add command \
-command {set ch(3) "floppy"} -label {Floppy}
$win.ent$i.m add command \
-command {set ch(3) "cdrom"} -label {CDrom}
$win.ent$i.m add command \
-command {set ch(3) "network"} \
-label {network}
}
if {$i == 4} then {
menu $win.ent$i.m \
-cursor {} \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*
$win.ent$i.m add command \
-command {set ch(4) "msdos"} -label {msdos}
$win.ent$i.m add command \
-command {set ch(4) "win95"} -label {Win95}
$win.ent$i.m add command \
-command {set ch(4) "Unix"} -label {Unix}
}
set Y [expr 40 + $i * 30]
place "$win.lab$i"\
-x 5 -y $Y -width 145 -height 28 \
-anchor nw -bordermode ignore
place "$win.ent$i"\
-x 150 -y $Y -width 85 -height 28 \
-anchor nw -bordermode ignore
place "$win.hlp$i"\
-x 235 -y $Y -width 55 -height 28 \
-anchor nw -bordermode ignore
}
button $win.but80 \
-command {
TkW:checkdrives
if {$drOK} {
set drive($num) $ch(1)
set drivepath($num) $ch(2)
set drivetype($num) $ch(3)
set drivefstype($num) $ch(4)
set drivelabel($num) $ch(5)
set drivedevice($num) $ch(6)
set driveserial($num) $ch(7)
destroy $win
if {$num > $ndrives} {set ndrives $num}
TkW:setboxes
.wineconf.can01.but28 configure -state normal
# re-enable the tow EDIT buttons of ports:
.wineconf.can54.but69 configure -state normal
.wineconf.can53.but63 configure -state normal
}
} \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-padx 9 -pady 3 -text button -textvariable OK \
place $win.but80 \
-x 5 -y 290 -width 145 -height 28 \
-anchor nw -bordermode ignore
button $win.but81 \
-command {
destroy $win
.wineconf.can01.but28 configure -state normal
#.wineconf.can01.but29 configure -state normal
#.wineconf.can01.but30 configure -state normal
# re-enable the tow EDIT buttons of ports:
#.wineconf.can54.but69 configure -state normal
#.wineconf.can53.but63 configure -state normal
}\
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-padx 9 -pady 3 -text button -textvariable CANCEL \
place $win.but81 \
-x 150 -y 290 -width 145 -height 28 \
-anchor nw -bordermode ignore
place $win.banner -width 290 -height 35 -x 5 -y 5
}
proc TkW:checkdrives {} {
global ndrives ch num drOK drive
global WC_givepath WC_oneletter WC_usedletter WC_11letters
if {[string length $ch(1)] != 1} {
TkW:message "$ch(1) $WC_oneletter"
set drOK 0
return
}
if {[string length $ch(5)] > 11} {
TkW:message "$ch(5) $WC_11letters"
set drOK 0
return
}
for {set i 0} {$i <=$ndrives} {set i [expr $i + 1]} {
if {$i != $num && [string tolower $ch(1)]\
== [string tolower $drive($i)] } {
TkW:message "$ch(1)$WC_usedletter"
set drOK 0
return
}
}
if { $ch(2) == ""} {TkW:message $WC_givepath; set drOK 0;return}
if { $ch(3) == ""} {set ch(3) hd}
if { $ch(4) == ""} {set ch(4) unix}
if { $ch(5) == ""} {set ch(5) "Drive $ch(1)"}
set drOK 1
}
proc TkW:editWinePath {} {
global OK varpath WC_editPathBanner WC_pathtitle TKW
TkW:debug "Entering TkW:editWinePath with path set to $varpath"
global ndrives dri
# Create the toplevel
toplevel .editpath -class Toplevel \
-background #3c1cfe
wm focusmodel .editpath passive
wm geometry .editpath 410x100+448+253
wm maxsize .editpath 1265 994
wm minsize .editpath 1 1
wm overrideredirect .editpath 0
wm resizable .editpath 1 1
wm deiconify .editpath
wm title .editpath $WC_pathtitle
#wm iconbitmap .editpath @$TKW/setupfiles/images/setup2.xbm
#wm iconmask .editpath @$TKW/setupfiles/images/setupmask2.xbm
#Creates the Banner
label .editpath.banner \
-background #dc96dc \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-relief groove -text $WC_editPathBanner
#Creates the entry box
entry .editpath.ent \
-background #dc96dc \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-relief groove -textvariable varpath
#Creates OK button
button .editpath.ok\
-background #dc96dc \
-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-*\
-relief groove -text $OK -command {destroy .editpath}
place .editpath.banner -x 5 -y 5 -width 400 -height 30
place .editpath.ent -x 5 -y 40 -width 400 -height 30
place .editpath.ok -x 5 -y 70 -width 400 -height 30
}
proc TkW:writewinerc {} {
global windowspath varpath syspath tmppath symbols winelook
global ndrives drive drivepath drivetype drivefstype drivelabel
global drivedevice driveserial
global resolution defaultfont HOME
global readport writeport
global exclude default_progs startup allocsyscolors winelook wine_logfile
global com lpt spool nspool alias nalias
global NDllPairs NDllOver DllPairs DllOver
# open file for writing:;;
# move the old file:
if {[file exists ~/.winerc]} {
set free 1
while {[file exists ~/.winerc.$free]} {
set free [expr $free + 1]
}
exec mv -f $HOME/.winerc $HOME/.winerc.$free
}
set out [open ~/.winerc w]
# writes drives
# Puts the usual comments:
puts $out ";;"
puts $out ";; MS-DOS drives configuration "
puts $out ";;"
puts $out ";; Each section has the following format:"
puts $out ";; \[Drive X\]"
puts $out ";; Path=xxx (Unix path for drive root)"
puts $out ";; Type=xxx (supported types are 'floppy', 'hd', 'cdrom' and 'network')"
puts $out ";; Label=xxx (drive label, at most 11 characters)"
puts $out ";; Serial=xxx (serial number, 8 characters hexadecimal number)"
puts $out ";; Filesystem=xxx (supported types are 'msdos','win95','unix')"
puts $out ";; Device=/dev/xx (only if you want to allow raw device access)"
puts $out ";; "
for {set i 0} {$i <= $ndrives} {set i [expr $i + 1]} {
puts $out "\[Drive $drive($i)\]"
puts $out "Path=$drivepath($i)"
puts $out "Type=$drivetype($i)"
puts $out "Label=$drivelabel($i)"
if {$drivefstype($i) == ""} {set drivefstype($i) unix}
puts $out "Filesystem=$drivefstype($i)"
if {$driveserial($i) != "" } {puts $out "Serial=$driveserial($i)"}
if {$drivedevice($i) != "" } {puts $out "Device=$drivedevice($i)"}
puts $out ""
}
#write wine section
puts $out "\[wine\]"
puts $out "Windows=$windowspath"
puts $out "System=$syspath"
puts $out "Temp=$tmppath"
puts $out "Path=$varpath"
puts $out "SymbolTableFile=$symbols"
puts $out ""
# write options
TkW:fixme "Option not supported in wineconf, write de default"
puts $out "\[options\]"
puts $out "AllocSystemColors=$allocsyscolors"
puts $out ""
# DllPairs:
puts $out "\[DllPairs\]"
for {set i 1} {$i <= $NDllPairs} {set i [expr $i + 1]} {
puts $out $DllPairs($i)
}
puts $out
# DllOverrides:
puts $out "\[DllOverrides\]"
for {set i 1} {$i <= $NDllOver} {set i [expr $i + 1]} {
puts $out $DllOver($i)
}
puts $out
# write fonts section
TkW:fixme "fonts support to be added to wineconf...."
puts $out "\[fonts\]"
puts $out ";Read documentation/fonts before adding aliases"
puts $out "Resolution = $resolution"
puts $out "Default = $defaultfont"
puts $out ""
# write serial
puts $out "\[serialports\]"
for {set i 1} {$i <= 8} {set i [expr $i + 1]} {
if {$com($i) != ""} {puts $out "Com$i=$com($i)"}
}
puts $out ""
# write parallel
puts $out "\[parallelports\]"
for {set i 1} {$i <= 8} {set i [expr $i + 1]} {
if {$lpt($i) != ""} {puts $out "Lpt$i=$lpt($i)"}
}
puts $out ""
# write spooler
puts $out "\[spooler\]"
for {set i 1} {$i <= 8} {set i [expr $i + 1]} {
if {$spool($i) != ""} {puts $out "LPT$i:=$spool($i)"}
}
puts $out ""
# write ports
puts $out "\[ports]"
if {[info exists readport]} {puts $out $readport} {puts $out ";read=0x779,0x379,0x280-0x2a0"}
if {[info exists writeport]} {puts $out $writeport} {puts $out ";write=0x779,0x379,0x280-0x2a0"}
puts $out ""
#write spy
puts $out "\[spy\]"
puts $out "file=$wine_logfile"
if {[info exists exclude]} {puts $out "Exclude=$exclude"} {puts $out "Exclude=WM_SIZE;WM_TIMER;"}
puts $out ""
#write Tweak.Layout
puts $out "\[Tweak.Layout\]"
puts $out ";; WineLook=xxx (supported styles are \'Win31\'(default), \'Win95\', \'Win98\')"
puts $out "WineLook=Win95"
}
proc TkW:delDrive {n} {
global ndrives drive drivepath drivetype drivefstype drivelabel
global drivedevice driveserial
TkW:debug "Remove drive [expr $n + 1]"
for {set i $n} {$i<$ndrives} {set i [expr $i +1]} {
set i1 [expr $i + 1]
set drive($i) $drive($i1)
set drivepath($i) $drivepath($i1)
set drivelabel($i) $drivelabel($i1)
set drivetype($i) $drivetype($i1)
set drivefstype($i) $drivefstype($i1)
set driveserial($i) $driveserial($i1)
}
set ndrives [expr $ndrives - 1]
TkW:setboxes
}