Index: trunk/src/libcschem/attrib_src.c =================================================================== --- trunk/src/libcschem/attrib_src.c (revision 6100) +++ trunk/src/libcschem/attrib_src.c (revision 6101) @@ -103,7 +103,7 @@ sep = strchr(source, ','); if (sep == NULL) return -1; - sheet = csch_attrib_src_lookup_sheet(ssheet->parent, source, sep-source); + sheet = csch_attrib_src_lookup_sheet((csch_project_t *)ssheet->hidlib.project, source, sep-source); if (sheet == NULL) return -1; @@ -158,7 +158,7 @@ static int csch_attrib_src_parse_a(csch_sheet_t *sheet, const char *source, csch_ahdr_t **aobj, char **attr, const char **desc) { - csch_project_t *prj = sheet->parent; + csch_project_t *prj = (csch_project_t *)sheet->hidlib.project; long aid; char *end, *tmp, *d; Index: trunk/src/libcschem/cnc_grp.c =================================================================== --- trunk/src/libcschem/cnc_grp.c (revision 6100) +++ trunk/src/libcschem/cnc_grp.c (revision 6101) @@ -307,7 +307,7 @@ csch_ahdr_t *csch_cgrp_get_abstract(csch_sheet_t *sheet, const csch_cgrp_t *grp, long idx) { - csch_project_t *prj = sheet->parent; + csch_project_t *prj = (csch_project_t *)sheet->hidlib.project; if ((prj == NULL) || (prj->abst == NULL)) return NULL; Index: trunk/src/libcschem/compile.c =================================================================== --- trunk/src/libcschem/compile.c (revision 6100) +++ trunk/src/libcschem/compile.c (revision 6101) @@ -173,7 +173,7 @@ else pname = tname->val; - csch_eng_call_strmod(sheet->parent, viewid, CSCH_ENGHK_TERMINAL_NAME_TO_PORT_NAME, + csch_eng_call_strmod((csch_project_t *)sheet->hidlib.project, viewid, CSCH_ENGHK_TERMINAL_NAME_TO_PORT_NAME, &pname_tmp, pname, FGW_AOBJ, comp, FGW_COBJ, t, FGW_INVALID); if (pname_tmp == NULL) @@ -212,7 +212,7 @@ else name = aname->val; - csch_eng_call_strmod(sheet->parent, viewid, CSCH_ENGHK_SYMBOL_NAME_TO_COMPONENT_NAME, + csch_eng_call_strmod((csch_project_t *)sheet->hidlib.project, viewid, CSCH_ENGHK_SYMBOL_NAME_TO_COMPONENT_NAME, &name_tmp, name, FGW_COBJ, src, FGW_INVALID); if (name_tmp != NULL) @@ -231,7 +231,7 @@ if ((src->hdr.type == CSCH_CTYPE_GRP_REF) && (src->data.ref.grp != NULL)) res |= compile_attributes(&comp->hdr, &src->data.ref.grp->attr, src->data.ref.grp, "component", name, 1); - csch_eng_call(sheet->parent, viewid, CSCH_ENGHK_SYMBOL_JOINED_COMPONENT, + csch_eng_call((csch_project_t *)sheet->hidlib.project, viewid, CSCH_ENGHK_SYMBOL_JOINED_COMPONENT, FGW_COBJ, src, FGW_AOBJ, comp, FGW_INVALID); /* compile ports */ @@ -392,7 +392,7 @@ if (grp->hdr.parent == &src->direct) { csch_aport_t *aport = compile_port(dst, viewid, src, NULL, grp); TODO("hierarchic: this probably won't connect sheet port to nets; maybe we should remember sheet ports in a hash separately?"); - csch_eng_call(src->parent, viewid, CSCH_ENGHK_COMPILE_PORT, FGW_AOBJ, aport, FGW_INVALID); + csch_eng_call((csch_project_t *)src->hidlib.project, viewid, CSCH_ENGHK_COMPILE_PORT, FGW_AOBJ, aport, FGW_INVALID); } break; Index: trunk/src/libcschem/concrete.c =================================================================== --- trunk/src/libcschem/concrete.c (revision 6100) +++ trunk/src/libcschem/concrete.c (revision 6101) @@ -34,6 +34,7 @@ #include "event.h" #include "cnc_obj.h" #include "cnc_grp.h" +#include "project.h" #include "plug_library.h" static const char *dsply_names[CSCH_DSPLY_max] = { @@ -76,7 +77,8 @@ if (sheet == NULL) return NULL; - sheet->parent = parent; + rnd_project_append_design(&parent->hdr, &sheet->hidlib); + sheet->uid = next_uid++; htsp_init(&sheet->comm_str, strhash, strkeyeq); Index: trunk/src/libcschem/concrete.h =================================================================== --- trunk/src/libcschem/concrete.h (revision 6100) +++ trunk/src/libcschem/concrete.h (revision 6101) @@ -196,7 +196,6 @@ struct csch_sheet_s { rnd_design_t hidlib; - csch_project_t *parent; long uid; csch_rtree_t dsply[CSCH_DSPLY_max]; /* IDs in screen coords, per display layer */ Index: trunk/src/libcschem/integrity.c =================================================================== --- trunk/src/libcschem/integrity.c (revision 6100) +++ trunk/src/libcschem/integrity.c (revision 6101) @@ -223,7 +223,7 @@ int res = 0; if (proj != NULL) - ASSERT(proj == sheet->parent, "broken sheet parent"); + ASSERT(proj == (csch_project_t *)sheet->hidlib.project, "broken sheet parent"); ASSERT(sheet->direct.hdr.parent == NULL, "broken direct grp parent"); ASSERT(sheet->indirect.hdr.parent == NULL, "broken indirect grp parent"); Index: trunk/src/libcschem/plug_io.c =================================================================== --- trunk/src/libcschem/plug_io.c (revision 6100) +++ trunk/src/libcschem/plug_io.c (revision 6101) @@ -275,6 +275,8 @@ } sheet = csch_load_sheet_io(proj, sheet, load_fn, real_fn, fmt, 0); + if ((sheet->hidlib.project != NULL) && (already_in_proj != NULL)) + *already_in_proj = 1; free(real_fn); if (sheet != NULL) @@ -288,7 +290,7 @@ char *orig_fmt = sheet->loadfmt; char *orig_real_fn = sheet->hidlib.filename; char *orig_load_fn = sheet->loadname; - csch_project_t *proj = sheet->parent; + csch_project_t *proj = (csch_project_t *)sheet->hidlib.project; int defsheet = 0, newed = 0; if (orig_real_fn == NULL) { Index: trunk/src/libcschem/project.c =================================================================== --- trunk/src/libcschem/project.c (revision 6100) +++ trunk/src/libcschem/project.c (revision 6101) @@ -291,7 +291,7 @@ if (role == RND_CFR_PROJECT) { csch_sheet_t *sheet = (csch_sheet_t *)hidlib; - csch_project_t *prj = sheet->parent; + csch_project_t *prj = (csch_project_t *)sheet->hidlib.project; prj->dummy = 0; } Index: trunk/src/libcschem/project_act.c =================================================================== --- trunk/src/libcschem/project_act.c (revision 6100) +++ trunk/src/libcschem/project_act.c (revision 6101) @@ -44,7 +44,7 @@ { rnd_design_t *hidlib = RND_ACT_DESIGN; csch_sheet_t *sheet = (csch_sheet_t *)hidlib; - csch_project_t *prj = sheet->parent; + csch_project_t *prj = (csch_project_t *)sheet->hidlib.project; int rv, view_id = CSCH_VIEW_DEFAULT; const char *view_name = NULL; Index: trunk/src/plugins/backann/auto_ba.c =================================================================== --- trunk/src/plugins/backann/auto_ba.c (revision 6100) +++ trunk/src/plugins/backann/auto_ba.c (revision 6101) @@ -283,7 +283,7 @@ /*** insrtuctions ***/ static sch_rnd_backann_auto_t *auto_conn_del(sch_rnd_backann_t *ctx, sch_rnd_ba_t *ba) { - csch_project_t *prj = ctx->sheet->parent; + csch_project_t *prj = (csch_project_t *)ctx->sheet->hidlib.project; csch_chdr_t *termo, *wno; csch_conn_t *conn; sch_rnd_backann_auto_t *res; @@ -318,7 +318,7 @@ static sch_rnd_backann_auto_t *auto_conn_add(sch_rnd_backann_t *ctx, sch_rnd_ba_t *ba) { - csch_project_t *prj = ctx->sheet->parent; + csch_project_t *prj = (csch_project_t *)ctx->sheet->hidlib.project; csch_chdr_t *termo, *wno; csch_conn_t *conn; sch_rnd_backann_auto_t *res; @@ -341,7 +341,7 @@ static sch_rnd_backann_auto_t *auto_net_attr(sch_rnd_backann_t *ctx, sch_rnd_ba_t *ba) { - csch_project_t *prj = ctx->sheet->parent; + csch_project_t *prj = (csch_project_t *)ctx->sheet->hidlib.project; csch_anet_t *net; net = csch_anet_get(prj->abst, ba->value.net_attr.net, 0, 0); @@ -353,7 +353,7 @@ static sch_rnd_backann_auto_t *auto_comp_attr(sch_rnd_backann_t *ctx, sch_rnd_ba_t *ba) { - csch_project_t *prj = ctx->sheet->parent; + csch_project_t *prj = (csch_project_t *)ctx->sheet->hidlib.project; csch_acomp_t *comp; comp = csch_acomp_get(prj->abst, ba->value.comp_attr.comp, 0); @@ -365,7 +365,7 @@ static sch_rnd_backann_auto_t *auto_term_attr(sch_rnd_backann_t *ctx, sch_rnd_ba_t *ba) { - csch_project_t *prj = ctx->sheet->parent; + csch_project_t *prj = (csch_project_t *)ctx->sheet->hidlib.project; csch_acomp_t *comp; csch_aport_t *port; Index: trunk/src/plugins/backann/backann.c =================================================================== --- trunk/src/plugins/backann/backann.c (revision 6100) +++ trunk/src/plugins/backann/backann.c (revision 6101) @@ -59,7 +59,7 @@ void sch_rnd_backann_uninit(sch_rnd_backann_t *ctx) { assert(sch_rnd_prj2backann_inited); - htpp_pop(&sch_rnd_prj2backann, ctx->sheet->parent); + htpp_pop(&sch_rnd_prj2backann, (csch_project_t *)ctx->sheet->hidlib.project); backann_free_list(ctx); free(ctx); } @@ -115,7 +115,7 @@ } } - pctx = htpp_get(&sch_rnd_prj2backann, ctx.sheet->parent); + pctx = htpp_get(&sch_rnd_prj2backann, (csch_project_t *)ctx.sheet->hidlib.project); if (pctx != NULL) { RND_ACT_IRES(1); rnd_message(RND_MSG_ERROR, "A back annotation session is already active for this project\n"); @@ -134,7 +134,7 @@ sch_rnd_backann_check(pctx); backann_dlg(pctx); - htpp_set(&sch_rnd_prj2backann, ctx.sheet->parent, pctx); + htpp_set(&sch_rnd_prj2backann, (csch_project_t *)ctx.sheet->hidlib.project, pctx); RND_ACT_IRES(0); return 0; Index: trunk/src/plugins/backann/check_ba.c =================================================================== --- trunk/src/plugins/backann/check_ba.c (revision 6100) +++ trunk/src/plugins/backann/check_ba.c (revision 6101) @@ -91,7 +91,7 @@ /*** insrtuctions ***/ static int check_netinfo(sch_rnd_backann_t *ctx, sch_rnd_ba_t *ba, long *pend) { - csch_project_t *prj = ctx->sheet->parent; + csch_project_t *prj = (csch_project_t *)ctx->sheet->hidlib.project; int cn = check_term_net_connected(prj, ba->value.netinfo.net, ba->value.netinfo.comp, ba->value.netinfo.term); if (cn <= 0) { if (ba->optional) @@ -105,7 +105,7 @@ static int check_conn_del(sch_rnd_backann_t *ctx, sch_rnd_ba_t *ba, long *pend) { - csch_project_t *prj = ctx->sheet->parent; + csch_project_t *prj = (csch_project_t *)ctx->sheet->hidlib.project; int cn = check_term_net_connected(prj, ba->value.conn_del.net, ba->value.conn_del.comp, ba->value.conn_del.term); if (cn < 0) @@ -118,7 +118,7 @@ static int check_conn_add(sch_rnd_backann_t *ctx, sch_rnd_ba_t *ba, long *pend) { - csch_project_t *prj = ctx->sheet->parent; + csch_project_t *prj = (csch_project_t *)ctx->sheet->hidlib.project; int cn = check_term_net_connected(prj, ba->value.conn_add.net, ba->value.conn_add.comp, ba->value.conn_add.term); if (cn < 0) @@ -131,7 +131,7 @@ static int check_net_attr(sch_rnd_backann_t *ctx, sch_rnd_ba_t *ba, long *pend) { - csch_project_t *prj = ctx->sheet->parent; + csch_project_t *prj = (csch_project_t *)ctx->sheet->hidlib.project; csch_anet_t *net; net = csch_anet_get(prj->abst, ba->value.net_attr.net, 0, 0); @@ -143,7 +143,7 @@ static int check_comp_attr(sch_rnd_backann_t *ctx, sch_rnd_ba_t *ba, long *pend) { - csch_project_t *prj = ctx->sheet->parent; + csch_project_t *prj = (csch_project_t *)ctx->sheet->hidlib.project; csch_acomp_t *comp; comp = csch_acomp_get(prj->abst, ba->value.comp_attr.comp, 0); @@ -155,7 +155,7 @@ static int check_term_attr(sch_rnd_backann_t *ctx, sch_rnd_ba_t *ba, long *pend) { - csch_project_t *prj = ctx->sheet->parent; + csch_project_t *prj = (csch_project_t *)ctx->sheet->hidlib.project; csch_acomp_t *comp; csch_aport_t *port; @@ -187,7 +187,7 @@ long sch_rnd_backann_check(sch_rnd_backann_t *ctx) { - csch_project_t *prj = ctx->sheet->parent; + csch_project_t *prj = (csch_project_t *)ctx->sheet->hidlib.project; long n, pend = 0; int good = 1; pend = 0; Index: trunk/src/plugins/backann/dlg_ba.c =================================================================== --- trunk/src/plugins/backann/dlg_ba.c (revision 6100) +++ trunk/src/plugins/backann/dlg_ba.c (revision 6101) @@ -125,7 +125,7 @@ static int sch_rnd_backann_ensure_abst(sch_rnd_backann_t *ctx) { - csch_project_t *prj = ctx->sheet->parent; + csch_project_t *prj = (csch_project_t *)ctx->sheet->hidlib.project; if (prj->abst == NULL) rnd_actionva(&ctx->sheet->hidlib, "CompileProject", NULL); if (prj->abst != NULL) Index: trunk/src/plugins/export_abst/hid_impl.c =================================================================== --- trunk/src/plugins/export_abst/hid_impl.c (revision 6100) +++ trunk/src/plugins/export_abst/hid_impl.c (revision 6101) @@ -92,7 +92,7 @@ } if ((options[HA_view].str != NULL) && (options[HA_view].str[0] != '\0')) { - viewid = csch_view_get_id(sheet->parent, options[HA_view].str); + viewid = csch_view_get_id((csch_project_t *)sheet->hidlib.project, options[HA_view].str); if (viewid < 0) { rnd_message(RND_MSG_ERROR, "No such view in the project: '%s'\n", options[HA_view].str); return; @@ -99,7 +99,7 @@ } } - sch_rnd_export_prj(sheet->parent, sheet, viewid, "abst", options[HA_outfile].str); + sch_rnd_export_prj((csch_project_t *)sheet->hidlib.project, sheet, viewid, "abst", options[HA_outfile].str); } static int abst_usage(rnd_hid_t *hid, const char *topic) Index: trunk/src/plugins/export_png/export_png.c =================================================================== --- trunk/src/plugins/export_png/export_png.c (revision 6100) +++ trunk/src/plugins/export_png/export_png.c (revision 6101) @@ -181,7 +181,7 @@ options = png_values; } - if (cschem_export_compile_pre(sheet->parent, options[HA_view].str, &view_cookie) != 0) + if (cschem_export_compile_pre((csch_project_t *)sheet->hidlib.project, options[HA_view].str, &view_cookie) != 0) return; filename = cschem_export_filename(hl, options[HA_pngfile].str, ".png"); @@ -214,7 +214,7 @@ rnd_drwpx_uninit(pctx); error:; - cschem_export_compile_post(sheet->parent, &view_cookie); + cschem_export_compile_post((csch_project_t *)sheet->hidlib.project, &view_cookie); } static int png_parse_arguments(rnd_hid_t *hid, int *argc, char ***argv) Index: trunk/src/plugins/export_ps/eps.c =================================================================== --- trunk/src/plugins/export_ps/eps.c (revision 6100) +++ trunk/src/plugins/export_ps/eps.c (revision 6101) @@ -148,7 +148,7 @@ options = eps_values; } - if (cschem_export_compile_pre(sheet->parent, options[HA_view].str, &view_cookie) != 0) + if (cschem_export_compile_pre((csch_project_t *)sheet->hidlib.project, options[HA_view].str, &view_cookie) != 0) return; filename = cschem_export_filename(hl, options[HA_psfile].str, ".eps"); @@ -164,7 +164,7 @@ fclose(pctx->outf); error:; - cschem_export_compile_post(sheet->parent, &view_cookie); + cschem_export_compile_post((csch_project_t *)sheet->hidlib.project, &view_cookie); } static int eps_parse_arguments(rnd_hid_t *hid, int *argc, char ***argv) Index: trunk/src/plugins/export_ps/ps.c =================================================================== --- trunk/src/plugins/export_ps/ps.c (revision 6100) +++ trunk/src/plugins/export_ps/ps.c (revision 6101) @@ -271,7 +271,7 @@ options = global.ps_values; } - if (cschem_export_compile_pre(sheet->parent, options[HA_view].str, &view_cookie) != 0) + if (cschem_export_compile_pre((csch_project_t *)sheet->hidlib.project, options[HA_view].str, &view_cookie) != 0) return; global.multi_file = options[HA_multifile].lng; @@ -298,7 +298,7 @@ } error:; - cschem_export_compile_post(sheet->parent, &view_cookie); + cschem_export_compile_post((csch_project_t *)sheet->hidlib.project, &view_cookie); } static int ps_parse_arguments(rnd_hid_t *hid, int *argc, char ***argv) Index: trunk/src/plugins/export_svg/export_svg.c =================================================================== --- trunk/src/plugins/export_svg/export_svg.c (revision 6100) +++ trunk/src/plugins/export_svg/export_svg.c (revision 6101) @@ -139,7 +139,7 @@ options = svg_values; } - if (cschem_export_compile_pre(sheet->parent, options[HA_view].str, &view_cookie) != 0) + if (cschem_export_compile_pre((csch_project_t *)sheet->hidlib.project, options[HA_view].str, &view_cookie) != 0) return; out_filename = cschem_export_filename(hl, options[HA_svgfile].str, ".svg"); @@ -168,7 +168,7 @@ rnd_svg_uninit(pctx); error:; - cschem_export_compile_post(sheet->parent, &view_cookie); + cschem_export_compile_post((csch_project_t *)sheet->hidlib.project, &view_cookie); } static int svg_parse_arguments(rnd_hid_t *hid, int *argc, char ***argv) Index: trunk/src/plugins/export_tedax/hid_impl.c =================================================================== --- trunk/src/plugins/export_tedax/hid_impl.c (revision 6100) +++ trunk/src/plugins/export_tedax/hid_impl.c (revision 6101) @@ -76,7 +76,7 @@ } if ((options[HA_view].str != NULL) && (options[HA_view].str[0] != '\0')) { - viewid = csch_view_get_id(sheet->parent, options[HA_view].str); + viewid = csch_view_get_id((csch_project_t *)sheet->hidlib.project, options[HA_view].str); if (viewid < 0) { rnd_message(RND_MSG_ERROR, "No such view in the project: '%s'\n", options[HA_view].str); return; @@ -83,7 +83,7 @@ } } - sch_rnd_export_prj(sheet->parent, sheet, viewid, "tedax", options[HA_outfile].str); + sch_rnd_export_prj((csch_project_t *)sheet->hidlib.project, sheet, viewid, "tedax", options[HA_outfile].str); } static int tedax_usage(rnd_hid_t *hid, const char *topic) Index: trunk/src/plugins/gui/autocomp.c =================================================================== --- trunk/src/plugins/gui/autocomp.c (revision 6100) +++ trunk/src/plugins/gui/autocomp.c (revision 6101) @@ -83,7 +83,7 @@ { csch_sheet_t *sheet = (csch_sheet_t *)hl; - if (sheet->parent == &sch_rnd_buffer_prj) + if ((csch_project_t *)sheet->hidlib.project == &sch_rnd_buffer_prj) return; /* do not compile buffers */ sheet->acp_remain = sheet->acp_starting = conf_core.editor.autocomp_time; Index: trunk/src/plugins/gui/status.c =================================================================== --- trunk/src/plugins/gui/status.c (revision 6100) +++ trunk/src/plugins/gui/status.c (revision 6101) @@ -141,7 +141,7 @@ if (!status.active && (sheet != NULL)) return; - prj = sheet->parent; + prj = (csch_project_t *)sheet->hidlib.project; v = prj->views.array[prj->curr]; hv.str = v->fgw_ctx.name; rnd_gui->attr_dlg_set_value(status.rdsub.dlg_hid_ctx, status.wviewbtn, &hv); Index: trunk/src/plugins/lib_alien/read_helper.c =================================================================== --- trunk/src/plugins/lib_alien/read_helper.c (revision 6100) +++ trunk/src/plugins/lib_alien/read_helper.c (revision 6101) @@ -304,7 +304,7 @@ void csch_alien_sheet_setup(csch_alien_read_ctx_t *ctx, int pen) { if (pen != 0) { /* create temp new sheet only if we are to do anything */ - csch_sheet_t *tmp = sch_rnd_sheet_new(ctx->sheet->parent); + csch_sheet_t *tmp = sch_rnd_sheet_new((csch_project_t *)ctx->sheet->hidlib.project); if (pen != 0) { htip_entry_t *e; for(e = htip_first(&tmp->direct.id2obj); e != NULL; e = htip_next(&tmp->direct.id2obj, e)) { @@ -315,7 +315,7 @@ } minuid_gen(&csch_minuid, ctx->sheet->direct.uuid); minuid_clr(ctx->sheet->direct.data.grp.src_uuid); - csch_project_remove_sheet(ctx->sheet->parent, tmp); + csch_project_remove_sheet((csch_project_t *)ctx->sheet->hidlib.project, tmp); } } Index: trunk/src/plugins/sch_dialogs/dlg_abstract.c =================================================================== --- trunk/src/plugins/sch_dialogs/dlg_abstract.c (revision 6100) +++ trunk/src/plugins/sch_dialogs/dlg_abstract.c (revision 6101) @@ -283,7 +283,7 @@ RND_ACT_MAY_CONVARG(1, FGW_LONG, AbstractDialog, aid = argv[1].val.nat_long); RND_ACT_MAY_CONVARG(2, FGW_STR, AbstractDialog, attr_name = argv[2].val.str); - sch_rnd_abst_dlg(sheet->parent, aid, attr_name); + sch_rnd_abst_dlg((csch_project_t *)sheet->hidlib.project, aid, attr_name); return 0; } Index: trunk/src/plugins/sch_dialogs/dlg_attrib.c =================================================================== --- trunk/src/plugins/sch_dialogs/dlg_attrib.c (revision 6100) +++ trunk/src/plugins/sch_dialogs/dlg_attrib.c (revision 6101) @@ -873,7 +873,7 @@ RND_DAD_BEGIN_VBOX(ctx->dlg); /* top right */ RND_DAD_COMPFLAG(ctx->dlg, RND_HATF_EXPFILL); - aattr_dlg_create(&ctx->right, ctx->dlg, sheet->parent); + aattr_dlg_create(&ctx->right, ctx->dlg, (csch_project_t *)sheet->hidlib.project); RND_DAD_END(ctx->dlg); RND_DAD_END(ctx->dlg); @@ -1086,7 +1086,7 @@ for(n = gdl_first(&attrdlgs); n != NULL; n = next) { next = gdl_next(&attrdlgs, n); - if (n->sheet->parent == prj) + if ((csch_project_t *)n->sheet->hidlib.project == prj) sheet2dlg(n); } } Index: trunk/src/plugins/sch_dialogs/dlg_tree.c =================================================================== --- trunk/src/plugins/sch_dialogs/dlg_tree.c (revision 6100) +++ trunk/src/plugins/sch_dialogs/dlg_tree.c (revision 6101) @@ -679,7 +679,7 @@ static void csch_dlg_tree_regen_(csch_sheet_t *sheet, int timeout) { rnd_hidval_t user_data; - tree_dlg_ctx_t *ctx = htpp_get(&prj2dlg, sheet->parent); + tree_dlg_ctx_t *ctx = htpp_get(&prj2dlg, (csch_project_t *)sheet->hidlib.project); if (ctx == NULL) return; @@ -739,7 +739,7 @@ switch(cmd) { case -1: - sch_rnd_tree_dlg(sheet->parent, sheet, oidps, NULL); + sch_rnd_tree_dlg((csch_project_t *)sheet->hidlib.project, sheet, oidps, NULL); break; case F_Object: { @@ -752,7 +752,7 @@ obj = sch_rnd_search_obj_at(sheet, x, y, sch_rnd_slop); if (obj != NULL) { sheet = obj->sheet; - sch_rnd_tree_dlg(sheet->parent, sheet, csch_chdr_to_oidpath_str(obj), NULL); + sch_rnd_tree_dlg((csch_project_t *)sheet->hidlib.project, sheet, csch_chdr_to_oidpath_str(obj), NULL); } else rnd_message(RND_MSG_ERROR, "TreeDialog(): no object under cursor\n"); @@ -765,7 +765,7 @@ rnd_message(RND_MSG_ERROR, "TreeDialog(): objarr argument is not an object arr pointer\n"); break; } - sch_rnd_tree_dlg(sheet->parent, NULL, NULL, arr); + sch_rnd_tree_dlg((csch_project_t *)sheet->hidlib.project, NULL, NULL, arr); } break; default: Index: trunk/src/plugins/sch_dialogs/dlg_view.c =================================================================== --- trunk/src/plugins/sch_dialogs/dlg_view.c (revision 6100) +++ trunk/src/plugins/sch_dialogs/dlg_view.c (revision 6101) @@ -301,7 +301,7 @@ { rnd_design_t *hidlib = RND_ACT_DESIGN; csch_sheet_t *sheet = (csch_sheet_t *)hidlib; - csch_project_t *prj = sheet->parent; + csch_project_t *prj = (csch_project_t *)sheet->hidlib.project; RND_ACT_IRES(view_dlg(prj)); Index: trunk/src/plugins/sch_dialogs/sch_dialogs.c =================================================================== --- trunk/src/plugins/sch_dialogs/sch_dialogs.c (revision 6100) +++ trunk/src/plugins/sch_dialogs/sch_dialogs.c (revision 6101) @@ -112,9 +112,9 @@ static void csch_dlg_ev_prj_compiled(rnd_design_t *hidlib, void *user_data, int argc, rnd_event_arg_t argv[]) { csch_sheet_t *sheet = (csch_sheet_t *)hidlib; - csch_dlg_attr_compiled(sheet->parent); - csch_dlg_abst_compiled(sheet->parent); - csch_dlg_tree_prj_compiled(sheet->parent); + csch_dlg_attr_compiled((csch_project_t *)sheet->hidlib.project); + csch_dlg_abst_compiled((csch_project_t *)sheet->hidlib.project); + csch_dlg_tree_prj_compiled((csch_project_t *)sheet->hidlib.project); } static void csch_dlg_ev_library_changed(rnd_design_t *hidlib, void *user_data, int argc, rnd_event_arg_t argv[]) Index: trunk/src/plugins/std_devmap/preview.c =================================================================== --- trunk/src/plugins/std_devmap/preview.c (revision 6100) +++ trunk/src/plugins/std_devmap/preview.c (revision 6101) @@ -114,7 +114,7 @@ /* external lib */ csch_hook_call_ctx_t cctx = {0}; - cctx.project = sheet->parent; + cctx.project = (csch_project_t *)sheet->hidlib.project; attr = devmap_get_extlib(global_devmap_ctx, src->realpath, &cctx, 0); } else { Index: trunk/src/sch-rnd/multi.c =================================================================== --- trunk/src/sch-rnd/multi.c (revision 6100) +++ trunk/src/sch-rnd/multi.c (revision 6101) @@ -90,7 +90,7 @@ rnd_gui->set_design(rnd_gui, &s->hidlib); if ((rnd_render != NULL) && (rnd_render->set_design != NULL) && (rnd_render != rnd_gui)) rnd_render->set_design(rnd_render, &s->hidlib); - prj = s->parent; + prj = (csch_project_t *)s->hidlib.project; rnd_event(&s->hidlib, RND_EVENT_DESIGN_REPLACED, "i", 0); rnd_event(&s->hidlib, RND_EVENT_DESIGN_FN_CHANGED, NULL); } @@ -212,7 +212,7 @@ static void sch_rnd_multi_load_prj_conf(csch_sheet_t *sheet) { - csch_project_t *prj = sheet->parent; + csch_project_t *prj = (csch_project_t *)sheet->hidlib.project; if (prj != NULL) rnd_conf_load_as(RND_CFR_PROJECT, prj->hdr.filename, 0); } @@ -391,7 +391,7 @@ void sch_rnd_multi_unload(csch_sheet_t *sheet) { - csch_project_t *prj = sheet->parent; + csch_project_t *prj = (csch_project_t *)sheet->hidlib.project; gdl_remove(&sheets, sheet, link); if (prj != NULL) { Index: trunk/src/sch-rnd/project.c =================================================================== --- trunk/src/sch-rnd/project.c (revision 6100) +++ trunk/src/sch-rnd/project.c (revision 6101) @@ -132,7 +132,7 @@ char *apname; int go_for_it; FILE *f; - csch_project_t *prj = sheet->parent; + csch_project_t *prj = (csch_project_t *)sheet->hidlib.project; rnd_conf_get_project_conf_name(NULL, sheet->loadname, &pname); if (*pname == '<') { @@ -191,7 +191,7 @@ int sch_rnd_project_append_view(csch_sheet_t *sheet, const char *view_name, int silent) { lht_node_t *nnewv, *nengs, *nviews = rnd_conf_lht_get_at(RND_CFR_PROJECT, "compile/views", 1); - csch_project_t *prj = sheet->parent; + csch_project_t *prj = (csch_project_t *)sheet->hidlib.project; if (nviews == NULL) { if (!silent) @@ -210,7 +210,7 @@ int sch_rnd_project_del_view(csch_sheet_t *sheet, long idx, int silent) { lht_node_t *nviews = rnd_conf_lht_get_at(RND_CFR_PROJECT, "compile/views", 0); - csch_project_t *prj = sheet->parent; + csch_project_t *prj = (csch_project_t *)sheet->hidlib.project; if (nviews == NULL) { if (!silent) @@ -231,7 +231,7 @@ void sch_rnd_project_views_save(csch_sheet_t *sheet) { rnd_conf_merge_all("compile/views"); - rnd_conf_save_file(&sheet->hidlib, sheet->parent->hdr.filename, NULL, RND_CFR_PROJECT, NULL); + rnd_conf_save_file(&sheet->hidlib, sheet->hidlib.project->filename, NULL, RND_CFR_PROJECT, NULL); } static rnd_conf_hid_callbacks_t cbs; @@ -261,7 +261,7 @@ if ((cfg != nat_views) || (sheet == NULL)) return; - prj = sheet->parent; + prj = (csch_project_t *)sheet->hidlib.project; if (cfg->rnd_conf_rev > view_conf_rev) { view_conf_rev = cfg->rnd_conf_rev; csch_project_clean_views(prj);