Only enable the New Entry button when in a valid workspace
This commit is contained in:
parent
75155331ea
commit
3ba42da401
@ -1050,6 +1050,20 @@ static void mainWindow_show_error(struct mainWindow *mainWindow, gchar *text)
|
|||||||
gtk_widget_destroy(dialog);
|
gtk_widget_destroy(dialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void mainWindow_show_info(struct mainWindow *mainWindow, gchar *text)
|
||||||
|
{
|
||||||
|
GtkWidget *dialog;
|
||||||
|
|
||||||
|
dialog = gtk_message_dialog_new(GTK_WINDOW(mainWindow->mainWindow),
|
||||||
|
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||||
|
GTK_MESSAGE_INFO,
|
||||||
|
GTK_BUTTONS_CLOSE,
|
||||||
|
"%s",
|
||||||
|
text);
|
||||||
|
gtk_dialog_run(GTK_DIALOG(dialog));
|
||||||
|
gtk_widget_destroy(dialog);
|
||||||
|
}
|
||||||
|
|
||||||
void mainWindow_switch_workspace(struct mainWindow *mainWindow, gchar *path, gboolean gpg_enabled)
|
void mainWindow_switch_workspace(struct mainWindow *mainWindow, gchar *path, gboolean gpg_enabled)
|
||||||
{
|
{
|
||||||
struct mdiary_scanner *mdiary_scanner;
|
struct mdiary_scanner *mdiary_scanner;
|
||||||
@ -1086,8 +1100,25 @@ void mainWindow_switch_workspace(struct mainWindow *mainWindow, gchar *path, gbo
|
|||||||
g_free(temp);
|
g_free(temp);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
gtk_header_bar_set_subtitle(GTK_HEADER_BAR(mainWindow->headerBar), "No workspace opened.");
|
if (mdiary_scanner->error_code & MDS_ERROR_GPG) {
|
||||||
mainWindow_show_error(mainWindow, "Could not open workspace or no entries were found in it.");
|
NULL; /* Handled in scanner */
|
||||||
|
} else if (mdiary_scanner->error_code == 0) {
|
||||||
|
mainWindow_show_info(mainWindow, "This workspace is empty. Use the New Entry button to create the first entry.");
|
||||||
|
} else {
|
||||||
|
mainWindow_show_error(mainWindow, "Could not open workspace. Please choose a different directory.");
|
||||||
|
g_free(mainWindow->currentWorkspaceUrl);
|
||||||
|
mainWindow->currentWorkspaceUrl = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mainWindow->currentWorkspaceUrl) {
|
||||||
|
gtk_header_bar_set_subtitle(GTK_HEADER_BAR(mainWindow->headerBar),
|
||||||
|
mainWindow->currentWorkspaceUrl);
|
||||||
|
gtk_widget_set_sensitive(mainWindow->buttonNew, 1);
|
||||||
|
} else {
|
||||||
|
gtk_header_bar_set_subtitle(GTK_HEADER_BAR(mainWindow->headerBar),
|
||||||
|
"No workspace opened.");
|
||||||
|
gtk_widget_set_sensitive(mainWindow->buttonNew, 0);
|
||||||
}
|
}
|
||||||
mdiary_scanner_free(mdiary_scanner);
|
mdiary_scanner_free(mdiary_scanner);
|
||||||
}
|
}
|
||||||
|
@ -381,6 +381,7 @@ static void mdiary_add_gpg_to_store(struct mdiary_scanner *mdiary_scanner,
|
|||||||
mdiary_add_file_to_store(mdiary_scanner, filename, cmd_stdout, entryListStore, autoCompletion);
|
mdiary_add_file_to_store(mdiary_scanner, filename, cmd_stdout, entryListStore, autoCompletion);
|
||||||
} else {
|
} else {
|
||||||
mdiary_scanner->entries_failed++;
|
mdiary_scanner->entries_failed++;
|
||||||
|
mdiary_scanner->error_code |= MDS_ERROR_GPG;
|
||||||
g_warning("GPG: Decryption of message failed!\n"
|
g_warning("GPG: Decryption of message failed!\n"
|
||||||
"---------- SNIP ----------\n"
|
"---------- SNIP ----------\n"
|
||||||
"%s"
|
"%s"
|
||||||
@ -407,6 +408,7 @@ static void mdiary_recurse_and_collect(struct mdiary_scanner *mdiary_scanner,
|
|||||||
|
|
||||||
if (!dir) {
|
if (!dir) {
|
||||||
g_print("Could not open base directory.\n");
|
g_print("Could not open base directory.\n");
|
||||||
|
mdiary_scanner->error_code |= MDS_ERROR_BASE_DIR;
|
||||||
} else {
|
} else {
|
||||||
while (dirname = (gchar *)g_dir_read_name(dir)) {
|
while (dirname = (gchar *)g_dir_read_name(dir)) {
|
||||||
fullPath = g_strdup_printf("%s/%s", base_dir, dirname);
|
fullPath = g_strdup_printf("%s/%s", base_dir, dirname);
|
||||||
@ -455,6 +457,7 @@ struct mdiary_scanner *mdiary_scanner_new(gboolean gpg_enabled)
|
|||||||
mdiary_scanner->gpg_enabled = gpg_enabled;
|
mdiary_scanner->gpg_enabled = gpg_enabled;
|
||||||
mdiary_scanner->entries_failed = 0;
|
mdiary_scanner->entries_failed = 0;
|
||||||
mdiary_scanner->entries_encrypted = 0;
|
mdiary_scanner->entries_encrypted = 0;
|
||||||
|
mdiary_scanner->error_code = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return mdiary_scanner;
|
return mdiary_scanner;
|
||||||
|
@ -5,6 +5,9 @@
|
|||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#define MDS_ERROR_BASE_DIR 1
|
||||||
|
#define MDS_ERROR_GPG 2
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
COL_TITLE = 0, /* Title of the entry */
|
COL_TITLE = 0, /* Title of the entry */
|
||||||
COL_DATE_TEXT, /* Textual representation of the date (auto generated) */
|
COL_DATE_TEXT, /* Textual representation of the date (auto generated) */
|
||||||
@ -24,6 +27,7 @@ struct mdiary_scanner {
|
|||||||
gint entries_added;
|
gint entries_added;
|
||||||
gint entries_encrypted;
|
gint entries_encrypted;
|
||||||
gint entries_failed;
|
gint entries_failed;
|
||||||
|
gint error_code;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mdiary_scanner *mdiary_scanner_new(gboolean gpg_enabled);
|
struct mdiary_scanner *mdiary_scanner_new(gboolean gpg_enabled);
|
||||||
|
Loading…
Reference in New Issue
Block a user