Only enable the New Entry button when in a valid workspace

This commit is contained in:
Markus Koch 2018-03-18 13:54:47 +01:00
parent 75155331ea
commit 3ba42da401
3 changed files with 40 additions and 2 deletions

View File

@ -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);
} }

View File

@ -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;

View File

@ -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);