Index: trunk/src_plugins/dialogs/dlg_pref.c =================================================================== --- trunk/src_plugins/dialogs/dlg_pref.c (revision 35838) +++ trunk/src_plugins/dialogs/dlg_pref.c (revision 35839) @@ -49,13 +49,40 @@ static lht_node_t *pref_dlg2conf_pre(pref_ctx_t *ctx); static void pref_dlg2conf_post(pref_ctx_t *ctx); + +void Rnd_pref_init_func_dummy(pref_ctx_t *ctx, int tab) { } + +#define PREF_INIT_FUNC Rnd_pref_init_func_dummy + +#define PREF_INIT(ctx) \ + PREF_INIT_FUNC(ctx, PREF_TAB-1); + +/* application tabs */ +#undef PREF_TAB +#define PREF_TAB 0 #include "dlg_pref_general.c" + +#undef PREF_TAB +#define PREF_TAB 1 #include "dlg_pref_board.c" + +#undef PREF_TAB +#define PREF_TAB 2 #include "dlg_pref_sizes.c" + +#undef PREF_TAB +#define PREF_TAB 3 #include "dlg_pref_lib.c" + +#undef PREF_TAB +#define PREF_TAB 4 #include "dlg_pref_layer.c" + +#undef PREF_TAB +#define PREF_TAB 5 #include "dlg_pref_color.c" +/* built-in tabs */ #include "dlg_pref_win.c" #include "dlg_pref_key.c" #include "dlg_pref_menu.c" @@ -466,8 +493,8 @@ rnd_event_bind(RND_EVENT_BOARD_META_CHANGED, pref_ev_board_meta_changed, &pref_ctx, pref_cookie); rnd_event_bind(RND_EVENT_MENU_CHANGED, pref_ev_menu_changed, &pref_ctx, pref_cookie); pref_hid = rnd_conf_hid_reg(pref_cookie, &pref_conf_cb); - pcb_dlg_pref_sizes_init(&pref_ctx); - pcb_dlg_pref_lib_init(&pref_ctx); + + PREF_INIT_FUNC(&pref_ctx, PREF_TAB); } void pcb_dlg_pref_uninit(void) Index: trunk/src_plugins/dialogs/dlg_pref_board.c =================================================================== --- trunk/src_plugins/dialogs/dlg_pref_board.c (revision 35838) +++ trunk/src_plugins/dialogs/dlg_pref_board.c (revision 35839) @@ -2,7 +2,7 @@ * COPYRIGHT * * pcb-rnd, interactive printed circuit board design - * Copyright (C) 2018 Tibor 'Igor2' Palinkas + * Copyright (C) 2018,2021 Tibor 'Igor2' Palinkas * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -103,3 +103,11 @@ RND_DAD_CHANGE_CB(ctx->dlg, pref_board_edit_attr); RND_DAD_END(ctx->dlg); } + +static void pcb_dlg_pref_board_init(pref_ctx_t *ctx, int tab) +{ + PREF_INIT(ctx); + rnd_trace("INIT pref board tab %d\n", tab); +} +#undef PREF_INIT_FUNC +#define PREF_INIT_FUNC pcb_dlg_pref_board_init Index: trunk/src_plugins/dialogs/dlg_pref_color.c =================================================================== --- trunk/src_plugins/dialogs/dlg_pref_color.c (revision 35838) +++ trunk/src_plugins/dialogs/dlg_pref_color.c (revision 35839) @@ -2,7 +2,7 @@ * COPYRIGHT * * pcb-rnd, interactive printed circuit board design - * Copyright (C) 2018 Tibor 'Igor2' Palinkas + * Copyright (C) 2018,2021 Tibor 'Igor2' Palinkas * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -167,3 +167,11 @@ RND_DAD_END(ctx->dlg); } + +static void pcb_dlg_pref_color_init(pref_ctx_t *ctx, int tab) +{ + PREF_INIT(ctx); + rnd_trace("INIT pref color tab %d\n", tab); +} +#undef PREF_INIT_FUNC +#define PREF_INIT_FUNC pcb_dlg_pref_color_init Index: trunk/src_plugins/dialogs/dlg_pref_general.c =================================================================== --- trunk/src_plugins/dialogs/dlg_pref_general.c (revision 35838) +++ trunk/src_plugins/dialogs/dlg_pref_general.c (revision 35839) @@ -2,7 +2,7 @@ * COPYRIGHT * * pcb-rnd, interactive printed circuit board design - * Copyright (C) 2018 Tibor 'Igor2' Palinkas + * Copyright (C) 2018,2021 Tibor 'Igor2' Palinkas * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -91,3 +91,11 @@ RND_DAD_END(ctx->dlg); RND_DAD_END(ctx->dlg); } + +static void pcb_dlg_pref_general_init(pref_ctx_t *ctx, int tab) +{ + PREF_INIT(ctx); + rnd_trace("INIT pref general tab %d\n", tab); +} +#undef PREF_INIT_FUNC +#define PREF_INIT_FUNC pcb_dlg_pref_general_init Index: trunk/src_plugins/dialogs/dlg_pref_layer.c =================================================================== --- trunk/src_plugins/dialogs/dlg_pref_layer.c (revision 35838) +++ trunk/src_plugins/dialogs/dlg_pref_layer.c (revision 35839) @@ -2,7 +2,7 @@ * COPYRIGHT * * pcb-rnd, interactive printed circuit board design - * Copyright (C) 2018 Tibor 'Igor2' Palinkas + * Copyright (C) 2018,2021 Tibor 'Igor2' Palinkas * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -59,3 +59,11 @@ RND_DAD_COMPFLAG(ctx->dlg, RND_HATF_EXPFILL); RND_DAD_END(ctx->dlg); } + +static void pcb_dlg_pref_layer_init(pref_ctx_t *ctx, int tab) +{ + PREF_INIT(ctx); + rnd_trace("INIT pref layer tab %d\n", tab); +} +#undef PREF_INIT_FUNC +#define PREF_INIT_FUNC pcb_dlg_pref_layer_init Index: trunk/src_plugins/dialogs/dlg_pref_lib.c =================================================================== --- trunk/src_plugins/dialogs/dlg_pref_lib.c (revision 35838) +++ trunk/src_plugins/dialogs/dlg_pref_lib.c (revision 35839) @@ -2,7 +2,7 @@ * COPYRIGHT * * pcb-rnd, interactive printed circuit board design - * Copyright (C) 2018 Tibor 'Igor2' Palinkas + * Copyright (C) 2018,2021 Tibor 'Igor2' Palinkas * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -467,11 +467,14 @@ pref_lib_conf2dlg_post(cn, -1); } -void pcb_dlg_pref_lib_init(pref_ctx_t *ctx) +void pcb_dlg_pref_lib_init(pref_ctx_t *ctx, int tab) { static rnd_conf_hid_callbacks_t cbs_spth; rnd_conf_native_t *cn = rnd_conf_get_field("rc/library_search_paths"); + PREF_INIT(ctx); + rnd_trace("INIT pref lib tab %d\n", tab); + if (cn != NULL) { memset(&cbs_spth, 0, sizeof(rnd_conf_hid_callbacks_t)); cbs_spth.val_change_pre = pref_lib_conf2dlg_pre; @@ -479,3 +482,6 @@ rnd_conf_hid_set_cb(cn, pref_hid, &cbs_spth); } } + +#undef PREF_INIT_FUNC +#define PREF_INIT_FUNC pcb_dlg_pref_lib_init Index: trunk/src_plugins/dialogs/dlg_pref_lib.h =================================================================== --- trunk/src_plugins/dialogs/dlg_pref_lib.h (revision 35838) +++ trunk/src_plugins/dialogs/dlg_pref_lib.h (revision 35839) @@ -15,7 +15,6 @@ void pcb_dlg_pref_lib_close(pref_ctx_t *ctx); void pcb_dlg_pref_lib_create(pref_ctx_t *ctx); -void pcb_dlg_pref_lib_init(pref_ctx_t *ctx); void pcb_dlg_pref_lib_open(pref_ctx_t *ctx); Index: trunk/src_plugins/dialogs/dlg_pref_sizes.c =================================================================== --- trunk/src_plugins/dialogs/dlg_pref_sizes.c (revision 35838) +++ trunk/src_plugins/dialogs/dlg_pref_sizes.c (revision 35839) @@ -2,7 +2,7 @@ * COPYRIGHT * * pcb-rnd, interactive printed circuit board design - * Copyright (C) 2018 Tibor 'Igor2' Palinkas + * Copyright (C) 2018,2021 Tibor 'Igor2' Palinkas * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -157,11 +157,14 @@ RND_DAD_END(ctx->dlg); } -void pcb_dlg_pref_sizes_init(pref_ctx_t *ctx) +static void pcb_dlg_pref_sizes_init(pref_ctx_t *ctx, int tab) { static rnd_conf_hid_callbacks_t cbs_isle; rnd_conf_native_t *cn = rnd_conf_get_field("design/poly_isle_area"); + PREF_INIT(ctx); + rnd_trace("INIT pref sizes tab %d\n", tab); + if (cn != NULL) { memset(&cbs_isle, 0, sizeof(rnd_conf_hid_callbacks_t)); cbs_isle.val_change_post = pref_isle_brd2dlg; @@ -168,3 +171,6 @@ rnd_conf_hid_set_cb(cn, pref_hid, &cbs_isle); } } + +#undef PREF_INIT_FUNC +#define PREF_INIT_FUNC pcb_dlg_pref_sizes_init Index: trunk/src_plugins/dialogs/dlg_pref_sizes.h =================================================================== --- trunk/src_plugins/dialogs/dlg_pref_sizes.h (revision 35838) +++ trunk/src_plugins/dialogs/dlg_pref_sizes.h (revision 35839) @@ -9,7 +9,6 @@ void pcb_dlg_pref_sizes_close(pref_ctx_t *ctx); void pcb_dlg_pref_sizes_create(pref_ctx_t *ctx); -void pcb_dlg_pref_sizes_init(pref_ctx_t *ctx); #endif