rendered paste body// testing & playing with pango :-)
#include <gtk/gtk.h>
#include <pango/pango.h>
// signal handler(s)
gboolean handle_delete_event(GtkWidget *widget, GdkEvent *event, gpointer data)
{
return FALSE;
}
gboolean handle_destroy(GtkWidget *widget, gpointer data)
{
gtk_main_quit();
}
void handle_context_changed_style(GtkWidget *widget, GtkStyle style, gpointer layout)
{
g_print("Entering style\n");
if(NULL == layout)
g_print("style : layout is null\n");
PangoLayout *pg_layout = (PangoLayout *)layout;
g_print("from layout : %s\n", pango_layout_get_text(pg_layout));
pango_layout_set_text(pg_layout, "This is a string", -1);
//pango_layout_context_changed(pg_layout);
g_print("Exiting style\n");
}
void handle_context_changed_dir(GtkWidget *widget, GtkTextDirection dir, gpointer layout)
{
g_print("Entering direction\n");
if(NULL == layout)
g_print("direction : layout is null\n");
PangoLayout *pg_layout = (PangoLayout *)layout;
pango_layout_context_changed(pg_layout);
g_print("Exiting direction\n");
}
int main(int argc, char *argv[])
{
GtkWidget *window = NULL;
GtkWidget *entry = NULL;
gchar *pango_str = NULL;
/* Pango stuff */
PangoLayout *pg_layout = NULL;
PangoFont *pg_font = NULL;
PangoFontDescription *pg_desc = NULL;
// setup GTK environment
gtk_init(&argc, &argv);
// create a window & attach required signals
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Pango example");
gtk_window_set_default_size(GTK_WINDOW(window), 200, 100);
gtk_signal_connect(GTK_OBJECT(window), "delete-event", GTK_SIGNAL_FUNC(handle_delete_event), NULL);
gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(handle_destroy), NULL);
entry = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entry), "Junk Stuff");
pg_layout = gtk_widget_create_pango_layout(entry, "Junk Stuff");
pango_layout_set_text(pg_layout, "setted form main", -1);
pg_desc = pango_font_description_from_string("Serif 10");
pg_font = pango_context_load_font(pango_layout_get_context(pg_layout), pg_desc);
if(NULL == pg_font)
g_print("Sorry dude, problem loading font :-P\n");
else
g_print("Hurray! Font loaded :-)\n");
// let the widget know the change in layout
gtk_signal_connect(GTK_OBJECT(entry), "style-set", GTK_SIGNAL_FUNC(handle_context_changed_style), pg_layout);
gtk_signal_connect(GTK_OBJECT(entry), "direction-changed", GTK_SIGNAL_FUNC(handle_context_changed_dir), pg_layout);
// add the pango'ised string & show it
gtk_container_add(GTK_CONTAINER(window), entry);
gtk_widget_show_all(window);
gtk_main();
}