Casting and Costume Management Application
Check-in [a27311d251]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Coalese of performer records now working to eliminate duplicates.
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:a27311d2516f19d1c150f35333cd16123d48b331
User & Date: gerald 2014-12-20 17:12:54
Context
2015-09-21
05:37
Correct typo in index name. check-in: b072aa31a0 user: gerald tags: trunk
2014-12-20
17:12
Coalese of performer records now working to eliminate duplicates. check-in: a27311d251 user: gerald tags: trunk
2014-12-18
07:28
Full implementation of backstage application. check-in: 7a2df02d9f user: gerald tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/Functions/AuditionClientRoutines.tcl.

89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
...
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
                ParentLast, PhoneNumber, MobileNumber, EmailAddress,
                ParentName2, ParentLast2, PhoneNumber2, MobileNumber2,
                EmailAddress2, Address, City, State, ZipCode, School,
                DancingSchool, Active, Report, Notes
            from Performers
            where HysellId  < 0
    } dbArr {
        parray dbArr
        set performerDict [dict create]
        foreach item $performerCols {
            dict set performerDict $item $dbArr($item)
        }
        lappend performerRecords $performerDict
    }
    foreach performerDict $performerRecords {
................................................................................
        ##
        ::log::log info "\t Looking for HysellId = {$HysellId}"
        db eval {
            select ShowId, auditionnumber, changed
                from Casting
                where HysellId = $HysellId
        } dbArr {
            parray dbArr
            dict set performerDict AuditionNumber $dbArr(auditionnumber)
            dict set performerDict ShowId $dbArr(ShowID)
        }
        dict lappend dataRecord Performers $performerDict
        ::log::log info "\t Adding Performer Record {$performerDict}"
    }








|







 







|







89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
...
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
                ParentLast, PhoneNumber, MobileNumber, EmailAddress,
                ParentName2, ParentLast2, PhoneNumber2, MobileNumber2,
                EmailAddress2, Address, City, State, ZipCode, School,
                DancingSchool, Active, Report, Notes
            from Performers
            where HysellId  < 0
    } dbArr {
        #parray dbArr
        set performerDict [dict create]
        foreach item $performerCols {
            dict set performerDict $item $dbArr($item)
        }
        lappend performerRecords $performerDict
    }
    foreach performerDict $performerRecords {
................................................................................
        ##
        ::log::log info "\t Looking for HysellId = {$HysellId}"
        db eval {
            select ShowId, auditionnumber, changed
                from Casting
                where HysellId = $HysellId
        } dbArr {
            #parray dbArr
            dict set performerDict AuditionNumber $dbArr(auditionnumber)
            dict set performerDict ShowId $dbArr(ShowID)
        }
        dict lappend dataRecord Performers $performerDict
        ::log::log info "\t Adding Performer Record {$performerDict}"
    }

Changes to src/Functions/DisplayAuditionEntryGui.tcl.

