Changeset 61
- Timestamp:
- 10/08/07 20:54:56 (11 months ago)
- Files:
-
- trunk/src/account_dialog.c (modified) (3 diffs)
- trunk/src/database.c (modified) (2 diffs)
- trunk/src/main.c (modified) (1 diff)
- trunk/src/widgets.c (modified) (2 diffs)
- trunk/src/widgets.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/account_dialog.c
r60 r61 135 135 { 136 136 GtkWidget *dialog = account_dialog_new(GTK_WINDOW(data)); 137 if ( gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT ) 138 { 139 char *name = (char *)gtk_entry_get_text(GTK_ENTRY(name_entry)); 137 138 bool keep_going = true; 139 while ( keep_going ) 140 { 141 // break if the window closes or cancel is pressed 142 if ( gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_ACCEPT ) 143 { 144 gtk_widget_hide(dialog); 145 if ( !account_list_empty() ) 146 { 147 gtk_widget_destroy(dialog); 148 keep_going = false; 149 } 150 continue; 151 } 152 153 const char *name = (char *)gtk_entry_get_text(GTK_ENTRY(name_entry)); 140 154 if ( strlen(name) < 1 ) 141 155 { 142 gtk_widget_destroy(dialog); 143 return; 156 if ( !account_list_empty() ) 157 { 158 gtk_widget_destroy(dialog); 159 keep_going = false; 160 } 161 continue; 144 162 } 145 163 double bal = (double)atof(gtk_entry_get_text(GTK_ENTRY(balance_entry))); … … 148 166 if ( id == -1 ) 149 167 { 150 gtk_widget_destroy(dialog); 151 check_account_list(); 152 return; 168 char a_name[101]; 169 strcpy( a_name, name ); 170 double a_bal; 171 int a_id; 172 get_account_by_name( a_name, &a_id, &a_bal ); 173 if ( &a_id == NULL ) 174 { 175 GtkWidget *error = gtk_message_dialog_new( GTK_WINDOW(dialog), 176 GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, 177 GTK_BUTTONS_CLOSE, "Unknown error creating account" ); 178 gtk_dialog_run( GTK_DIALOG(error) ); 179 gtk_widget_destroy(error); 180 keep_going = false; 181 gtk_widget_destroy(dialog); 182 if ( account_list_empty() ) 183 launch_new_account_dialog(); 184 } 185 else 186 { 187 GtkWidget *error = gtk_message_dialog_new( GTK_WINDOW(dialog), 188 GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, 189 GTK_BUTTONS_CLOSE, "An account with the name '%s' already \ 190 exists. Please use a different name.", name ); 191 gtk_dialog_run( GTK_DIALOG(error) ); 192 gtk_widget_destroy(error); 193 continue; 194 } 153 195 } 154 196 155 197 add_account_to_combo(id); 156 } 157 158 gtk_widget_destroy(dialog); 159 160 check_account_list(); 198 keep_going = false; 199 gtk_widget_destroy(dialog); 200 } 161 201 } 162 202 … … 199 239 gtk_widget_destroy(dialog); 200 240 201 check_account_list(); 202 } 203 241 if ( account_list_empty() ) 242 launch_new_account_dialog(); 243 } 244 trunk/src/database.c
r56 r61 425 425 sqlite3_stmt *stmt; 426 426 427 char *query = sqlite3_mprintf( "select name from accounts order by id asc" ); 427 char *query = sqlite3_mprintf( "select name from accounts where purged = 0 \ 428 order by id asc" ); 428 429 if ( sqlite3_prepare_v2( db, query, -1, &stmt, NULL ) ) 429 430 { … … 460 461 sqlite3_stmt *stmt; 461 462 462 char *query = sqlite3_mprintf( "select id from accounts order by id asc" ); 463 char *query = sqlite3_mprintf( "select id from accounts where purged = 0 \ 464 order by id asc" ); 463 465 if ( sqlite3_prepare_v2( db, query, -1, &stmt, NULL ) ) 464 466 { trunk/src/main.c
r60 r61 87 87 gtk_widget_show(vbox); 88 88 gtk_widget_show(window); 89 check_account_list(); 89 if ( account_list_empty() ) 90 launch_new_account_dialog(); 90 91 91 92 gtk_main(); trunk/src/widgets.c
r60 r61 802 802 } 803 803 804 void check_account_list()804 bool account_list_empty() 805 805 { 806 806 GtkTreeModel *model = gtk_combo_box_get_model(GTK_COMBO_BOX(account_combo)); 807 807 GtkTreeIter iter; 808 808 809 if ( !gtk_tree_model_get_iter_first( model, &iter ) ) 810 { 811 GtkWindow *window = GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(tree))); 812 account_dialog_new_cb( NULL, window ); 813 } 809 return !gtk_tree_model_get_iter_first( model, &iter ); 810 } 811 812 void launch_new_account_dialog() 813 { 814 GtkWindow *window = GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(tree))); 815 account_dialog_new_cb( NULL, window ); 814 816 } 815 817 … … 908 910 if ( cur_id == id ) 909 911 { 910 gtk_list_store_remove( GTK_LIST_STORE(model), &iter ); 911 model = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER( 912 gtk_tree_view_get_model(GTK_TREE_VIEW(tree)))); 913 gtk_list_store_clear(GTK_LIST_STORE(model)); 912 if ( !gtk_list_store_remove( GTK_LIST_STORE(model), &iter ) ) 913 gtk_tree_model_get_iter_first( model, &iter ); 914 gtk_combo_box_set_active_iter( GTK_COMBO_BOX(account_combo), &iter ); 915 GtkTreeModel *list = gtk_tree_model_filter_get_model( 916 GTK_TREE_MODEL_FILTER(gtk_tree_view_get_model( 917 GTK_TREE_VIEW(tree)))); 918 gtk_list_store_clear(GTK_LIST_STORE(list)); 919 914 920 return; 915 921 } trunk/src/widgets.h
r60 r61 11 11 void refilter_tree(GtkEditable*, gpointer); 12 12 13 void check_account_list(); 13 bool account_list_empty(); 14 void launch_new_account_dialog(); 14 15 void load_account_list(); 15 16 void add_account_to_combo(int);
