summaryrefslogtreecommitdiff
path: root/src/tspi/gtk/callbacks.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tspi/gtk/callbacks.c')
-rw-r--r--src/tspi/gtk/callbacks.c163
1 files changed, 163 insertions, 0 deletions
diff --git a/src/tspi/gtk/callbacks.c b/src/tspi/gtk/callbacks.c
new file mode 100644
index 0000000..86570fc
--- /dev/null
+++ b/src/tspi/gtk/callbacks.c
@@ -0,0 +1,163 @@
+
+/*
+ * Licensed Materials - Property of IBM
+ *
+ * trousers - An open source TCG Software Stack
+ *
+ * (C) Copyright International Business Machines Corp. 2004
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <gtk/gtk.h>
+#include <string.h>
+
+#undef TRUE
+#undef FALSE
+
+#include "callbacks.h"
+#include "interface.h"
+#include "support.h"
+#include "trousers/tss.h"
+#include "trousers/trousers.h"
+#include "tsplog.h"
+
+
+/* Callbacks for the simple password dialog */
+
+void
+on_inputdialog1_destroy(GtkObject *object, struct userdata *user_data)
+{
+ gtk_widget_destroy(user_data->window);
+ gtk_main_quit();
+}
+
+
+void
+on_dialog1_close(GtkDialog *dialog, struct userdata *user_data)
+{
+ gtk_widget_destroy(user_data->window);
+ gtk_main_quit();
+}
+
+
+void
+on_cancelbutton1_clicked(GtkButton *button, struct userdata *user_data)
+{
+ LogDebugFn();
+ gtk_widget_destroy(user_data->window);
+ user_data->string_len = 0;
+ gtk_main_quit();
+}
+
+
+void
+on_okbutton1_clicked(GtkButton *button, struct userdata *user_data)
+{
+ const gchar *entry_text = gtk_entry_get_text (GTK_ENTRY(user_data->entry));
+
+ LogDebugFn();
+ user_data->string = (char *)Trspi_Native_To_UNICODE((BYTE *)entry_text,
+ &user_data->string_len);
+ gtk_widget_destroy(user_data->window);
+
+ gtk_main_quit();
+}
+
+
+gboolean
+enter_event(GtkWidget *widget, struct userdata *user_data)
+{
+ const gchar *entry_text = gtk_entry_get_text (GTK_ENTRY(user_data->entry));
+
+ LogDebugFn();
+ user_data->string = (char *)Trspi_Native_To_UNICODE((BYTE *)entry_text,
+ &user_data->string_len);
+ gtk_widget_destroy(user_data->window);
+
+ gtk_main_quit();
+ return TRUE;
+}
+
+
+/* Callbacks for the new password dialog */
+void
+on_entryPassword_activate(GtkEntry *entry, struct userdata *user_data)
+{
+ const gchar *entryPass_text = gtk_entry_get_text (GTK_ENTRY(user_data->entryPass));
+ const gchar *entryConf_text = gtk_entry_get_text (GTK_ENTRY(user_data->entryConf));
+ int len = strlen(entryConf_text);
+
+ if (strlen(entryConf_text) == strlen(entryPass_text)) {
+ if (!memcmp(entryPass_text, entryConf_text, len)) {
+ user_data->string = (char *)Trspi_Native_To_UNICODE((BYTE *)entryConf_text,
+ &user_data->string_len);
+ gtk_widget_destroy(user_data->window);
+ gtk_main_quit();
+
+ LogDebugFn("string len ptr: %p, value = %u", &user_data->string_len,
+ user_data->string_len);
+ return;
+ }
+ }
+
+ gtk_widget_grab_focus(user_data->entryConf);
+}
+
+void
+on_entryConfirm_activate(GtkEntry *entry, struct userdata *user_data)
+{
+ const gchar *entryPass_text = gtk_entry_get_text (GTK_ENTRY(user_data->entryPass));
+ const gchar *entryConf_text = gtk_entry_get_text (GTK_ENTRY(user_data->entryConf));
+ unsigned len = strlen(entryConf_text);
+
+ if (strlen(entryConf_text) == strlen(entryPass_text)) {
+ if (!memcmp(entryPass_text, entryConf_text, len)) {
+ user_data->string = (char *)Trspi_Native_To_UNICODE((BYTE *)entryConf_text,
+ &user_data->string_len);
+ gtk_widget_destroy(user_data->window);
+ gtk_main_quit();
+
+ LogDebugFn("string len ptr: %p, value = %u", &user_data->string_len,
+ user_data->string_len);
+ return;
+ }
+ }
+
+ gtk_widget_grab_focus(user_data->entryPass);
+}
+
+void
+on_cancelbutton2_clicked(GtkButton *button, struct userdata *user_data)
+{
+ LogDebugFn();
+ gtk_widget_destroy(user_data->window);
+ user_data->string_len = 0;
+ gtk_main_quit();
+}
+
+void
+on_okbutton2_clicked(GtkButton *button, struct userdata *user_data)
+{
+ const gchar *entryPass_text = gtk_entry_get_text (GTK_ENTRY(user_data->entryPass));
+ const gchar *entryConf_text = gtk_entry_get_text (GTK_ENTRY(user_data->entryConf));
+ unsigned len = strlen(entryConf_text);
+
+ if (strlen(entryConf_text) == strlen(entryPass_text)) {
+ if (!memcmp(entryPass_text, entryConf_text, len)) {
+ user_data->string = (char *)Trspi_Native_To_UNICODE((BYTE *)entryConf_text,
+ &user_data->string_len);
+ gtk_widget_destroy(user_data->window);
+ gtk_main_quit();
+
+ LogDebugFn("string len ptr: %p, value = %u", &user_data->string_len,
+ user_data->string_len);
+ return;
+ }
+ }
+
+ gtk_widget_grab_focus(user_data->entryPass);
+}