58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
proc DisplayAuditionEntryGui {} {
    ::log::log debug "[string repeat { } [info level]][info level 0]"
    variable windows
    variable AuditionEntryGui
    variable systemInfo

    BuildAuditionEntryGui
    parray systemInfo
    if {![string equal $systemInfo(Mode) AuditionEntryOnly]} {
        set menuWidget $windows(Mainmenu).tools
        $menuWidget entryconfigure {Copy Family Information} -state disabled
    }
    set windows(performerDetailedArrayName) AuditionEntryGui
    set w $windows(AuditionEntryGui)
    ClearGui $w







<







58
59
60
61
62
63
64

65
66
67
68
69
70
71
proc DisplayAuditionEntryGui {} {
    ::log::log debug "[string repeat { } [info level]][info level 0]"
    variable windows
    variable AuditionEntryGui
    variable systemInfo

    BuildAuditionEntryGui

    if {![string equal $systemInfo(Mode) AuditionEntryOnly]} {
        set menuWidget $windows(Mainmenu).tools
        $menuWidget entryconfigure {Copy Family Information} -state disabled
    }
    set windows(performerDetailedArrayName) AuditionEntryGui
    set w $windows(AuditionEntryGui)
    ClearGui $w

Added src/Functions/DisplayCoalescePerformersGui.tcl.

















































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
###############################################################################
##                                                                           ##
##  Copyright (c) 2012 Gerald W. Lester                                      ##
##  All rights reserved.                                                     ##
##                                                                           ##
##  Redistribution and use in source and binary forms, with or without       ##
##  modification, are permitted provided that the following conditions       ##
##  are met:                                                                 ##
##                                                                           ##
##    * Redistributions of source code must retain the above copyright       ##
##      notice, this list of conditions and the following disclaimer.        ##
##    * Redistributions in binary form must reproduce the above              ##
##      copyright notice, this list of conditions and the following          ##
##      disclaimer in the documentation and/or other materials provided      ##
##      with the distribution.                                               ##
##    * Neither the name of the Visiprise Software, Inc nor the names        ##
##      of its contributors may be used to endorse or promote products       ##
##      derived from this software without specific prior written            ##
##      permission.                                                          ##
##                                                                           ##
##  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS      ##
##  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT        ##
##  LIMITED  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS       ##
##  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE           ##
##  COPYRIGHT OWNER OR  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,     ##
##  INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,    ##
##  BUT NOT LIMITED TO,  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;        ##
##  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER         ##
##  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT       ##
##  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR  OTHERWISE) ARISING IN       ##
##  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF  ADVISED OF THE         ##
##  POSSIBILITY OF SUCH DAMAGE.                                              ##
##                                                                           ##
###############################################################################

###########################################################################
#
# Procedure Header - as this procedure is modified, please be sure
#                           that you update this header block. Thanks.
#
# Procedure Name : DisplayCoalescePerformersGui
#
# Description : Display the Coalesce Performers dialog box.
#
# Arguments :   None
#
# Returns : Nothing
#
# Side-Effects : None
#
# Exception Conditions : None
#
# Pre-requisite Conditions : A show must have been selected in the Show tab.
#
# Original Author : Gerald W. Lester
#
###########################################################################
proc DisplayCoalescePerformersGui {} {
    ::log::log debug "[string repeat { } [info level]][info level 0]"
    variable windows
    variable CoalescePerformersGui
    variable systemInfo

    BuildCoalescePerformersGui
    set w $windows(CoalescePerformersGui,listView)
    $w delete [$w children {}]
    set c $windows(CoalescePerformersGui,detailView)
    $c delete all
    foreach childFrame [info command $c.*] {
        destroy $childFrame
    }
    set recordNumber 0
    db eval {
        select firstname, lastname, recordcount
            from DuplicatePerformers
    } dbArr {
        incr recordNumber
        set id [format {Record_%d} $recordNumber]
        $w insert {} end \
            -id $id \
            -values [list $id $dbArr(firstname) $dbArr(lastname) $dbArr(recordcount)] \
            -text $recordNumber
    }

    catch {SortCoalescePerformersListView}
    $windows(CoalescePerformersGui,coalesceButton) configure -state disabled
    return;
}

proc DisplaySelectedPerformerRecords {} {
    ::log::log debug "[string repeat { } [info level]][info level 0]"
    variable windows
    variable CoalescePerformersGui
    variable PerformerColList
    variable PerformerReadOnly

    set w $windows(CoalescePerformersGui,listView)
    set selectedNode [lindex [$w selection] 0]
    if {$selectedNode eq {}} {
        return;
    }

    set c $windows(CoalescePerformersGui,detailView)
    $c delete all
    foreach childFrame [info command $c.*] {
        destroy $childFrame
    }
    lassign [$w item $selectedNode -values] id FirstName LastName RecordCount
    set startY 10
    set tmpList $PerformerReadOnly
    set PerformerReadOnly $PerformerColList
    set CoalescePerformersGui(hysellIdList) [list]
    set CoalescePerformersGui(FirstName) $FirstName
    set CoalescePerformersGui(LastName) $LastName
    db eval {
        select HysellId
            from Performers
            where FirstName = $FirstName
              and LastName = $LastName
            order by HysellId
    } dbArr {
        set hysellId $dbArr(HysellId)
        lappend CoalescePerformersGui(hysellIdList) $hysellId
        AddPerformerDetailed $hysellId $c startY
        set arrayName CoalescePerformersGui_$hysellId
        PopulatePerformerDetails $arrayName $hysellId
    }
    set CoalescePerformersGui(useRecord) {}
    set CoalescePerformersGui(hysellIdList) [join $CoalescePerformersGui(hysellIdList) {,}]

    $windows(CoalescePerformersGui,coalesceButton) configure -state disabled

    $c configure -scrollregion [$c bbox all]

    set PerformerReadOnly $tmpList

    return;
}

proc AddPerformerDetailed {hysellId canvasWidget startPosVar} {
    upvar 1 $startPosVar startPos
    variable windows

    set f $canvasWidget.performer_$hysellId
    ::ttk::frame $f -relief ridge
    $canvasWidget create window 10 $startPos -window $f -anchor nw

    ::ttk::frame $f.details -relief sunken
    ::ttk::radiobutton $f.rb \
        -text [::msgcat::mc cp,UseDetails] \
        -value $hysellId \
        -variable ::CoalescePerformersGui(useRecord) \
        -command [list $windows(CoalescePerformersGui,coalesceButton) configure -state normal]
    grid configure $f.rb -row 1 -column 1 -padx 2 -pady 2
    grid configure $f.details -row 1 -column 2 -padx 2 -pady 2 -sticky nsew
    grid columnconfigure $f $f.details -weight 1
    grid rowconfigure $f $f.details -weight 1

    set arrayName CoalescePerformersGui_$hysellId
    CreatePerformerDetailGui $f.details $arrayName

    update idletasks
    set reqHeight [winfo reqheight $f]
    # "Frame for $hysellId at $startPos for $reqHeight"
    incr startPos $reqHeight
    incr startPos 5

    return
}

proc CoalescePerformerRecords {} {
    variable CoalescePerformersGui
    #puts "in CoalescePerformerRecords"

    #parray CoalescePerformersGui
    if {$CoalescePerformersGui(useRecord) eq {}} {
        #puts {No record chosen}
        return
    }

    set HysellId $CoalescePerformersGui(useRecord)
    set ChangeList $CoalescePerformersGui(hysellIdList)
    set FirstName $CoalescePerformersGui(FirstName)
    set LastName $CoalescePerformersGui(LastName)

    db eval {
        update Casting
            set HysellId = $HysellId
            where HysellId in (
                select HysellId
                    from Performers
                    where HysellId <> $HysellId
                      and FirstName = $FirstName
                      and LastName = $LastName
            )
    }

    db eval {
        delete from Performers
            where HysellId <> $HysellId
              and FirstName = $FirstName
              and LastName = $LastName
    }

    DisplayCoalescePerformersGui
    return
}

proc SortCoalescePerformersListView {{newSortColumn {}}} {
    ::log::log debug "[string repeat { } [info level]][info level 0]"
    variable windows
    variable CoalescePerformersGui

    if {$newSortColumn ne {}} {
        if {$newSortColumn ne $CoalescePerformersGui(sortColumn,column)} {
            set CoalescePerformersGui(sortColumn,column) $newSortColumn
            set CoalescePerformersGui(sortColumn,direction) -increasing
        } elseif {$CoalescePerformersGui(sortColumn,direction) eq {-increasing}} {
            set CoalescePerformersGui(sortColumn,direction) -decreasing
        } else {
            set CoalescePerformersGui(sortColumn,direction) -increasing
        }

    }
    set sortColumn $CoalescePerformersGui(sortColumn,column)
    set direction $CoalescePerformersGui(sortColumn,direction)
    set type [dict get $CoalescePerformersGui(sortColumn,type) $sortColumn]

    set w $windows(CoalescePerformersGui,listView)
    set columnIndex [lsearch [$w cget -columns] $sortColumn]
    set sortedIdList [list]
    set sortedList [list]
    foreach id [$w children {}] {
        lappend sortedList [$w item $id -values]
    }

    set sortedList [lsort $direction $type -index $columnIndex $sortedList]
    foreach record $sortedList {
        lappend sortedIdList [lindex $record 0]
    }

    set selectedNode [lindex [$w selection] 0]
    $w children {} $sortedIdList
    if {$selectedNode ne {}} {
        $w selection set [list $selectedNode]
    }
    return
}

Changes to src/Functions/InitializeSystem.tcl.

79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
               lappend locationList $env($varName)
            }
        }
    } else {
        set locationList [list ./ $env(HOME)]
    }

    puts stdout "Location list is {$locationList}"

    foreach location $locationList {
        if {[set savedInfoFound [LoadSystemInfo $location]]} {
            set systemInfo(path) $location
            break
        }
    }
    if {![info exists systemInfo(path)]} {
        set systemInfo(path) [lindex $locationList 0]
    }
    puts stdout "Location is {$systemInfo(path)}"

    if {$restoreContext && (!$savedInfoFound || ![file exists $systemInfo(DatabaseFile)])} {
        set types {
            {{Database Files}       {.db}}
        }
        set savedInfoFound no
        set dbfn [tk_getOpenFile \







|










|







79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
               lappend locationList $env($varName)
            }
        }
    } else {
        set locationList [list ./ $env(HOME)]
    }

    #puts stdout "Location list is {$locationList}"

    foreach location $locationList {
        if {[set savedInfoFound [LoadSystemInfo $location]]} {
            set systemInfo(path) $location
            break
        }
    }
    if {![info exists systemInfo(path)]} {
        set systemInfo(path) [lindex $locationList 0]
    }
    #puts stdout "Location is {$systemInfo(path)}"

    if {$restoreContext && (!$savedInfoFound || ![file exists $systemInfo(DatabaseFile)])} {
        set types {
            {{Database Files}       {.db}}
        }
        set savedInfoFound no
        set dbfn [tk_getOpenFile \

Changes to src/Functions/SetPerformer.tcl.

138
139
140
141
142
143
144
145
146
147
148
149
150
151



152

153
154
155
156
157
158
159
# Exception Conditions : None
#
# Pre-requisite Conditions : None
#
# Original Author : Gerald W. Lester
#
###########################################################################
proc PopulatePerformerDetails {arrayName} {
    ::log::log debug "[string repeat { } [info level]][info level 0]"
    variable systemInfo
    upvar #0 $arrayName displayArray
    variable PerformerColList

    array unset displayArray



    set performer $systemInfo(PerformerSelection)

    if {[string equal $performer {}]} {
        foreach item $PerformerColList {
            set displayArray($item) {}
        }
    } else {
        db eval {
            select * from Performers where HysellId = trim($performer)







|






>
>
>
|
>







138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# Exception Conditions : None
#
# Pre-requisite Conditions : None
#
# Original Author : Gerald W. Lester
#
###########################################################################
proc PopulatePerformerDetails {arrayName {forPerformer {}}} {
    ::log::log debug "[string repeat { } [info level]][info level 0]"
    variable systemInfo
    upvar #0 $arrayName displayArray
    variable PerformerColList

    array unset displayArray
    if {$forPerformer ne {}} {
        set performer $forPerformer
    } else {
        set performer $systemInfo(PerformerSelection)
    }
    if {[string equal $performer {}]} {
        foreach item $PerformerColList {
            set displayArray($item) {}
        }
    } else {
        db eval {
            select * from Performers where HysellId = trim($performer)

Changes to src/Guis/AuditionEntryGui.tcl.

109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
    set w [toplevel .auditionEntryGui]
    set windows(AuditionEntryGui) $w
    set windows(AuditionEntryGuiMenu) $w.menuBar
    menu $windows(AuditionEntryGuiMenu)
    $windows(AuditionEntryGui) configure -menu $windows(AuditionEntryGuiMenu)
    wm title $windows(AuditionEntryGui) {Ballet Hysell Audtion Entry Screen}
    wm protocol $windows(AuditionEntryGui) WM_DELETE_WINDOW [list CloseAuditionEntryGui $w]
    parray systemInfo
    if {![string equal $systemInfo(Mode) AuditionEntryOnly]} {
        wm transient $w .
        wm maxsize $windows(AuditionEntryGui) [winfo screenwidth $windows(Main)] [winfo screenheight $windows(Main)]
    } else {
        wm maxsize $windows(AuditionEntryGui) [winfo screenwidth .] [winfo screenheight .]
        BuildAuditionMenu $w.menuBar
    }







|







109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
    set w [toplevel .auditionEntryGui]
    set windows(AuditionEntryGui) $w
    set windows(AuditionEntryGuiMenu) $w.menuBar
    menu $windows(AuditionEntryGuiMenu)
    $windows(AuditionEntryGui) configure -menu $windows(AuditionEntryGuiMenu)
    wm title $windows(AuditionEntryGui) {Ballet Hysell Audtion Entry Screen}
    wm protocol $windows(AuditionEntryGui) WM_DELETE_WINDOW [list CloseAuditionEntryGui $w]
    #parray systemInfo
    if {![string equal $systemInfo(Mode) AuditionEntryOnly]} {
        wm transient $w .
        wm maxsize $windows(AuditionEntryGui) [winfo screenwidth $windows(Main)] [winfo screenheight $windows(Main)]
    } else {
        wm maxsize $windows(AuditionEntryGui) [winfo screenwidth .] [winfo screenheight .]
        BuildAuditionMenu $w.menuBar
    }

Added src/Guis/BuildCoalescePerformersGui.tcl.

































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
proc BuildCoalescePerformersGui {} {
    ::log::log debug "[string repeat { } [info level]][info level 0]"
    variable windows
    variable CoalescePerformersGui

    set w .coalescePerformersGui
    set windows(CoalescePerformersGui,toplevel) $w

    if {[winfo exists $w]} {
        wm deiconify $w
        raise $w
        return;
    }

    set f $w.frame
    toplevel $w
    wm title $w [::msgcat::mc cp,Title]
    ::ttk::frame $f
    grid configure $f -sticky nsew
    grid columnconfigure $w $f -weight 1
    grid rowconfigure $w $f -weight 1

    ::ttk::panedwindow $f.pw \
        -orient vertical
    ::ttk::frame $f.buttons

    grid configure $f.pw -sticky nsew
    grid configure $f.buttons -sticky ew
    grid columnconfigure $f $f.pw -weight 1
    grid rowconfigure $f $f.pw -weight 1

    ::ttk::labelframe $f.pw.list \
        -text [::msgcat::mc cp,PerformersListTitle] \
        -labelanchor nw

    ::ttk::labelframe $f.pw.details \
        -text [::msgcat::mc cp,PerformerDetailsTitle] \
        -labelanchor nw
    $f.pw insert end $f.pw.list
    $f.pw insert end $f.pw.details

    set windows(CoalescePerformersGui,listView)  $f.pw.list.data
    ::ttk::treeview $f.pw.list.data \
        -xscrollcommand [list $f.pw.list.hsb set] \
        -yscrollcommand [list $f.pw.list.vsb set] \
        -columns {id FirstName LastName RecordCount} \
        -displaycolumns {FirstName LastName RecordCount} \
        -show headings \
        -selectmode browse
    ::ttk::scrollbar $f.pw.list.hsb \
        -orient horizontal \
        -command [list $f.pw.list.data xview]
    ::ttk::scrollbar $f.pw.list.vsb \
        -orient vertical \
        -command [list $f.pw.list.data yview]
    bind $f.pw.list.data <<TreeviewSelect>> DisplaySelectedPerformerRecords
    grid configure $f.pw.list.data $f.pw.list.vsb -sticky nsew
    grid configure $f.pw.list.hsb -sticky ew
    grid columnconfigure $f.pw.list $f.pw.list.data -weight 1
    grid rowconfigure $f.pw.list $f.pw.list.data -weight 1
    foreach col {id FirstName LastName RecordCount} {
        $f.pw.list.data column $col \
            -stretch yes
        $f.pw.list.data heading $col \
            -anchor n \
            -text [::msgcat::mc $col] \
            -command [list SortCoalescePerformersListView $col]
    }

    set windows(CoalescePerformersGui,detailView) $f.pw.details.canvas
    canvas $f.pw.details.canvas \
        -xscrollcommand [list $f.pw.details.hsb set] \
        -yscrollcommand [list $f.pw.details.vsb set]
    ::ttk::scrollbar $f.pw.details.hsb \
        -orient horizontal \
        -command [list $f.pw.details.canvas xview]
    ::ttk::scrollbar $f.pw.details.vsb \
        -orient vertical \
        -command [list $f.pw.details.canvas yview]
    ::ttk::frame $f.pw.details.buttons
    set windows(CoalescePerformersGui,coalesceButton) $f.pw.details.buttons.coalesce
    ::ttk::button $f.pw.details.buttons.coalesce \
        -text [::msgcat::mc coalesce] \
        -state disable \
        -command CoalescePerformerRecords
    grid configure $f.pw.details.buttons.coalesce -row 1 -column 2
    grid columnconfigure $f.pw.details.buttons {1 3} -weight 1
    grid configure $f.pw.details.canvas $f.pw.details.vsb -sticky nsew
    grid configure $f.pw.details.hsb -sticky ew
    grid configure $f.pw.details.buttons - -sticky ew
    grid columnconfigure $f.pw.details $f.pw.details.canvas -weight 1
    grid rowconfigure $f.pw.details $f.pw.details.canvas -weight 1


    ::ttk::button $f.buttons.done \
        -text [::msgcat::mc Close] \
        -command [list wm withdraw $w]
    wm protocol $w WM_DELETE_WINDOW [list $f.buttons.done invoke]
    grid configure $f.buttons.done -row 1 -column 2
    grid columnconfigure $f.buttons {1 3} -weight 1

    set CoalescePerformersGui(sortColumn,column) LastName
    set CoalescePerformersGui(sortColumn,direction) -increasing
    set CoalescePerformersGui(sortColumn,type) {
        id -dictionary
        FirstName -ascii
        LastName -ascii
        RecordCount -integer
    }

    return;
}

Changes to src/Guis/CreatePerformerDetailGui.tcl.

78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
    $w.ent_BirthDate configure \
        -validate focusout \
        -validatecommand [list ValidateDate $arrayName %s] \
        -invalidcommand [list InvalidDate %W]
    set row 1
    set col 0
    ::ttk::frame $w.top
    grid configure $w.top -sticky ew -columnspan 8
    set item HysellId
    ::ttk::label $w.top.lbl_$item -text [::msgcat::mc $item]
    ::ttk::entry $w.top.ent_$item -textvariable ${arrayName}($item) -state readonly
    grid configure $w.top.lbl_$item -row $row -column [incr col] -sticky ew
    grid configure $w.top.ent_$item -row $row -column [incr col] -sticky ew
    foreach item {Active Report} {
        if {$item in $PerformerReadOnly} {
            set state disabled
        } else {
            set state normal
        }
        ttk::checkbutton $w.top.cb_$item \
            -onvalue {Y} \
            -offvalue {N} \
            -state $state \
            -text [::msgcat::mc $item] \
            -variable ${arrayName}($item)
        grid configure $w.top.cb_$item -row $row -column [incr col] -sticky ew
    }
    grid columnconfigure $w.top 5 -weight 1

    if {$systemInfo(isAndroid)} {
        incr row
        set col 0
        foreach item {FirstName LastName} {
            grid configure $w.lbl_$item -row $row -column [incr col] -sticky ew
            grid configure $w.ent_$item -row $row -column [incr col] -sticky ew
        }
        incr row
        set col 0
        foreach item {BirthDate EmailAddress} {
            grid configure $w.lbl_$item -row $row -column [incr col] -sticky ew
            grid configure $w.ent_$item -row $row -column [incr col] -sticky ew
        }
    } else {
        incr row
        set col 0
        foreach item {FirstName LastName BirthDate EmailAddress} {
            grid configure $w.lbl_$item -row $row -column [incr col] -sticky ew
            grid configure $w.ent_$item -row $row -column [incr col] -sticky ew
        }

    }

    incr row
    set col 0
    set expandList {}
    foreach item {Address City State ZipCode} {
        grid configure $w.lbl_$item -row $row -column [incr col] -sticky ew
        grid configure $w.ent_$item -row $row -column [incr col] -sticky ew
        lappend expandList $w.ent_$item
    }

    incr row
    set col 0
    foreach item {School DancingSchool} {
        grid configure $w.lbl_$item -row $row -column [incr col] -sticky ew
        grid configure $w.ent_$item -row $row -column [incr col] -sticky ew
    }


    incr row
    set col 0
    foreach item {ParentName ParentLast PhoneNumber MobileNumber} {
        grid configure $w.lbl_$item -row $row -column [incr col] -sticky ew
        grid configure $w.ent_$item -row $row -column [incr col] -sticky ew
    }

    incr row
    set col 0
    foreach item {ParentName2 ParentLast2 PhoneNumber2 MobileNumber2} {
        grid configure $w.lbl_$item -row $row -column [incr col] -sticky ew
        grid configure $w.ent_$item -row $row -column [incr col] -sticky ew
    }

    incr row
    set col 0
    set item Notes
    grid configure $w.lbl_$item -row $row -column [incr col] -sticky ew
    grid configure $w.ent_$item -row $row -column [incr col] -sticky ew -columnspan 7

    ::ttk::frame $w.userdata
    grid configure $w.userdata -sticky ew -columnspan 8

    ::ttk::frame $w.buttons
    grid configure $w.buttons -sticky ew -columnspan 8

    grid columnconfigure $w $expandList -weight 1
    grid rowconfigure $w $w.userdata -weight 1

}









|



|
|












|







|
|




|
|





|
|








|
|






|
|






|
|





|
|





|
|


|


|







78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
    $w.ent_BirthDate configure \
        -validate focusout \
        -validatecommand [list ValidateDate $arrayName %s] \
        -invalidcommand [list InvalidDate %W]
    set row 1
    set col 0
    ::ttk::frame $w.top
    grid configure $w.top -sticky ew -columnspan 8 -padx 2 -pady 2
    set item HysellId
    ::ttk::label $w.top.lbl_$item -text [::msgcat::mc $item]
    ::ttk::entry $w.top.ent_$item -textvariable ${arrayName}($item) -state readonly
    grid configure $w.top.lbl_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
    grid configure $w.top.ent_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
    foreach item {Active Report} {
        if {$item in $PerformerReadOnly} {
            set state disabled
        } else {
            set state normal
        }
        ttk::checkbutton $w.top.cb_$item \
            -onvalue {Y} \
            -offvalue {N} \
            -state $state \
            -text [::msgcat::mc $item] \
            -variable ${arrayName}($item)
        grid configure $w.top.cb_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
    }
    grid columnconfigure $w.top 5 -weight 1

    if {$systemInfo(isAndroid)} {
        incr row
        set col 0
        foreach item {FirstName LastName} {
            grid configure $w.lbl_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
            grid configure $w.ent_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
        }
        incr row
        set col 0
        foreach item {BirthDate EmailAddress} {
            grid configure $w.lbl_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
            grid configure $w.ent_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
        }
    } else {
        incr row
        set col 0
        foreach item {FirstName LastName BirthDate EmailAddress} {
            grid configure $w.lbl_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
            grid configure $w.ent_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
        }

    }

    incr row
    set col 0
    set expandList {}
    foreach item {Address City State ZipCode} {
        grid configure $w.lbl_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
        grid configure $w.ent_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
        lappend expandList $w.ent_$item
    }

    incr row
    set col 0
    foreach item {School DancingSchool} {
        grid configure $w.lbl_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
        grid configure $w.ent_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
    }


    incr row
    set col 0
    foreach item {ParentName ParentLast PhoneNumber MobileNumber} {
        grid configure $w.lbl_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
        grid configure $w.ent_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
    }

    incr row
    set col 0
    foreach item {ParentName2 ParentLast2 PhoneNumber2 MobileNumber2} {
        grid configure $w.lbl_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
        grid configure $w.ent_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
    }

    incr row
    set col 0
    set item Notes
    grid configure $w.lbl_$item -row $row -column [incr col] -sticky ew -padx 2 -pady 2
    grid configure $w.ent_$item -row $row -column [incr col] -sticky ew -columnspan 7 -padx 2 -pady 2

    ::ttk::frame $w.userdata
    grid configure $w.userdata -sticky ew -columnspan 8 -padx 2 -pady 2

    ::ttk::frame $w.buttons
    grid configure $w.buttons -sticky ew -columnspan 8 -padx 2 -pady 2

    grid columnconfigure $w $expandList -weight 1
    grid rowconfigure $w $w.userdata -weight 1

}


Changes to src/Guis/MainWindow.tcl.

259
260
261
262
263
264
265




266
267
268
269
270
271
272
    menu $menuWidget.tools
    $menuWidget.tools add command \
        -label {Costume Entry Screen} \
        -command DisplayCostumeEntryGui
    $menuWidget.tools add cascade \
        -label {Audition Entry Screen} \
        -menu $menuWidget.tools.audition




    menu $menuWidget.tools.audition
    $menuWidget.tools.audition add command \
        -label {Audition Entry Screen} \
        -command DisplayAuditionEntryGui
    $menuWidget.tools.audition add checkbutton \
        -label [::msgcat::mc EnterAuditionNumber] \
        -underline 1 \







>
>
>
>







259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
    menu $menuWidget.tools
    $menuWidget.tools add command \
        -label {Costume Entry Screen} \
        -command DisplayCostumeEntryGui
    $menuWidget.tools add cascade \
        -label {Audition Entry Screen} \
        -menu $menuWidget.tools.audition
    $menuWidget.tools add separator
    $menuWidget.tools add command \
        -label {Coalesce Performer Records...} \
        -command DisplayCoalescePerformersGui
    menu $menuWidget.tools.audition
    $menuWidget.tools.audition add command \
        -label {Audition Entry Screen} \
        -command DisplayAuditionEntryGui
    $menuWidget.tools.audition add checkbutton \
        -label [::msgcat::mc EnterAuditionNumber] \
        -underline 1 \

Changes to src/Upgrades/CurrentVersion.tcl.

38
39
40
41
42
43
44
45
46
47
48
##
## This is used to deal with database and initalization file upgrades.
##
## NOTE -- in a release all of the version numbers may or may not change,
#          only the Code version number has to change with every release.
##
array set CurrentVersion {
    InitFile    0.7.0
    Database    0.7.0
    Code        0.7.0
}







|
|
|

38
39
40
41
42
43
44
45
46
47
48
##
## This is used to deal with database and initalization file upgrades.
##
## NOTE -- in a release all of the version numbers may or may not change,
#          only the Code version number has to change with every release.
##
array set CurrentVersion {
    InitFile    0.8.0
    Database    0.8.0
    Code        0.8.0
}

Changes to src/Upgrades/Database/CreateDatabase.sql.

61
62
63
64
65
66
67

















68
69
70
71
72
73
74
...
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
    ParentLast2 TEXT
);
CREATE TABLE Show (
    ShowID TEXT,
    ShowDescription TEXT,
    ShowClass TEXT
);



















CREATE VIEW CastingView as
    select distinct s.ShowID "ShowId",
            s.ShowDescription "ShowDescription",
            s.ShowClass "ShowClass",
            p.HysellId "HysellId",
................................................................................
            p.ParentName2,
            p.ParentLast2,
            p.PhoneNumber2,
            p.MobileNumber2,
            p.EmailAddress2
    FROM Show s, Performers p, Casting c
    WHERE s.ShowID = c.ShowId AND c.HysellId = p.HysellId;
CREATE TABLE ReportDefinitions (
    ReportName      Text,
    ReportType      Text,
    ReportSql       Text,
    UserDefined     Boolean,
    ReportColumns   Text,
    Restrictions    Test,
    InitalFile      Test,
    PrependShowId   Boolean,
    Title           Text,
    Description     Text
);
CREATE TABLE UpgradeInfo (
    UpgradedOn  datetime,
    FromVersion text,
    ToVersion   text
);







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







|
|
|
|
|
|
|
|
<
<
<
<
<
<
<
<
<
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
...
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225









    ParentLast2 TEXT
);
CREATE TABLE Show (
    ShowID TEXT,
    ShowDescription TEXT,
    ShowClass TEXT
);
CREATE TABLE ReportDefinitions (
    ReportName      Text,
    ReportType      Text,
    ReportSql       Text,
    UserDefined     Boolean,
    ReportColumns   Text,
    Restrictions    Test,
    InitalFile      Test,
    PrependShowId   Boolean,
    Title           Text,
    Description     Text
);
CREATE TABLE UpgradeInfo (
    UpgradedOn  datetime,
    FromVersion text,
    ToVersion   text
);


CREATE VIEW CastingView as
    select distinct s.ShowID "ShowId",
            s.ShowDescription "ShowDescription",
            s.ShowClass "ShowClass",
            p.HysellId "HysellId",
................................................................................
            p.ParentName2,
            p.ParentLast2,
            p.PhoneNumber2,
            p.MobileNumber2,
            p.EmailAddress2
    FROM Show s, Performers p, Casting c
    WHERE s.ShowID = c.ShowId AND c.HysellId = p.HysellId;
CREATE VIEW DuplicatePerformers AS
    SELECT  FirstName AS FirstName,
            LastName AS LastName,
            count(*) AS RecordCount
        FROM Performers
        GROUP BY FirstName, LastName
        HAVING count(*) > 1
        ORDER BY LastName, FirstName;









Changes to src/Upgrades/Database/From_0.6.0_To_0.7.0.tcl.

38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
namespace eval  ::ApplyUpgrades::Database:: {}

###########################################################################
#
# Procedure Header - as this procedure is modified, please be sure
#                           that you update this header block. Thanks.
#
# Procedure Name : ::ApplyUpgrades::Database::From_0.5.0_To_0.6.0
#
# Description : Upgrade the database from 0.5.0 to 0.6.0. This entails the following:
#                   Creating the Clients and ClientHysellMap table.
#
# Arguments : None
#
# Returns : Upgraded version number
#
# Side-Effects : None
#







|

|
|







38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
namespace eval  ::ApplyUpgrades::Database:: {}

###########################################################################
#
# Procedure Header - as this procedure is modified, please be sure
#                           that you update this header block. Thanks.
#
# Procedure Name : ::ApplyUpgrades::Database::From_0.6.0_To_0.7.0
#
# Description : Upgrade the database from 0.6.0 to 0.7.0. This entails the following:
#                   Creating the CostumePreview view..
#
# Arguments : None
#
# Returns : Upgraded version number
#
# Side-Effects : None
#

Added src/Upgrades/Database/From_0.7.0_To_0.8.0.tcl.

































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
###############################################################################
##                                                                           ##
##  Copyright (c) 2012 Gerald W. Lester                                      ##
##  All rights reserved.                                                     ##
##                                                                           ##
##  Redistribution and use in source and binary forms, with or without       ##
##  modification, are permitted provided that the following conditions       ##
##  are met:                                                                 ##
##                                                                           ##
##    * Redistributions of source code must retain the above copyright       ##
##      notice, this list of conditions and the following disclaimer.        ##
##    * Redistributions in binary form must reproduce the above              ##
##      copyright notice, this list of conditions and the following          ##
##      disclaimer in the documentation and/or other materials provided      ##
##      with the distribution.                                               ##
##    * Neither the name of the Visiprise Software, Inc nor the names        ##
##      of its contributors may be used to endorse or promote products       ##
##      derived from this software without specific prior written            ##
##      permission.                                                          ##
##                                                                           ##
##  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS      ##
##  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT        ##
##  LIMITED  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS       ##
##  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE           ##
##  COPYRIGHT OWNER OR  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,     ##
##  INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,    ##
##  BUT NOT LIMITED TO,  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;        ##
##  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER         ##
##  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT       ##
##  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR  OTHERWISE) ARISING IN       ##
##  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF  ADVISED OF THE         ##
##  POSSIBILITY OF SUCH DAMAGE.                                              ##
##                                                                           ##
###############################################################################

set ::ApplyUpgrades::UpgradeScripts(Database,0.7.0) ::ApplyUpgrades::Database::From_0.7.0_To_0.8.0

namespace eval  ::ApplyUpgrades::Database:: {}

###########################################################################
#
# Procedure Header - as this procedure is modified, please be sure
#                           that you update this header block. Thanks.
#
# Procedure Name : ::ApplyUpgrades::Database::From_0.7.0_To_0.8.0
#
# Description : Upgrade the database from 0.7.0 to 0.8.0. This entails the following:
#                   Creating the DuplicatePerformers view.
#
# Arguments : None
#
# Returns : Upgraded version number
#
# Side-Effects : None
#
# Exception Conditions : None
#
# Pre-requisite Conditions : None
#
# Original Author : Gerald W. Lester
#
###########################################################################
proc ::ApplyUpgrades::Database::From_0.7.0_To_0.8.0 {} {
    ##
    ## Define the Costume Preview View
    ##
    db eval {
        CREATE VIEW DuplicatePerformers AS
            SELECT  FirstName AS FirstName,
                    LastName AS LastName,
                    count(*) AS RecordCount
                FROM Performers
                GROUP BY FirstName, LastName
                HAVING count(*) > 1
                ORDER BY LastName, FirstName
    }


    return {0.8.0}
}

Changes to src/Upgrades/InitFile/From_0.6.0_To_0.7.0.tcl.

36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
set ::ApplyUpgrades::UpgradeScripts(InitFile,0.6.0) ::ApplyUpgrades::InitFile::From_0.6.0_To_0.7.0

###########################################################################
#
# Procedure Header - as this procedure is modified, please be sure
#                           that you update this header block. Thanks.
#
# Procedure Name : InitFile::From_0.5.0_To_0.6.0
#
# Description : Add additional entry to the initialization file for version number.
#
# Arguments : None.
#
# Returns : Upgraded version number
#







|







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
set ::ApplyUpgrades::UpgradeScripts(InitFile,0.6.0) ::ApplyUpgrades::InitFile::From_0.6.0_To_0.7.0

###########################################################################
#
# Procedure Header - as this procedure is modified, please be sure
#                           that you update this header block. Thanks.
#
# Procedure Name : InitFile::From_0.6.0_To_7.6.0
#
# Description : Add additional entry to the initialization file for version number.
#
# Arguments : None.
#
# Returns : Upgraded version number
#

Added src/Upgrades/InitFile/From_0.7.0_To_0.8.0.tcl.





































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
###############################################################################
##                                                                           ##
##  Copyright (c) 2012 Gerald W. Lester                                      ##
##  All rights reserved.                                                     ##
##                                                                           ##
##  Redistribution and use in source and binary forms, with or without       ##
##  modification, are permitted provided that the following conditions       ##
##  are met:                                                                 ##
##                                                                           ##
##    * Redistributions of source code must retain the above copyright       ##
##      notice, this list of conditions and the following disclaimer.        ##
##    * Redistributions in binary form must reproduce the above              ##
##      copyright notice, this list of conditions and the following          ##
##      disclaimer in the documentation and/or other materials provided      ##
##      with the distribution.                                               ##
##    * Neither the name of the Visiprise Software, Inc nor the names        ##
##      of its contributors may be used to endorse or promote products       ##
##      derived from this software without specific prior written            ##
##      permission.                                                          ##
##                                                                           ##
##  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS      ##
##  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT        ##
##  LIMITED  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS       ##
##  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE           ##
##  COPYRIGHT OWNER OR  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,     ##
##  INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,    ##
##  BUT NOT LIMITED TO,  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;        ##
##  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER         ##
##  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT       ##
##  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR  OTHERWISE) ARISING IN       ##
##  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF  ADVISED OF THE         ##
##  POSSIBILITY OF SUCH DAMAGE.                                              ##
##                                                                           ##
###############################################################################

set ::ApplyUpgrades::UpgradeScripts(InitFile,0.7.0) ::ApplyUpgrades::InitFile::From_0.7.0_To_0.8.0

###########################################################################
#
# Procedure Header - as this procedure is modified, please be sure
#                           that you update this header block. Thanks.
#
# Procedure Name : InitFile::From_0.7.0_To_0.8.0
#
# Description : Add additional entry to the initialization file for version number.
#
# Arguments : None.
#
# Returns : Upgraded version number
#
# Side-Effects : None
#
# Exception Conditions : None
#
# Pre-requisite Conditions : None
#
# Original Author : Gerald W. Lester
#
###########################################################################
proc ::ApplyUpgrades::InitFile::From_0.7.0_To_0.8.0 {} {
    global systemInfo

    set systemInfo(InitFile) {0.8.0}

    return {0.8.0}
}

Changes to src/msgcat/en.msg.

37
38
39
40
41
42
43





44
45
46
47
48
49
50
51
52
53

54
55
56
57
58
59
60
    tm,Title,Show {Show Table Maintenance}
    tm,Title,characters {Character Classes Table Maintenance}
    tm,Title,Performers {Performers Table Maintenance}
    status,Searching {Searching for server...}
    status,Registering {Registering Client...}
    status,Downloading {Getting initial data from server %1$s:%2$s}
    status,Uploading {Uploading Database...}





    addSelected {<}
    addAll {<<}
    removeSelected {>}
    removeAll {>>}
    New     {New}
    Delete  {Delete}
    Save    {Save}
    Revert  {Revert}
    Clear   {Clear}
    Close   {Close}

    RowNumber {Row Number}
    HysellId {Performer ID}
    FirstName {First Name}
    LastName {Last Name}
    BirthDate {Birth Date}
    ParentName {Mother's First}
    ParentLast {Last}







>
>
>
>
>










>







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
    tm,Title,Show {Show Table Maintenance}
    tm,Title,characters {Character Classes Table Maintenance}
    tm,Title,Performers {Performers Table Maintenance}
    status,Searching {Searching for server...}
    status,Registering {Registering Client...}
    status,Downloading {Getting initial data from server %1$s:%2$s}
    status,Uploading {Uploading Database...}
    cp,Title {Coalesce Performers}
    cp,PerformersListTitle {Performers With Multiple Records}
    cp,PerformerDetailsTitle {Detailed Records}
    cp,UseDetails "Use\nThese\nDetails"
    coalesce {Coalesce}
    addSelected {<}
    addAll {<<}
    removeSelected {>}
    removeAll {>>}
    New     {New}
    Delete  {Delete}
    Save    {Save}
    Revert  {Revert}
    Clear   {Clear}
    Close   {Close}
    RecordCount {Record Count}
    RowNumber {Row Number}
    HysellId {Performer ID}
    FirstName {First Name}
    LastName {Last Name}
    BirthDate {Birth Date}
    ParentName {Mother's First}
    ParentLast {Last}