Hi all: I'm almost a virgin to gtk. And I made my first GUI, here's the code:
Code:
#include <gtk/gtk.h>
GtkWidget *edit1;
void callback (GtkWidget *widget, gpointer data) {
GtkWidget *dialog;
dialog = gtk_file_chooser_dialog_new("Open File", NULL, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL);
if (gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
char *filename;
filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
gtk_entry_set_text(GTK_ENTRY(edit1), filename);
}
gtk_widget_destroy (dialog);
}
gint delete_event(GtkWidget *widget, GdkEvent *event, gpointer data) {
return (FALSE);
}
void destroy (GtkWidget *widget, gpointer data) {
gtk_main_quit ();
}
int main(int argc, char* argv[]) {
GtkWidget *window;
GtkWidget *vbox1;
GtkWidget *hbox1;
GtkWidget *vbox2;
GtkWidget *button1;
GtkWidget *label1;
GtkWidget *label2;
GtkWidget *edit2;
gtk_init (&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "gMD5 v0.1 - TMNT");
gtk_window_set_default_size(GTK_WINDOW(window), 300, 100);
gtk_container_border_width(GTK_CONTAINER(window), 10);
gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(delete_event), NULL);
gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(destroy), NULL);
vbox1 = gtk_vbox_new(FALSE, 5);
hbox1 = gtk_hbox_new(FALSE, 5);
vbox2 = gtk_vbox_new(TRUE, 5);
gtk_container_add(GTK_CONTAINER(window), vbox1);
label1 = gtk_label_new("Selecciona el archivo:");
gtk_box_pack_start(GTK_BOX(vbox1), label1, FALSE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox1), hbox1, TRUE, FALSE, 0);
edit1 = gtk_entry_new();
gtk_box_pack_start(GTK_BOX(hbox1), edit1, FALSE, FALSE, 0);
button1 = gtk_button_new_with_label("Buscar...");
gtk_signal_connect (GTK_OBJECT(button1), "clicked", GTK_SIGNAL_FUNC(callback), (gpointer)"boo para data");
gtk_box_pack_start(GTK_BOX(hbox1), button1, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox1), vbox2, FALSE, FALSE, 0);
label2 = gtk_label_new("MD5 del fichero:");
gtk_box_pack_start(GTK_BOX(vbox2), label2, FALSE, FALSE, 0);
edit2 = gtk_entry_new();
gtk_box_pack_start(GTK_BOX(vbox2), edit2, FALSE, FALSE, 0);
gtk_widget_show_all(window);
gtk_main ();
return 0;
}
The result is this image:
My questions is:
a) How can I align to the left the labels.
b) How can I align to the right the button so the first entry becomes more larger.
c) Is there a way to put widgets (labels, entries, buttons, etc) based on (X,Y) params instead of using hbox and vbox?
Thanks