1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
librnd init sequence
int main(int argc, char *argv[])
{
rnd_main_args_t ga;
/* fill in rnd_app struct fields */
rnd_app.package = "foobar";
rnd_app.version = FOOBAR_VERSION;
rnd_app.url = "http://repo.hu/projects/foobar";
rnd_app.default_embedded_menu = "";
rnd_app.menu_file_paths = menu_file_paths;
rnd_app.menu_name_fmt = "foobar-menu.lht";
rnd_app.conf_userdir_path = CONF_USER_DIR;
rnd_app.conf_user_path = CONF_USER_DIR "/foobar-conf.lht";
rnd_app.conf_sysdir_path = FOOBARSHAREDIR;
rnd_app.conf_sys_path = FOOBARSHAREDIR "/foobar-conf.lht";
rnd_app.crosshair_move_to = my_crosshair_move_to;
rnd_app.draw_attached = my_draw_attached;
/* pre-init */
pcb_fix_locale_and_env();
/* set up non-hidlib related app states */
...
rnd_main_args_init(&ga, argc, foobar_action_args);
rnd_hidlib_init1(conf_core_init);
for(n = 1; n < argc; n++) {
/* optional override code could happen here to process some args locally */
n += rnd_main_args_add(&ga, argv[n], argv[n+1]);
}
rnd_hidlib_init2(pup_buildins, foobar_buildins);
rnd_hidlib_init3_auto();
/* set up hidlib related app states - all main infrastructure is up by now */
...
if (rnd_main_args_setup1(&ga) != 0) {
foobar_main_uninit();
rnd_main_args_uninit(&ga);
exit(1);
}
/* register core actions here */
...
if (rnd_main_args_setup2(&ga, &n) != 0) {
foobar_main_uninit();
rnd_main_args_uninit(&ga);
exit(n);
}
/* load or create the design specified on command line */
...
if (rnd_main_exported(&ga, &foobar.hidlib, 0)) {
foobar_main_uninit();
rnd_main_args_uninit(&ga);
exit(0);
}
/* pre-mainloop initializations */
...
if (RND_HAVE_GUI_ATTR_DLG)
gui_support_plugins(1); /* load/initialize GUI plugins that will populate the top window */
rnd_mainloop_interactive(&ga, &foobar.hidlib); /* main loop */
/* application uninit *//
foobar_main_uninit();
rnd_main_args_uninit(&ga);
return 0;
}
|