static int explorer_cb(Quark *q, int etype, void *udata) { ExplorerUI *eui = (ExplorerUI *) udata; TreeItem *item = quark_get_udata(q); TreeItem *parent_item; switch (etype) { case QUARK_ETYPE_DELETE: TreeDeleteItem(eui->tree, item); break; case QUARK_ETYPE_MODIFY: init_item(eui, item, q); break; case QUARK_ETYPE_NEW: create_hook(q, eui, NULL); break; case QUARK_ETYPE_MOVE: explorer_save_quark_state(eui); TreeDeleteItem(eui->tree, item); parent_item = quark_get_udata(quark_parent_get(q)); item = TreeInsertItem(eui->tree, parent_item, q, quark_get_id(q)); init_item(eui, item, q); quark_set_udata(q, item); storage_traverse(quark_get_children(q), create_children_hook, eui); explorer_restore_quark_state(eui); break; } TreeRefresh(eui->tree); return TRUE; }
/*! \brief Register function with Scheme. * \par Function Description * Creates <B>subr</B> objects to make <B>g_rc_*</B> functions that are defined * #g_rc.c, #g_keys.c and #g_funcs.c visible to Scheme. */ void g_register_funcs (void) { struct gsubr_t *tmp = gschem_funcs; while (tmp->name != NULL) { scm_c_define_gsubr (tmp->name, tmp->req, tmp->opt, tmp->rst, tmp->fnc); tmp++; } /* Hook stuff */ complex_place_list_changed_hook = create_hook ("complex-place-list-changed-hook", 1); }