function update_item_controls($window)
{
    global $id_edit, $curr_cat;
    $table = "item";
    $data = db_get_data($table, $id_edit, null, "", FETCH_ASSOC);
    $data = $data[0];
    wb_set_text(wb_get_control($window, ID_NAME), $data["name"]);
    wb_set_text(wb_get_control($window, ID_DESCRIPTION), $data["description"]);
    // Select the appropriate values from the combo boxes
    wb_set_selected(wb_get_control($window, ID_CATLIST), (int) array_search($curr_cat === null ? $data["cat"] : $curr_cat, db_get_data("cat", null, "id")));
    wb_set_selected(wb_get_control($window, ID_PRIORLIST), (int) array_search($data["priority"], db_get_data("priority", null, "id")));
    wb_set_selected(wb_get_control($window, ID_SEVERLIST), (int) array_search($data["severity"], db_get_data("severity", null, "id")));
}
function process_classes($window, $id, $ctrl, $lparam1 = 0, $lparam2 = 0)
{
    global $wb, $mainwin, $classes_table;
    switch ($id) {
        case IDCLOSE:
            $nclasses = count($wb->classes);
            for ($i = 0; $i < $nclasses; $i++) {
                $const = "IDC_" . strtoupper($wb->classes[$i][1]);
                $c = wb_get_control($wb->classdlg, constant($const));
            }
            wb_destroy_window($window);
            wb_set_selected($wb->mainmenu, ID_TOOLBOX, false);
            $wb->classdlg = null;
            break;
        default:
            process_main($window, $id, $ctrl, $lparam1, $lparam2);
            break;
    }
}
function read_project($filename)
{
    global $wb;
    $wb->project = parse_ini(file_get_contents($filename), false);
    // Read form data (section "Form"))
    $wb->currentform = 0;
    $section = $wb->project["Form"];
    $title = $section["caption"];
    $style = (int) $section["style"];
    $value = (int) $section["value"];
    $class = $section["class"];
    $geom = preg_split("/\\s+/", $section["geom"]);
    reset_form($class, $wb->mainwin, $title, max(1, (int) $geom[2]), max(1, (int) $geom[3]), $style, $value);
    $ncontrols = (int) $section["controls"];
    // Loop to read control data from project file
    for ($i = 0; $i < $ncontrols; $i++) {
        // Read a section with the form data
        $section = $wb->project["Form_ctrl" . (string) ($i + 1)];
        if (!$section) {
            break;
        }
        // Read control data
        $class = $section["class"];
        $caption = $section["caption"];
        $geom = preg_split("/\\s+/", $section["geom"]);
        $id = $section["id"];
        $style = $section["style"];
        $value = $section["value"];
        create_control($class, $caption, max(1, (int) $geom[2]), max(1, (int) $geom[3]), max(0, (int) $geom[0]), max(0, (int) $geom[1]), $id, $style, $value, false);
    }
    wb_set_text($wb->statusbar, "Created {$i} controls");
    $wb->form[$wb->currentform]->ncurrent_control = -1;
    foreach ($wb->project_array as $var) {
        $var = strtolower($var);
        $wb->form[$wb->currentform]->{$var} = $wb->project['Projectsettings'][$var];
        if (!$wb->form[$wb->currentform]->{$var}) {
            $wb->form[$wb->currentform]->{$var} = constant('DEFAULT_' . strtoupper($var));
        }
    }
    $wb->form[$wb->currentform]->ncurrindex = $wb->project['Projectsettings']['currentindex'];
    wb_set_selected($wb->tree, 0);
    update_control_data(true);
}
function process_test_values($window, $id, $ctrl = 0, $lparam1 = 0, $lparam2 = 0)
{
    global $statusbar;
    if ($lparam1 == WBC_GETFOCUS) {
        wb_set_text($statusbar, "Focus to control {$id}");
        return false;
    }
    switch ($id) {
        case IDC_EDIT4069:
        case IDC_EDIT4071:
            if ($lparam1 == WBC_KEYDOWN) {
                wb_set_text($statusbar, "Char {$lparam2}: " . chr($lparam2));
            }
            break;
        case IDC_EDIT4057:
            if ($lparam1 == WBC_KEYDOWN) {
                wb_set_text($statusbar, "Char {$lparam2}: " . chr($lparam2));
                //				wb_set_text(wb_get_control($window, IDC_STATIC4048), $lparam2 . "\n" . chr($lparam2));
                break;
            }
            $text = wb_get_text(wb_get_control($window, IDC_EDIT4057));
            wb_set_text(wb_get_control($window, IDC_EDIT4058), $text);
            wb_set_text(wb_get_control($window, IDC_EDIT4059), $text);
            wb_set_text(wb_get_control($window, IDC_EDIT4065), implode(" ", array_fill(0, 20, $text)));
            break;
        case IDC_LISTBOX4053:
            if ($lparam1 & WBC_DBLCLICK) {
                wb_set_text(wb_get_control($window, IDC_STATIC4048), "Double-click");
            } else {
                wb_set_text(wb_get_control($window, IDC_STATIC4048), "Single click");
            }
            break;
        case IDC_HSCROLL4056:
        case IDC_SLIDER4011:
            $value = wb_get_value(wb_get_control($window, $id));
            wb_set_value(wb_get_control($window, IDC_PROGRESSBAR4007), $value);
            wb_set_text(wb_get_control($window, IDC_STATIC4019), $value);
            wb_set_value(wb_get_control($window, IDC_HSCROLL4026), $value);
            wb_set_value(wb_get_control($window, IDC_VSCROLL4051), $value);
            wb_set_value(wb_get_control($window, IDC_UPDOWN4028), $value);
            $value = wb_get_value(wb_get_control($window, $id));
            wb_set_text(wb_get_control($window, IDC_STATIC4048), "Control #{$id}: value [{$value}]\n");
            wb_set_value(wb_get_control($window, IDC_EDIT4052), $value);
            break;
        case IDC_RADIOBUTTON4014:
        case IDC_RADIOBUTTON4015:
        case IDC_RADIOBUTTON4016:
            $value = $id - IDC_RADIOBUTTON4014;
            wb_set_value(wb_get_control($window, IDC_LISTBOX4053), $value);
            wb_set_value(wb_get_control($window, IDC_COMBOBOX4054), $value);
            wb_set_value(wb_get_control($window, IDC_LISTBOX4055), $value);
            break;
        case IDC_CHECKBOX4034:
            wb_set_selected(wb_get_control($window, IDC_CHECKBOX4049), wb_get_selected($ctrl));
            $value = wb_get_value(wb_get_control($window, $id));
            wb_set_text(wb_get_control($window, IDC_STATIC4048), "Control #{$id}: value [{$value}]\n");
            break;
        case IDC_UPDOWN4028:
        case IDC_CHECKBOX4049:
            $value = wb_get_value(wb_get_control($window, $id));
            wb_set_text(wb_get_control($window, IDC_STATIC4048), "Control #{$id}: value [{$value}]\n");
            break;
    }
}
function reset_form($class, $parent, $title, $width, $height, $style = 0, $value = 0)
{
    global $wb;
    $wb->currentform = 0;
    $wb->proj_filename = null;
    if (!isset($wb->form[$wb->currentform])) {
        $wb->form[$wb->currentform] = new stdclass();
    }
    // Reset form data with fixed attributes
    $wb->form[$wb->currentform]->ct = array();
    $wb->form[$wb->currentform]->numcontrols = 0;
    $wb->form[$wb->currentform]->ncurrindex = 0;
    $wb->form[$wb->currentform]->nselcontrol = -1;
    $wb->form[$wb->currentform]->treenode = 0;
    foreach ($wb->project_array as $var) {
        $wb->form[$wb->currentform]->{$var} = constant("DEFAULT_" . strtoupper($var));
    }
    // Variable attributes
    $wb->form[$wb->currentform]->width = $width;
    $wb->form[$wb->currentform]->height = $height;
    $wb->form[$wb->currentform]->caption = $title;
    $wb->form[$wb->currentform]->cclass = $class;
    $wb->form[$wb->currentform]->style = (int) $style;
    $wb->form[$wb->currentform]->value = (int) $value;
    // Resize, reposition and show form
    $pos = wb_get_position($parent);
    wb_set_position($wb->formwin, $pos[0] + 180, $pos[1] + 76);
    wb_set_size($wb->formwin, $width, $height);
    wb_set_text($wb->formwin, $title);
    wb_set_visible($wb->formwin, true);
    // Create a treeview item for this form
    wb_delete_items($wb->tree, $wb->form[$wb->currentform]->treenode);
    $root = $wb->rootnode;
    $node = wb_create_items($wb->tree, array(array($title, $wb->currentform, $root, 8, 9, 2)));
    $wb->form[$wb->currentform]->treenode = $node;
    // numforms is always set to 1
    $wb->numforms = 1;
    // Expand the root and select the new node
    wb_set_state($wb->tree, $root, 1);
    wb_set_selected($wb->tree, $node);
}