Re: Font selection panel as part of notebook



Eric,

On Sun, Sep 24, 2017 at 12:33 AM,  <cecashon aol com> wrote:

When I test it out it looks like the font selection widget doesn't work very
well in GTK3.

Not quite sure how you have it setup for GTK2 and what information you are
using to activate the apply button. The GValue that I get returned is a
PangoFcFamily*. I don't think this will help unless you pull in private data
from Pango. You don't like "The quick brown fox..."?

This is what I see on the Terminal:

igor@IgorDellGentoo ~ $ ./fontsel
Cursor Changed
43
((PangoFcFamily*) 0xba5a40)
Cursor Changed
43
((PangoFcFamily*) 0xba5a40)
Cursor Changed
43
((PangoFcFamily*) 0xba5a40)
Cursor Changed
43
((PangoFcFamily*) 0xba5a40)
Cursor Changed
44
((PangoFcFamily*) 0xba5a80)

It initially selects "Sans" and then I select "Serif".

I'm testing with GTK+2.24 on Gentoo Linux.

Thank you.


Eric

/*
   gcc -Wall font_selection1.c -o font_selection1 `pkg-config --cflags
--libs gtk+-3.0`
   gcc -Wall font_selection1.c -o font_selection1 `pkg-config --cflags
--libs gtk+-2.0`
   Tested with GTK3.18 on Ubuntu16.04
*/

#include<gtk/gtk.h>

static void font_name_change(GtkTreeView *view, gpointer user_data)
  {
    g_print("Cursor Changed\n");
    GtkTreeIter iter;
    GValue value=G_VALUE_INIT;
    GList *selRows = NULL;
    GtkTreeSelection *sel = gtk_tree_view_get_selection( view );
    GtkTreeModel *model = gtk_tree_view_get_model( view );
    selRows = gtk_tree_selection_get_selected_rows( sel, &model );
    if(selRows!=NULL)
      {
        gchar *string1=gtk_tree_path_to_string((GtkTreePath
*)selRows[0].data);
        g_print("%s\n", string1);
        g_free(string1);
        if(gtk_tree_model_get_iter( model, &iter, (GtkTreePath
*)selRows[0].data ))
          {
            gtk_tree_model_get_value( model, &iter, 0, &value );
            gchar *string2=g_strdup_value_contents(&value);
            g_print("%s\n", string2);
            g_free(string2);
          }
        else
          {
            g_print("Need a valid iter.\n");
          }
      }
   else
      {
        g_print("No list.\n");
      }

   g_list_free_full(selRows, (GDestroyNotify) gtk_tree_path_free);

  }
int main(int argc, char *argv[])
  {
    gtk_init (&argc, &argv);

    GtkWidget *window=gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "Font Selecton");
    gtk_window_set_default_size(GTK_WINDOW(window), 400, 400);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

    G_GNUC_BEGIN_IGNORE_DEPRECATIONS
    GtkWidget *m_fontPanel=gtk_font_selection_new();
    GtkWidget *names = gtk_font_selection_get_family_list((GtkFontSelection
*) m_fontPanel );
    //For GTK3.
    gtk_tree_view_set_activate_on_single_click(GTK_TREE_VIEW(names), TRUE);
    //GtkWidget *sizes = gtk_font_selection_get_size_entry((GtkFontSelection
*) m_fontPanel );
    g_signal_connect( names, "cursor-changed", G_CALLBACK(font_name_change),
NULL );
    G_GNUC_END_IGNORE_DEPRECATIONS

    gtk_container_add(GTK_CONTAINER(window), m_fontPanel);

    gtk_widget_show_all(window);

    gtk_main();

    return 0;
  }




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]