void regret(){ switch(undo.type){ case 0: //print ut no more regrets puts("INGET MER ATT ÅNGRA"); break; case 1: remove_product(amount-1); break; case 2: add_good(undo.copy); break; case 3: *undo.merch = undo.copy; break; default: //error break; } undo.type = 0; }
void remove_product_interf() { puts("Ta bort en vara"); puts("Välj en vara att ta bort:"); int i = list_products(); if(i > 0 && i < amount){ print_product(good[i]); char q = ask_question_char("Ta bort varan? [J]a,[N]ej","JN"); if(q == 'J'){ remove_product(i); } } }
void perform_uninstall_slot(GtkWidget* w, gpointer data) { GtkWidget *notebook; GtkWidget *progress; GtkWidget *widget; GList *list, *poopy, *clist; GtkWidget *button; component_list *component; size_t size, total; char text[1024]; const char *message; /* Set through environment to hide questions, and assume Yes */ int show_messages; const char *env; show_messages = 1; env = getenv("SETUP_NO_PROMPT"); if ( env && atoi(env) ) show_messages = 0; /* First switch to the next notebook page */ notebook = glade_xml_get_widget(uninstall_glade, "uninstall_notebook"); gtk_notebook_set_page(GTK_NOTEBOOK(notebook), 1); widget = glade_xml_get_widget(uninstall_glade, "finished_button"); if ( widget ) { gtk_button_set_sensitive(widget, FALSE); } /* Now uninstall all the selected components */ progress = glade_xml_get_widget(uninstall_glade, "uninstall_progress"); size = 0; total = calculate_recovered_space(); widget = glade_xml_get_widget(uninstall_glade, "uninstall_vbox"); list = gtk_container_children(GTK_CONTAINER(widget)); while ( list && ! uninstall_cancelled ) { widget = GTK_WIDGET(list->data); poopy = gtk_container_children(GTK_CONTAINER(widget)); widget = GTK_WIDGET(poopy->data); /* First do the addon components */ clist = gtk_container_children(GTK_CONTAINER(widget)); while ( clist && ! uninstall_cancelled ) { button = GTK_WIDGET(clist->data); if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)) ) { component = gtk_object_get_data(GTK_OBJECT(button), "data"); if ( loki_isdefault_component(component->component) ) { clist = clist->next; continue; } /* Put up the status */ snprintf(text, sizeof(text), "%s: %s", component->info->description, loki_getname_component(component->component)); set_status_text(text); /* See if the user wants to cancel the uninstall */ while( gtk_events_pending() ) { gtk_main_iteration(); } /* Display an optional message to the user */ message = loki_getmessage_component(component->component); if (show_messages && message && !display_message(message, BUTTON_OK|BUTTON_ABORT) ) { clist = clist->next; uninstall_cancelled = 1; break; } /* Remove the component */ if ( ! uninstall_component(component->component, component->info) ) { uninstall_cancelled = 2; snprintf(text, sizeof(text), _("Uninstallation of component %s has failed!\n" "The whole uninstallation may be incomplete.\n"), loki_getname_component(component->component)); display_message(text, BUTTON_ABORT); break; } /* Update the progress bar */ if ( total && progress ) { size += component->size/1024; gtk_progress_set_percentage(GTK_PROGRESS(progress), (float)size/total); } gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE); /* See if the user wants to cancel the uninstall */ while( gtk_events_pending() ) { gtk_main_iteration(); } } clist = clist->next; } /* Now do the primary components */ clist = gtk_container_children(GTK_CONTAINER(widget)); while ( clist && ! uninstall_cancelled ) { button = GTK_WIDGET(clist->data); if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)) ) { component = gtk_object_get_data(GTK_OBJECT(button), "data"); if ( ! loki_isdefault_component(component->component) ) { clist = clist->next; continue; } /* Put up the status */ strncpy(text, component->info->description, sizeof(text)); set_status_text(text); /* See if the user wants to cancel the uninstall */ while( gtk_events_pending() ) { gtk_main_iteration(); } /* Display an optional message to the user */ message = loki_getmessage_component(component->component); if ( message && !display_message(message, BUTTON_OK|BUTTON_ABORT) ) { clist = clist->next; uninstall_cancelled = 1; break; } /* Remove the component */ if ( ! perform_uninstall(component->product, component->info, 0) ) { uninstall_cancelled = 2; snprintf(text, sizeof(text), _("Uninstallation of product %s has failed!\n" "Aborting the rest of the uninstallation.\n"), component->info->description); display_message(text, BUTTON_ABORT); break; } remove_product(component->product); /* Update the progress bar */ if ( total && progress ) { size += component->size/1024; gtk_progress_set_percentage(GTK_PROGRESS(progress), (float)size/total); } /* See if the user wants to cancel the uninstall */ while( gtk_events_pending() ) { gtk_main_iteration(); } break; } clist = clist->next; } list = list->next; } switch ( uninstall_cancelled ) { case 1: set_status_text(_("Uninstall cancelled")); break; case 2: set_status_text(_("Uninstall aborted")); break; default: set_status_text(_("Uninstall complete")); gtk_progress_set_percentage(GTK_PROGRESS(progress), 1.0f); break; } widget = glade_xml_get_widget(uninstall_glade, "cancel_button"); if ( widget ) { gtk_button_set_sensitive(widget, FALSE); } widget = glade_xml_get_widget(uninstall_glade, "finished_button"); if ( widget ) { gtk_button_set_sensitive(widget, TRUE); } }