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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user