/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * 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 Library 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include "callbacks.h" #include "interface.h" #include "support.h" #include #include #include #include "db-funcs.h" extern GtkWidget *GPE_DB_Main; extern GtkWidget *DBFileSelector; static gint DBTableListSelectedRow = -1; static gboolean MainMenuShown = FALSE; static GtkWidget **EditFields; gint DBSelected(gchar *dbname); void on_EntryCList_select_row (GtkCList *clist, gint row, gint column, GdkEvent *event, gpointer user_data); void on_EntryCList_unselect_row (GtkCList *clist, gint row, gint column, GdkEvent *event, gpointer user_data); void create_tabs(guint nrentries, gchar *names[]) { GtkWidget *widget; GtkWidget *notebook; GtkWidget *scrolled_window; GtkWidget *edit_table; GtkWidget *label; GtkWidget *entry; guint i; /* * First create the entries list in the second tab */ notebook=lookup_widget(GPE_DB_Main,"PseudoMain"); widget=gtk_clist_new_with_titles(nrentries, names); gtk_widget_set_name (widget, "EntryCList"); gtk_widget_ref(widget); gtk_object_set_data_full (GTK_OBJECT (GPE_DB_Main), "EntryCList", widget, (GtkDestroyNotify) gtk_widget_unref); gtk_clist_column_titles_passive(GTK_CLIST(widget)); gtk_signal_connect (GTK_OBJECT (widget), "select_row", GTK_SIGNAL_FUNC (on_EntryCList_select_row), NULL); gtk_signal_connect (GTK_OBJECT (widget), "unselect_row", GTK_SIGNAL_FUNC (on_EntryCList_unselect_row), NULL); gtk_widget_show(widget); scrolled_window=gtk_scrolled_window_new(NULL,NULL); gtk_widget_set_name(scrolled_window,"Entries"); gtk_widget_ref(scrolled_window); gtk_widget_show(scrolled_window); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(scrolled_window),widget); gtk_container_add(GTK_CONTAINER(notebook),scrolled_window); widget=gtk_label_new(_("Entries")); gtk_widget_show(widget); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 1), widget); /* * Second create the edit tab */ scrolled_window=gtk_scrolled_window_new(NULL,NULL); gtk_widget_set_name(scrolled_window,"EntryEdit"); gtk_widget_ref(scrolled_window); gtk_object_set_data_full (GTK_OBJECT (GPE_DB_Main), "EntryEdit", scrolled_window, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(scrolled_window); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); edit_table=gtk_table_new(nrentries,2,FALSE); gtk_widget_ref(edit_table); gtk_widget_show(edit_table); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window), edit_table); EditFields=(GtkWidget **)malloc(nrentries * sizeof(GtkWidget *)); for (i=0; i 0) { #ifdef DEBUG gint i; for (i=0; i 0) { #ifdef DEBUG gint i; for (i=0; ikeyval == 0x1008ff1a) { GtkWidget *MainMenu; MainMenu=lookup_widget(GTK_WIDGET(widget),"MainMenu"); if (MainMenuShown) { gtk_widget_hide(MainMenu); MainMenuShown = FALSE; } else { gtk_widget_show(MainMenu); MainMenuShown = TRUE; } return TRUE; } return FALSE; } void on_MainMenu_deactivate (GtkMenuShell *menushell, gpointer user_data) { GtkWidget *MainMenu; MainMenu=lookup_widget(GTK_WIDGET(menushell),"MainMenu"); if (MainMenuShown) { gtk_widget_hide(MainMenu); MainMenuShown = FALSE; } else { gtk_widget_show(MainMenu); MainMenuShown = TRUE; } } gboolean on_GPE_DB_Main_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { #ifdef DEBUG g_print("button_press_event from button %d\n",event->button); #endif if (event->button == 3) { GtkWidget *MainMenu; MainMenu=lookup_widget(GTK_WIDGET(widget),"MainMenu"); if (MainMenuShown) { gtk_widget_hide(MainMenu); MainMenuShown = FALSE; } else { gtk_widget_show(MainMenu); MainMenuShown = TRUE; } } return FALSE; } void on_EntryCList_select_row (GtkCList *clist, gint row, gint column, GdkEvent *event, gpointer user_data) { gint i; gchar *entry; GtkWidget *PseudoMain; #ifdef DEBUG g_print("row %d selected, %d columns\n",row,clist->columns); #endif for (i=0; icolumns; i++) { gtk_clist_get_text(clist, row, i, &entry); gtk_entry_set_text(GTK_ENTRY(EditFields[i]), entry); } PseudoMain=lookup_widget(GPE_DB_Main, "PseudoMain"); gtk_notebook_set_page(GTK_NOTEBOOK(PseudoMain), 2); } void on_EntryCList_unselect_row (GtkCList *clist, gint row, gint column, GdkEvent *event, gpointer user_data) { #ifdef DEBUG g_print("row %d unselected\n",row); #endif } void on_CloseDB_clicked (GtkButton *button, gpointer user_data) { GtkWidget *DBTableCList; gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); DBTableCList=lookup_widget(GTK_WIDGET(button), "DBTableCList"); gtk_clist_clear(GTK_CLIST(DBTableCList)); close_db(); }