#include "inputDialog.h"

char prefixString[INPUT_MAX_LENGTH];
GtkWidget *inputField,*inputDialog;

void inputOkPressed(GtkWidget *widget,gpointer okFunction)
{
	void (*okFunc)();
	char returnString[INPUT_MAX_LENGTH];
	
	okFunc=okFunction;
	snprintf(returnString,INPUT_MAX_LENGTH,"%s%s",prefixString,
		gtk_entry_get_text(GTK_ENTRY(inputField)));
	okFunc(returnString);
	gtk_widget_destroy(inputDialog);
}

void showInputDialog(GtkSignalFunc okFunction,char *title,char *label,char *prefix)
{
	GtkWidget *okButton,*cancelButton;
	GtkWidget *labelWidget;
	GtkWidget *hbox;
	
	strncpy(prefixString,prefix,INPUT_MAX_LENGTH);
	
	inputDialog=gtk_dialog_new();
	gtk_window_set_title(GTK_WINDOW(inputDialog),title);

	okButton=gtk_button_new_with_label("Okay");
	gtk_box_pack_start(GTK_BOX(GTK_DIALOG(inputDialog)->action_area),
		okButton,TRUE,TRUE,0);
	gtk_signal_connect(GTK_OBJECT(okButton),"clicked",
		GTK_SIGNAL_FUNC(inputOkPressed),(gpointer)okFunction);
	gtk_widget_show(okButton);
	
	cancelButton=gtk_button_new_with_label("Cancel");
	gtk_box_pack_start(GTK_BOX(GTK_DIALOG(inputDialog)->action_area),
		cancelButton,TRUE,TRUE,0);
	gtk_signal_connect_object(GTK_OBJECT(cancelButton),"clicked",
		GTK_SIGNAL_FUNC(gtk_widget_destroy),GTK_OBJECT(inputDialog));
	gtk_widget_show(cancelButton);
	
	hbox=gtk_hbox_new(FALSE,0);
	gtk_container_set_border_width(GTK_CONTAINER(hbox),5);
	gtk_widget_show(hbox);
	gtk_box_pack_start(GTK_BOX(GTK_DIALOG(inputDialog)->vbox),
		hbox,TRUE,TRUE,0);
		
	labelWidget=gtk_label_new(label);
	gtk_widget_show(labelWidget);
	gtk_box_pack_start(GTK_BOX(hbox),labelWidget,FALSE,FALSE,0);
	
	inputField=gtk_entry_new();
	gtk_widget_show(inputField);
	gtk_signal_connect(GTK_OBJECT(inputField),"activate",
		GTK_SIGNAL_FUNC(inputOkPressed),(gpointer)okFunction);
	gtk_box_pack_start(GTK_BOX(hbox),inputField,TRUE,TRUE,0);
	gtk_widget_grab_focus(inputField);

	gtk_container_set_focus_child(GTK_CONTAINER(hbox),inputField);
	gtk_container_set_focus_child(GTK_CONTAINER(inputDialog),inputField);
	
	gtk_window_set_modal(GTK_WINDOW(inputDialog),TRUE);
	gtk_widget_show(inputDialog);
}


syntax highlighted by Code2HTML, v. 0.9.1