re: tuning widgets base size



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);
    }

-- 
Garth Upshaw
Garth's KidStuff



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