Ejemplo n.º 1
0
static int highlight_cb(TreeEvent *event)
{
    ExplorerUI *ui = (ExplorerUI *) event->anydata;
    TreeItemList items;
    int count;
    Quark *q = NULL;
    int fid = -1;
    int parent_fid = -1;
    int homogeneous_selection = TRUE;

    TreeGetHighlighted(event->w, &items);
    count = items.count;
    
    ui->homogeneous_parent = TRUE;

    if (count > 0) {
        int i;

        q = TreeGetQuark(items.items[0]);
        fid = quark_fid_get(q);
        parent_fid = quark_fid_get(quark_parent_get(q));

        for (i = 1; i < count; i++) {
            Quark *iq = TreeGetQuark(items.items[i]);
            
            if ((int) quark_fid_get(iq) != fid) {
                homogeneous_selection = FALSE;
            }
            if ((int) quark_fid_get(quark_parent_get(iq)) != parent_fid) {
                ui->homogeneous_parent = FALSE;
            }
        }
    }
    xfree(items.items);

    if (!count || !homogeneous_selection) {
        WidgetSetSensitive(ui->aacbuts[0], FALSE);
        WidgetSetSensitive(ui->aacbuts[1], FALSE);
        
        manage_plugin(ui, NULL);
    } else {
        Widget managed_top;

        WidgetSetSensitive(ui->aacbuts[0], TRUE);
        WidgetSetSensitive(ui->aacbuts[1], TRUE);
        
        switch (fid) {
        case QFlavorProject:
            update_project_ui(ui->project_ui, q);
            managed_top = ui->project_ui->top;
            break;
        case QFlavorSSD:
            update_ssd_ui(ui->ssd_ui, q);
            managed_top = ui->ssd_ui->top;
            break;
        case QFlavorFrame:
            update_frame_ui(ui->frame_ui, q);
            managed_top = ui->frame_ui->top;
            break;
        case QFlavorGraph:
            update_graph_ui(ui->graph_ui, q);
            managed_top = ui->graph_ui->top;
            break;
        case QFlavorSet:
            update_set_ui(ui->set_ui, q);
            managed_top = ui->set_ui->top;
            break;
        case QFlavorAGrid:
            update_axisgrid_ui(ui->axisgrid_ui, q);
            managed_top = ui->axisgrid_ui->top;
            break;
        case QFlavorAxis:
            update_axis_ui(ui->axis_ui, q);
            managed_top = ui->axis_ui->top;
            break;
        case QFlavorDObject:
            update_object_ui(ui->object_ui, q);
            managed_top = ui->object_ui->top;
            break;
        case QFlavorAText:
            update_atext_ui(ui->atext_ui, q);
            managed_top = ui->atext_ui->top;
            break;
        case QFlavorRegion:
            update_region_ui(ui->region_ui, q);
            managed_top = ui->region_ui->top;
            break;
        default:
            managed_top = NULL;
            break;
        }

        manage_plugin(ui, managed_top);
    }

    WidgetSetSensitive(ui->insert_frame_bt,    FALSE);
    WidgetSetSensitive(ui->insert_graph_bt,    FALSE);
    WidgetSetSensitive(ui->insert_set_bt,      FALSE);
    WidgetSetSensitive(ui->insert_ssd_bt,      FALSE);
    WidgetSetSensitive(ui->insert_axisgrid_bt, FALSE);
    WidgetSetSensitive(ui->insert_axis_bt,     FALSE);
    WidgetSetSensitive(ui->insert_object_pane, FALSE);
    if (count == 1) {
        WidgetSetSensitive(ui->idstr->form, TRUE);
        TextSetString(ui->idstr, QIDSTR(q));
        switch (fid) {
        case QFlavorProject:
            WidgetSetSensitive(ui->insert_frame_bt,    TRUE);
            WidgetSetSensitive(ui->insert_object_pane, TRUE);
            break;
        case QFlavorFrame:
            WidgetSetSensitive(ui->insert_graph_bt,    TRUE);
            WidgetSetSensitive(ui->insert_object_pane, TRUE);
            break;
        case QFlavorGraph:
            WidgetSetSensitive(ui->insert_ssd_bt,      TRUE);
            WidgetSetSensitive(ui->insert_axisgrid_bt, TRUE);
            WidgetSetSensitive(ui->insert_object_pane, TRUE);
            break;
        case QFlavorAGrid:
            WidgetSetSensitive(ui->insert_axis_bt,     TRUE);
            break;
        case QFlavorAxis:
            WidgetSetSensitive(ui->insert_object_pane, TRUE);
            break;
        }
        
        if (get_parent_ssd(q) &&
            (fid == QFlavorGraph || fid == QFlavorSSD)) {
            WidgetSetSensitive(ui->insert_set_bt,      TRUE);
        }
    } else {
        WidgetSetSensitive(ui->idstr->form, FALSE);
        TextSetString(ui->idstr, NULL);
    }

    return TRUE;
}
Ejemplo n.º 2
0
/*
 * delete the point pt in setno
 */
void del_point(Quark *pset, int pt)
{
    ssd_delete_rows(get_parent_ssd(pset), pt, pt);
}