X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fgnome2-console%2Fcallbacks.c;h=7e1295a7923d7267f3463bd984d70c05ffd416c6;hb=377bf815eefec1e61a1e97469ae972a52aefde58;hp=fc03aba7342bd1c791327037c9a98c7d4adc717e;hpb=47b68a3348bc5e83f03fac6515cf5f7add8e20cf;p=bacula%2Fbacula diff --git a/bacula/src/gnome2-console/callbacks.c b/bacula/src/gnome2-console/callbacks.c index fc03aba734..7e1295a792 100644 --- a/bacula/src/gnome2-console/callbacks.c +++ b/bacula/src/gnome2-console/callbacks.c @@ -1,6 +1,34 @@ -/* +/* * Version $Id$ */ +/* + Bacula® - The Network Backup Solution + + Copyright (C) 2000-2006 Free Software Foundation Europe e.V. + + The main author of Bacula is Kern Sibbald, with contributions from + many others, a complete list can be found in the file AUTHORS. + This program is Free Software; you can redistribute it and/or + modify it under the terms of version two of the GNU General Public + License as published by the Free Software Foundation and included + in the file LICENSE. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. + + Bacula® is a registered trademark of Kern Sibbald. + The licensor of Bacula is the Free Software Foundation Europe + (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, + Switzerland, email:ftf@fsfeurope.org. +*/ + #ifdef HAVE_CONFIG_H # include @@ -14,16 +42,21 @@ #include "support.h" #define KEY_Enter 65293 -#define KEY_Up 65362 +#define KEY_Up 65362 #define KEY_Down 65364 #define KEY_Left 65361 #define KEY_Right 65363 +void terminate_console(int sig); + +extern "C" gint compare_func(const void *data1, const void *data2); + gboolean on_console_delete_event(GtkWidget *widget, GdkEvent *event, gpointer user_data) { gtk_main_quit(); - return FALSE; + terminate_console(0); + return TRUE; } void @@ -100,8 +133,8 @@ on_connect_button_clicked(GtkButton *button, gpointer user_data) } } -/* Define max length of history and how many to delete when it gets there. - * If you make HIST_DEL > HIST_MAX, you shoot yourself in the foot. +/* Define max length of history and how many to delete when it gets there. + * If you make HIST_DEL > HIST_MAX, you shoot yourself in the foot. */ #define HIST_MAX 2500 #define HIST_DEL 500 @@ -122,13 +155,13 @@ static void add_to_history(gchar *ecmd) int i; GList *hp; for (i=0; idata); - hist = g_list_remove(hist, hp->data); + hp = g_list_next(hist); + free(hp->data); + hist = g_list_remove(hist, hp->data); } hist_len -= HIST_DEL; } - hc = NULL; + hc = NULL; } /* @@ -148,22 +181,34 @@ on_entry1_key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer user_d gtk_entry_set_text((GtkEntry *)entry1, ""); } else if (event->keyval == KEY_Up) { if (!hc) { - hc = g_list_last(hist); + if (!hist) { + return FALSE; + } + hc = g_list_last(hist); } else { - hc = g_list_previous(hc); + hc = g_list_previous(hc); } if (!hc) { - hc = g_list_first(hist); + if (!hist) { + return FALSE; + } + hc = g_list_first(hist); } gtk_entry_set_text((GtkEntry *)entry1, (gchar *)hc->data); } else if (event->keyval == KEY_Down) { if (!hc) { - hc = g_list_first(hist); + if (!hist) { + return FALSE; + } + hc = g_list_first(hist); } else { - hc = g_list_next(hc); + hc = g_list_next(hc); } if (!hc) { - hc = g_list_last(hist); + if (!hist) { + return FALSE; + } + hc = g_list_last(hist); } gtk_entry_set_text((GtkEntry *)entry1, (gchar *)hc->data); } @@ -222,7 +267,8 @@ on_select_director_cancel_clicked(GtkButton *button, gpointer user_data) /* * Compare list string items */ -static gint compare_func(const void *data1, const void *data2) +extern "C" +gint compare_func(const void *data1, const void *data2) { return strcmp((const char *)data1, (const char *)data2); } @@ -276,30 +322,30 @@ static void set_run_defaults() while (bnet_recv(UA_sock) > 0) { def = strchr(UA_sock->msg, '='); if (!def) { - continue; + continue; } *def++ = 0; if (strcmp(UA_sock->msg, "job") == 0 || strcmp(UA_sock->msg, "when") == 0) { - continue; + continue; } /* Where is an entry box */ if (strcmp(UA_sock->msg, "where") == 0) { entry = lookup_widget(run_dialog, "entry_where"); - gtk_entry_set_text(GTK_ENTRY(entry), def); - continue; + gtk_entry_set_text(GTK_ENTRY(entry), def); + continue; } /* Now handle combo boxes */ list = find_combo_list(UA_sock->msg); if (!list) { - continue; + continue; } item = g_list_find_custom(list, def, compare_func); bsnprintf(cmd, sizeof(cmd), "combo_%s", UA_sock->msg); combo = lookup_widget(run_dialog, cmd); if (!combo) { - continue; + continue; } pos = g_list_position(list, item); gtk_list_select_item(GTK_LIST(GTK_COMBO(combo)->list), pos); @@ -329,7 +375,7 @@ on_run_button_clicked(GtkButton *button, gpointer user_data) } -static char *get_combo_text(GtkWidget *dialog, char *combo_name) +static char *get_combo_text(GtkWidget *dialog, const char *combo_name) { GtkWidget *combo; combo = lookup_widget(dialog, combo_name); @@ -339,7 +385,7 @@ static char *get_combo_text(GtkWidget *dialog, char *combo_name) return (char *)gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(combo)->entry)); } -static char *get_entry_text(GtkWidget *dialog, char *entry_name) +static char *get_entry_text(GtkWidget *dialog, const char *entry_name) { GtkWidget *entry; entry = lookup_widget(dialog, entry_name); @@ -349,7 +395,7 @@ static char *get_entry_text(GtkWidget *dialog, char *entry_name) return (char *)gtk_entry_get_text(GTK_ENTRY(entry)); } -static char *get_spin_text(GtkWidget *dialog, char *spin_name) +static char *get_spin_text(GtkWidget *dialog, const char *spin_name) { GtkSpinButton *spin; spin = (GtkSpinButton *)lookup_widget(dialog, spin_name); @@ -365,8 +411,8 @@ static char *get_spin_text(GtkWidget *dialog, char *spin_name) void on_run_ok_clicked(GtkButton *button, gpointer user_data) { - char *job, *fileset, *level, *client, *pool, *when, *where, *storage; - + char *job, *fileset, *level, *client, *pool, *when, *where, *storage, *priority; + gtk_widget_hide(run_dialog); gtk_main_quit(); @@ -376,21 +422,22 @@ on_run_ok_clicked(GtkButton *button, gpointer user_data) pool = get_combo_text(run_dialog, "combo_pool"); storage = get_combo_text(run_dialog, "combo_storage"); level = get_combo_text(run_dialog, "combo_level"); - + priority = get_spin_text(run_dialog, "spinbutton1"); when = get_entry_text(run_dialog, "entry_when"); where = get_entry_text(run_dialog, "entry_where"); if (!job || !fileset || !client || !pool || !storage || - !level || !when || !where) { + !level || !priority || !when || !where) { set_status_ready(); return; } - - bsnprintf(cmd, sizeof(cmd), + + bsnprintf(cmd, sizeof(cmd), "run job=\"%s\" fileset=\"%s\" level=%s client=\"%s\" pool=\"%s\" " - "when=\"%s\" where=\"%s\" storage=\"%s\"", - job, fileset, level, client, pool, when, where, storage); + "when=\"%s\" where=\"%s\" storage=\"%s\" priority=\"%s\"\n", + job, fileset, level, client, pool, when, where, storage, priority); write_director(cmd); + set_text(cmd, strlen(cmd)); write_director("yes"); return; } @@ -458,11 +505,12 @@ on_label_ok_clicked(GtkButton *button, gpointer user_data) set_status_ready(); return; } - - bsnprintf(cmd, sizeof(cmd), - "label name=\"%s\" pool=\"%s\" storage=\"%s\" slot=%s", - volume, pool, storage, slot); + + bsnprintf(cmd, sizeof(cmd), + "label volume=\"%s\" pool=\"%s\" storage=\"%s\" slot=%s\n", + volume, pool, storage, slot); write_director(cmd); + set_text(cmd, strlen(cmd)); } @@ -494,13 +542,14 @@ on_select_files_button_clicked(GtkButton *button, gpointer user_data) set_status_ready(); return; } - - bsnprintf(cmd, sizeof(cmd), + + bsnprintf(cmd, sizeof(cmd), "restore select current fileset=\"%s\" client=\"%s\" pool=\"%s\" " - "storage=\"%s\"", fileset, client, pool, storage); + "storage=\"%s\"\n", fileset, client, pool, storage); write_director(cmd); + set_text(cmd, strlen(cmd)); gtk_widget_show(restore_file_selection); - select_restore_files(); /* put up select files dialog */ + select_restore_files(); /* put up select files dialog */ } void @@ -533,96 +582,96 @@ on_restore_files_delete_event(GtkWidget *widget, GdkEvent *event, gpointer user_ void -on_new1_activate (GtkMenuItem *menuitem, - gpointer user_data) +on_new1_activate (GtkMenuItem *menuitem, + gpointer user_data) { } void -on_open1_activate (GtkMenuItem *menuitem, - gpointer user_data) +on_open1_activate (GtkMenuItem *menuitem, + gpointer user_data) { } void -on_save1_activate (GtkMenuItem *menuitem, - gpointer user_data) +on_save1_activate (GtkMenuItem *menuitem, + gpointer user_data) { } void -on_save_as1_activate (GtkMenuItem *menuitem, - gpointer user_data) +on_save_as1_activate (GtkMenuItem *menuitem, + gpointer user_data) { } void -on_quit1_activate (GtkMenuItem *menuitem, - gpointer user_data) +on_quit1_activate (GtkMenuItem *menuitem, + gpointer user_data) { } void -on_cut2_activate (GtkMenuItem *menuitem, - gpointer user_data) +on_cut2_activate (GtkMenuItem *menuitem, + gpointer user_data) { } void -on_copy2_activate (GtkMenuItem *menuitem, - gpointer user_data) +on_copy2_activate (GtkMenuItem *menuitem, + gpointer user_data) { } void -on_paste2_activate (GtkMenuItem *menuitem, - gpointer user_data) +on_paste2_activate (GtkMenuItem *menuitem, + gpointer user_data) { } void -on_clear2_activate (GtkMenuItem *menuitem, - gpointer user_data) +on_clear2_activate (GtkMenuItem *menuitem, + gpointer user_data) { } void -on_properties1_activate (GtkMenuItem *menuitem, - gpointer user_data) +on_properties1_activate (GtkMenuItem *menuitem, + gpointer user_data) { } void -on_preferences2_activate (GtkMenuItem *menuitem, - gpointer user_data) +on_preferences2_activate (GtkMenuItem *menuitem, + gpointer user_data) { } void -on_about2_activate (GtkMenuItem *menuitem, - gpointer user_data) +on_about2_activate (GtkMenuItem *menuitem, + gpointer user_data) { } @@ -647,7 +696,7 @@ void set_restore_dialog_defaults() while (bnet_recv(UA_sock) > 0) { def = strchr(UA_sock->msg, '='); if (!def) { - continue; + continue; } *def++ = 0; if (strcmp(UA_sock->msg, "job") == 0 || @@ -656,19 +705,19 @@ void set_restore_dialog_defaults() strcmp(UA_sock->msg, "messages") == 0 || strcmp(UA_sock->msg, "level") == 0 || strcmp(UA_sock->msg, "type") == 0) { - continue; + continue; } /* Now handle combo boxes */ list = find_combo_list(UA_sock->msg); if (!list) { - continue; + continue; } item = g_list_find_custom(list, def, compare_func); bsnprintf(cmd, sizeof(cmd), "combo_restore_%s", UA_sock->msg); combo = lookup_widget(restore_dialog, cmd); if (!combo) { - continue; + continue; } pos = g_list_position(list, item); gtk_list_select_item(GTK_LIST(GTK_COMBO(combo)->list), pos); @@ -683,3 +732,9 @@ on_restore_job_entry_changed(GtkEditable *editable, gpointer user_data) /* Set defaults that correspond to new job selection */ set_restore_dialog_defaults(); } + +void +on_dir_button_clicked(GtkButton *toolbutton, gpointer user_data) +{ + write_director("status dir"); +}