Hi!
I am having a problem with a textview drag and drop operation.
What's happening is that when I drag a list of files on my textview widget the filenames are getting put in the widget and I am trying to override this behavior.
Code:
void
on_textview1_drag_data_received(GtkWidget * widget,
GdkDragContext * drag_context,
gint x,
gint y,
GtkSelectionData * data,
guint info, guint time, gpointer user_data)
{
if (data == NULL)
return;
g_message("Got Drag-Data-Received");
build_html(widget, data->data);
gtk_drag_finish(drag_context, TRUE, FALSE, time);
}
///////////////////////////////////////////////////
void build_html(GtkWidget *w, guchar *data)
{
GtkTextView *textview1 = GTK_TEXT_VIEW(w);
GtkTextBuffer *output_buffer = gtk_text_view_get_buffer(textview1);
GtkTextIter iter_start;
GtkTextIter iter_stop;
gchar *input_ptr = NULL;
gchar *temp_ptr = NULL;
gchar *output_ptr = NULL;
gint i;
gchar **vec = NULL;
GList *file_list = NULL;
GString *html_string = NULL;
struct tm *tm_ptr;
time_t now;
input_ptr = (gchar *)data;
vec = g_strsplit(input_ptr, "\n", -1);
if (vec == NULL)
return;
for (i = 0; vec[i]; i++)
{
temp_ptr = vec[i];
output_ptr = g_strrstr(temp_ptr, "/");
if (output_ptr != NULL)
{
g_strstrip(output_ptr);
file_list = g_list_append(file_list, output_ptr);
}
}
now = time(NULL);
tm_ptr = localtime(&now);
html_string = g_string_new("<HTML>\n");
g_string_append(html_string, "<CENTER>\n");
g_string_append(html_string, "<TITLE>");
g_string_append(html_string, "Recent Pictures (");
g_string_append_printf(html_string, "%2.2d/%2.2d/%4.4d",
tm_ptr->tm_mon+1, tm_ptr->tm_mday, (tm_ptr->tm_year + 1900));
g_string_append(html_string, ")</TITLE>\n");
g_string_append(html_string, "<HEADER><H2>Recent Pictures (");
g_string_append_printf(html_string, "%2.2d/%2.2d/%4.4d",
tm_ptr->tm_mon+1, tm_ptr->tm_mday, (tm_ptr->tm_year + 1900));
g_string_append_printf(html_string, ")</H2></HEADER>\n");
g_string_append_printf(html_string, "</CENTER>\n");
g_string_append_printf(html_string, "<p><hr><br>\n");
g_string_append_printf(html_string,
"<BODY text=\"#FFFFFF\" bgcolor=\"#000000\" vlink=\"#FFFF00\" link=\"#FFFF00\" alink=\"#FF0000\">\n");
g_string_append(html_string, "<CENTER>\n");
g_list_foreach(file_list, build_html_file_output, html_string);
g_string_append(html_string, "</CENTER>\n");
g_string_append(html_string, "</p>\n");
g_string_append(html_string, "</BODY>\n");
g_string_append(html_string, "</HTML>\n");
//g_message(html_string->str);
gtk_text_buffer_set_text(output_buffer, html_string->str, html_string->len);
gtk_text_view_set_buffer(textview1, output_buffer);
g_string_free(html_string, TRUE);
}
My output in the textview widget is:
<HTML>
<CENTER>
<TITLE>Recent Pictures (01/04/2008)</TITLE>
<HEADER><H2>Recent Pictures (01/04/2008)</H2></HEADER>
</CENTER>
<p><hr><br>
<BODY text="#FFFFFF" bgcolor="#000000" vlink="#FFFF00" link="#FFFF00" alink="#FF0000">
<CENTER>
<IMG SRC="./RecentPix/IMG_0123.JPG" alt="/IMG_0123.JPG">
<br><hr>
</CENTER>
</p>
</BODY>
</HTML>
file:///home/dave/src/htmlBuilder/src/IMG_0123.JPG
I am trying to get rid of the
file:///home/dave/src/htmlBuilder/src/IMG_0123.JPG.c
which is the default behavior on the textview.
Any help would be appreciated :)