Skip to content

Instantly share code, notes, and snippets.

@philippemilink
Created November 11, 2014 14:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save philippemilink/0619defd63f37721e133 to your computer and use it in GitHub Desktop.
Save philippemilink/0619defd63f37721e133 to your computer and use it in GitHub Desktop.
GTK+ drop file
#include <stdlib.h>
#include <gtk/gtk.h>
static void helloWorld (GtkWidget *wid, GtkWidget *win)
{
GtkWidget *dialog = NULL;
dialog = gtk_message_dialog_new (GTK_WINDOW (win), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "Hello World!");
gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
}
static void drag_data_received_handl(GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *selection_data, guint target_type, guint time, gpointer data)
{
printf("%s", (char*) gtk_selection_data_get_data(selection_data));
}
static GtkTargetEntry target_list[] = {
//{ "STRING", GTK_TARGET_OTHER_APP, 0 }
{ "STRING", 0, 0 }
};
int main (int argc, char *argv[])
{
GtkWidget *button = NULL;
GtkWidget *win = NULL;
GtkWidget *vbox = NULL;
/* Initialize GTK+ */
g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL);
gtk_init (&argc, &argv);
g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);
/* Create the main window */
win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_container_set_border_width (GTK_CONTAINER (win), 8);
gtk_window_set_title (GTK_WINDOW (win), "Hello World");
gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER);
gtk_widget_realize (win);
g_signal_connect (win, "destroy", gtk_main_quit, NULL);
/* Create a vertical box with buttons */
vbox = gtk_vbox_new (TRUE, 6);
gtk_container_add (GTK_CONTAINER (win), vbox);
button = gtk_button_new_with_label ("hsdf");
g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (helloWorld), (gpointer) win);
gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);
gtk_drag_dest_set(button,GTK_DEST_DEFAULT_ALL,target_list, 1,GDK_ACTION_LINK);
//gtk_drag_dest_set(button,GTK_DEST_DEFAULT_ALL,target_list, 1,GDK_ACTION_MOVE);
//gtk_drag_dest_set(button,GTK_DEST_DEFAULT_ALL,target_list, 1,GDK_ACTION_COPY);
//gtk_drag_dest_set(button,GTK_DEST_DEFAULT_ALL,target_list, 1,GDK_ACTION_ASK);
g_signal_connect (button, "drag-data-received", G_CALLBACK(drag_data_received_handl), NULL);
button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
g_signal_connect (button, "clicked", gtk_main_quit, NULL);
gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);
/* Enter the main loop */
gtk_widget_show_all (win);
gtk_main ();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment