static int store_cb(Quark *q, void *udata) { ascii_data *adata = (ascii_data *) udata; /* label the SSD */ quark_idstr_set(q, adata->label); return store_data(q, adata->load_type, adata->settype); }
static int set_proc(void *obj, const char *name, GVarType type, GVarData prop, void *udata) { Quark *q = (Quark *) obj; Grace *grace = grace_from_quark(q); DataColumn col; int column; if (!q) { return RETURN_FAILURE; } if (strings_are_equal(name, "idstr") && type == GVarStr) { return quark_idstr_set(q, prop.str); } else if (strings_are_equal(name, "active") && type == GVarBool) { return quark_set_active(q, prop.boolval); } switch (quark_fid_get(q)) { case QFlavorSSD: if ((column = ssd_get_column_by_name(q, name)) >= 0) { return ssd_set_darray(q, column, prop.arr); } else { return RETURN_FAILURE; } break; case QFlavorSet: if ((col = get_dataset_col_by_name(grace, name)) != DATA_BAD) { if (set_set_length(q, prop.arr->size) != RETURN_SUCCESS) { return RETURN_FAILURE; } else { return set_set_darray(q, col, prop.arr); } } else { return RETURN_FAILURE; } break; default: return RETURN_FAILURE; break; } }
static int explorer_apply(ExplorerUI *ui, void *caller) { TreeItemList items; int count, i, res = RETURN_SUCCESS; int gpcount = 0; GProject **gplist; if (caller && !ToggleButtonGetState(ui->instantupdate)) { return RETURN_FAILURE; } TreeGetHighlighted(ui->tree, &items); count = items.count; if (!count) { xfree(items.items); return RETURN_FAILURE; } gplist = xmalloc(gapp->gpcount*sizeof(GProject)); if (!gplist) { return RETURN_FAILURE; } for (i = 0; i < count && res == RETURN_SUCCESS; i++) { Quark *q = TreeGetQuark(items.items[i]); add_to_list(gplist, &gpcount, gproject_from_quark(q)); if (count == 1 && (!caller || caller == ui->idstr)) { char *s = TextGetString(ui->idstr); quark_idstr_set(q, s); xfree(s); } switch (quark_fid_get(q)) { case QFlavorProject: if (set_project_data(ui->project_ui, q, caller) != RETURN_SUCCESS) { res = RETURN_FAILURE; } break; case QFlavorSSD: if (set_ssd_data(ui->ssd_ui, q, caller) != RETURN_SUCCESS) { res = RETURN_FAILURE; } break; case QFlavorFrame: if (set_frame_data(ui->frame_ui, q, caller) != RETURN_SUCCESS) { res = RETURN_FAILURE; } break; case QFlavorGraph: if (graph_set_data(ui->graph_ui, q, caller) != RETURN_SUCCESS) { res = RETURN_FAILURE; } break; case QFlavorSet: if (set_set_data(ui->set_ui, q, caller) != RETURN_SUCCESS) { res = RETURN_FAILURE; } break; case QFlavorAGrid: if (set_axisgrid_data(ui->axisgrid_ui, q, caller) != RETURN_SUCCESS) { res = RETURN_FAILURE; } break; case QFlavorAxis: if (set_axis_data(ui->axis_ui, q, caller) != RETURN_SUCCESS) { res = RETURN_FAILURE; } break; case QFlavorDObject: if (set_object_data(ui->object_ui, q, caller) != RETURN_SUCCESS) { res = RETURN_FAILURE; } break; case QFlavorAText: if (set_atext_data(ui->atext_ui, q, caller) != RETURN_SUCCESS) { res = RETURN_FAILURE; } break; case QFlavorRegion: if (set_region_data(ui->region_ui, q, caller) != RETURN_SUCCESS) { res = RETURN_FAILURE; } break; default: res = RETURN_FAILURE; break; } } xfree(items.items); for (i = 0; i < gpcount; i++) { explorer_snapshot(gapp, gplist[i], FALSE); } xfree(gplist); return res; }