From a78b442e4b673ac29d7dd29cfb2c9bca6f07130a Mon Sep 17 00:00:00 2001
From: auroux
Date: Sat, 3 Jun 2006 13:38:32 +0000
Subject: [PATCH] Public release 0.2.1.
---
ChangeLog | 9 ++-
NEWS | 4 +-
README | 4 +-
configure.in | 11 +--
html-doc/manual.html | 16 +++-
src/TODO | 21 ++----
src/main.c | 57 ++++++++++----
src/xo-callbacks.c | 166 ++++++++++++++++++++++++++++++----------
src/xo-callbacks.h | 4 +
src/xo-file.c | 90 ++++++++++++++++++++++
src/xo-file.h | 6 ++
src/xo-interface.c | 210 ++++++++++++++++++++++++++++++++++++---------------
src/xo-misc.c | 18 ++++-
src/xo-misc.h | 2 +-
src/xo-paint.c | 58 ++++++++++++++
src/xo-paint.h | 3 +
src/xo-print.c | 12 ++-
src/xournal | Bin 362824 -> 0 bytes
src/xournal.h | 13 +++-
xournal.glade | 117 ++++++++++++++++++++++++----
20 files changed, 661 insertions(+), 160 deletions(-)
delete mode 100755 src/xournal
diff --git a/ChangeLog b/ChangeLog
index 7627fdd..644872b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,13 @@
-Version ?:
+Version 0.2.1 (Jun 3, 2006):
+ - recently used files listed in file menu
+ - can change color or thickness of pen strokes in selection
+ - function to apply paper style to all pages
- can specify on command line a PDF file to annotate
+ - suggest a derived file name for PDF annotation
+ - speed up switching between pages
- fixed a bug in XInput initialization (thanks to Luca de Cicco)
+ - fixed a bug in print ranges (thanks to Mathieu Bouchard)
+ - fixed a refresh bug in rescaling bitmap backgrounds
Version 0.2 (Jan 29, 2006):
- PDF file annotation using xpdf's pdftoppm
diff --git a/NEWS b/NEWS
index d94177b..c1e9555 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,7 @@
-Version 0.2 (Jan 29, 2006)
+Version 0.2.1 (June 3, 2006)
Installation: see INSTALL
User's manual: see html-doc/manual.html
Updates: see http://math.mit.edu/~auroux/software/xournal/
+
+See also: http://sourceforge.net/projects/xournal
diff --git a/README b/README
index d94177b..c1e9555 100644
--- a/README
+++ b/README
@@ -1,5 +1,7 @@
-Version 0.2 (Jan 29, 2006)
+Version 0.2.1 (June 3, 2006)
Installation: see INSTALL
User's manual: see html-doc/manual.html
Updates: see http://math.mit.edu/~auroux/software/xournal/
+
+See also: http://sourceforge.net/projects/xournal
diff --git a/configure.in b/configure.in
index 85c4e00..d7e52a9 100644
--- a/configure.in
+++ b/configure.in
@@ -10,20 +10,11 @@ AC_PROG_CC
AM_PROG_CC_STDC
AC_HEADER_STDC
-dnl set this var to NONE (PC) or other thing (Maemo)
-usehildon='NONE'
-if test "x$usehildon" != xNONE
-then
- pkg_modules="gtk+-2.0 >= 2.4.0 libgnomecanvas-2.0 >= 2.4.0 libgnomeprintui-2.2 >= 2.0.0 hildon-libs libosso"
-else
- pkg_modules="gtk+-2.0 >= 2.4.0 libgnomecanvas-2.0 >= 2.4.0 libgnomeprintui-2.2 >= 2.0.0"
-fi
+pkg_modules="gtk+-2.0 >= 2.4.0 libgnomecanvas-2.0 >= 2.4.0 libgnomeprintui-2.2 >= 2.0.0"
PKG_CHECK_MODULES(PACKAGE, [$pkg_modules])
AC_SUBST(PACKAGE_CFLAGS)
AC_SUBST(PACKAGE_LIBS)
-AM_CONDITIONAL(USE_HILDON, test "x$usehildon" != xNONE)
-
AC_OUTPUT([
Makefile
src/Makefile
diff --git a/html-doc/manual.html b/html-doc/manual.html
index a7bfcc4..e1036cb 100644
--- a/html-doc/manual.html
+++ b/html-doc/manual.html
@@ -24,7 +24,7 @@
Xournal User's Manual
- Version 0.2
+ Version 0.2.1
@@ -449,6 +449,20 @@ A core file may also be helpful.
Version history
+Version 0.2.1 (Jun 3, 2006):
+
+ - recently used files listed in file menu
+ - can change color or thickness of pen strokes in selection
+ - function to apply paper style to all pages
+ - can specify on command line a PDF file to annotate
+ - suggest a derived file name for PDF annotation
+ - speed up switching between pages
+ - fixed a bug in XInput initialization (thanks to Luca de Cicco)
+ - fixed a bug in print ranges (thanks to Mathieu Bouchard)
+ - fixed a refresh bug in rescaling bitmap backgrounds
+
+
+
Version 0.2 (January 29, 2006):
- PDF file annotation using xpdf's pdftoppm
diff --git a/src/TODO b/src/TODO
index fcb3fcb..8323a09 100644
--- a/src/TODO
+++ b/src/TODO
@@ -1,32 +1,27 @@
-- print range bugfix (SEE PATCH?)
-- non-attached annotation => suggest a derived filename for save-as
- when opening a PDF file from command-line, store full path in name
-- gtk_message_dialog_format_secondary_text in xo-print.c crashes 2.4 ?
-- lasso selection tool
-- prefs file, save prefs
-- recent files list
+List of features to be implemented (not in any particular order)
+----------------------------------------------------------------
+
- map tools to stylus buttons (maybe: btn click on toolbar item affects
the corresponding tool; tool switching cleaner than for eraser)
-- flatten (incl undo/redo...) - enabled only if nlayers>1
-- bg: apply to all pages (SEE PATCH?)
-- recolor selection / change pen stroke thickness
-- resize selection
- move selection to another page by drag-drop
(should apply to vertspacer when origin moves to another page,
but in the up direction only do so when all the stuff fits on prev page)
(SEE ALSO FEATURE REQUEST 1472482 and reply to it - optional behavior too?)
+- lasso selection tool
+- prefs file, save prefs
+- flatten (incl undo/redo...) - enabled only if nlayers>1
+- resize selection
- text tool, font chooser, default font
- color chooser (papercolor, pen color); maybe more default colors
- printing: print-to-PDF? (with & without pdf background to merge)
opacity issue for highlighter strokes (maybe print them below ?)
save gnome printer settings (throughout a session, and on disk)
(maybe a separate config file .xournal/gnome-print-settings)
-....
- file print-options, own print-to-ps/pdf
- help index
- pressure sensitivity
- insert images (screen capture or from file or from clipboard),
not as full-page backgrounds (new ITEM type)
- more pen/highlighter shapes (chisel)
-- convert to/from Jarnal format
+- convert to/from Jarnal format; to/from MS Journal format???
- recalibration upon screen resize / compensation for miscalibration
diff --git a/src/main.c b/src/main.c
index 52b889c..7a5e641 100644
--- a/src/main.c
+++ b/src/main.c
@@ -31,7 +31,6 @@ 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("toolsSelectRegion"));
@@ -51,11 +50,18 @@ void init_stuff (int argc, char *argv[])
GdkScreen *screen;
int i;
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,15 +90,8 @@ 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;
@@ -207,6 +206,37 @@ void init_stuff (int argc, char *argv[])
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 +268,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;
}
diff --git a/src/xo-callbacks.c b/src/xo-callbacks.c
index 88b61ac..032a5c8 100644
--- a/src/xo-callbacks.c
+++ b/src/xo-callbacks.c
@@ -188,11 +188,18 @@ on_fileSaveAs_activate (GtkMenuItem *menuitem,
GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
if (ui.filename!=NULL) {
- if (ui.filename[0] == '/')
- gtk_file_chooser_set_filename(GTK_FILE_CHOOSER (dialog), ui.filename);
- else
- gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER (dialog), ui.filename);
- } else {
+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER (dialog), ui.filename);
+ gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER (dialog), g_basename(ui.filename));
+ }
+ else
+ if (bgpdf.status!=STATUS_NOT_INIT && bgpdf.file_domain == DOMAIN_ABSOLUTE
+ && bgpdf.filename != NULL) {
+ filename = g_strdup_printf("%s.xoj", bgpdf.filename->s);
+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER (dialog), filename);
+ gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER (dialog), g_basename(filename));
+ g_free(filename);
+ }
+ else {
curtime = time(NULL);
strftime(stime, 30, "%F-Note-%H-%M.xoj", localtime(&curtime));
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER (dialog), stime);
@@ -329,6 +336,8 @@ on_filePrint_activate (GtkMenuItem *menuitem,
switch(gnome_print_dialog_get_range(GNOME_PRINT_DIALOG(printDialog))) {
case GNOME_PRINT_RANGE_RANGE:
gnome_print_dialog_get_range_page(GNOME_PRINT_DIALOG(printDialog), &fromPage, &toPage);
+ fromPage--;
+ toPage--;
break;
default:
fromPage = 0;
@@ -366,9 +375,8 @@ on_filePrintPDF_activate (GtkMenuItem *menuitem,
}
else
in_fn = g_strdup_printf("%s.pdf", ui.filename);
- if (in_fn[0] == '/')
- gtk_file_chooser_set_filename(GTK_FILE_CHOOSER (dialog), in_fn);
- gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER (dialog), in_fn);
+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER (dialog), in_fn);
+ gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER (dialog), g_basename(in_fn));
} else {
curtime = time(NULL);
strftime(stime, 30, "%F-Note-%H-%M.pdf", localtime(&curtime));
@@ -425,6 +433,7 @@ on_editUndo_activate (GtkMenuItem *menuitem,
GList *list, *itemlist;
struct UndoErasureData *erasure;
struct Item *it;
+ struct Brush tmp_brush;
struct Background *tmp_bg;
double tmp_x, tmp_y;
@@ -485,7 +494,7 @@ on_editUndo_activate (GtkMenuItem *menuitem,
make_page_clipbox(undo->page);
}
update_canvas_bg(undo->page);
- do_switch_page(g_list_index(journal.pages, undo->page), TRUE);
+ do_switch_page(g_list_index(journal.pages, undo->page), TRUE, TRUE);
}
else if (undo->type == ITEM_NEW_DEFAULT_BG) {
tmp_bg = ui.default_page.bg;
@@ -510,13 +519,13 @@ on_editUndo_activate (GtkMenuItem *menuitem,
// so do_switch_page() won't try to remap the layers of the defunct page
if (ui.pageno >= undo->val) ui.pageno--;
if (ui.pageno < 0) ui.pageno = 0;
- do_switch_page(ui.pageno, TRUE);
+ do_switch_page(ui.pageno, TRUE, TRUE);
}
else if (undo->type == ITEM_DELETE_PAGE) {
journal.pages = g_list_insert(journal.pages, undo->page, undo->val);
journal.npages++;
make_canvas_items(); // re-create the canvas items
- do_switch_page(undo->val, TRUE);
+ do_switch_page(undo->val, TRUE, TRUE);
}
else if (undo->type == ITEM_MOVESEL) {
for (itemlist = undo->itemlist; itemlist != NULL; itemlist = itemlist->next) {
@@ -541,7 +550,7 @@ on_editUndo_activate (GtkMenuItem *menuitem,
undo->layer->group = NULL;
undo->page->layers = g_list_remove(undo->page->layers, undo->layer);
undo->page->nlayers--;
- do_switch_page(ui.pageno, FALSE); // don't stay with bad cur_layer info
+ do_switch_page(ui.pageno, FALSE, FALSE); // don't stay with bad cur_layer info
}
else if (undo->type == ITEM_DELETE_LAYER) {
// special case of -1: deleted the last layer, created a new one
@@ -572,7 +581,20 @@ on_editUndo_activate (GtkMenuItem *menuitem,
"width-units", it->brush.thickness, NULL);
}
}
- do_switch_page(ui.pageno, FALSE); // show the restored layer & others...
+ do_switch_page(ui.pageno, FALSE, FALSE); // show the restored layer & others...
+ }
+ else if (undo->type == ITEM_REPAINTSEL) {
+ for (itemlist = undo->itemlist, list = undo->auxlist; itemlist!=NULL;
+ itemlist = itemlist->next, list = list->next) {
+ it = (struct Item *)itemlist->data;
+ g_memmove(&tmp_brush, &(it->brush), sizeof(struct Brush));
+ g_memmove(&(it->brush), list->data, sizeof(struct Brush));
+ g_memmove(list->data, &tmp_brush, sizeof(struct Brush));
+ if (it->type == ITEM_STROKE && it->canvas_item != NULL)
+ gnome_canvas_item_set(it->canvas_item,
+ "fill-color-rgba", it->brush.color_rgba,
+ "width-units", it->brush.thickness, NULL);
+ }
}
// move item from undo to redo stack
@@ -594,6 +616,7 @@ on_editRedo_activate (GtkMenuItem *menuitem,
GList *list, *itemlist, *target;
struct UndoErasureData *erasure;
struct Item *it;
+ struct Brush tmp_brush;
struct Background *tmp_bg;
struct Layer *l;
double tmp_x, tmp_y;
@@ -654,7 +677,7 @@ on_editRedo_activate (GtkMenuItem *menuitem,
make_page_clipbox(redo->page);
}
update_canvas_bg(redo->page);
- do_switch_page(g_list_index(journal.pages, redo->page), TRUE);
+ do_switch_page(g_list_index(journal.pages, redo->page), TRUE, TRUE);
}
else if (redo->type == ITEM_NEW_DEFAULT_BG) {
tmp_bg = ui.default_page.bg;
@@ -680,7 +703,7 @@ on_editRedo_activate (GtkMenuItem *menuitem,
journal.pages = g_list_insert(journal.pages, redo->page, redo->val);
journal.npages++;
- do_switch_page(redo->val, TRUE);
+ do_switch_page(redo->val, TRUE, TRUE);
}
else if (redo->type == ITEM_DELETE_PAGE) {
// unmap all the canvas items
@@ -698,7 +721,7 @@ on_editRedo_activate (GtkMenuItem *menuitem,
if (ui.pageno > undo->val || ui.pageno == journal.npages) ui.pageno--;
ui.cur_page = NULL;
// so do_switch_page() won't try to remap the layers of the defunct page
- do_switch_page(ui.pageno, TRUE);
+ do_switch_page(ui.pageno, TRUE, TRUE);
}
else if (redo->type == ITEM_MOVESEL) {
for (itemlist = redo->itemlist; itemlist != NULL; itemlist = itemlist->next) {
@@ -729,7 +752,7 @@ on_editRedo_activate (GtkMenuItem *menuitem,
redo->page->bg->canvas_item);
redo->page->layers = g_list_insert(redo->page->layers, redo->layer, redo->val);
redo->page->nlayers++;
- do_switch_page(ui.pageno, FALSE);
+ do_switch_page(ui.pageno, FALSE, FALSE);
}
else if (redo->type == ITEM_DELETE_LAYER) {
gtk_object_destroy(GTK_OBJECT(redo->layer->group));
@@ -744,7 +767,20 @@ on_editRedo_activate (GtkMenuItem *menuitem,
redo->page->layers = g_list_append(redo->page->layers, redo->layer2);
redo->page->nlayers++;
}
- do_switch_page(ui.pageno, FALSE);
+ do_switch_page(ui.pageno, FALSE, FALSE);
+ }
+ else if (redo->type == ITEM_REPAINTSEL) {
+ for (itemlist = redo->itemlist, list = redo->auxlist; itemlist!=NULL;
+ itemlist = itemlist->next, list = list->next) {
+ it = (struct Item *)itemlist->data;
+ g_memmove(&tmp_brush, &(it->brush), sizeof(struct Brush));
+ g_memmove(&(it->brush), list->data, sizeof(struct Brush));
+ g_memmove(list->data, &tmp_brush, sizeof(struct Brush));
+ if (it->type == ITEM_STROKE && it->canvas_item != NULL)
+ gnome_canvas_item_set(it->canvas_item,
+ "fill-color-rgba", it->brush.color_rgba,
+ "width-units", it->brush.thickness, NULL);
+ }
}
// move item from redo to undo stack
@@ -797,14 +833,16 @@ on_viewContinuous_activate (GtkMenuItem *menuitem,
{
GtkAdjustment *v_adj;
double yscroll;
+ struct Page *pg;
if (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM (menuitem))) return;
if (ui.view_continuous) return;
ui.view_continuous = TRUE;
v_adj = gtk_layout_get_vadjustment(GTK_LAYOUT(canvas));
- yscroll = gtk_adjustment_get_value(v_adj) - ui.cur_page->voffset*ui.zoom;
+ pg = ui.cur_page;
+ yscroll = gtk_adjustment_get_value(v_adj) - pg->voffset*ui.zoom;
update_page_stuff();
- gtk_adjustment_set_value(v_adj, yscroll + ui.cur_page->voffset*ui.zoom);
+ gtk_adjustment_set_value(v_adj, yscroll + pg->voffset*ui.zoom);
// force a refresh
gnome_canvas_set_pixels_per_unit(canvas, ui.zoom);
}
@@ -875,7 +913,7 @@ void
on_viewFirstPage_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
- do_switch_page(0, TRUE);
+ do_switch_page(0, TRUE, FALSE);
}
@@ -884,7 +922,7 @@ on_viewPreviousPage_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
if (ui.pageno == 0) return;
- do_switch_page(ui.pageno-1, TRUE);
+ do_switch_page(ui.pageno-1, TRUE, FALSE);
}
@@ -897,7 +935,7 @@ on_viewNextPage_activate (GtkMenuItem *menuitem,
on_journalNewPageEnd_activate(menuitem, user_data);
return;
}
- do_switch_page(ui.pageno+1, TRUE);
+ do_switch_page(ui.pageno+1, TRUE, FALSE);
}
@@ -905,7 +943,7 @@ void
on_viewLastPage_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
- do_switch_page(journal.npages-1, TRUE);
+ do_switch_page(journal.npages-1, TRUE, FALSE);
}
@@ -947,7 +985,7 @@ on_journalNewPageBefore_activate (GtkMenuItem *menuitem,
pg = new_page(ui.cur_page);
journal.pages = g_list_insert(journal.pages, pg, ui.pageno);
journal.npages++;
- do_switch_page(ui.pageno, TRUE);
+ do_switch_page(ui.pageno, TRUE, TRUE);
prepare_new_undo();
undo->type = ITEM_NEW_PAGE;
@@ -967,7 +1005,7 @@ on_journalNewPageAfter_activate (GtkMenuItem *menuitem,
pg = new_page(ui.cur_page);
journal.pages = g_list_insert(journal.pages, pg, ui.pageno+1);
journal.npages++;
- do_switch_page(ui.pageno+1, TRUE);
+ do_switch_page(ui.pageno+1, TRUE, TRUE);
prepare_new_undo();
undo->type = ITEM_NEW_PAGE;
@@ -987,7 +1025,7 @@ on_journalNewPageEnd_activate (GtkMenuItem *menuitem,
pg = new_page((struct Page *)g_list_last(journal.pages)->data);
journal.pages = g_list_append(journal.pages, pg);
journal.npages++;
- do_switch_page(journal.npages-1, TRUE);
+ do_switch_page(journal.npages-1, TRUE, TRUE);
prepare_new_undo();
undo->type = ITEM_NEW_PAGE;
@@ -1027,7 +1065,7 @@ on_journalDeletePage_activate (GtkMenuItem *menuitem,
if (ui.pageno == journal.npages) ui.pageno--;
ui.cur_page = NULL;
// so do_switch_page() won't try to remap the layers of the defunct page
- do_switch_page(ui.pageno, TRUE);
+ do_switch_page(ui.pageno, TRUE, TRUE);
}
@@ -1172,7 +1210,7 @@ on_journalPaperSize_activate (GtkMenuItem *menuitem,
make_page_clipbox(ui.cur_page);
update_canvas_bg(ui.cur_page);
- do_switch_page(ui.pageno, TRUE);
+ do_switch_page(ui.pageno, TRUE, TRUE);
}
@@ -1376,7 +1414,7 @@ on_journalLoadBackground_activate (GtkMenuItem *menuitem,
gnome_canvas_set_pixels_per_unit(canvas, ui.zoom);
rescale_bg_pixmaps();
}
- do_switch_page(ui.pageno, TRUE);
+ do_switch_page(ui.pageno, TRUE, TRUE);
}
void
@@ -1420,7 +1458,7 @@ on_journalScreenshot_activate (GtkMenuItem *menuitem,
gnome_canvas_set_pixels_per_unit(canvas, ui.zoom);
rescale_bg_pixmaps();
}
- do_switch_page(ui.pageno, TRUE);
+ do_switch_page(ui.pageno, TRUE, TRUE);
}
@@ -1428,7 +1466,31 @@ void
on_journalApplyAllPages_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
-
+ struct Page *page;
+ GList *pglist;
+
+ if (ui.cur_page->bg->type != BG_SOLID) return;
+ reset_selection();
+ for (pglist = journal.pages; pglist!=NULL; pglist = pglist->next) {
+ page = (struct Page *)pglist->data;
+ prepare_new_undo();
+ undo->type = ITEM_NEW_BG_RESIZE;
+ undo->page = page;
+ undo->bg = page->bg;
+ undo->val_x = page->width;
+ undo->val_y = page->height;
+ if (pglist->next!=NULL) undo->multiop |= MULTIOP_CONT_REDO;
+ if (pglist->prev!=NULL) undo->multiop |= MULTIOP_CONT_UNDO;
+ page->bg = (struct Background *)g_memdup(ui.cur_page->bg, sizeof(struct Background));
+ page->width = ui.cur_page->width;
+ page->height = ui.cur_page->height;
+ page->bg->canvas_item = undo->bg->canvas_item;
+ undo->bg->canvas_item = NULL;
+
+ make_page_clipbox(page);
+ update_canvas_bg(page);
+ }
+ do_switch_page(ui.pageno, TRUE, TRUE);
}
@@ -2008,7 +2070,7 @@ on_canvas_button_press_event (GtkWidget *widget,
ui.pageno++;
tmppage = g_list_nth_data(journal.pages, ui.pageno);
}
- if (page_change) do_switch_page(ui.pageno, FALSE);
+ if (page_change) do_switch_page(ui.pageno, FALSE, FALSE);
// can't paint on the background...
@@ -2114,7 +2176,7 @@ on_canvas_expose_event (GtkWidget *widget,
GdkEventExpose *event,
gpointer user_data)
{
-
+ if (ui.view_continuous && ui.progressive_bg) rescale_bg_pixmaps();
return FALSE;
}
@@ -2184,7 +2246,6 @@ on_canvas_motion_notify_event (GtkWidget *widget,
return FALSE;
}
-
void
on_comboLayer_changed (GtkComboBox *combobox,
gpointer user_data)
@@ -2261,7 +2322,7 @@ on_vscroll_changed (GtkAdjustment *adjustment,
ui.pageno--;
tmppage = g_list_nth_data(journal.pages, ui.pageno);
}
- if (need_update) do_switch_page(ui.pageno, FALSE);
+ if (need_update) do_switch_page(ui.pageno, FALSE, FALSE);
return;
}
@@ -2286,7 +2347,7 @@ on_spinPageNo_value_changed (GtkSpinButton *spinbutton,
if (val == ui.pageno) return;
if (val < 0) val = 0;
if (val > journal.npages-1) val = journal.npages-1;
- do_switch_page(val, TRUE);
+ do_switch_page(val, TRUE, FALSE);
}
@@ -2310,7 +2371,7 @@ on_journalDefaultBackground_activate (GtkMenuItem *menuitem,
make_page_clipbox(ui.cur_page);
update_canvas_bg(ui.cur_page);
- do_switch_page(ui.pageno, TRUE);
+ do_switch_page(ui.pageno, TRUE, TRUE);
}
@@ -2502,3 +2563,32 @@ on_optionsProgressiveBG_activate (GtkMenuItem *menuitem,
if (!ui.progressive_bg) rescale_bg_pixmaps();
}
+
+void
+on_mru_activate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+ int which;
+ gboolean success;
+ GtkWidget *dialog;
+
+ if (!ok_to_close()) return; // user aborted on save confirmation
+
+ for (which = 0 ; which < MRU_SIZE; which++) {
+ if (ui.mrumenu[which] == GTK_WIDGET(menuitem)) break;
+ }
+ if (which == MRU_SIZE || ui.mru[which] == NULL) return; // not found...
+
+ set_cursor_busy(TRUE);
+ success = open_journal(ui.mru[which]);
+ set_cursor_busy(FALSE);
+ if (success) return;
+
+ /* open failed */
+ dialog = gtk_message_dialog_new(GTK_WINDOW (winMain), GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error opening file '%s'", ui.mru[which]);
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+ delete_mru_entry(which);
+}
+
diff --git a/src/xo-callbacks.h b/src/xo-callbacks.h
index a4799a8..622a25e 100644
--- a/src/xo-callbacks.h
+++ b/src/xo-callbacks.h
@@ -479,3 +479,7 @@ void
on_optionsProgressiveBG_activate (GtkMenuItem *menuitem,
gpointer user_data);
+
+void
+on_mru_activate (GtkMenuItem *menuitem,
+ gpointer user_data);
diff --git a/src/xo-file.c b/src/xo-file.c
index a052475..c180d61 100644
--- a/src/xo-file.c
+++ b/src/xo-file.c
@@ -1107,3 +1107,93 @@ void bgpdf_update_bg(int pageno, struct BgPdfPage *bgpg)
}
}
+// initialize the recent files list
+void init_mru(void)
+{
+ int i;
+ gsize lfptr;
+ char s[5];
+ GIOChannel *f;
+ gchar *str;
+ GIOStatus status;
+
+ g_strlcpy(s, "mru0", 5);
+ for (s[3]='0', i=0; i0) {
+ str[lfptr] = 0;
+ ui.mru[i] = str;
+ i++;
+ }
+ }
+ if (f) {
+ g_io_channel_shutdown(f, FALSE, NULL);
+ g_io_channel_unref(f);
+ }
+ update_mru_menu();
+}
+
+void update_mru_menu(void)
+{
+ int i;
+ gboolean anyone = FALSE;
+
+ for (i=0; i=1; j--) ui.mru[j] = ui.mru[j-1];
+ ui.mru[0] = g_strdup(name);
+ update_mru_menu();
+}
+
+void delete_mru_entry(int which)
+{
+ int i;
+
+ if (ui.mru[which]!=NULL) g_free(ui.mru[which]);
+ for (i=which+1;ivoffset*ui.zoom);
- gnome_canvas_set_pixels_per_unit(canvas, ui.zoom);
+ if (refresh_all)
+ gnome_canvas_set_pixels_per_unit(canvas, ui.zoom);
+ else if (!ui.view_continuous)
+ gnome_canvas_item_move(GNOME_CANVAS_ITEM(ui.cur_page->group), 0., 0.);
}
}
@@ -1047,6 +1052,8 @@ void update_page_stuff(void)
ui.cur_page->bg->type == BG_SOLID);
gtk_widget_set_sensitive(GET_COMPONENT("journalSetAsDefault"),
ui.cur_page->bg->type == BG_SOLID);
+ gtk_widget_set_sensitive(GET_COMPONENT("journalApplyAllPages"),
+ ui.cur_page->bg->type == BG_SOLID);
gtk_widget_set_sensitive(GET_COMPONENT("viewFirstPage"), ui.pageno!=0);
gtk_widget_set_sensitive(GET_COMPONENT("viewPreviousPage"), ui.pageno!=0);
@@ -1093,6 +1100,7 @@ void update_file_name(char *filename)
else p = g_utf8_next_char(p);
g_snprintf(tmp, 100, "Xournal - %s", p);
gtk_window_set_title(GTK_WINDOW (winMain), tmp);
+ new_mru_entry(filename);
}
void update_undo_redo_enabled(void)
@@ -1142,7 +1150,9 @@ void process_color_activate(GtkMenuItem *menuitem, int color)
if (ui.toolno == TOOL_PEN || ui.toolno == TOOL_HIGHLIGHTER)
set_cur_color(color);
- // later add selection tools
+ if ((ui.toolno == TOOL_SELECTREGION || ui.toolno == TOOL_SELECTRECT) &&
+ ui.selection != NULL)
+ recolor_selection(color);
update_color_buttons();
update_color_menu();
@@ -1160,6 +1170,8 @@ void process_thickness_activate(GtkMenuItem *menuitem, int tool, int val)
}
if (tool >= NUM_STROKE_TOOLS) {
+ if ((tool == TOOL_SELECTREGION || tool == TOOL_SELECTRECT) && ui.selection != NULL)
+ rethicken_selection(val);
update_thickness_buttons(); // undo illegal button selection
return;
}
diff --git a/src/xo-misc.h b/src/xo-misc.h
index 8662cd3..7fd40cb 100644
--- a/src/xo-misc.h
+++ b/src/xo-misc.h
@@ -47,7 +47,7 @@ void update_file_name(char *filename);
void update_undo_redo_enabled(void);
void update_copy_paste_enabled(void);
-void do_switch_page(int pg, gboolean rescroll);
+void do_switch_page(int pg, gboolean rescroll, gboolean refresh_all);
void set_cur_color(int color);
void process_color_activate(GtkMenuItem *menuitem, int color);
void process_thickness_activate(GtkMenuItem *menuitem, int tool, int val);
diff --git a/src/xo-paint.c b/src/xo-paint.c
index 348334d..2aed317 100644
--- a/src/xo-paint.c
+++ b/src/xo-paint.c
@@ -774,3 +774,61 @@ void clipboard_paste(void)
gtk_selection_data_free(sel_data);
update_copy_paste_enabled();
}
+
+// modify the color or thickness of pen strokes in a selection
+
+void recolor_selection(int color)
+{
+ GList *itemlist;
+ struct Item *item;
+ struct Brush *brush;
+
+ if (ui.selection == NULL) return;
+ prepare_new_undo();
+ undo->type = ITEM_REPAINTSEL;
+ undo->itemlist = NULL;
+ undo->auxlist = NULL;
+ for (itemlist = ui.selection->items; itemlist!=NULL; itemlist = itemlist->next) {
+ item = (struct Item *)itemlist->data;
+ if (item->type != ITEM_STROKE || item->brush.tool_type!=TOOL_PEN) continue;
+ // store info for undo
+ undo->itemlist = g_list_append(undo->itemlist, item);
+ brush = (struct Brush *)g_malloc(sizeof(struct Brush));
+ g_memmove(brush, &(item->brush), sizeof(struct Brush));
+ undo->auxlist = g_list_append(undo->auxlist, brush);
+ // repaint the stroke
+ item->brush.color_no = color;
+ item->brush.color_rgba = predef_colors_rgba[color];
+ if (item->canvas_item!=NULL)
+ gnome_canvas_item_set(item->canvas_item,
+ "fill-color-rgba", item->brush.color_rgba, NULL);
+ }
+}
+
+void rethicken_selection(int val)
+{
+ GList *itemlist;
+ struct Item *item;
+ struct Brush *brush;
+
+ if (ui.selection == NULL) return;
+ prepare_new_undo();
+ undo->type = ITEM_REPAINTSEL;
+ undo->itemlist = NULL;
+ undo->auxlist = NULL;
+ for (itemlist = ui.selection->items; itemlist!=NULL; itemlist = itemlist->next) {
+ item = (struct Item *)itemlist->data;
+ if (item->type != ITEM_STROKE || item->brush.tool_type!=TOOL_PEN) continue;
+ // store info for undo
+ undo->itemlist = g_list_append(undo->itemlist, item);
+ brush = (struct Brush *)g_malloc(sizeof(struct Brush));
+ g_memmove(brush, &(item->brush), sizeof(struct Brush));
+ undo->auxlist = g_list_append(undo->auxlist, brush);
+ // repaint the stroke
+ item->brush.thickness_no = val;
+ item->brush.thickness = predef_thickness[TOOL_PEN][val];
+ if (item->canvas_item!=NULL)
+ gnome_canvas_item_set(item->canvas_item,
+ "width-units", item->brush.thickness, NULL);
+ }
+}
diff --git a/src/xo-paint.h b/src/xo-paint.h
index 4df6f1b..4d3a43c 100644
--- a/src/xo-paint.h
+++ b/src/xo-paint.h
@@ -17,3 +17,6 @@ void finalize_movesel(void);
void selection_delete(void);
void selection_to_clip(void);
void clipboard_paste(void);
+
+void recolor_selection(int color);
+void rethicken_selection(int val);
diff --git a/src/xo-print.c b/src/xo-print.c
index 933868e..147fd2e 100644
--- a/src/xo-print.c
+++ b/src/xo-print.c
@@ -168,15 +168,21 @@ void print_job_render(GnomePrintJob *gpj, int fromPage, int toPage)
g_signal_connect(wait_dialog, "response", G_CALLBACK (cb_print_abort), &abort);
for (i = fromPage; i <= toPage; i++) {
- gtk_message_dialog_format_secondary_text(
- GTK_MESSAGE_DIALOG(wait_dialog), "Page %d", i+1);
+#if GTK_CHECK_VERSION(2,6,0)
+ if (!gtk_check_version(2, 6, 0))
+ gtk_message_dialog_format_secondary_text(
+ GTK_MESSAGE_DIALOG(wait_dialog), "Page %d", i+1);
+#endif
while (gtk_events_pending()) gtk_main_iteration();
print_page(gpc, (struct Page *)g_list_nth_data(journal.pages, i), i+1,
pgwidth, pgheight, &abort);
if (abort) break;
}
- gtk_message_dialog_format_secondary_text(
+#if GTK_CHECK_VERSION(2,6,0)
+ if (!gtk_check_version(2, 6, 0))
+ gtk_message_dialog_format_secondary_text(
GTK_MESSAGE_DIALOG(wait_dialog), "Finalizing...");
+#endif
while (gtk_events_pending()) gtk_main_iteration();
gnome_print_context_close(gpc);
diff --git a/src/xournal b/src/xournal
deleted file mode 100755
index f9ca5c4f4edd55fd9ac9bb7ccac5040c360b8d8c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcwPel00001
literal 362824
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
so=fM%?rJ$S63``bb0c4o6DaeM
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