Re: tuning widgets base size



On Monday 02 March 2009, Garth's KidStuff wrote:
But this doesn't work. What is the right solution of my problem? Finaly I
want make widgets smaller than default widgets, like
toolbox widgets in The GIMP.


void LXDialog::ShrinkWidgetFont(
    Gtk::Widget* pCtrl, // [in] Control to shrink the text of
    real scale) // [in] scale factor (should be < 1.0 to shrink control)
{
    // Different kinds of controls need different sub-objects' font resized
    Gtk::Frame* pFrame = dynamic_cast<Gtk::Frame*>(pCtrl);
    if (NULL != pFrame) // e.g. Frames have label widgets they use to
display their text
        pCtrl = pFrame->get_label_widget();
    else
    { // ...and radio buttons and check buttons are simply containers with a
single label child
        Gtk::Bin* pBin = dynamic_cast<Gtk::Bin*>(pCtrl);
        if (NULL != pBin)
            pCtrl = pBin->get_child();
    }

    Gtk::Label* pLabel = dynamic_cast<Gtk::Label*>(pCtrl);
    if (NULL != pLabel)
    { // Other controls might not have a label whose font we need to set
        Glib::RefPtr<Pango::Context> pPangoContext =
pLabel->get_pango_context();
        Pango::FontDescription fontD =
pPangoContext->get_font_description();
        fontD.set_size((int)(scale * fontD.get_size()));
        pLabel->modify_font(fontD);
    }


Thanks, I've already found similar solution for gtk - gtk_widget_modify_font();

BTW, manual gives about get_font_description():

"A pointer to the context's default font description. This value must not be modified or freed"

According to this words object fontD shouldn't be mofified. Am I right?
 





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