aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/e-meeting-edit.c
diff options
context:
space:
mode:
authorJesse Pavel <jpavel@src.gnome.org>2000-09-28 06:17:19 +0800
committerJesse Pavel <jpavel@src.gnome.org>2000-09-28 06:17:19 +0800
commit98a3ac0e6c55a4bcb3c043b916c5df1faff98f7c (patch)
tree21e8d6dd74df2f1bae0dc9b76492460682a3f247 /calendar/gui/e-meeting-edit.c
parentabd6186b370629d256780c022db5e303dad1ff41 (diff)
downloadgsoc2013-evolution-98a3ac0e6c55a4bcb3c043b916c5df1faff98f7c.tar.gz
gsoc2013-evolution-98a3ac0e6c55a4bcb3c043b916c5df1faff98f7c.tar.zst
gsoc2013-evolution-98a3ac0e6c55a4bcb3c043b916c5df1faff98f7c.zip
*** empty log message ***
svn path=/trunk/; revision=5603
Diffstat (limited to 'calendar/gui/e-meeting-edit.c')
-rw-r--r--calendar/gui/e-meeting-edit.c257
1 files changed, 257 insertions, 0 deletions
diff --git a/calendar/gui/e-meeting-edit.c b/calendar/gui/e-meeting-edit.c
new file mode 100644
index 0000000000..4b0499542a
--- /dev/null
+++ b/calendar/gui/e-meeting-edit.c
@@ -0,0 +1,257 @@
+/* Evolution calendar - Meeting editor dialog
+ *
+ * Copyright (C) 2000 Helix Code, Inc.
+ *
+ * Authors: Jesse Pavel <jpavel@helixcode.com>
+ *
+ * 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 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.
+ */
+
+#include <config.h>
+#include <gnome.h>
+#include <glade/glade.h>
+#include <icaltypes.h>
+#include "e-meeting-edit.h"
+
+#define E_MEETING_GLADE_XML "e-meeting-dialog.glade"
+
+#define E_MEETING_DEBUG
+
+/* These are the widgets to be used in the GUI. */
+static GladeXML *xml;
+static GtkWidget *meeting_window;
+static GtkWidget *attendee_list;
+static GtkWidget *address_entry;
+static GtkWidget *add_dialog;
+static gint selected_row;
+
+
+static gboolean
+window_delete_cb (GtkWidget *widget,
+ GdkEvent *event,
+ gpointer data)
+{
+
+#ifdef E_MEETING_DEBUG
+ g_print ("e-meeting-edit.c: The main window received a delete event.\n");
+#endif
+
+ return (FALSE);
+}
+
+static void
+window_destroy_cb (GtkWidget *widget,
+ gpointer data)
+{
+#ifdef E_MEETING_DEBUG
+ g_print ("e-meeting-edit.c: The main window received a destroy event.\n");
+#endif
+ gtk_main_quit ();
+ return;
+}
+
+static void
+add_button_clicked_cb (GtkWidget *widget, gpointer data)
+{
+ gint button_num;
+
+#ifdef E_MEETING_DEBUG
+ g_print ("e-meeting-edit.c: the add button was clicked.\n");
+#endif
+ if (add_dialog == NULL || address_entry == NULL) {
+ add_dialog = glade_xml_get_widget (xml, "add_dialog");
+ address_entry = glade_xml_get_widget (xml, "address_entry");
+
+ gnome_dialog_set_close (GNOME_DIALOG (add_dialog), TRUE);
+ gnome_dialog_editable_enters (GNOME_DIALOG (add_dialog), GTK_EDITABLE (address_entry));
+ gnome_dialog_close_hides (GNOME_DIALOG (add_dialog), TRUE);
+ gnome_dialog_set_default (GNOME_DIALOG (add_dialog), 0);
+ }
+
+ g_return_if_fail (add_dialog != NULL);
+ g_return_if_fail (address_entry != NULL);
+
+ gtk_widget_show (add_dialog);
+
+ button_num = gnome_dialog_run (GNOME_DIALOG (add_dialog));
+
+ if (button_num == 0) {
+ /* The user pressed Okay--let's add it to our list. */
+ gchar temp_stat[] = "Needs action";
+ gchar *address;
+ gchar * row_text[2];
+
+ address = gtk_entry_get_text (GTK_ENTRY (address_entry));
+ row_text[0] = address;
+ row_text[1] = temp_stat;
+
+ gtk_clist_append (GTK_CLIST (attendee_list), row_text);
+ }
+
+ gtk_entry_set_text (GTK_ENTRY (address_entry), "");
+}
+
+static void
+delete_button_clicked_cb (GtkWidget *widget, gpointer data)
+{
+ if (selected_row < 0) {
+ GtkWidget *dialog;
+
+ dialog = gnome_warning_dialog_parented ("You must select an entry to delete.",
+ GTK_WINDOW (add_dialog));
+ gnome_dialog_run (GNOME_DIALOG(dialog));
+ }
+ else {
+ gtk_clist_remove (GTK_CLIST (attendee_list), selected_row);
+ selected_row = -1;
+ }
+}
+
+static void
+edit_button_clicked_cb (GtkWidget *widget, gpointer data)
+{
+ if (selected_row < 0) {
+ GtkWidget *dialog;
+
+ dialog = gnome_warning_dialog_parented ("You must select an entry to edit.",
+ GTK_WINDOW (add_dialog));
+ gnome_dialog_run (GNOME_DIALOG(dialog));
+ return;
+ }
+ else {
+ gchar *text[2];
+ gint cntr;
+ gint button_num;
+
+ for (cntr = 0; cntr < 2; cntr++) {
+ gtk_clist_get_text (GTK_CLIST (attendee_list),
+ selected_row,
+ cntr,
+ &text[cntr]);
+ }
+
+ if (add_dialog == NULL || address_entry == NULL) {
+ add_dialog = glade_xml_get_widget (xml, "add_dialog");
+ address_entry = glade_xml_get_widget (xml, "address_entry");
+
+ gnome_dialog_set_close (GNOME_DIALOG (add_dialog), TRUE);
+ gnome_dialog_editable_enters (GNOME_DIALOG (add_dialog), GTK_EDITABLE (address_entry));
+ gnome_dialog_close_hides (GNOME_DIALOG (add_dialog), TRUE);
+ gnome_dialog_set_default (GNOME_DIALOG (add_dialog), 0);
+ }
+
+ gtk_entry_set_text (GTK_ENTRY (address_entry), text[0]);
+
+ gtk_widget_show (add_dialog);
+
+ button_num = gnome_dialog_run (GNOME_DIALOG (add_dialog));
+
+ if (button_num == 0) {
+ gchar *new_text;
+
+ new_text = gtk_entry_get_text (GTK_ENTRY (address_entry));
+
+ gtk_clist_set_text (GTK_CLIST (attendee_list),
+ selected_row,
+ 0,
+ new_text);
+ }
+
+ gtk_entry_set_text (GTK_ENTRY (address_entry), "");
+ }
+}
+
+
+
+
+
+
+static void list_row_select_cb (GtkWidget *widget,
+ gint row,
+ gint column,
+ GdkEventButton *event,
+ gpointer data)
+{
+ selected_row = row;
+}
+
+static void
+reset_widgets (void)
+{
+ xml = NULL;
+ meeting_window = NULL;
+ attendee_list = NULL;
+ address_entry = NULL;
+ add_dialog = NULL;
+ selected_row = -1;
+}
+
+void
+e_meeting_edit (CalComponent *comp, CalClient *client)
+{
+ GtkWidget *add_button, *delete_button, *edit_button;
+
+ reset_widgets ();
+
+ xml = glade_xml_new (EVOLUTION_GLADEDIR "/" E_MEETING_GLADE_XML, NULL);
+
+ meeting_window = glade_xml_get_widget (xml, "meeting_window");
+ attendee_list = glade_xml_get_widget (xml, "attendee_list");
+
+ gtk_clist_set_column_justification (GTK_CLIST (attendee_list), 1, GTK_JUSTIFY_CENTER);
+
+ gtk_signal_connect (GTK_OBJECT (meeting_window), "delete_event",
+ GTK_SIGNAL_FUNC (window_delete_cb), NULL);
+
+ gtk_signal_connect_after (GTK_OBJECT (meeting_window), "delete_event",
+ GTK_SIGNAL_FUNC (window_destroy_cb), NULL);
+
+ gtk_signal_connect (GTK_OBJECT (meeting_window), "destroy_event",
+ GTK_SIGNAL_FUNC (window_destroy_cb), NULL);
+
+ gtk_signal_connect (GTK_OBJECT (attendee_list), "select_row",
+ GTK_SIGNAL_FUNC (list_row_select_cb), NULL);
+
+ add_button = glade_xml_get_widget (xml, "add_button");
+ delete_button = glade_xml_get_widget (xml, "delete_button");
+ edit_button = glade_xml_get_widget (xml, "edit_button");
+
+ gtk_signal_connect (GTK_OBJECT (add_button), "clicked",
+ GTK_SIGNAL_FUNC (add_button_clicked_cb), NULL);
+
+ gtk_signal_connect (GTK_OBJECT (delete_button), "clicked",
+ GTK_SIGNAL_FUNC (delete_button_clicked_cb), NULL);
+
+ gtk_signal_connect (GTK_OBJECT (edit_button), "clicked",
+ GTK_SIGNAL_FUNC (edit_button_clicked_cb), NULL);
+
+ gtk_widget_show (meeting_window);
+
+ gtk_main ();
+
+#ifdef E_MEETING_DEBUG
+ g_print ("e-meeting-edit.c: We've terminated the subsidiary gtk_main().\n");
+#endif
+
+ if (meeting_window != NULL)
+ gtk_widget_destroy (meeting_window);
+
+ if (add_dialog != NULL)
+ gtk_widget_destroy (add_dialog);
+
+
+
+ gtk_object_destroy (GTK_OBJECT (xml));
+}