int set_ssd_data(SSDataUI *ui, Quark *q, void *caller) { int retval = RETURN_SUCCESS; if (ui && q) { if (!caller) { /* commit the last entered cell changes */ TableCommitEdit(ui->mw, FALSE); } if (!caller || caller == ui->col_label) { int col; if (GetSingleListChoice(ui->col_sel, &col) == RETURN_SUCCESS) { char *s = GetTextString(ui->col_label); ssd_set_col_label(q, col, s); xfree(s); /* FIXME: this is an overkill */ update_ssd_ui(ui, q); } } } return retval; }
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; }