From: <pa...@us...> - 2009-01-02 00:45:57
|
Revision: 650 http://osmo-pim.svn.sourceforge.net/osmo-pim/?rev=650&view=rev Author: pasp Date: 2009-01-02 00:45:45 +0000 (Fri, 02 Jan 2009) Log Message: ----------- * Do not use absolute paths in notes Modified Paths: -------------- trunk/ChangeLog trunk/src/notes.c trunk/src/notes_items.c trunk/src/notes_items.h Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2009-01-01 23:32:14 UTC (rev 649) +++ trunk/ChangeLog 2009-01-02 00:45:45 UTC (rev 650) @@ -3,9 +3,10 @@ * The order and width of columns is configurable * Spell checker support * Selected modules can be disabled at compilation stage + * Calendar printing improvements * Printing support is optional * System tray support improvements - * Calendar printing improvements + * Many bug fixes * Added translations: ca, el * Updated translations: tr, fr Modified: trunk/src/notes.c =================================================================== --- trunk/src/notes.c 2009-01-01 23:32:14 UTC (rev 649) +++ trunk/src/notes.c 2009-01-02 00:45:45 UTC (rev 650) @@ -128,7 +128,7 @@ text = (unsigned char*) gui_text_buffer_get_text_with_tags (buffer); ret = grg_encrypt_file (appGUI->nte->context, appGUI->nte->keyholder, - (unsigned char*) appGUI->nte->filename, + (unsigned char*) notes_get_full_filename(appGUI->nte->filename, appGUI), (guchar *) text, -1); grg_free (appGUI->nte->context, text, -1); Modified: trunk/src/notes_items.c =================================================================== --- trunk/src/notes_items.c 2009-01-01 23:32:14 UTC (rev 649) +++ trunk/src/notes_items.c 2009-01-02 00:45:45 UTC (rev 650) @@ -396,7 +396,7 @@ if (response == GTK_RESPONSE_YES) { gtk_tree_model_get_iter(GTK_TREE_MODEL(list_store), &iter, path); gtk_tree_model_get(GTK_TREE_MODEL(list_store), &iter, N_COLUMN_FILENAME, &filename, -1); - g_unlink (filename); + g_unlink (notes_get_full_filename(filename, appGUI)); g_free (filename); gtk_list_store_remove(list_store, &iter); gtk_tree_path_free(path); @@ -483,7 +483,7 @@ current_date = utl_get_current_julian (); current_time = get_seconds_for_today (); - current_filename = g_strdup (notes_get_filename (appGUI)); + current_filename = g_strdup (notes_get_new_filename (appGUI)); context = grg_context_initialize_defaults ((unsigned char*) "OSM"); keyholder = grg_key_gen ((unsigned char*) pass, -1); @@ -492,7 +492,9 @@ grg_ctx_set_comp_algo (context, get_comp_algorithm_value()); grg_ctx_set_comp_ratio (context, get_comp_ratio_value()); - ret = grg_encrypt_file (context, keyholder, (unsigned char*) current_filename, (guchar *)empty_str, -1); + ret = grg_encrypt_file (context, keyholder, + (unsigned char*) notes_get_full_filename(current_filename, appGUI), + (guchar *)empty_str, -1); grg_free (context, empty_str, -1); grg_key_free (context, keyholder); @@ -807,15 +809,15 @@ GUI *appGUI = (GUI *)data; - pass = g_strdup(gtk_entry_get_text(GTK_ENTRY(appGUI->nte->password_entry))); + pass = g_strdup(gtk_entry_get_text (GTK_ENTRY(appGUI->nte->password_entry))); notes_enter_password_close_cb (widget, NULL, data); if (gtk_tree_selection_get_selected (appGUI->nte->notes_list_selection, &model, &iter)) { - gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, N_COLUMN_FILENAME, ¤t_filename, -1); + gtk_tree_model_get (GTK_TREE_MODEL(model), &iter, N_COLUMN_FILENAME, ¤t_filename, -1); - appGUI->nte->filename = current_filename; + appGUI->nte->filename = g_strdup(notes_get_full_filename(current_filename, appGUI)); appGUI->nte->context = grg_context_initialize_defaults ((unsigned char*) "OSM"); appGUI->nte->keyholder = grg_key_gen ((unsigned char*) pass, -1); @@ -843,6 +845,8 @@ notes_show_selector_editor (EDITOR, appGUI); appGUI->nte->buffer_check_modify_enable = TRUE; } + + g_free (current_filename); } g_free(pass); @@ -964,7 +968,7 @@ xmlNodePtr node, cnode, category_node, main_node; GtkTreeIter iter; gchar *name, *category; -gchar *notes_dir; +gchar *notes_dir, *str, *dir, *fullpath; gint last_changes_time, create_time, editor_line; guint32 last_changes_date_julian, create_date_julian; gboolean remember_editor_line; @@ -1044,23 +1048,47 @@ if ((!xmlStrcmp(cnode->name, (const xmlChar *) "filename"))) { key = xmlNodeListGetString(doc, cnode->xmlChildrenNode, 1); if (key != NULL) { - if (g_file_test ((gchar *)key, G_FILE_TEST_EXISTS) == TRUE) { - gtk_list_store_append(appGUI->nte->notes_list_store, &iter); - gtk_list_store_set(appGUI->nte->notes_list_store, &iter, - N_COLUMN_NAME, name, - N_COLUMN_CATEGORY, category, - N_COLUMN_LAST_CHANGES_DATE, get_date_time_str (last_changes_date_julian, last_changes_time), - N_COLUMN_LAST_CHANGES_DATE_JULIAN, last_changes_date_julian, - N_COLUMN_LAST_CHANGES_TIME, last_changes_time, - N_COLUMN_CREATE_DATE, get_date_time_str (create_date_julian, create_time), - N_COLUMN_CREATE_DATE_JULIAN, create_date_julian, - N_COLUMN_CREATE_TIME, create_time, - N_COLUMN_REMEMBER_EDITOR_LINE, remember_editor_line, - N_COLUMN_EDITOR_LINE, editor_line, - N_COLUMN_FILENAME, (gchar *)key, -1); - } - g_free (name); - g_free (category); + + str = g_path_get_basename ((gchar *) key); + dir = g_path_get_dirname ((gchar *) key); + + if (str && dir) { + + if (dir[0] == '.') { + fullpath = g_strdup (notes_get_full_filename (str, appGUI)); + } else { + fullpath = (gchar *) key; + } + + if (g_file_test (fullpath, G_FILE_TEST_EXISTS) == TRUE) { + gtk_list_store_append (appGUI->nte->notes_list_store, &iter); + gtk_list_store_set (appGUI->nte->notes_list_store, &iter, + N_COLUMN_NAME, name, + N_COLUMN_CATEGORY, category, + N_COLUMN_LAST_CHANGES_DATE, get_date_time_str (last_changes_date_julian, last_changes_time), + N_COLUMN_LAST_CHANGES_DATE_JULIAN, last_changes_date_julian, + N_COLUMN_LAST_CHANGES_TIME, last_changes_time, + N_COLUMN_CREATE_DATE, get_date_time_str (create_date_julian, create_time), + N_COLUMN_CREATE_DATE_JULIAN, create_date_julian, + N_COLUMN_CREATE_TIME, create_time, + N_COLUMN_REMEMBER_EDITOR_LINE, remember_editor_line, + N_COLUMN_EDITOR_LINE, editor_line, -1); + + if (dir[0] == '.') { + gtk_list_store_set (appGUI->nte->notes_list_store, &iter, + N_COLUMN_FILENAME, (gchar *)key, -1); + g_free (fullpath); + } else { + gtk_list_store_set (appGUI->nte->notes_list_store, &iter, + N_COLUMN_FILENAME, str, -1); + } + } + + g_free (str); + g_free (dir); + g_free (name); + g_free (category); + } xmlFree (key); } } @@ -1169,7 +1197,7 @@ /*------------------------------------------------------------------------------*/ gchar * -notes_get_filename (GUI *appGUI) { +notes_get_new_filename (GUI *appGUI) { guint i; static gchar fullpath[PATH_MAX]; @@ -1180,6 +1208,8 @@ if (g_file_test (fullpath, G_FILE_TEST_EXISTS) == FALSE) break; } + g_snprintf(fullpath, PATH_MAX-1, "%08d.osm", i); + return fullpath; } @@ -1215,7 +1245,7 @@ gtk_tree_model_get(GTK_TREE_MODEL(appGUI->nte->notes_list_store), &iter, N_COLUMN_FILENAME, ¬e_filename, -1); - if (!strncmp(note_filename, fullpath, PATH_MAX)) { + if (!strncmp(notes_get_full_filename(note_filename, appGUI), fullpath, PATH_MAX)) { found = TRUE; g_free(note_filename); break; @@ -1237,5 +1267,30 @@ /*------------------------------------------------------------------------------*/ +gchar * +notes_get_full_filename (gchar *filename, GUI *appGUI) { + +static gchar fullname[PATH_MAX]; +gchar *str; + + g_snprintf (fullname, PATH_MAX-1, "%s%c%s", + prefs_get_config_filename(NOTES_DIRNAME, appGUI), G_DIR_SEPARATOR, filename); + + if (g_file_test (fullname, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_EXISTS) == FALSE) { + + str = g_path_get_basename (fullname); + + if (str) { + g_snprintf (fullname, PATH_MAX-1, "%s%c%s", + prefs_get_config_filename(NOTES_DIRNAME, appGUI), G_DIR_SEPARATOR, str); + g_free (str); + } + } + + return fullname; +} + +/*------------------------------------------------------------------------------*/ + #endif /* HAVE_LIBGRINGOTTS */ Modified: trunk/src/notes_items.h =================================================================== --- trunk/src/notes_items.h 2009-01-01 23:32:14 UTC (rev 649) +++ trunk/src/notes_items.h 2009-01-02 00:45:45 UTC (rev 650) @@ -29,7 +29,8 @@ void notes_remove_dialog_show (GtkWidget *list, GtkListStore *list_store, GUI *appGUI); void notes_enter_password (GUI *appGUI); void notes_cleanup_files (GUI *appGUI); -gchar * notes_get_filename (GUI *appGUI); +gchar * notes_get_new_filename (GUI *appGUI); +gchar * notes_get_full_filename (gchar *filename, GUI *appGUI); void read_notes_entries (GUI *appGUI); void write_notes_entries (GUI *appGUI); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |