X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fmain.c;h=188d1ea352aca86b277c10ac075b6f2a6be4a5c5;hb=ddd27893ae44eb5eb62c80e5751a6943a4782fe2;hp=52b889c78710a50e9dc45316cf6edc2a1257e7ef;hpb=b3fe26e023d4f1cafbadd383574bc0971291f784;p=xournal.git diff --git a/src/main.c b/src/main.c index 52b889c..188d1ea 100644 --- a/src/main.c +++ b/src/main.c @@ -31,11 +31,14 @@ void hide_unimplemented(void) gtk_widget_hide(GET_COMPONENT("filePrintOptions")); gtk_widget_hide(GET_COMPONENT("journalFlatten")); gtk_widget_hide(GET_COMPONENT("papercolorOther")); - gtk_widget_hide(GET_COMPONENT("journalApplyAllPages")); gtk_widget_hide(GET_COMPONENT("toolsText")); gtk_widget_hide(GET_COMPONENT("buttonText")); + gtk_widget_hide(GET_COMPONENT("button2Text")); + gtk_widget_hide(GET_COMPONENT("button3Text")); gtk_widget_hide(GET_COMPONENT("toolsSelectRegion")); gtk_widget_hide(GET_COMPONENT("buttonSelectRegion")); + gtk_widget_hide(GET_COMPONENT("button2SelectRegion")); + gtk_widget_hide(GET_COMPONENT("button3SelectRegion")); gtk_widget_hide(GET_COMPONENT("colorOther")); gtk_widget_hide(GET_COMPONENT("toolsTextFont")); gtk_widget_hide(GET_COMPONENT("toolsDefaultText")); @@ -49,13 +52,20 @@ void init_stuff (int argc, char *argv[]) GList *dev_list; GdkDevice *device; GdkScreen *screen; - int i; + int i, j; struct Brush *b; - gboolean can_xinput; + gboolean can_xinput, success; + gchar *tmppath, *tmpfn; // we need an empty canvas prior to creating the journal structures canvas = GNOME_CANVAS (gnome_canvas_new_aa ()); + // initialize config file names + tmppath = g_build_filename(g_get_home_dir(), CONFIG_DIR, NULL); + g_mkdir(tmppath, 0700); // safer (MRU data may be confidential) + ui.mrufile = g_build_filename(tmppath, MRU_FILE, NULL); + g_free(tmppath); + // initialize data // TODO: load this from a preferences file @@ -84,32 +94,31 @@ void init_stuff (int argc, char *argv[]) undo = NULL; redo = NULL; journal.pages = NULL; bgpdf.status = STATUS_NOT_INIT; - - if (argc == 1) new_journal(); - else if (!open_journal(argv[1])) { - new_journal(); - w = gtk_message_dialog_new(GTK_WINDOW (winMain), GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error opening file '%s'", argv[1]); - gtk_dialog_run(GTK_DIALOG(w)); - gtk_widget_destroy(w); - } + + new_journal(); ui.cur_item_type = ITEM_NONE; ui.cur_item = NULL; ui.cur_path.coords = NULL; ui.cur_path_storage_alloc = 0; ui.cur_path.ref_count = 1; - ui.toolno = TOOL_PEN; - ui.cur_brush = ui.brushes + TOOL_PEN; - ui.ruler = FALSE; + ui.selection = NULL; ui.cursor = NULL; + ui.bg_apply_all_pages = FALSE; - ui.brushes[TOOL_PEN].color_no = COLOR_BLACK; - ui.brushes[TOOL_ERASER].color_no = COLOR_WHITE; - ui.brushes[TOOL_HIGHLIGHTER].color_no = COLOR_YELLOW; + ui.cur_brush = &(ui.brushes[0][TOOL_PEN]); + ui.toolno[0] = TOOL_PEN; + for (i=1; i<=NUM_BUTTONS; i++) ui.toolno[i] = TOOL_ERASER; + for (i=0; i<=NUM_BUTTONS; i++) { + ui.ruler[i] = FALSE; + ui.linked_brush[i] = BRUSH_LINKED; + } + ui.brushes[0][TOOL_PEN].color_no = COLOR_BLACK; + ui.brushes[0][TOOL_ERASER].color_no = COLOR_WHITE; + ui.brushes[0][TOOL_HIGHLIGHTER].color_no = COLOR_YELLOW; for (i=0; i < NUM_STROKE_TOOLS; i++) { - b = ui.brushes + i; + b = &(ui.brushes[0][i]); b->tool_type = i; b->color_rgba = predef_colors_rgba[b->color_no]; if (i == TOOL_HIGHLIGHTER) { @@ -118,13 +127,18 @@ void init_stuff (int argc, char *argv[]) b->thickness_no = THICKNESS_MEDIUM; b->thickness = predef_thickness[i][b->thickness_no]; b->tool_options = 0; - g_memmove(ui.default_brushes+i, ui.brushes+i, sizeof(struct Brush)); + g_memmove(ui.default_brushes+i, b, sizeof(struct Brush)); + for (j=1; j<=NUM_BUTTONS; j++) + g_memmove(&(ui.brushes[j][i]), b, sizeof(struct Brush)); } + ui.cur_mapping = 0; + ui.use_erasertip = FALSE; // initialize various interface elements gtk_window_set_default_size(GTK_WINDOW (winMain), 720, 480); update_toolbar_and_menu(); + // set up and initialize the canvas gtk_widget_show (GTK_WIDGET (canvas)); @@ -168,8 +182,6 @@ void init_stuff (int argc, char *argv[]) ui.screen_width = gdk_screen_get_width(screen); ui.screen_height = gdk_screen_get_height(screen); - ui.saved_toolno = -1; - can_xinput = FALSE; dev_list = gdk_devices_list(); while (dev_list != NULL) { @@ -191,7 +203,6 @@ void init_stuff (int argc, char *argv[]) ui.use_xinput = ui.allow_xinput && can_xinput; ui.antialias_bg = TRUE; - ui.emulate_eraser = FALSE; ui.progressive_bg = TRUE; gtk_check_menu_item_set_active( @@ -200,13 +211,42 @@ void init_stuff (int argc, char *argv[]) GTK_CHECK_MENU_ITEM(GET_COMPONENT("optionsAntialiasBG")), ui.antialias_bg); gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM(GET_COMPONENT("optionsProgressiveBG")), ui.progressive_bg); - gtk_check_menu_item_set_active( - GTK_CHECK_MENU_ITEM(GET_COMPONENT("optionsEmulateEraser")), ui.emulate_eraser); hide_unimplemented(); update_undo_redo_enabled(); update_copy_paste_enabled(); + + // show everything... + + gtk_widget_show (winMain); + update_cursor(); + + // load the MRU + + init_mru(); + + // and finally, open a file specified on the command line + // (moved here because display parameters weren't initialized yet...) + + if (argc == 1) return; + set_cursor_busy(TRUE); + if (g_path_is_absolute(argv[1])) + tmpfn = g_strdup(argv[1]); + else { + tmppath = g_get_current_dir(); + tmpfn = g_build_filename(tmppath, argv[1], NULL); + g_free(tmppath); + } + success = open_journal(tmpfn); + g_free(tmpfn); + set_cursor_busy(FALSE); + if (!success) { + w = gtk_message_dialog_new(GTK_WINDOW (winMain), GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error opening file '%s'", argv[1]); + gtk_dialog_run(GTK_DIALOG(w)); + gtk_widget_destroy(w); + } } @@ -238,13 +278,12 @@ main (int argc, char *argv[]) init_stuff (argc, argv); - gtk_widget_show (winMain); - update_cursor(); - gtk_main (); if (bgpdf.status != STATUS_NOT_INIT) shutdown_bgpdf(); if (bgpdf.status != STATUS_NOT_INIT) end_bgpdf_shutdown(); + + save_mru_list(); return 0; }