::switch -- $::tcl_platform(platform) { "windows" { ::set ::rwb1_debug 0; } "unix" { ::set ::rwb1_debug 0; } } ::proc ::/* {args} { ::if {[::llength $args]!=1} { ::qw::stack_dump; ::puts "args==$args"; ::error ".bug_id 314120080616145439 .text {Invalid args to /* */ comment statement.} .priority bug"; } }; # */ ::if {![::info exists ::tcl_platform(threaded)]} { ::set ::tcl_platform(threaded) 0; } ::if {![::info exists ::tcl_platform(pointerSize)]} { ::set ::tcl_platform(pointerSize) 4; } ::if {$::tcl_platform(pointerSize)==8} { ::set ::rwb1_debug 0; } ::if {$::rwb1_debug} { ::puts "run at: [::clock format [::clock seconds] -format {%d-%b-%Y %H:%M:%S}]"; ::puts "tcl_patchLevel==$::tcl_patchLevel"; } ::if {0} { ::rename ::package ::package_qw; ::proc ::package {args} { ::if {[::lindex $args 0] eq "require"} { ::set Package [::lindex $args 1]; ::puts "rwb1_debug,package require,1000.0,args==$args"; ::qw::try { ::set Result [::eval ::package_qw $args]; } catch Exception { ::puts "rwb1_debug,package require,1000.1,Exception==$Exception"; ::qw::throw $Exception; } ::puts "rwb1_debug,package require,1000.99,result==$Result,args==$args"; ::return $Result; } return [::eval ::package_qw $args]; } } ::if {0} { ::array set ::qw::loaded_package_array {}; ::rename ::package ::package_qw; ::proc ::package {args} { ::if {[::lindex $args 0] eq "require"} { ::set Package [::lindex $args 1]; ::if {$Package eq "-exact"} { ::set Package [::lindex $args 2]; } ::if {![::info exists ::qw::loaded_package_array($Package)]} { ::set Milli [::clock clicks -milliseconds]; ::qw::try { ::set Result [::eval ::package_qw $args]; } catch Exception { ::qw::throw $Exception; } ::set Milli [::expr {[::clock clicks -milliseconds]-$Milli}]; ::set ::qw::loaded_package_array($Package) $Milli; ::return $Result; } } return [::eval ::package_qw $args]; } ::proc ::qw::debug_dump_package_require_stats {} { ::set List0 [::array get ::qw::loaded_package_array]; ::set List1 [::list]; ::foreach {Name Value} $List0 { ::lappend List1 [::list $Name $Value]; } ::set List2 [::lsort -index end -integer -decreasing $List1]; ::foreach Item $List2 { ::puts "Package,[::lindex $Item 1],[::lindex $Item 0]"; } } } ::switch -- $::tcl_version { 8.4 { ::set ::tcl_platform(pointerSize) 4; } 8.6 { } } ::proc ::// {args} { ::qw::stack_dump; ::puts "Deprecated: The // comment command is too dangerous."; ::puts "Comment:\"$args\""; } ::namespace eval ::qw {} ::namespace eval ::QW {} ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.0.0,::argv==$::argv";} ::set ::qw::control(run_as_service) 0; # set directly below ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.0.1";} ::switch -- $::tcl_platform(platform) { "windows" { } "macintosh" { ::error "[::string tolower [::info nameofexecutable]] is not implemented on platform \"$::tcl_platform(platform)\"."; } "unix" { } default { ::error "[::string tolower [::info nameofexecutable]] is not implemented on platform \"$::tcl_platform(platform)\"."; } } ::set ::qw::control(crm_include) 0; ::set ::qw::control(server_multi_port) 0; ::set ::qw_version_major [::lindex [::split $::qw_version "."] 0]; ::set ::qw_version_minor [::lindex [::split $::qw_version "."] 1]; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.0.2";} ::set ::qw::control(tcp_default_port_number) 7890; ::switch -- $::tcl_version { 8.4 { ::set ::qw::control(preload_packages) 0; } 8.5 { ::set ::qw::control(preload_packages) 0; } 8.6 { ::set ::qw::control(preload_packages) 0; } default { ::set ::qw::control(preload_packages) 0; } } ::set ::qw::control(serial_is_internal) 0; ::set ::qw::control(ifs_range_keep_uptodate) 0; ::set ::qw::control(is_avoiding_date_range_errors) 0; ::set ::qw::control(closure_shortcut) 1; ::set ::qw::control(encryption_checksum_check_is_enabled) 1; # Turning this off enables us to muck with file headers and program.qw_reg. ::set ::qw::control(keynumber_from_locknumber_is_enabled) 1; ::set ::qw::control(registration_policy_is_enabled) 1; ::set ::qw::control(odb_observer_signal_pruning_is_enabled) 1; ::set ::qw::control(shutdown_shortcut) 1; ::if {[::string match "benn*" [::info hostname]]} { ::set ::qw::control(shutdown_shortcut) 0; #// turned off while debugging no_signal } ::set ::qw::control(is_avoiding_bugs) 1; ::set ::qw::control(progress_is_enabled) 1; # Progress windows, actually we have implemented the shortcut on this yet ::set ::qw::control(odb_destruction_is_hardened) 1; ::set ::qw::control(odb_destroyed_objects_are_not_found) 0; ::set ::qw::control(odb_have_manual_transactions) 0; ::set ::qw::control(odb_security_check_access_existence_only) 1; ::set ::qw::control(odb_tcl_definition_is_discarded) 0; ::set ::qw::control(dump_method_calls) 0; ::set ::qw::control(evaluation_limit) 1000; ::set ::qw::control(workstation_can_open_same_database_more_than_once) 0; ::set ::qw::control(progress_window_disable_count) 0; ::set ::qw::control(progress_window_remote_disable_count) 0; ::set ::qw::control(annual_registration_is_enabled) 0; # We no longer renew program or database registration ::set ::qw::control(gatgun_is_enabled) 1; ::set ::qw::control(gatgun_hashtable_is_enabled) 0; # has been 0 since 2.15 ::set ::qw::control(convert_208_transactions_with_bad_cents) 0; ::set ::qw::control(window_database_is_destroyed_209) 0; ::set ::qw::control(newviews_summarizing_shortcut) 1; ::set ::qw::control(application_kickout_is_disabled) 0; ::set ::qw::control(dialog_separator) 0; ::set ::qw::control(debug_flag) 0; ::set ::qw::control(account_postings_are_pruned_most) 0; ::set ::qw::control(account_postings_are_pruned_all) 0; ::set ::qw::control(journal_transactions_are_pruned_most) 0; ::set ::qw::control(journal_transactions_are_pruned_all) 0; ::set ::qw::control(journal_transactions_are_pruned_rbs) 0; ::set ::qw::control(allow_workstation_and_server) 1; #rwb_release ::set ::qw::control(server_maximum_connections_for_same_workstation) 2; ::set ::qw::control(edit_assist_reconcile_check) 1; ::set ::qw::control(help_css_file) ""; ::set ::qw::control(database_utilities_maximum_errors) 20; ::if {!$::qw::control(is_release)} { } ::set ::qw::control(ifs_cache_memory_bytes) 1; ::set ::qw::control(ifs_cache_bytes_per_record) 320; ::set ::qw::control(total_call_list_background_resolution) 8; # 2.27.3 (jrp wanted non-predictable number (i.e. prime)) ::set ::qw::control(blob_file_record_size) 16384; ::set ::qw::control(blob_file_leaf_order) 16; ::set ::qw::control(toplevel_order_changed) 1; #rwb_release order because looked wrong and tablelist stuff didn't work ::set ::qw::control(summed_fields_are_gone) 0; #rwb_release ::set ::qw::control(index_instance_files) 1; #rwb_release ::set ::qw::control(gatgun_no_nodes) 0; #rwb_release ::set ::qw::control(gatgun_minimum_blocks_disabled) 0; ::set ::qw::control(minimum_blocks_disabled) 0; ::set ::qw::control(account_history_lookup_begin_empty_is_special) 1; #rwb_release ::set ::qw::control(account_history_lookup_end_empty_is_special) 0; #rwb_release ::set ::qw::control(windows_7_installation) 1; #rwb_release ::set ::qw::control(structure_vector_limit) 10000000; ::set ::qw::control(tktable_227_2) 0; # tktable schedules using ::after ::set ::qw::control(tktable_227_3) 1; # tktable schedules using ::qw::after ::set ::qw::control(tktable_227_4) 0; # override update idletasks, handle resize ::set ::qw::control(collection_enable_ping) 0; #rwb_release ::set ::qw::control(external_dialogs) 1; ::set ::qw::control(default_window_setup_low_level) 1; ::set ::qw::control(account_history_folder) "/newviews/account_history"; ::set ::qw::control(date_extend_end_infinity) 0; #rwb_release ::set ::qw::control(ntp_system_clock_check_is_enabled) 0; ::set ::qw::control(ntp_system_clock_check_tolerance_seconds) 1200; ::set ::qw::control(spacebar_invokes_button_enabled) 1; ::set ::qw::control(less_aggressive_toplevel_raise) 0; ::set ::qw::control(edit_assist_mru_list) 1; ::set ::qw::control(edit_assist_mru_list_limit) 20; ::set ::qw::control(flat_error_messages) 1; ::if {!$::qw::control(is_release)} { ::if {[::string match "benn*" [::info hostname]]} { ::set ::qw::control(flat_error_messages) 0; } } ::set ::qw::control(use_compiled_tclkit) 0; ::set ::qw::control(ifs_dynamic_integrity_fix) 1; # writes/deletes records even when they don't match before ::set ::qw::control(fix_edit_quit_bug) 1; ::set ::qw::control(database_utilities_one_exception_per_collection) 1; ::set ::qw::control(progress_red_225) 0; # use new progress red introduced in 2.25 #rwb_release ::set ::qw::control(ifs_range_empty_versus_null_date) 1; # 2.25.3 slight change to key compare for empty versus non-specified dates ::set ::qw::control(repeatable_object_ids) 0; # this can be set by code that is being debugged #rwb1_debug rwb_release ::set ::qw::control(repeatable_database_ids) 0; #this can be set by code that is being debugged #rwb1_debug rwb_release ::set ::qw::control(database_template_import_is_running) 0; ::set ::qw::control(database_recovery_skip) 0; ::set ::qw::control(num_check) 0; # put this in so we won't need command line args ::set ::qw::control(sargs_pure_tcl) 0; # tcl sargs procs will override anything in cpp ::set ::qw::control(marshal_sargs_argument_is_enabled) 0; # 2.28.0 ::set ::qw::control(ifs_contact_duration_error_skip) 1; #2.28.0 - bug in tcl 84 exposed in 86 ::set ::qw::control(sargs_hyphen) 0; ::set ::qw::control(date_difference_warning_enabled) 1; ::set ::qw::control(tcp_tls_is_enabled) 1; ::set ::qw::control(rgi_calc_list_make_dirty) 0; # changed back to 0 on pgq request ::set ::qw::control(read_data_ready_returns_on_error) 1; ::set ::qw::control(audit_record_kickout_is_enabled) 1; # kickout audit objects as they are created ::set ::qw::control(skip_gnu_registration_check) 0; ::set ::qw::control(database_backup_logout) 1; # make *.nv2_backup_logout when database closed (last logout when multi) ::set ::qw::control(bad_block_breadcrumb) 1; # any bad_block detection marks database, then open deals with it ::set ::qw::control(qw_profile_is_enabled) 0; # rwb_release do some profiling ::set ::qw::control(bind_replace) 0; # pgq ::set ::qw::control(bind_event_log) 0; # pgq ::set ::qw::control(signal_queue_is_list) 0; # set to 1 as a test was set to 0 for release ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.0.3";} ::set ::qw::control(service_base_port_number) 9000; # find available port number starting here ::set ::qw::control(database_group) 1; ::set ::qw::control(event_surfaces) 1; ::set ::qw::control(unexpected_tcl_error) 0; ::set ::qw::control(app_name) "app_name_default"; ::set ::qw::control(connection_monitor_is_enabled) 1; ::set ::qw::control(latency_socket_upload) 0; ::set ::qw::control(latency_socket_download) 0; ::set ::qw::control(latency_plug_upload) 0; ::set ::qw::control(latency_plug_download) 0; ::set ::qw::control(tcp_compression_is_enabled) 1; ::set ::qw::control(server_database_convert_is_enabled) 0; # allow conversion of server application databases ::set ::qw::control(remote_server_self_delete_is_enabled) 0; ::set ::qw::control(connection_latency_database_open_ping_count) 0; # 10 is a good number to use. ::set ::qw::control(browser_help) 1; # use browser for help instead of .chm ::set ::qw::control(qw_manual_url) "https://newviews.com/qw_manual_webserver_root"; # get help from newviews.com ::set ::qw::control(qw_application_launch_is_disabled) 1; # mainly because of changes in help & manual ::set ::qw::control(mothership_is_enabled) 1; # send info to mothership ::if {!$::qw::control(is_release)} { ::set ::qw::control(mothership_is_enabled) 1; } ::set ::qw::control(whats_new_page_id) /618020191025111755.htm; # display after database_convert (xxx_xxx_lo.tcl) ::set ::qw::control(workstation_page_id) /150220040727103119.htm; # display after workstation create ::set ::qw::control(rework_itcl_objects_create_destroy) 1; ::set ::qw::control(sargs_empty_field_name_fix) 1; ::set ::qw::control(account_retotal_memory_blowout_fix_is_enabled) 1; ::set ::qw::control(_ifs_paf_branch_order) 256; ::set ::qw::control(ifs_paf_leaf_order) 256; ::switch -- $::tcl_platform(platform) { "windows" { ::set ::qw::control(server_interface_is_disabled) 0; ::set ::qw::control(skip_linux_problems) 0; } "unix" { ::set ::qw::control(server_interface_is_disabled) 1; ::set ::qw::control(skip_linux_problems) 1; } } ::set ::qw::control(progress_red_per_second) 1; ::set ::qw::control(file_save_confirmation_dialog) 0; ::set ::qw::control(destroy_empty_service_nodes) 1; # shut service_node processes when last connection closed ::set ::qw::control(service_shutdown_bug) 1; ::set ::qw::control(service_name) ""; ::set ::qw::control(cookie_current_null_is_allowed) 1; ::switch -glob -- [::string tolower [::info hostname]] { teacher* - "i7-3770" - "student4-pc" - peters* - quackenb* - benn* { ::set ::qw::control(cookie_current_null_is_allowed) 1; } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.0.3.0";} ::set ::qw::control(database_always_convert) 1; ::set ::qw::control(test_system_clock_failure) 0; ::set ::qw::control(test_system_clock_tolerance) 0; ::set ::qw::control(mru_list_widget_has_value) 1; ::set ::qw::control(database_open_server_is_busy) 1; ::set ::qw::control(red_progress_window_kill) 0; ::set ::qw::control(window_event_in_progress_count) 0; ::set ::qw::control(dump_plug_tcp_packets) 0; ::set ::qw::control(logout_change_is_enabled) 1; ::set ::qw::control(qw_dialog3_sargs_setup_fix) 1; ::set ::qw::control(observer_builtins_are_eliminated) 0; ::set ::qw::control(ifs_file_cache_is_enabled) 1; ::set ::qw::control(script_stack_is_enabled) 0; ::set ::qw::control(additional_info_schema_view_install) 0; ;#// must be with $::qw_version>=2.33 && additional_info_schema==1 - STILL TESTING ::set ::qw::control(new_column_menu_is_enabled) 0; ;#// 2.33 ::set ::qw::control(tcp_call_receive_elimination) 1; # project 314520191003151201; ::set ::qw::control(merge_manuals) 1; ::set ::qw::control(bug_hunt) 0; ::set ::qw::control(rwb2_debug) 0; ::set ::qw::control(allocation_tag_blowout_fix) 1; ::set ::qw::control(red_progress_semaphore_is_enabled) 1; ::set ::qw::control(help_substify) 1; ::set ::qw::control(backups_consolidate) 1; ::set ::qw::control(database_download_shortcut) 1; # use database_backup when ws/server on same computer ::set ::qw::control(binary_blob_is_enabled) 1; # rwb_release ::set ::qw::control(option_backup_database_download) 1; ::set ::qw::control(database_download_from_service_hub) 1; # download from service_hub, not service_node #rwb_release ::set ::qw::control(progress_blue_raise_is_enabled) 0; # turning off irksome blue progress in your face ::set ::qw::control(mothership_port) 443; ::set ::qw::control(auto_update_server_from_mothership_is_enabled) 0; #rwb_release ::set ::qw::control(database_backup_qw_cloud_disabled) 0; # disables backup in specific clouds based on serials ::set ::qw::control(num_uses_safe_interpreter) 1; # turned off in 2_34_9 and back on in 2_34_10 - not any more ::set ::qw::control(babyship_send_original) 1; ::set ::qw::control(rwb_absolute) 0; ::switch -- [::info hostname] { "benn_2020" { } "benn-aspire-tc-710" { } "benn7" { ::if {!$::qw::control(is_release)} { ::set ::qw::control(rwb_absolute) 0; } } } ::set ::qw::control(commandline_script_path) ""; # script run from commandline, if any. ::set ::qw::control(ignore_database_state_recovering) 1; # we can recover even if the database state is "recovering" ::set ::qw::control(process_restart_delay) 10000; ::set ::qw::control(process_list_file) [::file join $::qw_program_folder nv2_process_list.txt]; ::set ::qw::control(hub_list_file) [::file join $::qw_program_folder nv2_hub_list.txt]; ::set ::qw::control(windows_service_is_enabled) 1; # run as service when on windows otherwise ::set ::qw::control(node_is_windows_service) 1; # hub can be service but not node ::set ::qw::control(has_hub_node_channel) 1; # tried but not for now, idea is to poll process_list_file instead ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.0.3.1";} ::set ::qw::control(system_date_tolerance_is_enabled) 1; # changes to allow some tolerance on system clock ::set ::qw::control(ifs_can_call_odb) 1; # allows ifs to call some odb functions through tcl_interface ::set ::qw::control(use_gnu_sleep_function) 1; # have runtime functions, easier than calibration ::set ::qw::control(packet_receive_return_empty) 1; # return empty on eof and let caller handle it ::set ::qw::control(tcl_eof_checks_eliminated) 1; # return empty on eof and let caller handle it ::set ::qw::control(gather_server_side_message_statistics) 1; # just put it on separate flag in this release ::set ::qw::control(bug_process_errorInfo_is_enabled) 0; # control errorInfo in bug messages ::set ::qw::control(databases_destroy_reverse_order) 1; ::set ::qw::control(num_set_str_fix) 1; # 2.34.11 amount entry fix ::set ::qw::control(semiloops_are_always_allowed) 0; # useful for testing downward dependencies processing ::set ::qw::control(base_change_retotal_shortcut_is_enabled) 0; # when enabled we get account history errors ::set ::qw::control(signal_when_broken) 1; # turned off in 2.34.11 but not killing ws when server has a bug ::set ::qw::control(dynamic_fix_changes) 1; # trying to get rid of bug that occurs when dynamic fix disabled ::set ::qw::control(always_create_audit_record_file) 1; # prematurely skipped creating in ws, wait for version change and try again ::set ::qw::control(num_uses_safe_interpreter) 1; #time to turn it back on ::set ::qw::control(transaction_schedule_fix) 1; # resolve conflict between master::schedule_for_commit and dependencies_downward_process ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.0.3.2";} ::set ::qw::control(date_difference_warning_enabled) 0; # turned it off, too much noise while testing ::set ::qw::control(du_orphan_check) 0; # ensure nvcheck visits all index records ::set ::qw::control(delta_queue_is_enabled) 0; # ensure nvcheck visits all index records ::set ::qw::control(database_header_date_is_enabled) 0; ::set ::qw::control(repeatable_tcl_handles) 0; ::set ::qw::control(cookie_echo_skip) 0; # too dangerous to leave this on for a release ::set ::qw::control(database_utilities_mothership_is_enabled) 1; ::set ::qw::control(date_restricted_to_2037) 1; ::set ::qw::control(database_backup_is_enabled) 1; # turn off to convert books with bad checksums ::set ::qw::control(ifs_minimum_branch_page_size_is_enabled) 1; ::set ::qw::control(ifs_page_cache_size_limit) [::expr {64*1024*1024}]; ::set ::qw::control(ifs_sector_cache_limit) 4096; ::switch -- $::tcl_platform(pointerSize) { "4" { ::set ::qw::control(ifs_file_cache_limit) 2048; ::set ::qw::control(odb_object_cache_field_limit) [::expr {320*1024}]; } "8" { ::set ::qw::control(ifs_file_cache_limit) 16384; ::set ::qw::control(odb_object_cache_field_limit) [::expr {320*1024}]; } default { ::qw::bug 314120250224110404 "Invalid ::tcl_platform(pointerSize) \"$::tcl_platform(pointerSize)\"."; } } ::set ::qw::control(enter_sandwich_is_enabled) 0; ::set ::qw::control(rwb_gpf_bug) 0; ::set ::qw::control(ifs_maximum_page_size_estimate) 16384; # 2.36.1 ::set ::qw::control(ifs_maximum_page_size_estimate) 24576; # looks like it was introduced in 2.37.3 ::set ::qw::control(ifs_ping_is_enabled) 1; # when 1, we use ping_is_enabled, otherwise always ping. ::set ::qw::control(ifs_database_ping_is_enabled) 1; # now able to turn it off, was always on in 2.36.0 ::set ::qw::control(bug_catch_fix) 1; # try/catch rethrows all bugs ::set ::qw::control(dialog85_error) 1; # redirect ::qw::dialog::error to ::qw::dialog85::error ::set ::qw::control(tm_trucking_fix) 0; # temp to fix a database ::set ::qw::control(make_broken_fix) 1; # better syntax surrounding the call and it's purpose ::set ::qw::control(gp_fix) 0; ::set ::qw::control(reorganize_odb_path_fix) 1; ::set ::qw::control(ifs_235_236_convert_empty_page_skip) 1; ::lappend ::qw::control(locksmith_database_id_black_list) 20090918175100; # crm ::set ::qw::control(locksmith_database_id_black_list) "crm"; ::switch -- $::tcl_patchLevel { 8.4.6 { ::set ::qw::control(package_itk) Itk; ::set ::qw::control(package_iwidgets) Iwidgets; } 8.6.6 - 8.6.9 { ::set ::qw::control(package_itk) itk; ::set ::qw::control(package_iwidgets) iwidgets; } 8.6.12 { ::set ::qw::control(package_itk) Itk; ::set ::qw::control(package_iwidgets) Iwidgets; } 8.6.13 { ::switch -- $::tcl_platform(platform) { "windows" { ::set ::qw::control(package_itk) Itk; ::set ::qw::control(package_iwidgets) Iwidgets; ::if {[::info exists ::tcl_platform(pointerSize)] && $::tcl_platform(pointerSize)==8} { ::package require itcl; } } "unix" { ::set ::qw::control(package_itk) itk; ::set ::qw::control(package_iwidgets) iwidgets; } } } } ::switch -- $::tcl_platform(platform) { "windows" { ::set ::qw::control(wait_cursor) "wait"; } "unix" { ::set ::qw::control(wait_cursor) "watch"; } } ::if {$::tcl_version>=8.6} { ::set ::qw::control(date_restricted_to_2037) 1; } ::set ::qw::control(process_restart_is_enabled) 1; ::set ::qw::control(bug_catch_fix) 0; # bug_process exits now. ::set ::qw::control(process_file_is_enabled) 0; # set by stub, passed -> hub -> node ::set ::qw::control(process_file_is_responding_is_enabled) 1; ::set ::qw::control(babyship_flush_on_boot) 0; ::set ::qw::control(dialog3_text_font) "-family system"; ::set ::qw::control(case_sensitive) 0; # we should switch to case sensitive ::set ::qw::control(tcp_client_catches_bugs) 0; # maybe not ::set ::qw::control(process_responding_limit_seconds) [::expr {10*60}]; # hossi payroll failing,seconds, checks process .ping_clock ::set ::qw::control(process_responding_limit_seconds) [::expr {30*60}]; # seconds, checks process .ping_clock ::set ::qw::control(process_ping_interval_seconds) [::expr {$::qw::control(process_responding_limit_seconds)/10}]; ::set ::qw::control(service_stub_checker_cron_interval) 10; # minutes ::set ::qw::control(keep_service_hubs_running_interval) [::expr {10*60}]; # seconds ::set ::qw::control(message_database_cron_interval) 5; # minutes ::set ::qw::control(nv2_server_default_port) 7890; # needed flexibility for stubs ::set ::qw::control(find_database_add_port) 1; ::set ::qw::control(odb_path_field_is_disabled) 1; ::set ::qw::control(odb_base_object_id_field_is_disabled) 1; ::switch -- $::tcl_platform(platform) { "windows" { ::set ::qw::platform_dependent_color(SystemWindowFrame) "SystemWindowFrame"; ::set ::qw::platform_dependent_color(SystemWindowText) "SystemWindowText"; ::set ::qw::platform_dependent_color(SystemButtonFace) "SystemButtonFace"; ::set ::qw::platform_dependent_color(SystemButtonText) "SystemButtonText"; ::set ::qw::platform_dependent_color(SystemHighlight) "SystemHighlight"; ::set ::qw::platform_dependent_color(SystemHighlightText) "SystemHighlightText"; ::set ::qw::platform_dependent_cursor(wait) "wait"; ::set ::qw::platform_dependent_cursor(size_ns) "size_ns"; ::set ::qw::platform_dependent_cursor(size_we) "size_we"; ::set ::qw::platform_dependent_cursor(size_nw_se) "size_nw_se"; ::set ::qw::platform_dependent_cursor(size_ne_sw) "size_ne_sw"; ::set ::qw::platform_dependent_window_state(zoomed) "zoomed"; } "unix" { ::set ::qw::platform_dependent_color(SystemWindowFrame) "black"; ::set ::qw::platform_dependent_color(SystemWindowText) "red"; ::set ::qw::platform_dependent_color(SystemButtonFace) "#d9d9d9"; ::set ::qw::platform_dependent_color(SystemButtonText) "red"; ::set ::qw::platform_dependent_color(SystemHighlight) "#c3c3c3"; ::set ::qw::platform_dependent_color(SystemHighlightText) "black"; ::set ::qw::platform_dependent_cursor(wait) "watch"; ::set ::qw::platform_dependent_cursor(size_ns) "sb_down_arrow"; ::set ::qw::platform_dependent_cursor(size_we) "right_ptr"; ::set ::qw::platform_dependent_cursor(size_nw_se) "lr_angle"; ::set ::qw::platform_dependent_cursor(size_ne_sw) "ll_angle"; ::set ::qw::platform_dependent_window_state(zoomed) "normal"; } "mac" { ::set ::qw::platform_dependent_color(SystemWindowFrame) "black"; ::set ::qw::platform_dependent_color(SystemWindowText) "red"; ::set ::qw::platform_dependent_color(SystemButtonFace) "gray91"; ::set ::qw::platform_dependent_color(SystemButtonText) "red"; ::set ::qw::platform_dependent_color(SystemHighlight) "red"; ::set ::qw::platform_dependent_color(SystemHighlightText) "red"; ::set ::qw::platform_dependent_cursor(wait) "watch"; ::set ::qw::platform_dependent_cursor(size_ns) "sb_down_arrow"; ::set ::qw::platform_dependent_cursor(size_we) "right_ptr"; ::set ::qw::platform_dependent_cursor(size_nw_se) "lr_angle"; ::set ::qw::platform_dependent_cursor(size_ne_sw) "ll_angle"; ::set ::qw::platform_dependent_window_state(zoomed) "normal"; } } ::if {0} { ::set ::qw::platform_dependent_color(SystemWindowFrame) "black"; ::set ::qw::platform_dependent_color(SystemWindowText) "red"; ::set ::qw::platform_dependent_color(SystemButtonFace) "#d9d9d9"; ::set ::qw::platform_dependent_color(SystemButtonText) "red"; ::set ::qw::platform_dependent_color(SystemHighlight) "#c3c3c3"; ::set ::qw::platform_dependent_color(SystemHighlightText) "black"; ::set ::qw::platform_dependent_cursor(wait) "watch"; ::set ::qw::platform_dependent_cursor(size_ns) "sb_down_arrow"; ::set ::qw::platform_dependent_cursor(size_we) "right_ptr"; ::set ::qw::platform_dependent_cursor(size_nw_se) "lr_angle"; ::set ::qw::platform_dependent_cursor(size_ne_sw) "ll_angle"; ::set ::qw::platform_dependent_window_state(zoomed) "normal"; } ::set ::qw::control(sargv_refactor) 1; # use ::qw_sargs from now on ::set ::qw::control(dd_2.38.2) 0; # downward_dependencies changes ::set ::qw::control(database_utilities_index_record_integrity_backward) 1; ::set ::qw::control(du_always_open_database) 1; # open/close database for each test ::set ::qw::control(bug_process_does_not_return) 1; ::set ::qw::control(use_stub_july_stub_script) 0; ::set ::qw::control(use_stub_july_stub_script) 0; ::switch -- $::tcl_platform(platform) { "windows" { ::set ::qw::control(http_port) 80; ::set ::qw::control(https_port) 443; } "unix" { ::set ::qw::control(http_port) 8000; ::set ::qw::control(https_port) 8001; } } ::set ::qw::control(subscription_model) 0; # subscription, service registration only ::set ::qw::control(server_registration_only) 0; # orthogonal to subscription model ::set ::qw::control(ssl_key_generate) 0; # generate new ssl key every time a server boots ::set ::qw::control(ssl_use_openssl_key) 1; # generated new keys from openssl, do not generate on the fly ::set ::qw::control(tclhttpd_skip_linux_binaries) 1; ::set ::qw::control(itcl_class_mangle_is_enabled) 1; # left mangling on for 2.38.5 release ::switch -- $::tcl_platform(pointerSize) { "4" { ::set ::qw::control(graphviz_type) "tcldot"; } "8" { ::set ::qw::control(graphviz_type) "tdot"; } } ::set ::qw::control(odb_path_remote_update_bug_fix) 0; # fixed wgb's bug but caused 314120050407163834 turned off again for release of 2.38.5 ::set ::qw::control(ron_bookmark_bug) 0; # good place to set to 1 is method bookmarks_goto ::set ::qw::control(qw_tcl_puts_is_enabled) 0; # uses cout if disabled (puts can alter interpreter result) ::set ::qw::control(rwb_verbose) 0; # a flag we can turn on/off for debugging ::switch -- $::tcl_platform(platform) { "windows" { ::set ::qw::control(block_sum_bug) 1; ::set ::qw::control(connection_probe_babyship_is_enabled) 0; # 2.38.5 send commection_probe messages to mothership } "unix" { ::set ::qw::control(block_sum_bug) 0; ::set ::qw::control(connection_probe_babyship_is_enabled) 0; # 2.38.5 send commection_probe messages to mothership } } ::set ::qw::control(active_index_is_enabled) 0; # can't eliminate this flag, need it for 238_239 convert ::set ::qw::control(reference_commit2) 0; ::set ::qw::control(index_is_active_test1) 0; ::set ::qw::control(index_make_active_test1) 0; ::set ::qw::control(active_index_check) 0; ::if {$::qw_version>=2.40} { ::set ::qw::control(active_index_is_enabled) 1; ::set ::qw::control(reference_commit2) 1; ::set ::qw::control(index_is_active_test1) 0; ::set ::qw::control(index_make_active_test1) 1; ::set ::qw::control(active_index_check) 1; } ::set ::qw::control(active_index_lifespan) [::expr {30*24*3600}]; # seconds ::set ::qw::control(active_index_lifespan) [::expr {1*24*3600}]; # seconds, if last_access older, then can garbage collect ::set ::qw::control(active_index_lifespan) [::expr {1*3600}]; # seconds ::set ::qw::control(active_index_lifespan_days) 30; ::set ::qw::control(active_index_hysteresis) [::expr {1*3600}]; # seconds, prevent too many active index structure updates ::set ::qw::control(active_index_procs) 0; ::set ::qw::control(ifs_amounts_are_folded) 0; ::set ::qw::control(ifs_schemas_on_demand) 0; ::set ::qw::control(fat_is_enabled) 0; #rwb_release ::switch -- $::tcl_platform(platform) { "windows" { ::set ::qw::control(program_file_extension) ".exe"; ::if {[::string first "-run_as_service" $::argv]>=0} { } } "unix" { ::set ::qw::control(program_file_extension) ""; } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.0.3.2.0";} ::set ::qw::control(qw_com_collection_count) 0; ::set ::qw::control(qw_com_handle_Set_count) 0; ::set ::qw::control(complete_menus) 0; ::set ::qw::control(programmer_menu_is_enabled) 0; ::set ::qw::control(window_default_setup) 0; ;#// set to 1 by the gui for setup, and set back to 0 when finished ::set ::qw::control(window_kickout_is_enabled) 0; #Added so convert and database check/reorganize could kick out windows. ::set ::qw::control(photo_is_enabled) 0; ::set ::qw::control(column_define_saved_settings_is_enabled) 1; ::set ::qw::control(accrual_payroll_derived_timecard) 0; ::set ::qw::control(accrual_payroll) 1; ::set ::qw::control(accrual_payroll_convert_on_the_fly) 1; ::set ::qw::control(accrual_payroll_convert_xcld_vac_pay_total_to) 1; ::set ::qw::control(window_default_setup_windowNew) 0; ::set ::qw::control(window_default_setup_windowNew_audit) 0; ::set ::qw::control(window_default_setup_windowNew_audit_trees) 1; ::set ::qw::control(payroll_wsib) 0; ::set ::qw::control(nv_toplevel_keep_visible) 1; ::set ::qw::control(airtech) 0; ::set ::qw::control(airtech_class_id) "/AIRTECH"; ::set ::qw::control(window_list_tabs_is_enabled) 1; ::set ::qw::control(window_list_tabs_structure) 1; ::set ::qw::control(window_list_tabs_saved_settings) 1; ::set ::qw::control(advanced_column_define_is_enabled) 0; ::set ::qw::control(desktop_explorerDepth_default_instance) 0; ::set ::qw::control(name_display_width) 15; ;#// currently not used ::set ::qw::control(odb_path_help_display_width) 15; ::set ::qw::control(odb_path_help_display_format) "name"; ::set ::qw::control(donor_management_is_enabled) 0; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.0.4";} ::set ::qw::control(table_stripe_row_mod) 3; ;#// can be 0 to disable row striping ::set ::qw::control(odb_deriveds_default_setup_index) ".index/name_closure"; ::set ::qw::control(accrual_payroll_import_totalto_list) "parent1 parent2"; ::set ::qw::control(schema_explorers) 0; ::set ::qw::control(schema_help_window_fields) 0; ::set ::qw::control(schema_help_database_fields) 0; # changed to 0 in 2.23 ::proc ::QW::stack_dump {} { ::return [::qw::stack_dump] } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1";} ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.0.3.4";} ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.9";} ::if {$::tcl_platform(platform) eq "windows"} { ::package require Tclx; #rwb1_debug } ::if {$::tcl_version eq "8.6"} { ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10,tcl_patchLevel==$::tcl_patchLevel,pointerSize==$::tcl_platform(pointerSize),platform==$::tcl_platform(platform)";} } else { ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10,tcl_patchLevel==$::tcl_patchLevel,pointerSize==4,platform==$::tcl_platform(platform)";} } ::if {[::qw::command_exists ::itcl::class]} { ::if {$::rwb1_debug} {::puts "rwb1_debug,::itcl::class exists==[::qw::command_exists ::itcl::class],::itcl::version==$::itcl::version";} } else { ::if {$::rwb1_debug} {::puts "rwb1_debug,::itcl::class exists==0";} } ::if {![::qw::command_exists ::itcl::class]} { ::if {[catch { ::switch -- $::tcl_platform(platform)-$::tcl_platform(pointerSize) { "windows-4" { ::switch -- $::tcl_version { 8.4 { ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10.0";} ::set ItclVersion [::package require Itcl]; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10.9,ItclVersion==$ItclVersion";} } 8.6 { ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10.1";} ::set ItclVersion [::package require Itcl]; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10.2";} } } } "windows-8" { ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10.2";} ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10.3";} } "unix-4" { ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10.4";} ::lappend ::auto_path [::file join $::qw_library lib itcl]; ::set ItclVersion [::package require Itcl]; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10.5";} } "unix-8" { ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10.6.0";} ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10.6.1";} ::set ItclVersion [::package require Itcl]; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10.6.2";} ::set ItkVersion [::package require itk]; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10.6.3";} ::set IWidgetsVersion [::package require iwidgets]; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10.7";} } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10.8";} ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10.9";} } Error]} { ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.10.10,Error==$Error";} ::error $Error; } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.11";} ::source [::file join $::qw_program_path system qw_structure.tcl]; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.12,file [::file join $::qw_program_path system sargs.tcl] exists==[::file exists [::file join $::qw_program_path system sargs.tcl]];";} ::source [::file join $::qw_program_path system sargs.tcl]; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.13";} ::source [::file join $::qw_program_path system sargs_pure_tcl.tcl]; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.14";} ::source [::file join $::qw_program_path system sargs_deprecated.tcl]; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.15";} ::source [::file join $::qw_program_path system qw_bgerror.tcl]; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.1.17";} ::rename ::itcl::delete ::itcl::delete_qw; ::proc ::itcl::delete {args} { ::if {[::llength $args]==0} { ::eval ::itcl::delete_qw $args; ::return ""; } ::if {[::lindex $args 0] ne "object"} { ::eval ::itcl::delete_qw $args; ::return ""; } ::foreach Object [::lrange $args 1 end] { ::uplevel ::rename [::list $Object ""]; } ::return ""; } ::rename ::qw::itcl::delete ::qw::itcl::delete_qw; ::proc ::qw::itcl::delete {args} { ::if {[::llength $args]==0} { ::eval ::qw::itcl::delete_qw $args; ::return ""; } ::if {[::lindex $args 0] ne "object"} { ::eval ::qw::itcl::delete_qw $args; ::return ""; } ::foreach Object [::lrange $args 1 end] { ::set List ""; ::lappend List $Object; ::lappend List ""; ::uplevel ::rename $List; } ::return ""; } ::proc ::qw::itcl_delete_object {args} { ::foreach Object $args { ::set List ""; ::lappend List $Object; ::lappend List ""; ::uplevel ::rename $List; } } ::proc ::qw::qw_itcl_delete_object {args} { ::foreach Object $args { ::set List ""; ::lappend List $Object; ::lappend List ""; ::uplevel ::rename $List; } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.2";} ::qw::try { ::if {$::qw_starkit_startup eq "starkit"} { ::lappend ::auto_path [::file join $::qw_library tclx8.4]; ::set SaveTclLibrary $::tcl_library; ::set ::tcl_library [::file join $::qw_library lib tcl8.4]; ::package require Tclx; ::set ::tcl_library $SaveTclLibrary; } } catch Exception { ::qw::throw $Exception; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.2.0";} ::rename ::vwait ::vwait_qw; ::proc ::vwait {Varname} { ::set Result [[::qw::system] cpp_enter_event_loop .vwait_varname $Varname]; ::return $Result; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.2.1";} ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.2.2";} ::proc ::qw::server_information {sargs} { ::set Result [::sargs]; ::sargs::var::set Result .system_is_broken [[::qw::system] cpp_is_broken]; ::sargs::var::set Result .version $::qw_version; ::sargs::var::set Result .patch_level $::qw_patch_level; ::sargs::var::set Result .build $::qw_build; ::sargs::var::set Result .release $::qw_release; ::sargs::var::set Result .sub_product $::qw_sub_product; ::set Record [[::qw::system] cpp_registration_get]; ::sargs::var::set Result .registration $Record; ::sargs::var::set Result .serial [::sargs::get $Record .serial]; ::if {!$::qw::control(database_open_server_is_busy)} { ::sargs::var::set Result .server_is_busy [[::qw::system] cpp_is_busy]; } ::sargs::var::set Result .server_is_busy [::winfo exists .progress_window]; ::set Record [::qw::registrations::record_get]; ::sargs::var::set Result .customer_support_registration_record $Record; ::sargs::var::set Result .customer_name [::sargs::get $Record .customer_number]; ::foreach Name [::array names ::tcl_platform] { ::sargs::var::set Result .$Name $::tcl_platform($Name); } ::switch -- $::qw::control(app_name) { app_name_service_hub { ::sargs::var::set Result .server_type service_hub; } app_name_service_node { ::sargs::var::set Result .server_type service_node; } } ::return $Result; } ::if {$::tcl_version<8.6} { ::proc ::qw::itcl_local {args} { ::if {[::eval ::qw::s_args_marshal_is_legacy $args]} { ::set Class [::lindex $args 0]; ::if {$Class eq ""} { ::qw::bug "314120071029102702" "Encountered empty class."; } ::set Name [::lindex $args 1]; ::if {$Name eq ""} { ::qw::bug "314120071029102703" "Encountered empty name."; } ::set args [::lrange $args 2 end]; ::if {[::uplevel ::info exists $Name]} { ::qw::bug 314120131112160141 "itcl_local already exists, class==$Class,name==$Name."; } ::set Ptr [::uplevel $Class $Name $args]; ::set Ptr1 [::string map [::list "::" "_"] $Ptr]; ::uplevel [::list ::set itcl-local-$Ptr1 $Ptr]; ::set cmd [::uplevel namespace which -command $Ptr] ::uplevel [::list trace variable itcl-local-$Ptr1 u [::subst {::itcl::delete object [::lindex $cmd 0]}]] ::return $Ptr } ::qw::s_args_marshal; ::set Class [::sargs::get $s_args .itcl_local.class]; ::if {$Class eq ""} { ::qw::bug "314120071029102701" "Encountered empty class."; } ::set ObjectName [::sargs::get $s_args .itcl_local.object_name]; ::if {$ObjectName eq ""} { ::set ObjectName "${Class}::#auto"; } ::sargs::var::unset s_args .itcl_local; ::set Ptr [::uplevel [::list $Class $ObjectName] $s_args]; ::set Ptr1 [::string map {"::" _} $Ptr]; ::uplevel [::list set itcl-local-$Ptr1 $Ptr] ::set Command [::uplevel namespace which -command $Ptr] ::uplevel [::list trace variable itcl-local-$Ptr1 u [::subst {::itcl::delete object [::lindex $Command 0]}]] ::return $Ptr } } else { ::proc ::qw::itcl_local_delete_helper { name args } { ::itcl::delete object $name; } proc ::qw::itcl_local {class name args} { ::set ptr [::uplevel [::list $class $name] $args] ::uplevel [::list set itcl-local-$ptr $ptr] ::set cmd [::uplevel namespace which -command $ptr] ::uplevel [::list trace variable itcl-local-$ptr u "::qw::itcl_local_delete_helper $cmd"] ::return $ptr } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.8.1";} ::itcl::class ::qw::finally::sandwich { protected variable _callback ""; method constructor {Script} { ::set _callback $Script; } destructor { ::set rwb1_debug 0; ::if {[::qw::command_exists [::lindex $_callback 0]]} { ::qw::try { ::uplevel #0 $_callback; } catch Dummy { ::if {$rwb1_debug} { ::puts "rwb1_debug,::qw::finally::sandwich,1000.1,cpp_class==[[::lindex $_callback 0] cpp_class]"; ::puts "rwb1_debug,::qw::finally::sandwich,1000.2,_callback==\n$_callback"; ::qw::stack_dump; ::puts "rwb1_debug,::qw::finally::sandwich,1000.5"; } ::qw::warning 314120110307123550 "::qw::finally,callback==\"$_callback\",exception==\"$Dummy\""; } } } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.8.2";} ::proc ::qw::finally {QwFinallyScript} { ::upvar ___qw_finally_local___ Local; ::if {![::info exists Local]} { ::set Local ""; } ::set SandwichObject [::qw::finally::sandwich ::qw::finally::#auto $QwFinallyScript]; ::trace add variable Local unset [::list ::itcl::delete object $SandwichObject]; } ::proc ::qw::finally_eval {} { ::upvar ___qw_finally_local___ Local; ::set Info [::trace info variable Local]; ::if {1} { ::for {::set i [::expr {[::llength $Info]-1}]} {$i>=0} {::incr i -1} { ::set Item [::lindex $Info $i]; ::set Operation [::lindex $Item 0]; ::set Script [::lindex $Item 1]; } } ::unset Local; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.3.2";} ::set ::qw::dosimport(import_file_name) "NV1_NV2"; ::set ::qw_data [::file join [::file dirname $::qw_library] nv2.dat]; ::set ::qw::verbose(gui) 0; ::set ::qw::verbose(gui_tree) 0; ::set ::qw::verbose(gui_apply) 0; ::set ::qw::verbose(signal) 0; ::set ::qw::verbose(status) 0; ::set ::qw::verbose(security) 0; ::set ::qw::verbose(idler) 0; ::set ::qw::verbose(print) 0; ::set ::qw::verbose(com) 0; ::set ::qw::verbose(payrun) 0; ::set ::qw::verbose(help) 0; ::set ::qw::verbose(dataease) 0; ::set ::qw::verbose(import) 0; ::set ::qw::verbose(startup_shutdown) 0; ::set ::qw::verbose(tcp_startup_shutdown) 0; ::set ::qw::verbose(tcp_packets) 0; ::set ::qw::verbose(exception) 0; ::set ::qw::verbose(convert) 0; ::set ::qw::verbose(memory) 0; ::set ::qw::verbose(transaction_commit) 0; ::set ::qw::verbose(journal_commit) 0; ::set ::qw::verbose(odb_object_create) 0; ::set ::qw::verbose(odb_kickout) 0; ::set ::qw::verbose(downward_dependencies) 0; ::set ::qw::verbose(odb_commit) 0; ::set ::qw::verbose(active_index) 0; ::set ::qw::verbose(sargs) 0; ::set ::qw::verbose(kickout_query) 0; ::set ::qw::verbose(idler) 0; ::set ::qw::verbose(process_file) 0; ::set ::qw::verbose(mutex) 0; ::set ::qw::verbose(-server) 0; ::set ::qw::verbose(update) 0; ::if {!$::qw::control(is_release)} { ::switch -- $::tcl_platform(platform) { "windows" { ::set ::qw::control(service_stub_checker_cron_interval) 1; # minutes ::set ::qw::control(keep_service_hubs_running_interval) [::expr {1*60}]; # seconds ::set ::qw::verbose(exception) 1; } "unix" { ::set ::qw::control(service_stub_checker_cron_interval) 5; # minutes ::set ::qw::control(keep_service_hubs_running_interval) [::expr {6*60}]; # seconds ::set ::qw::verbose(exception) 1; } } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.3.2.0";} ::set ::qw::history_begin "20010101000000"; ::set ::qw::history_end "20081231235959"; ::set ::qw::history_row_maximum [::expr {1024*1024}]; ::namespace eval ::qw::name {}; ::set ::qw::name::formats(sortable) {%lastname%, %firstname% %middleinitialdot%}; ::set ::qw::name::formats(printable) {%firstname% %middleinitialdot% %lastname%}; ::set ::qw::name::formats(full) {%salutation% %firstname% %middleinitialdot% %lastname%}; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.4.4";} ::source [::file join $::qw_program_path system qw_packages.tcl]; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.4.5";} ::qw::packages::main; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.4.6";} ::if {0} { ::qw::try { ::set Result [::package require registry]; } catch Exception { ::qw::throw $Exception; } ::qw::try { ::set Result [::package require twapi]; } catch Exception { ::qw::throw $Exception; } } ::package require qw::number; ::package require qw::date; ::namespace eval ::qw::string {} ::proc ::qw::string::scan {String {Format ""}} { return $String; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.3.2.1";} ::proc ::qw::exit {sargs} { ::set rwb1_debug 0; ::if {$::qw::verbose(startup_shutdown)} { ::set rwb1_debug 2; } ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::exit,1000.0,exists==[::qw::command_exists ::qw::system]"}; ::if {$::qw::control(process_file_is_enabled)} { ::qw::try { ::if {![::qw::mutex_manager mutex_is_locked .mutex_name $::qw::control(process_list_file)]} { ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::exit,1000.1"}; ::qw::mutex_manager mutex_lock .mutex_name $::qw::control(process_list_file) .lock_caller [::qw::procname]; } ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::system missing problem,1000.2"}; ::sargs::file::unset $::qw::control(process_list_file) .[::pid]; ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::system missing problem,1000.3"}; ::qw::mutex_manager mutex_unlock .mutex_name $::qw::control(process_list_file) .caller [::qw::procname]; ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::system missing problem,1000.4"}; } catch Exception { ::qw::warning 314120181130103204 "Can't unset process_file record. Exception==$Exception"; } } ::exit [::sargs::integer_get $sargs .exit_result]; ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::system missing problem,1000.5"}; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.3.2.1.0";} ::proc ::qw::shutdown {sargs} { ::set rwb1_debug 0; ::if {$::qw::verbose(tcp_startup_shutdown)} { ::set rwb1_debug 2; } ::if {$::qw::verbose(startup_shutdown)} { ::if {[::qw::command_exists ::qw::debug_dump_package_require_stats]} { ::qw::debug_dump_package_require_stats; } ::set rwb1_debug 2; } ::if {$::qw::control(process_file_is_enabled)} { ::qw::try { ::qw::process_file::garbage_collect; } catch Dummy { ::puts "314120250615104953,::qw::shutdown,::qw::process_file::garbage_collect,Dummy==$Dummy"; } ::qw::try { ::qw::process_file::garbage_collect; } catch Dummy { ::puts "314120250615104953,::qw::shutdown,::qw::process_file::garbage_collect,Dummy==$Dummy"; } } ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::shutdown,1000.0,seconds==[::clock seconds],app_name==$::qw::control(app_name)";} if {$rwb1_debug} { ::qw::stack_dump; } ::if {[::sargs::boolean_get $sargs .force_shutdown]} { ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::shutdown,1000.0.0";} ::qw::exit $sargs; ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::shutdown,1000.0.1";} ::return; # this should not execute; } ::if {![::qw::command_exists ::qw::system]} { ::return; } ::if {![::qw::command_exists [::qw::system]]} { ::return; } ::if {[[::qw::system] cpp_is_broken]} { ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::shutdown,1000.1";} [::qw::system] cpp_is_shutting_set .value 1; ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::shutdown,1000.2";} ::qw::exit; ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::shutdown,1000.3";} } ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::shutdown,1000.4";} ::qw::try { ::if {[[::qw::system] cpp_is_shutting_get]} { ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::shutdown,1000.5";} ::return; } [::qw::system] cpp_is_shutting_set .value 1; } catch Exception { ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::shutdown,1000.6";} [::qw::system] cpp_is_shutting_set .value 0; ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::shutdown,1000.7";} ::qw::throw [::qw::exception::nest .sub $Exception .super "Could not shut down [::string tolower [::file normalize [::info nameofexecutable]]]."]; } ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::shutdown,1000.9";} ::after idle { ::if {[::qw::command_exists ::qw::system]} { ::if {[::qw::command_exists [::qw::system]]} { [::qw::system] cpp_shutdown_cleanup; } } ::qw::exit; ::return; # this should not execute; } ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::shutdown,1000.15";} } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.6";} ::proc ::QW::echo {Arg} {::return $Arg;} ::proc ::QW::system {} { ::qw::deprecated "::QW::system replaced by ::qw::system"; return [::qw::system]; } ::namespace eval ::qw { ::set ::qw::_clock [::clock seconds]; ::set ::qw::_id_unique 0; ::proc ::qw::id_factory {} {::return [::incr ::qw::_id_unique];} } ::proc ::qw::toplevels_destroy {} { ::set Toplevels [::winfo children .]; ::foreach Toplevel $Toplevels { ::if {[::lsearch -exact [bindtags $Toplevel]]>=0} { ::continue; } ::if {$::qw::status::window ne "" && $Toplevel eq [$::qw::status::window toplevel]} { ::continue; } ::if {$::QW::OPERATION_TOPLEVEL::_window ne "" && $Toplevel eq [$::QW::OPERATION_TOPLEVEL::_window toplevel]} { ::continue; } ::destroy $Toplevel; } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.6.0";} ::proc ::qw::call_after_idle_with_sargs {AfterCommand Object Method sargs} { ::return [$AfterCommand idle [::subst -nocommands { ::if {[::qw::command_exists $Object]} { $Object $Method $sargs; } }]]; } ::proc ::qw::call_after_idle {AfterCommand Object Method} { ::return [$AfterCommand idle [::subst -nocommands { ::if {[::qw::command_exists $Object]} { $Object $Method; } }]]; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.6.1";} ::proc ::qw::itcl_delete_helper { name args } { ::if {[::qw::command_exists $name]} { ::qw::itcl_delete_object $name } ::return; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.6.1.0";} ::proc ::qw::itcl::local {class name args} { set ptr [uplevel [list $class $name] $args] uplevel [list set itcl-local-$ptr $ptr] set cmd [uplevel namespace which -command $ptr] uplevel [list trace variable itcl-local-$ptr u "::qw::itcl_delete_helper $cmd"] return $ptr } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.6.1.1";} ::itcl::class ::QW::STOPWATCH { protected variable _seconds ""; constructor {} { ::set _seconds [::clock seconds]; } method seconds {} { ::set Seconds [::expr {[::clock seconds]-$_seconds}]; ::return $Seconds; } method reset {} { ::set Seconds [seconds]; ::set _seconds [::clock seconds]; return $Seconds; } method formatted {} { ::set Seconds [seconds]; ::set Hours [::expr {$Seconds/3600}]; ::set Seconds [::expr {$Seconds%3600}]; ::set Minutes [::expr {$Seconds/60}]; ::set Seconds [::expr {$Seconds%60}]; ::switch -- $Hours { 1 { ::set HourText hour; } default { ::set HourText hours; } } ::switch -- $Minutes { 1 { ::set MinuteText minute; } default { ::set MinuteText minutes; } } ::switch -- $Seconds { 1 { ::set SecondText second; } default { ::set SecondText seconds; } } ::return "$Hours $HourText, $Minutes $MinuteText, $Seconds $SecondText"; } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.6.1.1.0";} ::itcl::class ::QW::MILLISECONDS { protected variable _milliseconds ""; protected variable _text ""; protected variable _dump 0; protected variable _format 0; protected variable _minimum_milliseconds 0; method constructor {sargs} { ::set _milliseconds [::clock clicks -milliseconds]; ::set _text [::sargs::get $sargs .text]; ::set _dump [::sargs::boolean_get $sargs .dump]; ::set _format [::sargs::boolean_get $sargs .format]; ::set _minimum_milliseconds [::sargs::integer_get $sargs .minimum_milliseconds]; } destructor { ::set MilliSeconds [milliseconds]; ::if {$_minimum_milliseconds>$MilliSeconds} { ::return; } ::if {$_dump} { ::if {$_format} { ::puts "$_text[formatted $MilliSeconds]"; ::return; } ::puts "$_text$Milliseconds"; } } method milliseconds {} { ::set Milliseconds [::expr {[::clock clicks -milliseconds]-$_milliseconds}]; ::return $Milliseconds; } method reset {} { ::set Milliseconds [milliseconds]; ::set _milliseconds [::clock clicks -milliseconds]; return $Milliseconds; } method formatted {{MilliSeconds ""}} { ::if {$MilliSeconds eq ""} { ::set MilliSeconds [milliseconds]; } ::set Hours [::expr {$MilliSeconds/3600000}]; ::set MilliSeconds [::expr {$MilliSeconds%3600000}]; ::set Minutes [::expr {$MilliSeconds/60000}]; ::set Milliseconds [::expr {$MilliSeconds%60000}]; ::set Seconds [::expr {$MilliSeconds/1000}]; ::set MilliSeconds [::expr {$MilliSeconds%1000}]; ::switch -- $Hours { 1 { ::set HourText "hour"; } default { ::set HourText "hours"; } } ::switch -- $Minutes { 1 { ::set MinuteText "minute"; } default { ::set MinuteText "minutes"; } } ::switch -- $Seconds { 1 { ::set SecondText "second"; } default { ::set SecondText "seconds"; } } ::switch -- $MilliSeconds { 1 { ::set MilliSecondText "millisecond"; } default { ::set MilliSecondText "milliseconds"; } } ::return "$Hours $HourText, $Minutes $MinuteText, $Seconds $SecondText, $MilliSeconds $MilliSecondText"; } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.6.1.1.1";} ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.7";} ::proc ::qw::odb::dependencies_commit_get {Dependencies Path} { ::set Result ""; ::foreach Inner [::sargs::inners .structure $Dependencies] { if {[::sargs::get $Dependencies $Inner.operation] eq "commit"} { ::append Result $Inner; } } return $Result; } ::if {$::tcl_version<8.5} { ::rename ::lsearch ::lsearch_qw; ::proc ::lsearch {args} { ::set Options [::lrange $args 0 end-2]; ::set Pos [::lsearch_qw $Options "-nocase"]; ::if {$Pos<0} { ::return [::eval ::lsearch_qw $args]; } ::set Args [::lreplace $Options $Pos $Pos]; ::lappend Args [::string tolower [::lindex $args end-1]]; ::lappend Args [::string tolower [::lindex $args end]]; ::return [::eval ::lsearch_qw $Args]; } } ::namespace eval ::qw::file {} ::proc ::qw::file::info {args} { ::if {[::eval ::sargs::marshal_is_legacy $args]} { ::if {[::llength $args]!=1} { ::qw::bug 314120090314141531 "::qw::file::info encountered invalid arguments \"$args\"."; } ::set Path [::lindex $args 0]; ::set Info ""; ::set Directory [::file dirname $Path]; ::set Tail [::file tail $Path]; ::set List [::split $Tail .]; ::if {[::llength $List]>1} { ::set Name [::join [::lrange $List 0 end-1] .]; ::set Extension .[::lindex $List end]; } else { ::set Name $Tail; ::set Extension ""; } ::sargs::var::set Info .directory $Directory; ::sargs::var::set Info .folder $Directory; ::sargs::var::set Info .tail $Tail; ::sargs::var::set Info .name $Name; ::sargs::var::set Info .extension $Extension; ::sargs::var::set Info .type $Extension; ::return $Info; } ::sargs::marshal; ::if {![::sargs::exists $sargs .path]} { ::qw::bug 314120090314141532 "::qw::file::info expected a \".path\" argument."; } ::set Info ""; ::set Path [::sargs::get $sargs .path]; ::set Directory [::file dirname $Path]; ::set Tail [::file tail $Path]; ::set List [::split $Tail .]; ::if {[::llength $List]>1} { ::set Name [::join [::lrange $List 0 end-1] .]; ::set Extension .[::lindex $List end]; } else { ::set Name $Tail; ::set Extension ""; } ::sargs::var::set Info .directory $Directory; ::sargs::var::set Info .folder $Directory; ::sargs::var::set Info .tail $Tail; ::sargs::var::set Info .name $Name; ::sargs::var::set Info .extension $Extension; ::sargs::var::set Info .type $Extension; ::return $Info; } ::proc ::qw::file {args} { ::if {![::llength args]} {::return [::eval ::file $args];} ::switch -- [::lindex $args 0] { dirname { ::if {[::llength $args]!=2} { ::qw::bug 314120050831120957 "::qw::file dirname encountered invalid args \"[::lrange $args 1 end]\"."; } ::set Path [::lindex $args 1]; ::set Path [::file normalize [::string tolower $Path]]; ::set Result [::file dirname $Path]; ::set Result [::file normalize [::string tolower $Result]]; ::if {$Result eq $Path} { ::return ""; } ::return $Result; } info { ::qw::assert {[::llength $args]==2} ::set Path [::lindex $args 1]; ::array set Info ""; ::set Info(-path) $Path; ::set Info(-type) [::file type $Path]; ::set Info(-size) [::file size $Path]; return [::array get Info]; } open_check { ::qw::assert {[::llength $args]==3} ::set Directory [::lindex $args 1]; ::set Name [::lindex $args 2]; ::set Path [::file join $Directory $Name]; ::if {![::file exists $Directory]} {::qw::throw "Cannot find [::set ::tcl_platform(os)] folder \"$Directory\".";} ::if {![::file isdirectory $Directory]} {::qw::throw "\"$Directory\" is not a [::set ::tcl_platform(os)] folder.";} ::if {![::file exists $Path]} {::qw::throw "Could not find [::set ::tcl_platform(os)] file \"$Path\".";} ::if {![::file isfile $Path]} {::qw::throw "\"$Path\" is not a [::set ::tcl_platform(os)] file.";} ::if {![::file readable $Path]} {::qw::throw "[::set ::tcl_platform(os)] file \"$Path\" is not readable by the current user.";} ::if {$::tcl_platform(platform)=="windows"} { ::array set Attributes [::file attributes $Path]; ::if {$Attributes(-system)} {::qw::throw "\"$Path\" is a [::set ::tcl_platform(os)] system file.";} } return ""; } } return [::eval ::file $args]; } ::namespace eval ::qw::source {} ::proc ::qw::source::check {Path} { ::if {![::file exists $Path]} { ::qw::throw "Could not find \"$Path\"."; } ::if {[::file isdirectory $Path]} { ::qw::throw "\"$Path\" is a folder."; } ::if {![::file isfile $Path]} { ::qw::throw "\"$Path\" is not a file."; } ::if {![::file readable $Path]} { ::qw::throw "\"$Path\" is not readable by the current user."; } ::if {$::tcl_platform(platform)=="windows"} { ::array set Attributes [::file attributes $Path]; ::if {$Attributes(-system)} {::qw::throw "\"$Path\" is a system file.";} } } ::proc ::dump_all_commands {{Namespace ""}} { ::if {$Namespace eq "::"} {::set Namespace "";} ::foreach Command [::info commands ${Namespace}::*] {puts $Command;} ::foreach KidNamespace [::namespace children $Namespace] {::dump_all_commands $KidNamespace} } ::proc ::dump_all_variables {{Namespace ""}} { ::if {$Namespace eq "::"} {::set Namespace "";} ::foreach Variable [::info vars ${Namespace}::*] {puts $Variable;} ::foreach KidNamespace [::namespace children $Namespace] {::dump_all_variables $KidNamespace} } ::namespace eval ::qw::sound {} ::proc ::qw::sound::play {SoundName} { if {$SoundName eq ""} {::return;} ::return; ::package require snack; ::switch -- $::tcl_platform(platform) { "windows" { ::switch -- $SoundName { ".Default" - "AppGPFault" - "CCSelect" - "Close" - "MailBeep" - "Maximize" - "MenuCommand" - "MenuPopup" - "Minimize" - "Open" - "RestoreDown" - "RestoreUp" - "RingIn" - "RingOut" - "ShowBand" - "SystemAsterisk" - "SystemExclamation" - "SystemExit" - "SystemHand" - "SystemQuestion" - "SystemStart" { ::set Sound [::snack::sound]; ::qw::try { ::set MediaPath [::registry get HKEY_LOCAL_MACHINE\\SOFTWARE\\MicroSoft\\WINDOWS\\CurrentVersion MediaPath]; ::set SoundFilePath [::registry get HKEY_CURRENT_USER\\AppEvents\\Schemes\\Apps\\.Default\\$SoundName\\.Current {}]; ::set SoundFilePath [::file join $MediaPath $SoundFilePath]; ::if {$SoundFilePath eq ""} { ::return ""; } ::if {![::file exists $SoundFilePath]||![::file isfile $SoundFilePath]} { ::qw::warning 314120030922085147 "Could not find sound file \"$SoundFilePath\"."; ::return; } $Sound read $SoundFilePath; } catch Exception { ::qw::warning 314120030922085237 "::qw::sound::play encountered exception:$Exception"; ::qw::try { $Sound destroy; } catch Dummy {} ::return ""; } ::qw::try { $Sound play -command [::list $Sound destroy]; } catch Exception { ::qw::warning 314120040410122009 "::qw::sound::play encountered exception:$Exception"; ::qw::try { $Sound destroy; } catch Dummy {} ::return ""; } } } } "macintosh" { ::bell; } "unix" { ::bell; } } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.8.2";} ::namespace eval ::QW {} ::namespace eval ::QW::ODB {} ::namespace eval ::qw::newviews {} ::array set ::qw::newviews::platform {} ::set ::qw::newviews::platform(name) NEWVIEWS; ::set ::qw::newviews::platform(description) "NewViews Accounting System"; ::set ::qw::options { .window { .font {-family Arial -size 10 -weight normal} .foreground black .background white .relief solid .border { .width 0 } .pad { .internal { .x 1m .y 1m } .external { .x 0m .y 0m } } .padx 0m .pady 0m .ipadx 1m .ipady 1m /frame { .border { .width 0 } .relief solid /controls { .height 2 .border { .width 0m } } /info { .height 2 .border { .width 0m } } } /button { .border { .width .5m } .relief raised .pad { .external { .x 1m .y 1m } } .padx 1m .pady 1m } /selection { .foreground #ffffff .background RoyalBlue4 } /scroll { .mode dynamic /horizontal {} /vertical {} } .dialog { } } } ::namespace eval ::qw::widget {} ::set ::qw::widget::default { .font {-family Arial -size 10 -weight normal} .foreground black .background white .relief solid .border { .width 0 } .pad { .internal { .x 1m .y 1m } .external { .x 0m .y 0m } } .padx 0m .pady 0m .ipadx 1m .ipady 1m /frame { .border { .width 0 } .relief solid /controls { .height 2 .border { .width 0m } } /info { .height 2 .border { .width 0m } } } /button { .text "" .border { .width .5m } .relief raised .padx 1m .pady 1m .command { ::qw::throw {Button command not specified.} } /control { .padx 4m .pady 2m /help { .text "Help" } /ok { .text "Ok" } /cancel { .text "Cancel" } } } /selection { .foreground white .background RoyalBlue4 } /scroll { .mode dynamic /horizontal {} /vertical {} } } ::set ::qw::widget::options { .font {-family Arial -size 10 -weight normal} .foreground black .background white .relief solid .border { .width 0 } .pad { .internal { .x 1m .y 1m } .external { .x 0m .y 0m } } .padx 0m .pady 0m .ipadx 1m .ipady 1m /frame { .border { .width 0 } .relief solid /controls { .height 2 .border { .width 0m } } /info { .height 2 .border { .width 0m } } } /button { .text "" .border { .width .5m } .relief raised .padx 1m .pady 1m .command { ::qw::throw {Button command not specified.} } /control { .padx 4m .pady 2m /help { .text "Help" } /ok { .text "Ok" } /cancel { .text "Cancel" } } } /selection { .foreground white .background RoyalBlue4 } /scroll { .mode dynamic /horizontal {} /vertical {} } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.8.3.0";} ::if {$::qw::control(tk_is_enabled)} { ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.8.3.1";} ::package require $::qw::control(package_itk); ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.8.3.11,exists==[::info exists ::qw::control(has_tk)]";} ::package require qw::widget_completion; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.8.3.2";} ::package require qw::widget_tree; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.8.3.3";} ::package require qw::widget_status; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.8.3.4";} ::package require qw::widget_operation; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.8.3.5";} ::package require qw::widget_time_entry; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.8.3.6";} ::proc ::tk::ListboxBeginSelect {w el {focus 1}} { ::variable ::tk::Priv; ::if {[$w cget -selectmode] eq "multiple"} { ::if {[$w selection includes $el]} { $w selection clear $el; } else { $w selection set $el; } } else { $w selection clear 0 end; $w selection set $el; $w selection anchor $el; ::set Priv(listboxSelection) {}; ::set Priv(listboxPrev) $el; } ::event generate $w <>; ::if {$focus && [::winfo exists $w] && [$w cget -state] eq "normal"} { } } } ::set ::qw::toplevels ""; ::proc ::qw::toplevel_find {sargs} { ::set Toplevel [::sargs::get $sargs .toplevel]; ::if {$Toplevel eq ""} { ::set Toplevel [::sargs::get $sargs .path]; } ::if {$Toplevel eq ""} { ::qw::bug 314120080208094659 "Encountered empty toplevel." } ::set Index 0; ::foreach Item $::qw::toplevels { ::if {[::sargs::get $Item .toplevel] eq $Toplevel} { ::return $Index; } ::incr Index; } ::return -1; } ::proc ::qw::toplevel_add {sargs} { ::set rwb1_debug 0; ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::toplevel_add,1000.0";} ::set Toplevel [::sargs::get $sargs .toplevel]; ::if {$Toplevel eq ""} { ::set Toplevel [::sargs::get $sargs .path]; ::sargs::var::set sargs .toplevel $Toplevel; } ::if {$Toplevel eq ""} { ::qw::bug 314120080208135803 "Encountered empty toplevel." } ::if {[::qw::toplevel_find $sargs]<0} { ::lappend ::qw::toplevels [::sargs .toplevel $Toplevel]; } ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::toplevel_add,1000.99";} } ::proc ::qw::toplevel_remove {sargs} { ::set Index [::qw::toplevel_find $sargs]; ::if {$Index>=0} { ::set ::qw::toplevels [::lreplace $::qw::toplevels $Index $Index]; } } ::proc ::qw::toplevel_raise {sargs} { ::set rwb1_debug 0; ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::toplevel_raise,1000.0";} ::set MoreToDo 1; ::while {$MoreToDo} { ::set MoreToDo 0; ::foreach Item $::qw::toplevels { ::set Toplevel [::sargs::get $Item .toplevel]; ::if {[::winfo exists $Toplevel]} { ::continue; } ::set Index [::qw::toplevel_find $Item]; ::set ::qw::toplevels [::lreplace $::qw::toplevels $Index $Index]; ::set MoreToDo 1; ::break; } } ::if {$::qw::control(toplevel_order_changed)} { ::foreach Item $::qw::toplevels { ::set Toplevel [::sargs::get $Item .toplevel]; ::if {[::winfo exists $Toplevel]} { ::raise $Toplevel; } } ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::toplevel_raise,1000.99.0";} ::return; } ::set Reversed ""; ::foreach Item $::qw::toplevels { ::set Reversed [::linsert $Reversed 0 $Item]; } ::foreach Item $Reversed { ::set Toplevel [::sargs::get $Item .toplevel]; ::if {[::winfo exists $Toplevel]} { ::raise $Toplevel; } } ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::toplevel_raise,1000.99.1";} } ::rename ::update ::update_qw_0; ::if {$::qw::control(tktable_227_2)} { ::proc ::update {args} { ::qw::toplevel_raise; ::return [::eval ::update_qw_0 $args]; } } ::if {$::qw::control(tktable_227_3)} { ::if {$::tcl_version>8.4} { ::set ::qw::update_command_count 0; ::proc ::update {args} { ::if {[::llength $args]==0} { ::if {$::qw::update_command_count!=0} { ::return; } ::incr ::qw::update_command_count 1; ::qw::finally [::list ::incr ::qw::update_command_count -1]; } ::qw::toplevel_raise; ::set Result [::eval ::update_qw_0 $args]; ::return $Result; } } else { ::proc ::update {args} { ::qw::toplevel_raise; ::set Result [::eval ::update_qw_0 $args]; ::return $Result; } } } ::if {$::qw::control(tktable_227_4)} { ::set ::qw::update_idletasks_in_progress 0; ::proc ::update {args} { ::qw::toplevel_raise; ::if {[::lindex $args 1] eq "idletasks"} { ::incr ::qw::update_idletasks_in_progress 1; ::qw::finally [::list ::incr ::qw::update_idletasks_in_progress -1]; } ::return [::eval ::update_qw_0 $args]; } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.9";} ::namespace eval ::qw::password {} ::namespace eval ::qw::password::edit_assist {} ::set ::qw::password::edit_assist::dialog_result ""; ::itcl::class ::qw::password::edit_assist::widget { protected variable _toplevel ""; protected variable _frame ""; protected variable _ok_button ""; protected variable _cancel_button ""; protected variable _help_button ""; protected variable _buttons ""; protected variable _font system protected variable _entry_font {-family Courier -size 10 -weight bold} protected variable _old_password ""; protected variable _state "" method constructor {s_args} { ::set _toplevel [::sargs::get $s_args .toplevel]; ::set _old_password [::sargs::get $s_args .password]; ::wm protocol $_toplevel WM_DELETE_WINDOW [::itcl::code $this cancel]; ::set _frame [::frame $_toplevel.info.frame]; ::set _buttons [frame $_toplevel.info.buttons] ::grid $_frame -sticky news ::set Controls $_toplevel.controls; ::set _ok_button [::button $_toplevel.controls.ok -text "OK" -font $_font -borderwidth 1m -command [::itcl::code $this ok]]; ::set _cancel_button [::button $_toplevel.controls.cancel -text "Cancel" -font $_font -borderwidth 1m -command [::itcl::code $this cancel]]; ::set _help_button [::button $_toplevel.controls.help -text "Help" -font $_font -borderwidth 1m -command [::itcl::code $this help]]; ::grid $Controls.ok -row 0 -column 0 -sticky nesw -padx 1m -pady 1m; ::grid $Controls.cancel -row 0 -column 1 -sticky nesw -padx 1m -pady 1m; ::grid $Controls.help -row 0 -column 2 -sticky nesw -padx 1m -pady 1m; ::grid columnconfigure $Controls 0 -weight 1; ::grid columnconfigure $Controls 1 -weight 1; ::grid columnconfigure $Controls 2 -weight 1; ::bind $_toplevel [::itcl::code $this cancel]; ::bind $_toplevel [::itcl::code $this cancel]; ::bind $_toplevel [::itcl::code $this cancel]; ::bind $_toplevel [::itcl::code $this help]; ::bind $Controls.ok [::list ::focus $Controls.cancel]; ::bind $Controls.ok [::list ::focus $Controls.cancel]; ::bind $Controls.ok [::list ::focus $Controls.help]; ::bind $Controls.ok [::list ::focus $Controls.help]; ::bind $Controls.cancel [::list ::focus $Controls.help]; ::bind $Controls.cancel [::list ::focus $Controls.help]; ::bind $Controls.cancel [::list ::focus $Controls.ok]; ::bind $Controls.cancel [::list ::focus $Controls.ok]; ::bind $Controls.help [::list ::focus $Controls.ok]; ::bind $Controls.help [::list ::focus $Controls.ok]; ::bind $Controls.help [::list ::focus $Controls.cancel]; ::bind $Controls.help [::list ::focus $Controls.cancel]; ::set Page $_toplevel.info.frame; TitleFrame::use TitleFrame $Page.new_frame -text "Enter Password"; TitleFrame $Page.verify_frame -text "Verify Password"; ::set NewArea [$Page.new_frame getframe] ::set VerifyArea [$Page.verify_frame getframe] ::entry $NewArea.entry -font $_entry_font -width 40 -show "*"; ::entry $VerifyArea.entry -font $_entry_font -width 40 -show "*"; ::bind $NewArea.entry [::itcl::code ::focus $VerifyArea.entry]; ::bind $VerifyArea.entry [::itcl::code $this ok]; ::grid $Page.new_frame -row 0 -column 0 -sticky ew ::grid $Page.verify_frame -row 1 -column 0 -sticky ew ::pack $NewArea -expand 1 -fill both; ::pack $VerifyArea -expand 1 -fill both; ::pack $NewArea.entry -fill both -expand 1 ::pack $VerifyArea.entry -fill both -expand 1 ::grid columnconfigure $Page 0 -weight 1; ::grid rowconfigure $Page 0 -weight 0; ::grid rowconfigure $Page 1 -weight 0; ::focus $NewArea.entry; ::set _state password_user_state_change; } method encrypt {Password} { ::return [[::qw::system] cpp_password_encrypt $Password]; } method help {} { ::qw::help::launch_help_page [::sargs .help_id 314120040906135629 .command $_state]; ::return; } method ok {} { ::qw::try { ::set Page $_toplevel.info.frame; ::set NewArea [$Page.new_frame getframe] ::set VerifyArea [$Page.verify_frame getframe] ::set NewPassword [$NewArea.entry get]; ::if {[::string tolower $NewPassword] eq "locksmith"} { ::qw::throw [::sargs \ .text "Password \"locksmith\" is reserved and is not allowed." \ .help_id 314120040906135629 \ .command password_user_error_invalid_locksmith \ ]; return; } ::set NewPassword [[::qw::system] cpp_password_encrypt $NewPassword]; ::set VerifyPassword [[::qw::system] cpp_password_encrypt [[$Page.verify_frame getframe].entry get]]; ::if {$NewPassword ne "" && $VerifyPassword eq ""} { ::qw::throw [::sargs \ .help_id 314120040906135629 \ .command password_user_error_invalid_verification \ .text "You have not re-entered the new password for verification." \ ]; } ::if {$NewPassword eq "" && $VerifyPassword ne ""} { ::qw::throw [::sargs \ .help_id 314120040906135629 \ .command password_user_error_invalid_verification \ .text "You entered a verification password but you did not enter the new password." \ ]; } ::if {$NewPassword ne $VerifyPassword} { ::qw::throw [::sargs \ .help_id 314120040906135629 \ .command password_user_error_invalid_verification \ .text "The new password does not match the password re-entered for verification." \ ]; } ::if {$NewPassword eq "" && $VerifyPassword eq ""} { ::if {$_old_password eq ""} { ::set ::qw::password::edit_assist::dialog_result ""; ::return; } ::set Result [::qw::dialog::confirm [::subst { .title "Confirm password clear." .text "Do you really want to clear the existing password?" .help { .help_id 314120040906135629 .command "password_user_confirm_password_clear" } /button { /ok { .text "Clear Password" } } }]]; ::if {$Result} { ::set ::qw::password::edit_assist::dialog_result [::sargs .password ""]; } else { ::set ::qw::password::edit_assist::dialog_result ""; } ::return; } ::if {$NewPassword eq $_old_password} { ::set ::qw::password::edit_assist::dialog_result ""; ::return; } ::if {$_old_password eq ""} { ::set Result [::qw::dialog::confirm [::subst { .title "Confirm password set." .text "Confirm that you want to set the password." .help { .help_id 314120040906135629 .command "password_user_confirm_password_set" } /button { /ok { .text "Set Password" } } }]]; ::if {$Result} { ::set ::qw::password::edit_assist::dialog_result [::sargs .password $NewPassword]; } else { ::set ::qw::password::edit_assist::dialog_result ""; } ::return; } ::set Result [::qw::dialog::confirm [::subst { .title "Confirm password change." .text "Confirm that you want to change the existing password." .help { .help_id 314120040906135629 .command "password_user_confirm_password_change" } /button { /ok { .text "Change Password" } } }]]; ::if {$Result} { ::set ::qw::password::edit_assist::dialog_result [::sargs .password $NewPassword]; } else { ::set ::qw::password::edit_assist::dialog_result ""; } ::return; } catch Exception { ::qw::dialog85::error .structure $Exception; return; } } method cancel {} { ::set ::qw::password::edit_assist::dialog_result ""; } } ::proc ::qw::password::edit_assist::dialog {s_args} { ::sargs::var::+= s_args [::sargs::get $::qw::options .window]; ::set Toplevel [::qw::dialog::create $s_args]; ::sargs::var::set s_args .toplevel $Toplevel; ::qw::password::edit_assist::widget #auto $s_args; ::qw::dialog::wait .toplevel $Toplevel .variable ::qw::password::edit_assist::dialog_result; ::destroy $Toplevel; ::return $::qw::password::edit_assist::dialog_result; } ::namespace eval ::qw::password::edit_assist_login_password_field {} ::set ::qw::password::edit_assist_login_password_field::dialog_result ""; ::itcl::class ::qw::password::edit_assist_login_password_field::widget { protected variable _toplevel ""; protected variable _frame ""; protected variable _ok_button ""; protected variable _cancel_button ""; protected variable _help_button ""; protected variable _buttons ""; protected variable _font {-family Arial -size 10 -weight bold} protected variable _entry_font {-family Courier -size 10 -weight bold} protected variable _old_password ""; protected variable _allow_locksmith 0; method constructor {s_args} { ::set _toplevel [::sargs::get $s_args .toplevel]; ::set _old_password [::sargs::get $s_args .password]; ::set _allow_locksmith [::sargs::boolean_get $s_args .allow_locksmith]; ::wm protocol $_toplevel WM_DELETE_WINDOW [::itcl::code $this cancel]; ::set _frame [::frame $_toplevel.info.frame]; ::set _buttons [frame $_toplevel.info.buttons] ::grid $_frame -sticky news ::set Controls $_toplevel.controls; ::set _ok_button [::button $_toplevel.controls.ok -text "OK" -font $_font -borderwidth 1m -command [::itcl::code $this ok]]; ::set _cancel_button [::button $_toplevel.controls.cancel -text "Cancel" -font $_font -borderwidth 1m -command [::itcl::code $this cancel]]; ::set _help_button [::button $_toplevel.controls.help -text "Help" -font $_font -borderwidth 1m -command [::itcl::code $this help]]; ::grid $Controls.ok -row 0 -column 0 -sticky nesw -padx 1m -pady 1m; ::grid $Controls.cancel -row 0 -column 1 -sticky nesw -padx 1m -pady 1m; ::grid $Controls.help -row 0 -column 2 -sticky nesw -padx 1m -pady 1m; ::grid columnconfigure $Controls 0 -weight 1; ::grid columnconfigure $Controls 1 -weight 1; ::grid columnconfigure $Controls 2 -weight 1; ::bind $_toplevel [::itcl::code $this cancel]; ::bind $_toplevel [::itcl::code $this cancel]; ::bind $_toplevel [::itcl::code $this cancel]; ::bind $_toplevel [::itcl::code $this help]; ::bind $Controls.ok [::list ::focus $Controls.cancel]; ::bind $Controls.ok [::list ::focus $Controls.cancel]; ::bind $Controls.ok [::list ::focus $Controls.help]; ::bind $Controls.ok [::list ::focus $Controls.help]; ::bind $Controls.cancel [::list ::focus $Controls.help]; ::bind $Controls.cancel [::list ::focus $Controls.help]; ::bind $Controls.cancel [::list ::focus $Controls.ok]; ::bind $Controls.cancel [::list ::focus $Controls.ok]; ::bind $Controls.help [::list ::focus $Controls.ok]; ::bind $Controls.help [::list ::focus $Controls.ok]; ::bind $Controls.help [::list ::focus $Controls.cancel]; ::bind $Controls.help [::list ::focus $Controls.cancel]; ::set Page $_toplevel.info.frame; TitleFrame::use TitleFrame $Page.new_frame -text "Enter password"; ::set NewArea [$Page.new_frame getframe] ::entry $NewArea.entry -font $_entry_font -width 40 -show "*"; ::bind $NewArea.entry [::itcl::code $this ok]; ::grid $Page.new_frame -row 0 -column 0 -sticky ew ::pack $NewArea -expand 1 -fill both; ::pack $NewArea.entry -fill both -expand 1 ::grid columnconfigure $Page 0 -weight 1; ::grid rowconfigure $Page 0 -weight 0; ::focus $NewArea.entry; } method encrypt {Password} { ::return [[::qw::system] cpp_password_encrypt $Password]; } method help {} { ::qw::throw "Help is currently not available on the password edit assist."; } method ok {} { ::qw::try { ::set Page $_toplevel.info.frame; ::set NewArea [$Page.new_frame getframe] ::set NewPassword [encrypt [$NewArea.entry get]]; ::if {$NewPassword eq ""} { ::if {$_old_password eq ""} { ::set ::qw::password::edit_assist_login_password_field::dialog_result ""; ::return; } ::set Result [::qw::dialog::confirm [::qw::list { .title "Confirm password reset." .text "Do you really want to clear the existing password?" /button { /ok { .text "Clear Password" } /cancel { .text "Cancel" } /help { .command {::qw::help::window .page {.id 1111111111111111}} } } }]]; ::if {$Result} { ::set ::qw::password::edit_assist_login_password_field::dialog_result [::sargs .password ""]; } else { ::set ::qw::password::edit_assist_login_password_field::dialog_result ""; } ::return; } ::if {$NewPassword eq $_old_password} { ::set ::qw::password::edit_assist_login_password_field::dialog_result ""; ::return; } ::if {$NewPassword eq "locksmith"} { ::if {!$_allow_locksmith} { ::qw::throw "Password \"$NewPassword\" is reserved and is not allowed."; } ::set Result [::qw::dialog::confirm [::qw::list { .title "Confirm locksmith." .text "Confirm that you want to use \"locksmith\" to access database." /button { /ok { .text "Use Locksmith" } /cancel { .text "Cancel" } /help { .command {::qw::help::window .page {.id 1111111111111111}} } } }]]; ::if {$Result} { ::set ::qw::password::edit_assist_login_password_field::dialog_result [::sargs .password $NewPassword]; } else { ::set ::qw::password::edit_assist_login_password_field::dialog_result ""; } ::return; } ::if {$_old_password eq ""} { ::set Result [::qw::dialog::confirm [::qw::list { .title "Confirm password set." .text "Confirm that you want to set the password." /button { /ok { .text "Set Password" } /cancel { .text "Cancel" } /help { .command {::qw::help::window .page {.id 1111111111111111}} } } }]]; ::if {$Result} { ::set ::qw::password::edit_assist_login_password_field::dialog_result [::sargs .password $NewPassword]; } else { ::set ::qw::password::edit_assist_login_password_field::dialog_result ""; } ::return; } ::set Result [::qw::dialog::confirm [::qw::list { .title "Confirm password change." .text "Confirm that you want to change the existing password." /button { /ok { .text "Change Password" } /cancel { .text "Cancel" } /help { .command {::qw::help::window .page {.id 1111111111111111}} } } }]]; ::if {$Result} { ::set ::qw::password::edit_assist_login_password_field::dialog_result [::sargs .password $NewPassword]; } else { ::set ::qw::password::edit_assist_login_password_field::dialog_result ""; } ::return; } catch Exception { ::qw::dialog85::error .structure $Exception; return; } } method cancel {} { ::set ::qw::password::edit_assist_login_password_field::dialog_result ""; } } ::proc ::qw::password::edit_assist_login_password_field::dialog {s_args} { ::sargs::var::+= s_args [::sargs::get $::qw::options .window]; ::set Toplevel [::qw::dialog::create $s_args]; ::sargs::var::set s_args .toplevel $Toplevel; ::qw::password::edit_assist_login_password_field::widget #auto $s_args; ::qw::dialog::wait .toplevel $Toplevel .variable ::qw::password::edit_assist_login_password_field::dialog_result; ::destroy $Toplevel; ::return $::qw::password::edit_assist_login_password_field::dialog_result; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.10";} ::namespace eval ::tk::table { variable Priv; array set Priv [list x 0 y 0 afterId {} mouseMoved 0 borderInfo {} borderB1 1]; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.10.0";} ::namespace eval ::QW::HTML {} ::array set ::qw::glossary { nv1 "NV1" nv2 "NV2" nv1export "NVEXPORT" }; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.10.1";} ::proc ::qwhelp {args} { ::array set Args $args; ::if {![::info exists Args(-webpageid)]} {error "The -webpageid option was missing.";} ::if {![::info exists Args(-browser)]} {::set Args(-browser) $::poo::runtime::environment(BROWSER_PROGRAM);} ::if {![::info exists Args(-host)]} {::set Args(-host) $::poo::runtime::environment(HELP_HOST);} ::array set Query [::list webpageid $Args(-webpageid)]; ::if {[::info exists Args(-query)]&&[::llength $Args(-query)]} {::array set Query $Args(-query);} ::launch "$Args(-browser) http://$Args(-host):$::poo::runtime::environment(INTERNET.SERVICE.PORT.HELP)/qwpage/page?[::eval ::http::formatQuery [::array get Query]]"; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.10.2";} ::if {$::qw::control(tk_is_enabled)} { ::package require qw::help; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.10.2.3";} ::proc ::qw::odb::dat_install_on_demand {sargs} { ::set InstallationFolder [::file dirname [::file join $::qw_data]]; ::if {[::file exists [::file join $InstallationFolder nv20.exe]]} { ::qw::try { ::file delete [::file join $InstallationFolder nv20.exe]; } catch Dummy {} } ::if {[::file exists $::qw_data]} { ::return; } ::if {![::file writable [::file dirname $::qw_library]]} { ::return; } ::if {[::file exists [::file join $InstallationFolder nv20.dat]]} { ::qw::try { ::file rename [::file join $InstallationFolder nv20.dat] [::file join $InstallationFolder nv2.dat]; ::return; } catch Dummy { } } ::qw::try { ::file mkdir $::qw_data; } catch dummy {} ::set Result [::qw::odb::dat_install_on_demand_find_nv_dat]; ::if {$Result eq ""} { ::return; } ::file copy -force $Result [::file join [::file dirname $::qw_library] nv2.dat]; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.10.3";} ::proc ::qw::odb::dat_install_on_demand_find_nv_dat {sargs} { ::return ""; ::switch -- $::tcl_platform(platform) { "windows" { ::if {[::sargs::get $sargs .directory] eq ""} { ::set Drives [::file volumes]; ::set Drives [::string tolower $Drives]; ::set Drives [::lrange $Drives [::lsearch -exact $Drives c:/] end]; ::foreach Drive $Drives { ::set Subs [::glob -nocomplain -types d "${Drive}*"]; ::set Subs [::string tolower $Subs]; ::foreach Sub $Subs { ::if {![::file isdirectory $Sub]} {::continue;} ::if {[::file tail $Sub] eq "nv2.dat"} { ::if {[::file exists [::file join $Sub manual.chm]]} { ::return [::file join $Sub manual.chm]; } } ::set Result [dat_install_on_demand_find_nv_dat [::sargs .directory $Sub]]; if {$Result ne ""} { ::return $Result; } } } ::return ""; } ::set Subs [::glob -nocomplain -types d "[::sargs::get $s_args .directory]/*"]; ::set Subs [::string tolower $Subs]; ::foreach Sub $Subs { ::if {[::file tail $Sub] eq "nv2.dat"} { ::if {[::file exists [::file join $Sub manual.chm]]} { ::return [::file join $Sub manual.chm]; } } ::set Result [dat_install_on_demand_find_nv_dat [::sargs .directory $Sub]]; if {$Result ne ""} { ::return $Result; } } ::return ""; } default { return ""; } } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.10.4";} ::proc ::qw::extract_maximum_connections_for_same_workstation_from_serial {args} { ::qw::s_args_marshal; ::set Serial [::sargs::get $s_args .serial]; ::if {![::regexp -- {-u[0-9][0-9][0-9]} [::string tolower $Serial]]} { ::return 0; } ::set Index [::string first "-u" [::string tolower $Serial]]; ::set Start [::expr {$Index+2}]; ::set End [::expr {$Index+4}]; ::set Count [::string range $Serial $Start $End]; ::if {![::regexp -- {[0-9][0-9][0-9]} $Count]} { ::qw::bug "Encountered invalid serial number \"$Serial\"."; } ::set Count [::string trimleft $Count 0]; ::if {$Count eq ""} { ::return 0; } ::return $Count; } ::proc ::qw::odb::database_schema_update_216_217 {args} { ::qw::s_args_marshal; ::set Database [::sargs::get $s_args .database]; ::set OS [$Database cpp_object_structure_load .path /OBJECT/SYSTEM/WINDOW]; ::if {![::sargs::exists $OS .meta.frame.dressing.button/maximizeRestore.options.image_arrow_left]} { ::foreach Orient {left right up down} { ::sargs::var::set OS .meta.frame.dressing.button/maximizeRestore.options.image_arrow_$Orient.odb.id .image_arrow_$Orient; ::sargs::var::set OS .meta.frame.dressing.button/maximizeRestore.options.image_arrow_$Orient.odb.type string; ::sargs::var::set OS .meta.frame.dressing.button/maximizeRestore.options.image_arrow_$Orient.odb.tcl_base ::QW::GUI::OPTIONS_IMAGE; ::set Data ""; ::switch -- $Orient { left { ::set Data { {----------}\ {----1-----}\ {---11-----}\ {--111-----}\ {-11111111-}\ {-11111111-}\ {--111-----}\ {---11-----}\ {----1-----}\ {----------}\ } } right { ::set Data { {----------}\ {-----1----}\ {-----11---}\ {-----111--}\ {-11111111-}\ {-11111111-}\ {-----111--}\ {-----11---}\ {-----1----}\ {----------}\ } } up { ::set Data { {----------}\ {----11----}\ {---1111---}\ {--111111--}\ {-11111111-}\ {----11----}\ {----11----}\ {----11----}\ {----11----}\ {----------}\ } } down { ::set Data { {----------}\ {----11----}\ {----11----}\ {----11----}\ {----11----}\ {-11111111-}\ {--111111--}\ {---1111---}\ {----11----}\ {----------}\ } } } ::set Result ""; ::append Result " -data \"[::QW::GUI::IMAGE_BITMAP::asciiToHex $Data data]\""; ::append Result " -maskdata \"[::QW::GUI::IMAGE_BITMAP::asciiToHex $Data mask]\""; ::sargs::var::set OS .data.frame.dressing.button/maximizeRestore.options.image_arrow_$Orient $Result; } $Database cpp_object_structure_store .structure $OS; } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.10.5";} ::set ::qw::colors { /object { /newviews { /account { .background #fff1f1 .rgb "255 241 241" } /journal { .background #dfffff .rgb "223 255 255" } /posting { .background #caf8d9 .rgb "202 248 217" } } } } ::namespace eval ::qw::color {} ::proc ::qw::color::symbol_to_rgb_helper {Red Green Blue} { ::return [::string map {" " 0} "#[::format %2x%2x%2x $Red $Green $Blue]"]; } ::proc ::qw::color::symbol_to_rgb {Symbol} { if {[::string index $Symbol 0] eq "#"} {::return $Symbol;} ::switch -- $Symbol { "alice blue" {::return [::qw::color::symbol_to_rgb_helper 240 248 255];} "AliceBlue" {::return [::qw::color::symbol_to_rgb_helper 240 248 255];} "antique white" {::return [::qw::color::symbol_to_rgb_helper 250 235 215];} "AntiqueWhite" {::return [::qw::color::symbol_to_rgb_helper 250 235 215];} "AntiqueWhite1" {::return [::qw::color::symbol_to_rgb_helper 255 239 219];} "AntiqueWhite2" {::return [::qw::color::symbol_to_rgb_helper 238 223 204];} "AntiqueWhite3" {::return [::qw::color::symbol_to_rgb_helper 205 192 176];} "AntiqueWhite4" {::return [::qw::color::symbol_to_rgb_helper 139 131 120];} "aquamarine" {::return [::qw::color::symbol_to_rgb_helper 127 255 212];} "aquamarine1" {::return [::qw::color::symbol_to_rgb_helper 127 255 212];} "aquamarine2" {::return [::qw::color::symbol_to_rgb_helper 118 238 198];} "aquamarine3" {::return [::qw::color::symbol_to_rgb_helper 102 205 170];} "aquamarine4" {::return [::qw::color::symbol_to_rgb_helper 69 139 116];} "azure" {::return [::qw::color::symbol_to_rgb_helper 240 255 255];} "azure1" {::return [::qw::color::symbol_to_rgb_helper 240 255 255];} "azure2" {::return [::qw::color::symbol_to_rgb_helper 224 238 238];} "azure3" {::return [::qw::color::symbol_to_rgb_helper 193 205 205];} "azure4" {::return [::qw::color::symbol_to_rgb_helper 131 139 139];} "beige" {::return [::qw::color::symbol_to_rgb_helper 245 245 220];} "bisque" {::return [::qw::color::symbol_to_rgb_helper 255 228 196];} "bisque1" {::return [::qw::color::symbol_to_rgb_helper 255 228 196];} "bisque2" {::return [::qw::color::symbol_to_rgb_helper 238 213 183];} "bisque3" {::return [::qw::color::symbol_to_rgb_helper 205 183 158];} "bisque4" {::return [::qw::color::symbol_to_rgb_helper 139 125 107];} "black" {::return [::qw::color::symbol_to_rgb_helper 0 0 0];} "blanched almond" {::return [::qw::color::symbol_to_rgb_helper 255 235 205];} "BlanchedAlmond" {::return [::qw::color::symbol_to_rgb_helper 255 235 205];} "blue" {::return [::qw::color::symbol_to_rgb_helper 0 0 255];} "blue violet" {::return [::qw::color::symbol_to_rgb_helper 138 43 226];} "blue1" {::return [::qw::color::symbol_to_rgb_helper 0 0 255];} "blue2" {::return [::qw::color::symbol_to_rgb_helper 0 0 238];} "blue3" {::return [::qw::color::symbol_to_rgb_helper 0 0 205];} "blue4" {::return [::qw::color::symbol_to_rgb_helper 0 0 139];} "BlueViolet" {::return [::qw::color::symbol_to_rgb_helper 138 43 226];} "brown" {::return [::qw::color::symbol_to_rgb_helper 165 42 42];} "brown1" {::return [::qw::color::symbol_to_rgb_helper 255 64 64];} "brown2" {::return [::qw::color::symbol_to_rgb_helper 238 59 59];} "brown3" {::return [::qw::color::symbol_to_rgb_helper 205 51 51];} "brown4" {::return [::qw::color::symbol_to_rgb_helper 139 35 35];} "burlywood" {::return [::qw::color::symbol_to_rgb_helper 222 184 135];} "burlywood1" {::return [::qw::color::symbol_to_rgb_helper 255 211 155];} "burlywood2" {::return [::qw::color::symbol_to_rgb_helper 238 197 145];} "burlywood3" {::return [::qw::color::symbol_to_rgb_helper 205 170 125];} "burlywood4" {::return [::qw::color::symbol_to_rgb_helper 139 115 85];} "cadet blue" {::return [::qw::color::symbol_to_rgb_helper 95 158 160];} "CadetBlue" {::return [::qw::color::symbol_to_rgb_helper 95 158 160];} "CadetBlue1" {::return [::qw::color::symbol_to_rgb_helper 152 245 255];} "CadetBlue2" {::return [::qw::color::symbol_to_rgb_helper 142 229 238];} "CadetBlue3" {::return [::qw::color::symbol_to_rgb_helper 122 197 205];} "CadetBlue4" {::return [::qw::color::symbol_to_rgb_helper 83 134 139];} "chartreuse" {::return [::qw::color::symbol_to_rgb_helper 127 255 0];} "chartreuse1" {::return [::qw::color::symbol_to_rgb_helper 127 255 0];} "chartreuse2" {::return [::qw::color::symbol_to_rgb_helper 118 238 0];} "chartreuse3" {::return [::qw::color::symbol_to_rgb_helper 102 205 0];} "chartreuse4" {::return [::qw::color::symbol_to_rgb_helper 69 139 0];} "chocolate" {::return [::qw::color::symbol_to_rgb_helper 210 105 30];} "chocolate1" {::return [::qw::color::symbol_to_rgb_helper 255 127 36];} "chocolate2" {::return [::qw::color::symbol_to_rgb_helper 238 118 33];} "chocolate3" {::return [::qw::color::symbol_to_rgb_helper 205 102 29];} "chocolate4" {::return [::qw::color::symbol_to_rgb_helper 139 69 19];} "coral" {::return [::qw::color::symbol_to_rgb_helper 255 127 80];} "coral1" {::return [::qw::color::symbol_to_rgb_helper 255 114 86];} "coral2" {::return [::qw::color::symbol_to_rgb_helper 238 106 80];} "coral3" {::return [::qw::color::symbol_to_rgb_helper 205 91 69];} "coral4" {::return [::qw::color::symbol_to_rgb_helper 139 62 47];} "cornflower blue" {::return [::qw::color::symbol_to_rgb_helper 100 149 237];} "CornflowerBlue" {::return [::qw::color::symbol_to_rgb_helper 100 149 237];} "cornsilk" {::return [::qw::color::symbol_to_rgb_helper 255 248 220];} "cornsilk1" {::return [::qw::color::symbol_to_rgb_helper 255 248 220];} "cornsilk2" {::return [::qw::color::symbol_to_rgb_helper 238 232 205];} "cornsilk3" {::return [::qw::color::symbol_to_rgb_helper 205 200 177];} "cornsilk4" {::return [::qw::color::symbol_to_rgb_helper 139 136 120];} "cyan" {::return [::qw::color::symbol_to_rgb_helper 0 255 255];} "cyan1" {::return [::qw::color::symbol_to_rgb_helper 0 255 255];} "cyan2" {::return [::qw::color::symbol_to_rgb_helper 0 238 238];} "cyan3" {::return [::qw::color::symbol_to_rgb_helper 0 205 205];} "cyan4" {::return [::qw::color::symbol_to_rgb_helper 0 139 139];} "dark blue" {::return [::qw::color::symbol_to_rgb_helper 0 0 139];} "dark cyan" {::return [::qw::color::symbol_to_rgb_helper 0 139 139];} "dark goldenrod" {::return [::qw::color::symbol_to_rgb_helper 184 134 11];} "dark gray" {::return [::qw::color::symbol_to_rgb_helper 169 169 169];} "dark green" {::return [::qw::color::symbol_to_rgb_helper 0 100 0];} "dark grey" {::return [::qw::color::symbol_to_rgb_helper 169 169 169];} "dark khaki" {::return [::qw::color::symbol_to_rgb_helper 189 183 107];} "dark magenta" {::return [::qw::color::symbol_to_rgb_helper 139 0 139];} "dark olive green" {::return [::qw::color::symbol_to_rgb_helper 85 107 47];} "dark orange" {::return [::qw::color::symbol_to_rgb_helper 255 140 0];} "dark orchid" {::return [::qw::color::symbol_to_rgb_helper 153 50 204];} "dark red" {::return [::qw::color::symbol_to_rgb_helper 139 0 0];} "dark salmon" {::return [::qw::color::symbol_to_rgb_helper 233 150 122];} "dark sea green" {::return [::qw::color::symbol_to_rgb_helper 143 188 143];} "dark slate blue" {::return [::qw::color::symbol_to_rgb_helper 72 61 139];} "dark slate gray" {::return [::qw::color::symbol_to_rgb_helper 47 79 79];} "dark slate grey" {::return [::qw::color::symbol_to_rgb_helper 47 79 79];} "dark turquoise" {::return [::qw::color::symbol_to_rgb_helper 0 206 209];} "dark violet" {::return [::qw::color::symbol_to_rgb_helper 148 0 211];} "DarkBlue" {::return [::qw::color::symbol_to_rgb_helper 0 0 139];} "DarkCyan" {::return [::qw::color::symbol_to_rgb_helper 0 139 139];} "DarkGoldenrod" {::return [::qw::color::symbol_to_rgb_helper 184 134 11];} "DarkGoldenrod1" {::return [::qw::color::symbol_to_rgb_helper 255 185 15];} "DarkGoldenrod2" {::return [::qw::color::symbol_to_rgb_helper 238 173 14];} "DarkGoldenrod3" {::return [::qw::color::symbol_to_rgb_helper 205 149 12];} "DarkGoldenrod4" {::return [::qw::color::symbol_to_rgb_helper 139 101 8];} "DarkGray" {::return [::qw::color::symbol_to_rgb_helper 169 169 169];} "DarkGreen" {::return [::qw::color::symbol_to_rgb_helper 0 100 0];} "DarkGrey" {::return [::qw::color::symbol_to_rgb_helper 169 169 169];} "DarkKhaki" {::return [::qw::color::symbol_to_rgb_helper 189 183 107];} "DarkMagenta" {::return [::qw::color::symbol_to_rgb_helper 139 0 139];} "DarkOliveGreen" {::return [::qw::color::symbol_to_rgb_helper 85 107 47];} "DarkOliveGreen1" {::return [::qw::color::symbol_to_rgb_helper 202 255 112];} "DarkOliveGreen2" {::return [::qw::color::symbol_to_rgb_helper 188 238 104];} "DarkOliveGreen3" {::return [::qw::color::symbol_to_rgb_helper 162 205 90];} "DarkOliveGreen4" {::return [::qw::color::symbol_to_rgb_helper 110 139 61];} "DarkOrange" {::return [::qw::color::symbol_to_rgb_helper 255 140 0];} "DarkOrange1" {::return [::qw::color::symbol_to_rgb_helper 255 127 0];} "DarkOrange2" {::return [::qw::color::symbol_to_rgb_helper 238 118 0];} "DarkOrange3" {::return [::qw::color::symbol_to_rgb_helper 205 102 0];} "DarkOrange4" {::return [::qw::color::symbol_to_rgb_helper 139 69 0];} "DarkOrchid" {::return [::qw::color::symbol_to_rgb_helper 153 50 204];} "DarkOrchid1" {::return [::qw::color::symbol_to_rgb_helper 191 62 255];} "DarkOrchid2" {::return [::qw::color::symbol_to_rgb_helper 178 58 238];} "DarkOrchid3" {::return [::qw::color::symbol_to_rgb_helper 154 50 205];} "DarkOrchid4" {::return [::qw::color::symbol_to_rgb_helper 104 34 139];} "DarkRed" {::return [::qw::color::symbol_to_rgb_helper 139 0 0];} "DarkSalmon" {::return [::qw::color::symbol_to_rgb_helper 233 150 122];} "DarkSeaGreen" {::return [::qw::color::symbol_to_rgb_helper 143 188 143];} "DarkSeaGreen1" {::return [::qw::color::symbol_to_rgb_helper 193 255 193];} "DarkSeaGreen2" {::return [::qw::color::symbol_to_rgb_helper 180 238 180];} "DarkSeaGreen3" {::return [::qw::color::symbol_to_rgb_helper 155 205 155];} "DarkSeaGreen4" {::return [::qw::color::symbol_to_rgb_helper 105 139 105];} "DarkSlateBlue" {::return [::qw::color::symbol_to_rgb_helper 72 61 139];} "DarkSlateGray" {::return [::qw::color::symbol_to_rgb_helper 47 79 79];} "DarkSlateGray1" {::return [::qw::color::symbol_to_rgb_helper 151 255 255];} "DarkSlateGray2" {::return [::qw::color::symbol_to_rgb_helper 141 238 238];} "DarkSlateGray3" {::return [::qw::color::symbol_to_rgb_helper 121 205 205];} "DarkSlateGray4" {::return [::qw::color::symbol_to_rgb_helper 82 139 139];} "DarkSlateGrey" {::return [::qw::color::symbol_to_rgb_helper 47 79 79];} "DarkTurquoise" {::return [::qw::color::symbol_to_rgb_helper 0 206 209];} "DarkViolet" {::return [::qw::color::symbol_to_rgb_helper 148 0 211];} "deep pink" {::return [::qw::color::symbol_to_rgb_helper 255 20 147];} "deep sky blue" {::return [::qw::color::symbol_to_rgb_helper 0 191 255];} "DeepPink" {::return [::qw::color::symbol_to_rgb_helper 255 20 147];} "DeepPink1" {::return [::qw::color::symbol_to_rgb_helper 255 20 147];} "DeepPink2" {::return [::qw::color::symbol_to_rgb_helper 238 18 137];} "DeepPink3" {::return [::qw::color::symbol_to_rgb_helper 205 16 118];} "DeepPink4" {::return [::qw::color::symbol_to_rgb_helper 139 10 80];} "DeepSkyBlue" {::return [::qw::color::symbol_to_rgb_helper 0 191 255];} "DeepSkyBlue1" {::return [::qw::color::symbol_to_rgb_helper 0 191 255];} "DeepSkyBlue2" {::return [::qw::color::symbol_to_rgb_helper 0 178 238];} "DeepSkyBlue3" {::return [::qw::color::symbol_to_rgb_helper 0 154 205];} "DeepSkyBlue4" {::return [::qw::color::symbol_to_rgb_helper 0 104 139];} "dim gray" {::return [::qw::color::symbol_to_rgb_helper 105 105 105];} "dim grey" {::return [::qw::color::symbol_to_rgb_helper 105 105 105];} "DimGray" {::return [::qw::color::symbol_to_rgb_helper 105 105 105];} "DimGrey" {::return [::qw::color::symbol_to_rgb_helper 105 105 105];} "dodger blue" {::return [::qw::color::symbol_to_rgb_helper 30 144 255];} "DodgerBlue" {::return [::qw::color::symbol_to_rgb_helper 30 144 255];} "DodgerBlue1" {::return [::qw::color::symbol_to_rgb_helper 30 144 255];} "DodgerBlue2" {::return [::qw::color::symbol_to_rgb_helper 28 134 238];} "DodgerBlue3" {::return [::qw::color::symbol_to_rgb_helper 24 116 205];} "DodgerBlue4" {::return [::qw::color::symbol_to_rgb_helper 16 78 139];} "firebrick" {::return [::qw::color::symbol_to_rgb_helper 178 34 34];} "firebrick1" {::return [::qw::color::symbol_to_rgb_helper 255 48 48];} "firebrick2" {::return [::qw::color::symbol_to_rgb_helper 238 44 44];} "firebrick3" {::return [::qw::color::symbol_to_rgb_helper 205 38 38];} "firebrick4" {::return [::qw::color::symbol_to_rgb_helper 139 26 26];} "floral white" {::return [::qw::color::symbol_to_rgb_helper 255 250 240];} "FloralWhite" {::return [::qw::color::symbol_to_rgb_helper 255 250 240];} "forest green" {::return [::qw::color::symbol_to_rgb_helper 34 139 34];} "ForestGreen" {::return [::qw::color::symbol_to_rgb_helper 34 139 34];} "gainsboro" {::return [::qw::color::symbol_to_rgb_helper 220 220 220];} "ghost white" {::return [::qw::color::symbol_to_rgb_helper 248 248 255];} "GhostWhite" {::return [::qw::color::symbol_to_rgb_helper 248 248 255];} "gold" {::return [::qw::color::symbol_to_rgb_helper 255 215 0];} "gold1" {::return [::qw::color::symbol_to_rgb_helper 255 215 0];} "gold2" {::return [::qw::color::symbol_to_rgb_helper 238 201 0];} "gold3" {::return [::qw::color::symbol_to_rgb_helper 205 173 0];} "gold4" {::return [::qw::color::symbol_to_rgb_helper 139 117 0];} "goldenrod" {::return [::qw::color::symbol_to_rgb_helper 218 165 32];} "goldenrod1" {::return [::qw::color::symbol_to_rgb_helper 255 193 37];} "goldenrod2" {::return [::qw::color::symbol_to_rgb_helper 238 180 34];} "goldenrod3" {::return [::qw::color::symbol_to_rgb_helper 205 155 29];} "goldenrod4" {::return [::qw::color::symbol_to_rgb_helper 139 105 20];} "gray" {::return [::qw::color::symbol_to_rgb_helper 190 190 190];} "gray0" {::return [::qw::color::symbol_to_rgb_helper 0 0 0];} "gray1" {::return [::qw::color::symbol_to_rgb_helper 3 3 3];} "gray10" {::return [::qw::color::symbol_to_rgb_helper 26 26 26];} "gray100" {::return [::qw::color::symbol_to_rgb_helper 255 255 255];} "gray11" {::return [::qw::color::symbol_to_rgb_helper 28 28 28];} "gray12" {::return [::qw::color::symbol_to_rgb_helper 31 31 31];} "gray13" {::return [::qw::color::symbol_to_rgb_helper 33 33 33];} "gray14" {::return [::qw::color::symbol_to_rgb_helper 36 36 36];} "gray15" {::return [::qw::color::symbol_to_rgb_helper 38 38 38];} "gray16" {::return [::qw::color::symbol_to_rgb_helper 41 41 41];} "gray17" {::return [::qw::color::symbol_to_rgb_helper 43 43 43];} "gray18" {::return [::qw::color::symbol_to_rgb_helper 46 46 46];} "gray19" {::return [::qw::color::symbol_to_rgb_helper 48 48 48];} "gray2" {::return [::qw::color::symbol_to_rgb_helper 5 5 5];} "gray20" {::return [::qw::color::symbol_to_rgb_helper 51 51 51];} "gray21" {::return [::qw::color::symbol_to_rgb_helper 54 54 54];} "gray22" {::return [::qw::color::symbol_to_rgb_helper 56 56 56];} "gray23" {::return [::qw::color::symbol_to_rgb_helper 59 59 59];} "gray24" {::return [::qw::color::symbol_to_rgb_helper 61 61 61];} "gray25" {::return [::qw::color::symbol_to_rgb_helper 64 64 64];} "gray26" {::return [::qw::color::symbol_to_rgb_helper 66 66 66];} "gray27" {::return [::qw::color::symbol_to_rgb_helper 69 69 69];} "gray28" {::return [::qw::color::symbol_to_rgb_helper 71 71 71];} "gray29" {::return [::qw::color::symbol_to_rgb_helper 74 74 74];} "gray3" {::return [::qw::color::symbol_to_rgb_helper 8 8 8];} "gray30" {::return [::qw::color::symbol_to_rgb_helper 77 77 77];} "gray31" {::return [::qw::color::symbol_to_rgb_helper 79 79 79];} "gray32" {::return [::qw::color::symbol_to_rgb_helper 82 82 82];} "gray33" {::return [::qw::color::symbol_to_rgb_helper 84 84 84];} "gray34" {::return [::qw::color::symbol_to_rgb_helper 87 87 87];} "gray35" {::return [::qw::color::symbol_to_rgb_helper 89 89 89];} "gray36" {::return [::qw::color::symbol_to_rgb_helper 92 92 92];} "gray37" {::return [::qw::color::symbol_to_rgb_helper 94 94 94];} "gray38" {::return [::qw::color::symbol_to_rgb_helper 97 97 97];} "gray39" {::return [::qw::color::symbol_to_rgb_helper 99 99 99];} "gray4" {::return [::qw::color::symbol_to_rgb_helper 10 10 10];} "gray40" {::return [::qw::color::symbol_to_rgb_helper 102 102 102];} "gray41" {::return [::qw::color::symbol_to_rgb_helper 105 105 105];} "gray42" {::return [::qw::color::symbol_to_rgb_helper 107 107 107];} "gray43" {::return [::qw::color::symbol_to_rgb_helper 110 110 110];} "gray44" {::return [::qw::color::symbol_to_rgb_helper 112 112 112];} "gray45" {::return [::qw::color::symbol_to_rgb_helper 115 115 115];} "gray46" {::return [::qw::color::symbol_to_rgb_helper 117 117 117];} "gray47" {::return [::qw::color::symbol_to_rgb_helper 120 120 120];} "gray48" {::return [::qw::color::symbol_to_rgb_helper 122 122 122];} "gray49" {::return [::qw::color::symbol_to_rgb_helper 125 125 125];} "gray5" {::return [::qw::color::symbol_to_rgb_helper 13 13 13];} "gray50" {::return [::qw::color::symbol_to_rgb_helper 127 127 127];} "gray51" {::return [::qw::color::symbol_to_rgb_helper 130 130 130];} "gray52" {::return [::qw::color::symbol_to_rgb_helper 133 133 133];} "gray53" {::return [::qw::color::symbol_to_rgb_helper 135 135 135];} "gray54" {::return [::qw::color::symbol_to_rgb_helper 138 138 138];} "gray55" {::return [::qw::color::symbol_to_rgb_helper 140 140 140];} "gray56" {::return [::qw::color::symbol_to_rgb_helper 143 143 143];} "gray57" {::return [::qw::color::symbol_to_rgb_helper 145 145 145];} "gray58" {::return [::qw::color::symbol_to_rgb_helper 148 148 148];} "gray59" {::return [::qw::color::symbol_to_rgb_helper 150 150 150];} "gray6" {::return [::qw::color::symbol_to_rgb_helper 15 15 15];} "gray60" {::return [::qw::color::symbol_to_rgb_helper 153 153 153];} "gray61" {::return [::qw::color::symbol_to_rgb_helper 156 156 156];} "gray62" {::return [::qw::color::symbol_to_rgb_helper 158 158 158];} "gray63" {::return [::qw::color::symbol_to_rgb_helper 161 161 161];} "gray64" {::return [::qw::color::symbol_to_rgb_helper 163 163 163];} "gray65" {::return [::qw::color::symbol_to_rgb_helper 166 166 166];} "gray66" {::return [::qw::color::symbol_to_rgb_helper 168 168 168];} "gray67" {::return [::qw::color::symbol_to_rgb_helper 171 171 171];} "gray68" {::return [::qw::color::symbol_to_rgb_helper 173 173 173];} "gray69" {::return [::qw::color::symbol_to_rgb_helper 176 176 176];} "gray7" {::return [::qw::color::symbol_to_rgb_helper 18 18 18];} "gray70" {::return [::qw::color::symbol_to_rgb_helper 179 179 179];} "gray71" {::return [::qw::color::symbol_to_rgb_helper 181 181 181];} "gray72" {::return [::qw::color::symbol_to_rgb_helper 184 184 184];} "gray73" {::return [::qw::color::symbol_to_rgb_helper 186 186 186];} "gray74" {::return [::qw::color::symbol_to_rgb_helper 189 189 189];} "gray75" {::return [::qw::color::symbol_to_rgb_helper 191 191 191];} "gray76" {::return [::qw::color::symbol_to_rgb_helper 194 194 194];} "gray77" {::return [::qw::color::symbol_to_rgb_helper 196 196 196];} "gray78" {::return [::qw::color::symbol_to_rgb_helper 199 199 199];} "gray79" {::return [::qw::color::symbol_to_rgb_helper 201 201 201];} "gray8" {::return [::qw::color::symbol_to_rgb_helper 20 20 20];} "gray80" {::return [::qw::color::symbol_to_rgb_helper 204 204 204];} "gray81" {::return [::qw::color::symbol_to_rgb_helper 207 207 207];} "gray82" {::return [::qw::color::symbol_to_rgb_helper 209 209 209];} "gray83" {::return [::qw::color::symbol_to_rgb_helper 212 212 212];} "gray84" {::return [::qw::color::symbol_to_rgb_helper 214 214 214];} "gray85" {::return [::qw::color::symbol_to_rgb_helper 217 217 217];} "gray86" {::return [::qw::color::symbol_to_rgb_helper 219 219 219];} "gray87" {::return [::qw::color::symbol_to_rgb_helper 222 222 222];} "gray88" {::return [::qw::color::symbol_to_rgb_helper 224 224 224];} "gray89" {::return [::qw::color::symbol_to_rgb_helper 227 227 227];} "gray9" {::return [::qw::color::symbol_to_rgb_helper 23 23 23];} "gray90" {::return [::qw::color::symbol_to_rgb_helper 229 229 229];} "gray91" {::return [::qw::color::symbol_to_rgb_helper 232 232 232];} "gray92" {::return [::qw::color::symbol_to_rgb_helper 235 235 235];} "gray93" {::return [::qw::color::symbol_to_rgb_helper 237 237 237];} "gray94" {::return [::qw::color::symbol_to_rgb_helper 240 240 240];} "gray95" {::return [::qw::color::symbol_to_rgb_helper 242 242 242];} "gray96" {::return [::qw::color::symbol_to_rgb_helper 245 245 245];} "gray97" {::return [::qw::color::symbol_to_rgb_helper 247 247 247];} "gray98" {::return [::qw::color::symbol_to_rgb_helper 250 250 250];} "gray99" {::return [::qw::color::symbol_to_rgb_helper 252 252 252];} "green" {::return [::qw::color::symbol_to_rgb_helper 0 255 0];} "green yellow" {::return [::qw::color::symbol_to_rgb_helper 173 255 47];} "green1" {::return [::qw::color::symbol_to_rgb_helper 0 255 0];} "green2" {::return [::qw::color::symbol_to_rgb_helper 0 238 0];} "green3" {::return [::qw::color::symbol_to_rgb_helper 0 205 0];} "green4" {::return [::qw::color::symbol_to_rgb_helper 0 139 0];} "GreenYellow" {::return [::qw::color::symbol_to_rgb_helper 173 255 47];} "grey" {::return [::qw::color::symbol_to_rgb_helper 190 190 190];} "grey0" {::return [::qw::color::symbol_to_rgb_helper 0 0 0];} "grey1" {::return [::qw::color::symbol_to_rgb_helper 3 3 3];} "grey10" {::return [::qw::color::symbol_to_rgb_helper 26 26 26];} "grey100" {::return [::qw::color::symbol_to_rgb_helper 255 255 255];} "grey11" {::return [::qw::color::symbol_to_rgb_helper 28 28 28];} "grey12" {::return [::qw::color::symbol_to_rgb_helper 31 31 31];} "grey13" {::return [::qw::color::symbol_to_rgb_helper 33 33 33];} "grey14" {::return [::qw::color::symbol_to_rgb_helper 36 36 36];} "grey15" {::return [::qw::color::symbol_to_rgb_helper 38 38 38];} "grey16" {::return [::qw::color::symbol_to_rgb_helper 41 41 41];} "grey17" {::return [::qw::color::symbol_to_rgb_helper 43 43 43];} "grey18" {::return [::qw::color::symbol_to_rgb_helper 46 46 46];} "grey19" {::return [::qw::color::symbol_to_rgb_helper 48 48 48];} "grey2" {::return [::qw::color::symbol_to_rgb_helper 5 5 5];} "grey20" {::return [::qw::color::symbol_to_rgb_helper 51 51 51];} "grey21" {::return [::qw::color::symbol_to_rgb_helper 54 54 54];} "grey22" {::return [::qw::color::symbol_to_rgb_helper 56 56 56];} "grey23" {::return [::qw::color::symbol_to_rgb_helper 59 59 59];} "grey24" {::return [::qw::color::symbol_to_rgb_helper 61 61 61];} "grey25" {::return [::qw::color::symbol_to_rgb_helper 64 64 64];} "grey26" {::return [::qw::color::symbol_to_rgb_helper 66 66 66];} "grey27" {::return [::qw::color::symbol_to_rgb_helper 69 69 69];} "grey28" {::return [::qw::color::symbol_to_rgb_helper 71 71 71];} "grey29" {::return [::qw::color::symbol_to_rgb_helper 74 74 74];} "grey3" {::return [::qw::color::symbol_to_rgb_helper 8 8 8];} "grey30" {::return [::qw::color::symbol_to_rgb_helper 77 77 77];} "grey31" {::return [::qw::color::symbol_to_rgb_helper 79 79 79];} "grey32" {::return [::qw::color::symbol_to_rgb_helper 82 82 82];} "grey33" {::return [::qw::color::symbol_to_rgb_helper 84 84 84];} "grey34" {::return [::qw::color::symbol_to_rgb_helper 87 87 87];} "grey35" {::return [::qw::color::symbol_to_rgb_helper 89 89 89];} "grey36" {::return [::qw::color::symbol_to_rgb_helper 92 92 92];} "grey37" {::return [::qw::color::symbol_to_rgb_helper 94 94 94];} "grey38" {::return [::qw::color::symbol_to_rgb_helper 97 97 97];} "grey39" {::return [::qw::color::symbol_to_rgb_helper 99 99 99];} "grey4" {::return [::qw::color::symbol_to_rgb_helper 10 10 10];} "grey40" {::return [::qw::color::symbol_to_rgb_helper 102 102 102];} "grey41" {::return [::qw::color::symbol_to_rgb_helper 105 105 105];} "grey42" {::return [::qw::color::symbol_to_rgb_helper 107 107 107];} "grey43" {::return [::qw::color::symbol_to_rgb_helper 110 110 110];} "grey44" {::return [::qw::color::symbol_to_rgb_helper 112 112 112];} "grey45" {::return [::qw::color::symbol_to_rgb_helper 115 115 115];} "grey46" {::return [::qw::color::symbol_to_rgb_helper 117 117 117];} "grey47" {::return [::qw::color::symbol_to_rgb_helper 120 120 120];} "grey48" {::return [::qw::color::symbol_to_rgb_helper 122 122 122];} "grey49" {::return [::qw::color::symbol_to_rgb_helper 125 125 125];} "grey5" {::return [::qw::color::symbol_to_rgb_helper 13 13 13];} "grey50" {::return [::qw::color::symbol_to_rgb_helper 127 127 127];} "grey51" {::return [::qw::color::symbol_to_rgb_helper 130 130 130];} "grey52" {::return [::qw::color::symbol_to_rgb_helper 133 133 133];} "grey53" {::return [::qw::color::symbol_to_rgb_helper 135 135 135];} "grey54" {::return [::qw::color::symbol_to_rgb_helper 138 138 138];} "grey55" {::return [::qw::color::symbol_to_rgb_helper 140 140 140];} "grey56" {::return [::qw::color::symbol_to_rgb_helper 143 143 143];} "grey57" {::return [::qw::color::symbol_to_rgb_helper 145 145 145];} "grey58" {::return [::qw::color::symbol_to_rgb_helper 148 148 148];} "grey59" {::return [::qw::color::symbol_to_rgb_helper 150 150 150];} "grey6" {::return [::qw::color::symbol_to_rgb_helper 15 15 15];} "grey60" {::return [::qw::color::symbol_to_rgb_helper 153 153 153];} "grey61" {::return [::qw::color::symbol_to_rgb_helper 156 156 156];} "grey62" {::return [::qw::color::symbol_to_rgb_helper 158 158 158];} "grey63" {::return [::qw::color::symbol_to_rgb_helper 161 161 161];} "grey64" {::return [::qw::color::symbol_to_rgb_helper 163 163 163];} "grey65" {::return [::qw::color::symbol_to_rgb_helper 166 166 166];} "grey66" {::return [::qw::color::symbol_to_rgb_helper 168 168 168];} "grey67" {::return [::qw::color::symbol_to_rgb_helper 171 171 171];} "grey68" {::return [::qw::color::symbol_to_rgb_helper 173 173 173];} "grey69" {::return [::qw::color::symbol_to_rgb_helper 176 176 176];} "grey7" {::return [::qw::color::symbol_to_rgb_helper 18 18 18];} "grey70" {::return [::qw::color::symbol_to_rgb_helper 179 179 179];} "grey71" {::return [::qw::color::symbol_to_rgb_helper 181 181 181];} "grey72" {::return [::qw::color::symbol_to_rgb_helper 184 184 184];} "grey73" {::return [::qw::color::symbol_to_rgb_helper 186 186 186];} "grey74" {::return [::qw::color::symbol_to_rgb_helper 189 189 189];} "grey75" {::return [::qw::color::symbol_to_rgb_helper 191 191 191];} "grey76" {::return [::qw::color::symbol_to_rgb_helper 194 194 194];} "grey77" {::return [::qw::color::symbol_to_rgb_helper 196 196 196];} "grey78" {::return [::qw::color::symbol_to_rgb_helper 199 199 199];} "grey79" {::return [::qw::color::symbol_to_rgb_helper 201 201 201];} "grey8" {::return [::qw::color::symbol_to_rgb_helper 20 20 20];} "grey80" {::return [::qw::color::symbol_to_rgb_helper 204 204 204];} "grey81" {::return [::qw::color::symbol_to_rgb_helper 207 207 207];} "grey82" {::return [::qw::color::symbol_to_rgb_helper 209 209 209];} "grey83" {::return [::qw::color::symbol_to_rgb_helper 212 212 212];} "grey84" {::return [::qw::color::symbol_to_rgb_helper 214 214 214];} "grey85" {::return [::qw::color::symbol_to_rgb_helper 217 217 217];} "grey86" {::return [::qw::color::symbol_to_rgb_helper 219 219 219];} "grey87" {::return [::qw::color::symbol_to_rgb_helper 222 222 222];} "grey88" {::return [::qw::color::symbol_to_rgb_helper 224 224 224];} "grey89" {::return [::qw::color::symbol_to_rgb_helper 227 227 227];} "grey9" {::return [::qw::color::symbol_to_rgb_helper 23 23 23];} "grey90" {::return [::qw::color::symbol_to_rgb_helper 229 229 229];} "grey91" {::return [::qw::color::symbol_to_rgb_helper 232 232 232];} "grey92" {::return [::qw::color::symbol_to_rgb_helper 235 235 235];} "grey93" {::return [::qw::color::symbol_to_rgb_helper 237 237 237];} "grey94" {::return [::qw::color::symbol_to_rgb_helper 240 240 240];} "grey95" {::return [::qw::color::symbol_to_rgb_helper 242 242 242];} "grey96" {::return [::qw::color::symbol_to_rgb_helper 245 245 245];} "grey97" {::return [::qw::color::symbol_to_rgb_helper 247 247 247];} "grey98" {::return [::qw::color::symbol_to_rgb_helper 250 250 250];} "grey99" {::return [::qw::color::symbol_to_rgb_helper 252 252 252];} "honeydew" {::return [::qw::color::symbol_to_rgb_helper 240 255 240];} "honeydew1" {::return [::qw::color::symbol_to_rgb_helper 240 255 240];} "honeydew2" {::return [::qw::color::symbol_to_rgb_helper 224 238 224];} "honeydew3" {::return [::qw::color::symbol_to_rgb_helper 193 205 193];} "honeydew4" {::return [::qw::color::symbol_to_rgb_helper 131 139 131];} "hot pink" {::return [::qw::color::symbol_to_rgb_helper 255 105 180];} "HotPink" {::return [::qw::color::symbol_to_rgb_helper 255 105 180];} "HotPink1" {::return [::qw::color::symbol_to_rgb_helper 255 110 180];} "HotPink2" {::return [::qw::color::symbol_to_rgb_helper 238 106 167];} "HotPink3" {::return [::qw::color::symbol_to_rgb_helper 205 96 144];} "HotPink4" {::return [::qw::color::symbol_to_rgb_helper 139 58 98];} "indian red" {::return [::qw::color::symbol_to_rgb_helper 205 92 92];} "IndianRed" {::return [::qw::color::symbol_to_rgb_helper 205 92 92];} "IndianRed1" {::return [::qw::color::symbol_to_rgb_helper 255 106 106];} "IndianRed2" {::return [::qw::color::symbol_to_rgb_helper 238 99 99];} "IndianRed3" {::return [::qw::color::symbol_to_rgb_helper 205 85 85];} "IndianRed4" {::return [::qw::color::symbol_to_rgb_helper 139 58 58];} "ivory" {::return [::qw::color::symbol_to_rgb_helper 255 255 240];} "ivory1" {::return [::qw::color::symbol_to_rgb_helper 255 255 240];} "ivory2" {::return [::qw::color::symbol_to_rgb_helper 238 238 224];} "ivory3" {::return [::qw::color::symbol_to_rgb_helper 205 205 193];} "ivory4" {::return [::qw::color::symbol_to_rgb_helper 139 139 131];} "khaki" {::return [::qw::color::symbol_to_rgb_helper 240 230 140];} "khaki1" {::return [::qw::color::symbol_to_rgb_helper 255 246 143];} "khaki2" {::return [::qw::color::symbol_to_rgb_helper 238 230 133];} "khaki3" {::return [::qw::color::symbol_to_rgb_helper 205 198 115];} "khaki4" {::return [::qw::color::symbol_to_rgb_helper 139 134 78];} "lavender" {::return [::qw::color::symbol_to_rgb_helper 230 230 250];} "lavender blush" {::return [::qw::color::symbol_to_rgb_helper 255 240 245];} "LavenderBlush" {::return [::qw::color::symbol_to_rgb_helper 255 240 245];} "LavenderBlush1" {::return [::qw::color::symbol_to_rgb_helper 255 240 245];} "LavenderBlush2" {::return [::qw::color::symbol_to_rgb_helper 238 224 229];} "LavenderBlush3" {::return [::qw::color::symbol_to_rgb_helper 205 193 197];} "LavenderBlush4" {::return [::qw::color::symbol_to_rgb_helper 139 131 134];} "lawn green" {::return [::qw::color::symbol_to_rgb_helper 124 252 0];} "LawnGreen" {::return [::qw::color::symbol_to_rgb_helper 124 252 0];} "lemon chiffon" {::return [::qw::color::symbol_to_rgb_helper 255 250 205];} "LemonChiffon" {::return [::qw::color::symbol_to_rgb_helper 255 250 205];} "LemonChiffon1" {::return [::qw::color::symbol_to_rgb_helper 255 250 205];} "LemonChiffon2" {::return [::qw::color::symbol_to_rgb_helper 238 233 191];} "LemonChiffon3" {::return [::qw::color::symbol_to_rgb_helper 205 201 165];} "LemonChiffon4" {::return [::qw::color::symbol_to_rgb_helper 139 137 112];} "light blue" {::return [::qw::color::symbol_to_rgb_helper 173 216 230];} "light coral" {::return [::qw::color::symbol_to_rgb_helper 240 128 128];} "light cyan" {::return [::qw::color::symbol_to_rgb_helper 224 255 255];} "light goldenrod" {::return [::qw::color::symbol_to_rgb_helper 238 221 130];} "light goldenrod yellow" {::return [::qw::color::symbol_to_rgb_helper 250 250 210];} "light gray" {::return [::qw::color::symbol_to_rgb_helper 211 211 211];} "light green" {::return [::qw::color::symbol_to_rgb_helper 144 238 144];} "light grey" {::return [::qw::color::symbol_to_rgb_helper 211 211 211];} "light pink" {::return [::qw::color::symbol_to_rgb_helper 255 182 193];} "light salmon" {::return [::qw::color::symbol_to_rgb_helper 255 160 122];} "light sea green" {::return [::qw::color::symbol_to_rgb_helper 32 178 170];} "light sky blue" {::return [::qw::color::symbol_to_rgb_helper 135 206 250];} "light slate blue" {::return [::qw::color::symbol_to_rgb_helper 132 112 255];} "light slate gray" {::return [::qw::color::symbol_to_rgb_helper 119 136 153];} "light slate grey" {::return [::qw::color::symbol_to_rgb_helper 119 136 153];} "light steel blue" {::return [::qw::color::symbol_to_rgb_helper 176 196 222];} "light yellow" {::return [::qw::color::symbol_to_rgb_helper 255 255 224];} "LightBlue" {::return [::qw::color::symbol_to_rgb_helper 173 216 230];} "LightBlue1" {::return [::qw::color::symbol_to_rgb_helper 191 239 255];} "LightBlue2" {::return [::qw::color::symbol_to_rgb_helper 178 223 238];} "LightBlue3" {::return [::qw::color::symbol_to_rgb_helper 154 192 205];} "LightBlue4" {::return [::qw::color::symbol_to_rgb_helper 104 131 139];} "LightCoral" {::return [::qw::color::symbol_to_rgb_helper 240 128 128];} "LightCyan" {::return [::qw::color::symbol_to_rgb_helper 224 255 255];} "LightCyan1" {::return [::qw::color::symbol_to_rgb_helper 224 255 255];} "LightCyan2" {::return [::qw::color::symbol_to_rgb_helper 209 238 238];} "LightCyan3" {::return [::qw::color::symbol_to_rgb_helper 180 205 205];} "LightCyan4" {::return [::qw::color::symbol_to_rgb_helper 122 139 139];} "LightGoldenrod" {::return [::qw::color::symbol_to_rgb_helper 238 221 130];} "LightGoldenrod1" {::return [::qw::color::symbol_to_rgb_helper 255 236 139];} "LightGoldenrod2" {::return [::qw::color::symbol_to_rgb_helper 238 220 130];} "LightGoldenrod3" {::return [::qw::color::symbol_to_rgb_helper 205 190 112];} "LightGoldenrod4" {::return [::qw::color::symbol_to_rgb_helper 139 129 76];} "LightGoldenrodYellow" {::return [::qw::color::symbol_to_rgb_helper 250 250 210];} "LightGray" {::return [::qw::color::symbol_to_rgb_helper 211 211 211];} "LightGreen" {::return [::qw::color::symbol_to_rgb_helper 144 238 144];} "LightGrey" {::return [::qw::color::symbol_to_rgb_helper 211 211 211];} "LightPink" {::return [::qw::color::symbol_to_rgb_helper 255 182 193];} "LightPink1" {::return [::qw::color::symbol_to_rgb_helper 255 174 185];} "LightPink2" {::return [::qw::color::symbol_to_rgb_helper 238 162 173];} "LightPink3" {::return [::qw::color::symbol_to_rgb_helper 205 140 149];} "LightPink4" {::return [::qw::color::symbol_to_rgb_helper 139 95 101];} "LightSalmon" {::return [::qw::color::symbol_to_rgb_helper 255 160 122];} "LightSalmon1" {::return [::qw::color::symbol_to_rgb_helper 255 160 122];} "LightSalmon2" {::return [::qw::color::symbol_to_rgb_helper 238 149 114];} "LightSalmon3" {::return [::qw::color::symbol_to_rgb_helper 205 129 98];} "LightSalmon4" {::return [::qw::color::symbol_to_rgb_helper 139 87 66];} "LightSeaGreen" {::return [::qw::color::symbol_to_rgb_helper 32 178 170];} "LightSkyBlue" {::return [::qw::color::symbol_to_rgb_helper 135 206 250];} "LightSkyBlue1" {::return [::qw::color::symbol_to_rgb_helper 176 226 255];} "LightSkyBlue2" {::return [::qw::color::symbol_to_rgb_helper 164 211 238];} "LightSkyBlue3" {::return [::qw::color::symbol_to_rgb_helper 141 182 205];} "LightSkyBlue4" {::return [::qw::color::symbol_to_rgb_helper 96 123 139];} "LightSlateBlue" {::return [::qw::color::symbol_to_rgb_helper 132 112 255];} "LightSlateGray" {::return [::qw::color::symbol_to_rgb_helper 119 136 153];} "LightSlateGrey" {::return [::qw::color::symbol_to_rgb_helper 119 136 153];} "LightSteelBlue" {::return [::qw::color::symbol_to_rgb_helper 176 196 222];} "LightSteelBlue1" {::return [::qw::color::symbol_to_rgb_helper 202 225 255];} "LightSteelBlue2" {::return [::qw::color::symbol_to_rgb_helper 188 210 238];} "LightSteelBlue3" {::return [::qw::color::symbol_to_rgb_helper 162 181 205];} "LightSteelBlue4" {::return [::qw::color::symbol_to_rgb_helper 110 123 139];} "LightYellow" {::return [::qw::color::symbol_to_rgb_helper 255 255 224];} "LightYellow1" {::return [::qw::color::symbol_to_rgb_helper 255 255 224];} "LightYellow2" {::return [::qw::color::symbol_to_rgb_helper 238 238 209];} "LightYellow3" {::return [::qw::color::symbol_to_rgb_helper 205 205 180];} "LightYellow4" {::return [::qw::color::symbol_to_rgb_helper 139 139 122];} "lime green" {::return [::qw::color::symbol_to_rgb_helper 50 205 50];} "LimeGreen" {::return [::qw::color::symbol_to_rgb_helper 50 205 50];} "linen" {::return [::qw::color::symbol_to_rgb_helper 250 240 230];} "magenta" {::return [::qw::color::symbol_to_rgb_helper 255 0 255];} "magenta1" {::return [::qw::color::symbol_to_rgb_helper 255 0 255];} "magenta2" {::return [::qw::color::symbol_to_rgb_helper 238 0 238];} "magenta3" {::return [::qw::color::symbol_to_rgb_helper 205 0 205];} "magenta4" {::return [::qw::color::symbol_to_rgb_helper 139 0 139];} "maroon" {::return [::qw::color::symbol_to_rgb_helper 176 48 96];} "maroon1" {::return [::qw::color::symbol_to_rgb_helper 255 52 179];} "maroon2" {::return [::qw::color::symbol_to_rgb_helper 238 48 167];} "maroon3" {::return [::qw::color::symbol_to_rgb_helper 205 41 144];} "maroon4" {::return [::qw::color::symbol_to_rgb_helper 139 28 98];} "medium aquamarine" {::return [::qw::color::symbol_to_rgb_helper 102 205 170];} "medium blue" {::return [::qw::color::symbol_to_rgb_helper 0 0 205];} "medium orchid" {::return [::qw::color::symbol_to_rgb_helper 186 85 211];} "medium purple" {::return [::qw::color::symbol_to_rgb_helper 147 112 219];} "medium sea green" {::return [::qw::color::symbol_to_rgb_helper 60 179 113];} "medium slate blue" {::return [::qw::color::symbol_to_rgb_helper 123 104 238];} "medium spring green" {::return [::qw::color::symbol_to_rgb_helper 0 250 154];} "medium turquoise" {::return [::qw::color::symbol_to_rgb_helper 72 209 204];} "medium violet red" {::return [::qw::color::symbol_to_rgb_helper 199 21 133];} "MediumAquamarine" {::return [::qw::color::symbol_to_rgb_helper 102 205 170];} "MediumBlue" {::return [::qw::color::symbol_to_rgb_helper 0 0 205];} "MediumOrchid" {::return [::qw::color::symbol_to_rgb_helper 186 85 211];} "MediumOrchid1" {::return [::qw::color::symbol_to_rgb_helper 224 102 255];} "MediumOrchid2" {::return [::qw::color::symbol_to_rgb_helper 209 95 238];} "MediumOrchid3" {::return [::qw::color::symbol_to_rgb_helper 180 82 205];} "MediumOrchid4" {::return [::qw::color::symbol_to_rgb_helper 122 55 139];} "MediumPurple" {::return [::qw::color::symbol_to_rgb_helper 147 112 219];} "MediumPurple1" {::return [::qw::color::symbol_to_rgb_helper 171 130 255];} "MediumPurple2" {::return [::qw::color::symbol_to_rgb_helper 159 121 238];} "MediumPurple3" {::return [::qw::color::symbol_to_rgb_helper 137 104 205];} "MediumPurple4" {::return [::qw::color::symbol_to_rgb_helper 93 71 139];} "MediumSeaGreen" {::return [::qw::color::symbol_to_rgb_helper 60 179 113];} "MediumSlateBlue" {::return [::qw::color::symbol_to_rgb_helper 123 104 238];} "MediumSpringGreen" {::return [::qw::color::symbol_to_rgb_helper 0 250 154];} "MediumTurquoise" {::return [::qw::color::symbol_to_rgb_helper 72 209 204];} "MediumVioletRed" {::return [::qw::color::symbol_to_rgb_helper 199 21 133];} "midnight blue" {::return [::qw::color::symbol_to_rgb_helper 25 25 112];} "MidnightBlue" {::return [::qw::color::symbol_to_rgb_helper 25 25 112];} "mint cream" {::return [::qw::color::symbol_to_rgb_helper 245 255 250];} "MintCream" {::return [::qw::color::symbol_to_rgb_helper 245 255 250];} "misty rose" {::return [::qw::color::symbol_to_rgb_helper 255 228 225];} "MistyRose" {::return [::qw::color::symbol_to_rgb_helper 255 228 225];} "MistyRose1" {::return [::qw::color::symbol_to_rgb_helper 255 228 225];} "MistyRose2" {::return [::qw::color::symbol_to_rgb_helper 238 213 210];} "MistyRose3" {::return [::qw::color::symbol_to_rgb_helper 205 183 181];} "MistyRose4" {::return [::qw::color::symbol_to_rgb_helper 139 125 123];} "moccasin" {::return [::qw::color::symbol_to_rgb_helper 255 228 181];} "navajo white" {::return [::qw::color::symbol_to_rgb_helper 255 222 173];} "NavajoWhite" {::return [::qw::color::symbol_to_rgb_helper 255 222 173];} "NavajoWhite1" {::return [::qw::color::symbol_to_rgb_helper 255 222 173];} "NavajoWhite2" {::return [::qw::color::symbol_to_rgb_helper 238 207 161];} "NavajoWhite3" {::return [::qw::color::symbol_to_rgb_helper 205 179 139];} "NavajoWhite4" {::return [::qw::color::symbol_to_rgb_helper 139 121 94];} "navy" {::return [::qw::color::symbol_to_rgb_helper 0 0 128];} "navy blue" {::return [::qw::color::symbol_to_rgb_helper 0 0 128];} "NavyBlue" {::return [::qw::color::symbol_to_rgb_helper 0 0 128];} "old lace" {::return [::qw::color::symbol_to_rgb_helper 253 245 230];} "OldLace" {::return [::qw::color::symbol_to_rgb_helper 253 245 230];} "olive drab" {::return [::qw::color::symbol_to_rgb_helper 107 142 35];} "OliveDrab" {::return [::qw::color::symbol_to_rgb_helper 107 142 35];} "OliveDrab1" {::return [::qw::color::symbol_to_rgb_helper 192 255 62];} "OliveDrab2" {::return [::qw::color::symbol_to_rgb_helper 179 238 58];} "OliveDrab3" {::return [::qw::color::symbol_to_rgb_helper 154 205 50];} "OliveDrab4" {::return [::qw::color::symbol_to_rgb_helper 105 139 34];} "orange" {::return [::qw::color::symbol_to_rgb_helper 255 165 0];} "orange red" {::return [::qw::color::symbol_to_rgb_helper 255 69 0];} "orange1" {::return [::qw::color::symbol_to_rgb_helper 255 165 0];} "orange2" {::return [::qw::color::symbol_to_rgb_helper 238 154 0];} "orange3" {::return [::qw::color::symbol_to_rgb_helper 205 133 0];} "orange4" {::return [::qw::color::symbol_to_rgb_helper 139 90 0];} "OrangeRed" {::return [::qw::color::symbol_to_rgb_helper 255 69 0];} "OrangeRed1" {::return [::qw::color::symbol_to_rgb_helper 255 69 0];} "OrangeRed2" {::return [::qw::color::symbol_to_rgb_helper 238 64 0];} "OrangeRed3" {::return [::qw::color::symbol_to_rgb_helper 205 55 0];} "OrangeRed4" {::return [::qw::color::symbol_to_rgb_helper 139 37 0];} "orchid" {::return [::qw::color::symbol_to_rgb_helper 218 112 214];} "orchid1" {::return [::qw::color::symbol_to_rgb_helper 255 131 250];} "orchid2" {::return [::qw::color::symbol_to_rgb_helper 238 122 233];} "orchid3" {::return [::qw::color::symbol_to_rgb_helper 205 105 201];} "orchid4" {::return [::qw::color::symbol_to_rgb_helper 139 71 137];} "pale goldenrod" {::return [::qw::color::symbol_to_rgb_helper 238 232 170];} "pale green" {::return [::qw::color::symbol_to_rgb_helper 152 251 152];} "pale turquoise" {::return [::qw::color::symbol_to_rgb_helper 175 238 238];} "pale violet red" {::return [::qw::color::symbol_to_rgb_helper 219 112 147];} "PaleGoldenrod" {::return [::qw::color::symbol_to_rgb_helper 238 232 170];} "PaleGreen" {::return [::qw::color::symbol_to_rgb_helper 152 251 152];} "PaleGreen1" {::return [::qw::color::symbol_to_rgb_helper 154 255 154];} "PaleGreen2" {::return [::qw::color::symbol_to_rgb_helper 144 238 144];} "PaleGreen3" {::return [::qw::color::symbol_to_rgb_helper 124 205 124];} "PaleGreen4" {::return [::qw::color::symbol_to_rgb_helper 84 139 84];} "PaleTurquoise" {::return [::qw::color::symbol_to_rgb_helper 175 238 238];} "PaleTurquoise1" {::return [::qw::color::symbol_to_rgb_helper 187 255 255];} "PaleTurquoise2" {::return [::qw::color::symbol_to_rgb_helper 174 238 238];} "PaleTurquoise3" {::return [::qw::color::symbol_to_rgb_helper 150 205 205];} "PaleTurquoise4" {::return [::qw::color::symbol_to_rgb_helper 102 139 139];} "PaleVioletRed" {::return [::qw::color::symbol_to_rgb_helper 219 112 147];} "PaleVioletRed1" {::return [::qw::color::symbol_to_rgb_helper 255 130 171];} "PaleVioletRed2" {::return [::qw::color::symbol_to_rgb_helper 238 121 159];} "PaleVioletRed3" {::return [::qw::color::symbol_to_rgb_helper 205 104 137];} "PaleVioletRed4" {::return [::qw::color::symbol_to_rgb_helper 139 71 93];} "papaya whip" {::return [::qw::color::symbol_to_rgb_helper 255 239 213];} "PapayaWhip" {::return [::qw::color::symbol_to_rgb_helper 255 239 213];} "peach puff" {::return [::qw::color::symbol_to_rgb_helper 255 218 185];} "PeachPuff" {::return [::qw::color::symbol_to_rgb_helper 255 218 185];} "PeachPuff1" {::return [::qw::color::symbol_to_rgb_helper 255 218 185];} "PeachPuff2" {::return [::qw::color::symbol_to_rgb_helper 238 203 173];} "PeachPuff3" {::return [::qw::color::symbol_to_rgb_helper 205 175 149];} "PeachPuff4" {::return [::qw::color::symbol_to_rgb_helper 139 119 101];} "peru" {::return [::qw::color::symbol_to_rgb_helper 205 133 63];} "pink" {::return [::qw::color::symbol_to_rgb_helper 255 192 203];} "pink1" {::return [::qw::color::symbol_to_rgb_helper 255 181 197];} "pink2" {::return [::qw::color::symbol_to_rgb_helper 238 169 184];} "pink3" {::return [::qw::color::symbol_to_rgb_helper 205 145 158];} "pink4" {::return [::qw::color::symbol_to_rgb_helper 139 99 108];} "plum" {::return [::qw::color::symbol_to_rgb_helper 221 160 221];} "plum1" {::return [::qw::color::symbol_to_rgb_helper 255 187 255];} "plum2" {::return [::qw::color::symbol_to_rgb_helper 238 174 238];} "plum3" {::return [::qw::color::symbol_to_rgb_helper 205 150 205];} "plum4" {::return [::qw::color::symbol_to_rgb_helper 139 102 139];} "powder blue" {::return [::qw::color::symbol_to_rgb_helper 176 224 230];} "PowderBlue" {::return [::qw::color::symbol_to_rgb_helper 176 224 230];} "purple" {::return [::qw::color::symbol_to_rgb_helper 160 32 240];} "purple1" {::return [::qw::color::symbol_to_rgb_helper 155 48 255];} "purple2" {::return [::qw::color::symbol_to_rgb_helper 145 44 238];} "purple3" {::return [::qw::color::symbol_to_rgb_helper 125 38 205];} "purple4" {::return [::qw::color::symbol_to_rgb_helper 85 26 139];} "red" {::return [::qw::color::symbol_to_rgb_helper 255 0 0];} "red1" {::return [::qw::color::symbol_to_rgb_helper 255 0 0];} "red2" {::return [::qw::color::symbol_to_rgb_helper 238 0 0];} "red3" {::return [::qw::color::symbol_to_rgb_helper 205 0 0];} "red4" {::return [::qw::color::symbol_to_rgb_helper 139 0 0];} "rosy brown" {::return [::qw::color::symbol_to_rgb_helper 188 143 143];} "RosyBrown" {::return [::qw::color::symbol_to_rgb_helper 188 143 143];} "RosyBrown1" {::return [::qw::color::symbol_to_rgb_helper 255 193 193];} "RosyBrown2" {::return [::qw::color::symbol_to_rgb_helper 238 180 180];} "RosyBrown3" {::return [::qw::color::symbol_to_rgb_helper 205 155 155];} "RosyBrown4" {::return [::qw::color::symbol_to_rgb_helper 139 105 105];} "royal blue" {::return [::qw::color::symbol_to_rgb_helper 65 105 225];} "RoyalBlue" {::return [::qw::color::symbol_to_rgb_helper 65 105 225];} "RoyalBlue1" {::return [::qw::color::symbol_to_rgb_helper 72 118 255];} "RoyalBlue2" {::return [::qw::color::symbol_to_rgb_helper 67 110 238];} "RoyalBlue3" {::return [::qw::color::symbol_to_rgb_helper 58 95 205];} "RoyalBlue4" {::return [::qw::color::symbol_to_rgb_helper 39 64 139];} "saddle brown" {::return [::qw::color::symbol_to_rgb_helper 139 69 19];} "SaddleBrown" {::return [::qw::color::symbol_to_rgb_helper 139 69 19];} "salmon" {::return [::qw::color::symbol_to_rgb_helper 250 128 114];} "salmon1" {::return [::qw::color::symbol_to_rgb_helper 255 140 105];} "salmon2" {::return [::qw::color::symbol_to_rgb_helper 238 130 98];} "salmon3" {::return [::qw::color::symbol_to_rgb_helper 205 112 84];} "salmon4" {::return [::qw::color::symbol_to_rgb_helper 139 76 57];} "sandy brown" {::return [::qw::color::symbol_to_rgb_helper 244 164 96];} "SandyBrown" {::return [::qw::color::symbol_to_rgb_helper 244 164 96];} "sea green" {::return [::qw::color::symbol_to_rgb_helper 46 139 87];} "SeaGreen" {::return [::qw::color::symbol_to_rgb_helper 46 139 87];} "SeaGreen1" {::return [::qw::color::symbol_to_rgb_helper 84 255 159];} "SeaGreen2" {::return [::qw::color::symbol_to_rgb_helper 78 238 148];} "SeaGreen3" {::return [::qw::color::symbol_to_rgb_helper 67 205 128];} "SeaGreen4" {::return [::qw::color::symbol_to_rgb_helper 46 139 87];} "seashell" {::return [::qw::color::symbol_to_rgb_helper 255 245 238];} "seashell1" {::return [::qw::color::symbol_to_rgb_helper 255 245 238];} "seashell2" {::return [::qw::color::symbol_to_rgb_helper 238 229 222];} "seashell3" {::return [::qw::color::symbol_to_rgb_helper 205 197 191];} "seashell4" {::return [::qw::color::symbol_to_rgb_helper 139 134 130];} "sienna" {::return [::qw::color::symbol_to_rgb_helper 160 82 45];} "sienna1" {::return [::qw::color::symbol_to_rgb_helper 255 130 71];} "sienna2" {::return [::qw::color::symbol_to_rgb_helper 238 121 66];} "sienna3" {::return [::qw::color::symbol_to_rgb_helper 205 104 57];} "sienna4" {::return [::qw::color::symbol_to_rgb_helper 139 71 38];} "sky blue" {::return [::qw::color::symbol_to_rgb_helper 135 206 235];} "SkyBlue" {::return [::qw::color::symbol_to_rgb_helper 135 206 235];} "SkyBlue1" {::return [::qw::color::symbol_to_rgb_helper 135 206 255];} "SkyBlue2" {::return [::qw::color::symbol_to_rgb_helper 126 192 238];} "SkyBlue3" {::return [::qw::color::symbol_to_rgb_helper 108 166 205];} "SkyBlue4" {::return [::qw::color::symbol_to_rgb_helper 74 112 139];} "slate blue" {::return [::qw::color::symbol_to_rgb_helper 106 90 205];} "slate gray" {::return [::qw::color::symbol_to_rgb_helper 112 128 144];} "slate grey" {::return [::qw::color::symbol_to_rgb_helper 112 128 144];} "SlateBlue" {::return [::qw::color::symbol_to_rgb_helper 106 90 205];} "SlateBlue1" {::return [::qw::color::symbol_to_rgb_helper 131 111 255];} "SlateBlue2" {::return [::qw::color::symbol_to_rgb_helper 122 103 238];} "SlateBlue3" {::return [::qw::color::symbol_to_rgb_helper 105 89 205];} "SlateBlue4" {::return [::qw::color::symbol_to_rgb_helper 71 60 139];} "SlateGray" {::return [::qw::color::symbol_to_rgb_helper 112 128 144];} "SlateGray1" {::return [::qw::color::symbol_to_rgb_helper 198 226 255];} "SlateGray2" {::return [::qw::color::symbol_to_rgb_helper 185 211 238];} "SlateGray3" {::return [::qw::color::symbol_to_rgb_helper 159 182 205];} "SlateGray4" {::return [::qw::color::symbol_to_rgb_helper 108 123 139];} "SlateGrey" {::return [::qw::color::symbol_to_rgb_helper 112 128 144];} "snow" {::return [::qw::color::symbol_to_rgb_helper 255 250 250];} "snow1" {::return [::qw::color::symbol_to_rgb_helper 255 250 250];} "snow2" {::return [::qw::color::symbol_to_rgb_helper 238 233 233];} "snow3" {::return [::qw::color::symbol_to_rgb_helper 205 201 201];} "snow4" {::return [::qw::color::symbol_to_rgb_helper 139 137 137];} "spring green" {::return [::qw::color::symbol_to_rgb_helper 0 255 127];} "SpringGreen" {::return [::qw::color::symbol_to_rgb_helper 0 255 127];} "SpringGreen1" {::return [::qw::color::symbol_to_rgb_helper 0 255 127];} "SpringGreen2" {::return [::qw::color::symbol_to_rgb_helper 0 238 118];} "SpringGreen3" {::return [::qw::color::symbol_to_rgb_helper 0 205 102];} "SpringGreen4" {::return [::qw::color::symbol_to_rgb_helper 0 139 69];} "steel blue" {::return [::qw::color::symbol_to_rgb_helper 70 130 180];} "SteelBlue" {::return [::qw::color::symbol_to_rgb_helper 70 130 180];} "SteelBlue1" {::return [::qw::color::symbol_to_rgb_helper 99 184 255];} "SteelBlue2" {::return [::qw::color::symbol_to_rgb_helper 92 172 238];} "SteelBlue3" {::return [::qw::color::symbol_to_rgb_helper 79 148 205];} "SteelBlue4" {::return [::qw::color::symbol_to_rgb_helper 54 100 139];} "tan" {::return [::qw::color::symbol_to_rgb_helper 210 180 140];} "tan1" {::return [::qw::color::symbol_to_rgb_helper 255 165 79];} "tan2" {::return [::qw::color::symbol_to_rgb_helper 238 154 73];} "tan3" {::return [::qw::color::symbol_to_rgb_helper 205 133 63];} "tan4" {::return [::qw::color::symbol_to_rgb_helper 139 90 43];} "thistle" {::return [::qw::color::symbol_to_rgb_helper 216 191 216];} "thistle1" {::return [::qw::color::symbol_to_rgb_helper 255 225 255];} "thistle2" {::return [::qw::color::symbol_to_rgb_helper 238 210 238];} "thistle3" {::return [::qw::color::symbol_to_rgb_helper 205 181 205];} "thistle4" {::return [::qw::color::symbol_to_rgb_helper 139 123 139];} "tomato" {::return [::qw::color::symbol_to_rgb_helper 255 99 71];} "tomato1" {::return [::qw::color::symbol_to_rgb_helper 255 99 71];} "tomato2" {::return [::qw::color::symbol_to_rgb_helper 238 92 66];} "tomato3" {::return [::qw::color::symbol_to_rgb_helper 205 79 57];} "tomato4" {::return [::qw::color::symbol_to_rgb_helper 139 54 38];} "turquoise" {::return [::qw::color::symbol_to_rgb_helper 64 224 208];} "turquoise1" {::return [::qw::color::symbol_to_rgb_helper 0 245 255];} "turquoise2" {::return [::qw::color::symbol_to_rgb_helper 0 229 238];} "turquoise3" {::return [::qw::color::symbol_to_rgb_helper 0 197 205];} "turquoise4" {::return [::qw::color::symbol_to_rgb_helper 0 134 139];} "violet" {::return [::qw::color::symbol_to_rgb_helper 238 130 238];} "violet red" {::return [::qw::color::symbol_to_rgb_helper 208 32 144];} "VioletRed" {::return [::qw::color::symbol_to_rgb_helper 208 32 144];} "VioletRed1" {::return [::qw::color::symbol_to_rgb_helper 255 62 150];} "VioletRed2" {::return [::qw::color::symbol_to_rgb_helper 238 58 140];} "VioletRed3" {::return [::qw::color::symbol_to_rgb_helper 205 50 120];} "VioletRed4" {::return [::qw::color::symbol_to_rgb_helper 139 34 82];} "wheat" {::return [::qw::color::symbol_to_rgb_helper 245 222 179];} "wheat1" {::return [::qw::color::symbol_to_rgb_helper 255 231 186];} "wheat2" {::return [::qw::color::symbol_to_rgb_helper 238 216 174];} "wheat3" {::return [::qw::color::symbol_to_rgb_helper 205 186 150];} "wheat4" {::return [::qw::color::symbol_to_rgb_helper 139 126 102];} "white" {::return [::qw::color::symbol_to_rgb_helper 255 255 255];} "white smoke" {::return [::qw::color::symbol_to_rgb_helper 245 245 245];} "WhiteSmoke" {::return [::qw::color::symbol_to_rgb_helper 245 245 245];} "yellow" {::return [::qw::color::symbol_to_rgb_helper 255 255 0];} "yellow green" {::return [::qw::color::symbol_to_rgb_helper 154 205 50];} "yellow1" {::return [::qw::color::symbol_to_rgb_helper 255 255 0];} "yellow2" {::return [::qw::color::symbol_to_rgb_helper 238 238 0];} "yellow3" {::return [::qw::color::symbol_to_rgb_helper 205 205 0];} "yellow4" {::return [::qw::color::symbol_to_rgb_helper 139 139 0];} "YellowGreen" {::return [::qw::color::symbol_to_rgb_helper 154 205 50];} "NULL" {::return [::qw::color::symbol_to_rgb_helper 0 0 0];} } ::qw::throw "Did not recognize color symbol \"$Symbol\"."; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.11";} ::proc qw::color_palette_get {args} { if {[winfo depth .] == 1} { return } global tkPalette if {[llength $args] == 1} { set new(background) [lindex $args 0] } else { array set new $args } if {![info exists new(background)]} { error "must specify a background color" } if {![info exists new(foreground)]} { set new(foreground) black } set bg [winfo rgb . $new(background)] set fg [winfo rgb . $new(foreground)] set darkerBg [format #%02x%02x%02x [expr {(9*[lindex $bg 0])/2560}] [expr {(9*[lindex $bg 1])/2560}] [expr {(9*[lindex $bg 2])/2560}]] foreach i {activeForeground insertBackground selectForeground highlightColor} { if {![info exists new($i)]} { set new($i) $new(foreground) } } if {![info exists new(disabledForeground)]} { set new(disabledForeground) [format #%02x%02x%02x \ [expr {(3*[lindex $bg 0] + [lindex $fg 0])/1024}] \ [expr {(3*[lindex $bg 1] + [lindex $fg 1])/1024}] \ [expr {(3*[lindex $bg 2] + [lindex $fg 2])/1024}]] } if {![info exists new(highlightBackground)]} { set new(highlightBackground) $new(background) } if {![info exists new(activeBackground)]} { foreach i {0 1 2} { set light($i) [expr {[lindex $bg $i]/256}] set inc1 [expr {($light($i)*15)/100}] set inc2 [expr {(255-$light($i))/3}] if {$inc1 > $inc2} { incr light($i) $inc1 } else { incr light($i) $inc2 } if {$light($i) > 255} { set light($i) 255 } } set new(activeBackground) [format #%02x%02x%02x $light(0) $light(1) $light(2)] } if {![info exists new(selectBackground)]} { set new(selectBackground) $darkerBg } if {![info exists new(troughColor)]} { set new(troughColor) $darkerBg } if {![info exists new(selectColor)]} { set new(selectColor) #b03060 } foreach Name [::array names new] { ::set new($Name) [::qw::color::symbol_to_rgb $new($Name)]; } return [::array get new]; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.11.0";} ::proc ::qw::list {{Arg ""}} { ::set Arg [::string map {\n " " \r " "} $Arg]; ::return [::uplevel ::list $Arg]; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.11.1,::sargs::var::+= exists==[::qw::command_exists ::sargs::var::+=]";} ::sargs::var::+= ::qw::options { .window { .dialog { .timeentry { .title "Select Time" .class "Time Entry" .buttonplacement "bottom" .textfont "" .labelfont "" .sound "" .bbox "" .default "" /button { .text "Text not specified." .command {} /select { .text OK .command {} } /cancel { .text Cancel .command {::set ::qw::dialog::result ""} } /help { .text Help .command {} } } } } } }; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.11.2";} ::sargs::var::+= ::qw::widget::options { .window { .dialog { .timeentry { .title "Select Time" .class "Time Entry" .buttonplacement "bottom" .textfont "" .labelfont "" .sound "" .bbox "" .default "" /button { .text "Text not specified." .command {} /select { .text OK .command {} } /cancel { .text Cancel .command {::set ::qw::dialog::result ""} } /help { .text Help .command {} } } } } } }; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.11.3";} ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.12";} proc ::qw::add_hyphens {Key} { ::if {$Key eq ""} { ::return $Key; } ::set PadBytes [::expr {3-[::string length $Key]%3}]; ::for {::set i 0;} {$i<$PadBytes} {::incr i;} { ::set Key "0$Key"; } ::set Result [::string range $Key 0 2]; ::for {::set i 3} {$i<[::string length $Key]} {::incr i 3} { ::append Result "-[::string range $Key $i [::expr {$i+2}]]"; } ::return $Result; } proc ::qw::remove_hyphens {Key} { ::set Result ""; ::for {::set Index 0} {$Index<[::string length $Key]} {::incr Index} { ::if {[::string is digit [::string index $Key $Index]]} { ::append Result [::string index $Key $Index]; } } ::while {[::string index $Result 0] eq "0"} { ::set Result [::string replace $Result 0 0]; } ::return $Result; } ::itcl::class ::QW::ODB::RANGE_SANDWICH { protected variable _range ""; method constructor {args} { ::set _range [::qw::odb::factory range]; } destructor { destroy; } method destroy {} { ::if {$_range eq ""} { ::return; } ::if {![::qw::command_exists $_range]} { ::return; } ::qw::try { $_range cpp_destroy; } catch Dummy {} ::set _range ""; } method range {} { ::return $_range; } } ::itcl::class ::QW::ODB::COUNT_SANDWICH { protected variable _object ""; protected variable _variable ""; method constructor {args} { ::qw::s_args_marshal; ::set Object [::sargs::get $s_args .object]; ::if {$Object eq ""} { ::qw::bug 314120080212102126 "Encountered invalid object \"$Object\"."; } ::if {![::qw::command_exists $Object]} { ::qw::bug 314120080212102127 "Encountered invalid object \"$Object\"."; } ::set Variable [::sargs::get $s_args .variable]; ::if {$Variable eq ""} { ::qw::bug 314120080212102128 "Encountered invalid variable \"$Variable\"."; } ::set _object $Object; ::set _variable $Variable; $_object count_sandwich_increment .variable $_variable .increment 1; } destructor { reset; } method reset {} { ::if {$_object eq ""} { ::return; } ::if {[::qw::command_exists $_object]} { $_object count_sandwich_increment .variable $_variable .increment -1; } ::set _object ""; } } ::itcl::class ::QW::MOUSE_CURSOR_SANDWICH { protected variable _widget ""; protected variable _cursor ""; protected variable _cursor_save ""; method constructor {sargs} { ::set _widget [::sargs::get $sargs .widget]; ::if {$_widget eq ""} { ::qw::bug 314120080212085243 "Encountered invalid widget \"$_widget\"."; } ::if {![::winfo exists $_widget]} { ::qw::bug 314120080212085244 "Encountered invalid widget \"$_widget\"."; } ::qw::try { ::set _cursor_save [$_widget cget -cursor]; } catch dummy { } ::set _cursor [::sargs::get $sargs .cursor]; ::if {[::info exists ::qw::platform_dependent_cursor($_cursor)]} { ::set _cursor $::qw::platform_dependent_cursor($_cursor); } $_widget configure -cursor $_cursor; } destructor { reset; } method reset {} { ::set Widget $_widget; ::set CursorSave $_cursor_save; ::set _widget ""; ::set _cursor_save ""; ::if {$Widget eq ""} { ::return; } ::if {![::winfo exists $Widget]} { ::return; } $Widget configure -cursor $CursorSave; } } ::namespace eval ::qw::network {} ::proc ::qw::network::network_info_setup {} { ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::network::network_info_setup,1000.0";} ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::network::network_info_setup,1000.1";} ::set NicInfoList [::list]; ::set NicAddressList [::list]; ::array set netif ""; ::foreach ifx [::twapi::get_netif_indices] { ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::network::network_info_setup,1000.2";} ::array unset netif *; ::array set netif [::twapi::get_netif_info $ifx -all]; ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::network::network_info_setup,1000.3";} ::set NicPhysicalAddress [::string toupper $netif(-physicaladdress)]; ::if {[::string length $NicPhysicalAddress]!=[::string length "00-00-00-00-00-00"]} { ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::network::network_info_setup,1000.4";} ::continue; } ::if {[::lsearch $NicAddressList $NicPhysicalAddress]>=0} { ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::network::network_info_setup,1000.5";} ::continue; } ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::network::network_info_setup,1000.6";} ::lappend NicAddressList $NicPhysicalAddress; ::set NicInfo [::sargs]; ::sargs::var::set NicInfo .address [::string toupper $netif(-physicaladdress)]; ::sargs::var::set NicInfo .ip_address [::lindex [::lindex $netif(-ipaddresses) 0] 0]; ::sargs::var::set NicInfo .ip_mask [::lindex [::lindex $netif(-ipaddresses) 0] 1]; ::sargs::var::set NicInfo .gateway $netif(-defaultgateway); ::sargs::var::set NicInfo .dhcp.server $netif(-dhcpserver); ::sargs::var::set NicInfo .description $netif(-description); ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::network::network_info_setup,1000.7,NicInfo==\n[::sargs::format $NicInfo]";} ::lappend NicInfoList $NicInfo; } ::return; ::foreach ifx [::twapi::get_netif6_indices] { ::array unset netif *; ::array set netif [::twapi::get_netif6_info $ifx -all]; ::set NicPhysicalAddress [::string toupper $netif(-physicaladdress)]; ::if {[::string length $NicPhysicalAddress]!=[::string length "00-00-00-00-00-00"]} { ::continue; } ::if {[::lsearch $NicAddressList $NicPhysicalAddress]>=0} { ::continue; } ::lappend NicAddressList $NicPhysicalAddress; ::set NicInfo [::sargs]; ::sargs::var::set NicInfo .address [::string toupper $netif(-physicaladdress)]; ::sargs::var::set NicInfo .ip_address ""; ::sargs::var::set NicInfo .ip_mask ""; ::sargs::var::set NicInfo .gateway ""; ::sargs::var::set NicInfo .dhcp.server ""; ::sargs::var::set NicInfo .description $netif(-description); ::lappend NicInfoList $NicInfo; } ::return [::sargs .nic_info_list $NicInfoList .nic_address_list $NicAddressList]; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.13";} ::if {$::qw::control(tk_is_enabled)} { ::package require qw::widget_disjointlistbox 1.0; } ::proc ::qw::time::format_duration {s_args} { ::set Seconds [::expr int([::sargs::get $s_args ".seconds"])]; ::set Format [::sargs::get $s_args ".format"]; ::set Negative [::sargs::get $s_args ".negative"] ::if {$Negative eq ""} {::set Negative "parentheses";} ::set Days 0; ::set Hours 0; ::set Minutes 0; ::set Result $Format; ::set IsNegative 0; ::if {$Seconds<0} { ::set IsNegative 1; ::set Seconds [::expr int([::qw::number::negative $Seconds])]; } ::if {[::string first "%d" $Format]>=0} { ::set Days [::expr $Seconds/86400]; ::incr Seconds [::expr $Days*-86400]; } ::if {[::string first "%h" $Format]>=0} { ::set Hours [::expr $Seconds/3600]; ::incr Seconds [::expr $Hours*-3600]; } ::if {[::string first "%m" $Format]>=0} { ::set Minutes [::expr $Seconds/60]; ::incr Seconds [::expr $Minutes*-60]; } ::set HHours $Hours; ::set MMinutes $Minutes; ::set SSeconds $Seconds; ::if {$Hours<10} {::set HHours "0$Hours"}; ::if {$Minutes<10} {::set MMinutes "0$Minutes"}; ::if {$Seconds<10} {::set SSeconds "0$Seconds"}; ::set Result [::string map "%d $Days %hh $HHours %mm $MMinutes %ss $SSeconds" $Result]; ::set Result [::string map "%h $Hours %m $Minutes %s $Seconds" $Result]; ::switch -- $Negative { "leading_minus" { ::if {$IsNegative} { ::set Result "-$Result"; } } "trailing_minus" { ::if {$IsNegative} { ::set Result "$Result-"; } else { ::set Result "$Result "; } } "parentheses" { ::if {$IsNegative} { ::set Result "( $Result )"; } else { ::set Result "$Result "; } } } ::return $Result; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.16";} ::if {$::qw::control(tk_is_enabled)} { } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.19";} ::proc ::qw::rwb_crm_debug_314120040922103104 {args} { ::qw::s_args_marshal; ::set Database [::sargs::get $s_args .database]; ::set Index [::sargs::get $s_args .index]; ::set DatabasePath [$Database cpp_database_path]; ::set Folder [::file dirname $DatabasePath]; ::set TextFile [::file join $Folder index.txt]; ::set IfsFile [$Database cpp_file_factory]; $IfsFile cpp_file_open .path $Index; ::set Handle [::open $TextFile w+]; ::set Count 0; ::for {::set Record [$IfsFile cpp_record_first];} {[::llength [::sargs::get $Record .key]]} {::set Record [$IfsFile cpp_record_next $Record];} { ::puts $Handle "[::incr Count] -------------------------------------------"; ::puts $Handle "[::sargs::format .structure $Record]"; } ::close $Handle; $IfsFile cpp_destroy; } ::proc ::qw::rwb_314120070927125458_debug {args} { ::qw::s_args_marshal; ::set Header [::sargs::get $s_args .address]; ::set Meta [[$Header odb_database] cpp_object_meta_load .address $Header]; ::set Fields [::sargs::select_field .structure $Meta .field .amount]; ::foreach Field $Fields { ::puts "rwb_314120070927125458_debug,::qw::rwb_314120070927125458_debug,$Field.amount==[[$Header $Field.amount] odb_get]"; } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.19.0";} ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.20";} ::variable ::qw::odb::log_file_next_id 0; ::proc ::qw::odb::log_file_append {args} { ::qw::try { ::qw::s_args_marshal; ::set Filename "nv2_log_[::clock format [::clock seconds] -format %Y].txt"; ::set Folder [::file dirname [::info nameofexecutable]]; ::set File [::file join $Folder $Filename]; ::set Handle [::open $File a+]; ::qw::finally [::list ::close $Handle]; ::set UniqueId [::clock seconds]_$::qw::odb::log_file_next_id; ::incr ::qw::odb::log_file_next_id; ::set Epoch [::clock seconds]; ::set LogRecord [::sargs \ .program.nameofexecutable [::string tolower [::file normalize [::info nameofexecutable]]] \ .program.version "$::qw_version.$::qw_patch_level.$::qw_build" \ .computer.hostname [::string tolower [::info hostname]] \ .date.hmsdmy [::clock format $Epoch -format "%H:%M:%S %d-%b-%Y"] \ .date.ymdhms [::clock format $Epoch -format %Y%m%d%H%M%S] \ .date.epoch $Epoch \ .log_record_id $UniqueId \ ]; ::sargs::var::+= LogRecord [::sargs::get $s_args .log_record]; ::set Temp ""; ::foreach Field [::lsort [::sargs::names .structure $LogRecord]] { ::sargs::var::set Temp $Field [::sargs::get $LogRecord $Field]; } ::set LogRecord $Temp; ::set Record [::sargs::set LogRecord .log_record_$UniqueId $LogRecord]; ::set Record [::sargs::format .structure $Record]; ::puts $Handle $Record; } catch Dummy { ::puts "314120091120085156,Warning:Could not write to log file."; ::puts "[::sargs::format .structure $Dummy]"; } ::return $LogRecord; } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.21";} ::proc ::add_window_class_low_level {sargs} { ::qw::bug 314120120627111926 "[::qw::procname] - proc no longer used."; ::set Database [::sargs::get $sargs .database]; ::if {$Database eq ""} { ::qw::bug 314120110826110617 "Invalid database \"$Database\"."; } ::set BasePath [::sargs::get $sargs .base_path]; ::if {$BasePath eq ""} { ::qw::bug 314120110826095408 "Invalid base path \"$BasePath\"."; } ::set BaseOS [$Database cpp_object_structure_load .path $BasePath]; ::set BaseObjectId [::sargs::get $BaseOS .system.object_id]; ::set BaseClassPath [::sargs::get $BaseOS .system.class_path]; ::if {$BaseClassPath ne $BasePath} { ::qw::bug 314120110826095410 "Invalid class path."; } ::set KidOS [::sargs::get $sargs .object_structure]; ::if {$KidOS eq ""} { ::qw::bug 314120110826095409 "Empty object structure."; } ::set KidObjectId [$Database cpp_next_object_id]; ::set KidClassPath [::sargs::get $KidOS .system.class_path]; ::sargs::var::set KidOS .system.base_object_id $BaseObjectId; ::sargs::var::set kidOS .system.class_object_id $KidObjectId; ::sargs::var::set KidOS .system.object_id $KidObjectId; ::sargs::var::set KidOS .data.odb_base "/$BaseObjectId.odb_deriveds"; $Database cpp_object_structure_store .structure $KidOS; ::set Record ""; ::sargs::var::set Record .key [::list string $BaseObjectId string [::sargs::get $KidOS .system.id] string /$KidObjectId.odb_base]; ::sargs::var::set Record .amounts [::list .count 1.0]; $Database cpp_file_record_insert \ .path /odb/index$BaseClassPath.odb_deriveds.index/id \ .after $Record \ ; ::set Name [::sargs::get $KidOS .data.name]; ::set Description [::sargs::get $KidOS .data.description]; ::set Record ""; ::sargs::var::set Record .key [::list string $BaseObjectId string $Name string /$KidObjectId.odb_base]; ::sargs::var::set Record .amounts [::list .count 1.0]; $Database cpp_file_record_insert \ .path /odb/index$BaseClassPath.odb_deriveds.index/name \ .after $Record \ ; ::set Record ""; ::sargs::var::set Record .key [::list string $BaseObjectId string $Description string $Name string /$KidObjectId.odb_base]; ::sargs::var::set Record .amounts [::list .count 1.0]; $Database cpp_file_record_insert \ .path /odb/index$BaseClassPath.odb_deriveds.index/description \ .after $Record \ ; ::set LastRecord [$Database cpp_file_record_last \ .path /odb/index$BaseClassPath.odb_deriveds.index/interactive \ .range.begin [::list string $BaseObjectId] \ .range.end [::list string $BaseObjectId] \ ]; ::if {$LastRecord eq ""} { ::set Odometer 0.0; } else { ::set Odometer [::lindex [::sargs::get $LastRecord .key] end-2]; ::if {![::string is double $Odometer]&& [::string is integer $Odometer]} { ::qw::throw 314120110826093252 "Invalid odometer \"$Odometer\"."; } ::set Odometer [::expr {$Odometer+1.0}]; } ::set Record ""; ::sargs::var::set Record .key [::list string $BaseObjectId bcd $Odometer string /$KidObjectId.odb_base]; ::sargs::var::set Record .amounts [::list .count 1.0]; $Database cpp_file_record_insert \ .path /odb/index$BaseClassPath.odb_deriveds.index/interactive \ .after $Record \ ; ::set Record ""; ::sargs::var::set Record .key [::list string /$BaseObjectId.odb_deriveds.index/interactive string /$KidObjectId.odb_base]; ::sargs::var::set Record .amounts [::list .count 1.0]; ::sargs::var::set Record .data [::list .odometer $Odometer]; $Database cpp_file_record_insert \ .path /odb/odometer \ .after $Record \ ; ::foreach IfsFilePath [::list \ /odb/index$KidClassPath.odb_deriveds.index \ /odb/index$KidClassPath.odb_deriveds.index/id \ /odb/index$KidClassPath.odb_deriveds.index/name \ /odb/index$KidClassPath.odb_deriveds.index/description \ /odb/index$KidClassPath.odb_deriveds.index/interactive \ /odb/index$KidClassPath.odb_deriveds.index/name/folder \ /odb/index$KidClassPath.odb_deriveds.index/description/folder \ /odb/index$KidClassPath.owner.kids.index \ /odb/index$KidClassPath.owner.kids.index/interactive \ /odb/index$KidClassPath.pick.kids.index \ /odb/index$KidClassPath.pick.kids.index/interactive \ /odb/index$KidClassPath.clipper.kids.index \ /odb/index$KidClassPath.clipper.kids.index/z \ /odb/index$KidClassPath.clipper.kids.index/tile \ /odb/index$KidClassPath.focus.kids.index \ /odb/index$KidClassPath.focus.kids.index/tab \ ] { $Database cpp_file_create .path $IfsFilePath; } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.22";} ::if {[::lempty [::info commands ::apply]]} { ::proc ::getGloballyUniqueName {} { ::return 314120130126150530_[::incr ::314120130126150231_count]; } ::proc ::apply {fun args} { ::set len [llength $fun] if {($len < 2) || ($len > 3)} { ::qw::bug 314120130126144317 "::apply - expected args and body, encountered \"$fun $args\""; } ::lassign $fun argList body ns; ::set name ::[getGloballyUniqueName]; ::if {$ns ne ""} { ::set name "$ns$name"; } set body0 { rename [lindex [info level 0] 0] {}; } proc $name $argList ${body0}$body ::return [::uplevel 1 $name $args]; } } ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.23";} ::set ::qw::app_name_list [::list \ "app_name_server" \ "app_name_workstation" \ "app_name_service_stub" \ "app_name_service_stub_checker" \ "app_name_service_hub" \ "app_name_service_node" \ "app_name_database_utilities" \ "app_name_message_database" \ "app_name_message_database_checker" \ "app_name_nv2_install" \ "app_name_default" \ ]; ::proc ::qw::app_name_check {sargs} { ::set AppName [::sargs::get $sargs .app_name]; ::if {[::lsearch -exact $::qw::app_name_list $AppName]<0} { ::qw::bug 314120190522092008 "[::qw::procname] - invalid app_name \"$AppName\"."; } } ::proc ::qw::app_name_set {sargs} { ::set rwb1_debug 0; ::if {$::qw::verbose(startup_shutdown)} { ::set rwb1_debug 2; } ::if {![::sargs::boolean_get $sargs .nocomplain]} { ::qw::app_name_check $sargs; } ::set AppName [::sargs::get $sargs .app_name]; ::set ::qw::control(app_name) $AppName; ::if {$rwb1_debug} {::puts "rwb1_debug,app_name_set,1000.0.,sargs==\n$sargs";} ::if {[::sargs::exists $::qw_sargv .process_file_is_enabled]} { ::set ::qw::control(process_file_is_enabled) [::sargs::boolean_get $::qw_sargv .process_file_is_enabled]; } ::if {$::qw::control(process_file_is_enabled)} { ::if {$rwb1_debug} {::puts "rwb1_debug,app_name_set,4000.0,process_id==[::pid],sargs==$sargs";} ::if {$rwb1_debug} {::puts "rwb1_debug,app_name_set,4000.1";} ::set Path [::sargs::get $::qw_sargv .process_list_file]; ::if {$Path ne ""} { ::if {$rwb1_debug} {::puts "rwb1_debug,app_name_set,4000.0.1,process_list_file==$Path";} ::set ::qw::control(process_list_file) $Path; } ::set Path [::sargs::get $::qw_sargv .hub_list_file]; ::if {$Path ne ""} { ::if {$rwb1_debug} {::puts "rwb1_debug,app_name_set,4000.0.2,hub_list_file==$Path";} ::set ::qw::control(hub_list_file) $Path; } ::if {$rwb1_debug} {::puts "rwb1_debug,app_name_set,4000.2";} ::set Commandline [::list [::info nameofexecutable]]; ::foreach Element $::argv { ::lappend Commandline $Element; } ::set ClockSeconds [::clock seconds]; ::if {$rwb1_debug} {::puts "rwb1_debug,app_name_set,4000.5";} ::if {![::qw::mutex_manager mutex_is_locked .mutex_name $::qw::control(process_list_file)]} { ::qw::mutex_manager mutex_lock .mutex_name $::qw::control(process_list_file) .lock_caller [::qw::procname]; ::qw::finally [::list ::qw::mutex_manager mutex_unlock .mutex_name $::qw::control(process_list_file)]; } ::if {$rwb1_debug} {::puts "rwb1_debug,app_name_set,4000.6";} ::set ProcessRecord [::sargs \ .app_name $::qw::control(app_name) \ .release $::qw_release \ .process_id [::pid] \ .nameofexecutable [::info nameofexecutable] \ .argv $::argv \ .commandline $Commandline \ .boot_clock $ClockSeconds \ .boot_date [::clock format $ClockSeconds -format %Y%m%d%H%M%S] \ .ping_clock $ClockSeconds \ .ping_date [::clock format $ClockSeconds -format %Y%m%d%H%M%S] \ ]; ::if {$rwb1_debug} {::puts "rwb1_debug,app_name_set,4000.6.0,ProcessRecord==\n[::sargs::format $ProcessRecord]";} ::sargs::file::set $::qw::control(process_list_file) .[::pid] $ProcessRecord; ::if {$rwb1_debug} { ::qw::process_file::check .caller [::qw::procname]; } ::if {$rwb1_debug} {::puts "rwb1_debug,app_name_set,4000.7";} ::if {$::qw::control(process_file_is_responding_is_enabled)} { ::set Interval [::expr {$::qw::control(process_ping_interval_seconds)*1000}]; ::after $Interval { ::qw::process_file::ping_clock_background; } } }; ::if {$rwb1_debug} {::puts "rwb1_debug,app_name_set,4000.99";} } ::proc ::qw::main {} { ::set rwb1_debug 0; ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::main,1000.0,::argv==$::argv";} ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::main,1000.00,nameofexecutable==[::info nameofexecutable]";} ::if {$::qw::control(sargv_refactor)} { ::qw::boot::qw_sargv_build; } ::if {!$::qw::control(sargv_refactor)} { ::qw::boot::process_argv; } ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::main,1000.0.1,::qw_sargv==\n[::sargs::format $::qw_sargv]";} ::qw::fileutil::temporary_directory_cleanup; ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::main,1000.0.2";} ::if {$::qw::control(tk_is_enabled)} { ::wm protocol . WM_DELETE_WINDOW ::qw::exit; ::wm withdraw . ::switch -- $::tcl_platform(platform) { "windows" { ::wm iconbitmap . -default [::file join $::qw_library nv2.ico]; } "unix" { ::if {!$::qw::control(skip_linux_problems)} { ::wm iconbitmap . [::file join $::qw_library nv2_1_16x16x32.png]; } } } } ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::main,1000.1";} ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::main,1000.2";} ::qw::boot::computer_check; ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::main,1000.3";} ::qw::boot::process_commandline_options; ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::main,1000.3.0";} ::if {[::string first "nv2_install.qw_script" $::argv]>=0} { ::qw::script::source \ .script.path [::file join $::qw_library system nv2_install.qw_script] \ ; ::qw::shutdown; ::return; } ::switch -- $::tcl_platform(platform) { windows { ::if {[::string first "win32-ix86" [::string tolower [::info nameofexecutable]]]>=0} { ::qw::script::source \ .script.path [::file join $::qw_library system nv2_install.qw_script] \ ; ::qw::shutdown; ::return; } } unix { ::if {[::string first "linux32-ix86" [::string tolower [::info nameofexecutable]]]>=0} { ::qw::script::source \ .script.path [::file join $::qw_library system nv2_install.qw_script] \ ; ::qw::shutdown; ::return; } } } ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::main,1000.6";} ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::main,1000.7";} ::if {[::lsearch -exact $::qw_argv "-register"]>=0} { ::qw::script::source [::sargs .script.path [::file join $::qw_program_path system customer_registration_dialog.qw_script]]; ::qw::shutdown; ::return; } ::if {[::lsearch -exact $::qw_argv "-customer_support_register"]>=0} { ::qw::script::source [::sargs .script.path [::file join $::qw_program_path system customer_support_registration_dialog.qw_script]]; ::qw::shutdown; ::return; } ::if {[::lsearch -exact $::qw_argv "-customer_support_locksmith"]>=0} { ::qw::script::source [::sargs .script.path [::file join $::qw_program_path system customer_support_locksmith_dialog.qw_script]]; ::qw::shutdown; ::return; } ::set Index [::lsearch -exact $::qw_argv "-shutdown_time"]; ::if {$Index>=0} { ::set ShutdownTime [::lindex $::qw_argv [::incr Index]]; ::after [::expr {($ShutdownTime-[::clock seconds])*1000}] ::qw::shutdown; } ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::main,1000.8";} ::qw::boot::registration_check; ::if {$::qw::control(babyship_flush_on_boot)} { ::qw::babyship::singleton flush_nv2_open_message_log; } ::if {$rwb1_debug} {::puts "rwb1_debug,::qw::main,1000.9";} ::if {[::string first "qw_service_hub.qw_script" $::qw_argv]>=0} { ::qw::boot::script_run_on_demand; ::return; } ::if {[::string first "database_utilities.qw_script" $::qw_sargv]>=0||[::sargs::get $::qw_sargv .script.path] eq "du"} { ::qw::boot::script_run_on_demand; ::return; } ::if {$::qw::control(sargv_refactor)} { ::if {[::sargs::boolean_get $::qw_sargv .server]} { ::if {[::sargs::get $::qw_sargv .database_path] eq ""} { ::lappend ::argv -database_path [::file join $::qw_program_folder server.nv2]; ::lappend ::qw_argv -database_path [::file join $::qw_program_folder server.nv2]; ::sargs::var::set ::qw_sargv .database_path [::file join $::qw_program_folder server.nv2]; } ::qw::script::source .script.path [::file join object server qw_server_boot.qw_script]; ::qw::boot::script_run_on_demand; ::return; } ::if {[::sargs::get $::qw_sargv .database_path] ne ""} { ::if {[::sargs::get $::qw_sargv .script] eq ""} { ::qw::script::source .script.path [::file join object workstation qw_workstation_boot.qw_script]; ::return; } ::qw::script::source .script.path [::file join object workstation qw_workstation_boot.qw_script]; ::qw::boot::script_run_on_demand; ::return; } ::if {[::sargs::get $::qw_sargv .database_path] eq ""} { ::if {[::sargs::get $::qw_sargv .script] eq ""} { ::lappend ::argv -database_path [::file join $::qw_program_folder workstation.nv2]; ::lappend ::qw_argv -database_path [::file join $::qw_program_folder workstation.nv2]; ::sargs::var::set ::qw_sargv .database_path [::file join $::qw_program_folder workstation.nv2]; ::qw::script::source .script.path [::file join object workstation qw_workstation_boot.qw_script]; ::return; } } } ::if {!$::qw::control(sargv_refactor)} { ::if {[::lsearch -exact $::qw_argv "-server"]>=0} { ::if {[::lsearch -exact $::qw_argv "-database_path"]<0} { ::lappend ::argv -database_path [::file join $::qw_program_folder server.nv2]; ::sargs::var::set ::qw_sargv .database_path [::file join $::qw_program_folder server.nv2]; } ::qw::script::source .script.path [::file join object server qw_server_boot.qw_script]; ::qw::boot::script_run_on_demand; ::return; } ::if {[::lsearch -exact $::qw_argv "-database_path"]>=0} { ::if {[::lsearch -exact $::qw_argv "-script"]<0} { ::qw::script::source .script.path [::file join object workstation qw_workstation_boot.qw_script]; ::return; } ::qw::script::source .script.path [::file join object workstation qw_workstation_boot.qw_script]; ::qw::boot::script_run_on_demand; ::return; } ::if {[::lsearch -exact $::qw_argv "-database_path"]<0} { ::if {[::lsearch -exact $::qw_argv "-script"]<0} { ::lappend ::argv -database_path [::file join $::qw_program_folder workstation.nv2]; ::sargs::var::set ::qw_sargv .database_path [::file join $::qw_program_folder workstation.nv2]; ::qw::script::source .script.path [::file join object workstation qw_workstation_boot.qw_script]; ::return; } } } ::qw::boot::script_run_on_demand; } ::proc ::qw::bin2hex {args} { ::set s [::join $args ""]; ::if {$::tcl_version eq "8.4"} { ::set Size [::string length $s]; ::for {::set i 0} {$i<$Size} {::incr i} { ::if {$i>0} { ::append Result " "; } ::append Result [::format %2X [scan [::string index $s $i] %c]]; } ::return $Result; } ::set Result [::regexp -inline -all .. [::binary encode hex $s]]; ::return $Result; } ::package require qw::object::system::gui; # 2.34.2 - doesn't work near top of file and don't know why ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.98,::qw::control(tk_is_enabled)==$::qw::control(tk_is_enabled)";} ::if {$::qw::control(active_index_is_enabled)} { ::if {!$::qw::control(reference_commit2)} { ::qw::bug "314120231121152447" "reference_commit2 must be defined for active indexes."; } } ::if {$::qw::control(is_release)} { ::switch -- $::tcl_platform(platform) { "windows" { ::if {1} { ::foreach Name [::array names ::qw::verbose] { ::if {$::qw::verbose($Name)} { ::qw::bug "314120210401085919" "invalid control variable ::qw::verbose($Name)"; } } } } "unix" { } } ::if {!$::qw::control(itcl_class_mangle_is_enabled)} { ::qw::bug "314120250620091002" "invalid control variable"; } ::if {$::qw::control(dump_method_calls)} { ::qw::bug "314120210117180621" "invalid control variable"; } ::if {$::qw::control(repeatable_object_ids)} { ::qw::bug "314120210117180622" "invalid control variable"; } ::if {$::qw::control(repeatable_database_ids)} { ::qw::bug "314120210117180623" "invalid control variable"; } ::if {$::qw::control(database_recovery_skip)} { ::qw::bug "314120210117180624" "invalid control variable"; } ::if {$::qw::control(qw_profile_is_enabled)} { ::qw::bug "314120210117180625" "invalid control variable"; } ::if {$::qw::control(fat_is_enabled)} { ::qw::bug "314120210117180626" "invalid control variable"; } ::if {!$::qw::control(database_backup_is_enabled)} { ::qw::bug "314120220525091917" "invalid control variable"; } ::if {$::qw::control(process_file_is_enabled)} { ::qw::bug "314120210117180627" "invalid control variable"; } ::if {$::qw::control(rwb_absolute)} { ::qw::bug "314120210117180628" "invalid control variable"; } ::if {!$::qw::control(windows_service_is_enabled)} { ::qw::bug "314120210201145123" "invalid control variable"; } ::if {$::qw::control(database_utilities_maximum_errors)!=20} { ::qw::bug "314120210202145114" "invalid control variable"; } ::if {$::qw::control(observer_builtins_are_eliminated)} { ::qw::bug "314120210222074804" "invalid control variable"; } ::if {$::qw::control(compiler_name) ne "gnu"} { ::qw::bug "314120210222074805" "invalid control variable"; } ::if {$::qw::control(database_utilities_maximum_errors)!=20} { ::qw::bug "314120210514102029" "invalid control variable"; } ::if {!$::qw::control(ifs_dynamic_integrity_fix)} { ::qw::bug "314120210514102030" "invalid control variable"; } ::if {$::qw::control(semiloops_are_always_allowed)} { ::qw::bug "314120210514102034" "invalid control variable"; } ::if {$::qw::control(base_change_retotal_shortcut_is_enabled)} { ::qw::bug "314120210514102036" "invalid control variable"; } ::if {$::qw::control(active_index_is_enabled)} { ::qw::bug "314120210514102037" "invalid control variable"; } ::if {$::qw::control(reference_commit2)} { ::qw::bug "314120210514102038" "invalid control variable"; } ::if {$::qw::control(database_header_date_is_enabled)} { ::qw::bug "314120211111173021" "invalid control variable"; } ::if {$::qw::control(repeatable_tcl_handles)} { ::qw::bug "314120220105143801" "invalid control variable"; } ::if {$::qw::control(cookie_echo_skip)} { ::qw::bug "314120220121120601" "invalid control variable"; } ::if {$::qw::control(signal_queue_is_list)} { ::qw::bug "314120220129091913" "invalid control variable"; } ::switch -- $::tcl_version { 8.4 { ::if {!$::qw::control(date_restricted_to_2037)} { ::qw::bug "314120220211165938" "invalid control variable"; } } 8.6 { ::if {!$::qw::control(date_restricted_to_2037)} { ::qw::bug "314120220211165935" "invalid control variable"; } } default { ::qw::bug "314120220211165939" "invalid version"; } } ::if {$::qw::control(enter_sandwich_is_enabled)} { ::qw::bug "314120220709114208" "invalid control variable"; } ::if {$::qw::control(rwb_gpf_bug)} { ::qw::bug "314120220726154245" "invalid control variable"; } ::if {!$::qw::control(ifs_file_cache_is_enabled)} { ::qw::bug "314120221123172752" "invalid control variable"; } ::if {$::qw::control(tm_trucking_fix)} { ::qw::bug "314120221125092357" "invalid control variable"; } ::if {!$::qw::control(tk_is_enabled)&&!$::qw::control(has_nv_gui)} { ::qw::bug "314120230621104226" "invalid control variable"; } ::if {$::qw::control(bug_hunt)} { ::qw::bug "314120240215100011" "invalid control variable"; } } ::if {$::qw::control(fat_is_enabled)} { ::if {!$::qw::control(ifs_schemas_on_demand)} { ::qw::bug "314120210117180631" "invalid control variable"; } ::if {!$::qw::control(ifs_amounts_are_folded)} { ::qw::bug "314120210117180632" "invalid control variable"; } } ::proc ::qw::brace_match {Contents} { ::set Braces 0; ::set Brackets 0; ::set Parentheses 0; ::set Position 0; ::while {$Position<[::string length $Contents]} { ::switch -- "[::string index $Contents $Position]" { "{" {::incr Braces;} "}" {::incr Braces -1;} "[" {::incr Brackets;} "]" {::incr Brackets -1;} "(" {::incr Parentheses;} ")" {::incr Parentheses -1;} } ::incr Position; } ::set HelpPage { .id 314120220222170229 .tags {error} .body { [p { If you enter braces into any field you should ensure they are matched, i.e. same number of left and right braces. NewViews has trouble managing unmatched braces, largely due to it's underlying scripting language where braces are important and must be matched. }] [p { Consider braces to be special characters. Do not use them in names of any type, i.e. user names, account names, report names, etc. For example, braces will not work when homing in on an account name in an account selection dialog. }] } } ::if {$Braces!=0} { ::qw::throw \ .text "Mismatched braces are not allowed." \ .help_page $HelpPage \ ; } } ::if {0} { ::rename ::socket ::socket_qw; ::proc ::socket {args} { ::puts "rwb1_debug,::socket,1000.0,args==$args"; ::qw::try { ::set Result [::eval ::socket_qw $args]; } catch Exception { ::puts "rwb1_debug,::socket,1000.1,exception==$Exception"; ::qw::throw $Exception; } ::puts "rwb1_debug,::socket,1000.2,args==$args"; ::return $Result; } } ::if {$::tcl_version>=8.6&&$::qw::control(tk_is_enabled)} { ::wm iconphoto . [::image create photo -file [::file join $::qw_program_path system images nv2_iconphoto.png]]; } ::package require qw::profile; ::if {$::rwb1_debug} {::puts "rwb1_debug,qw.qw_tcl,global,1000.99";}