Re: modify_style(Gtk::rcStyle) --VS-- set_style(Gtk::Style)



So, whatever are my reasons to use set_style instead of directly set_bg, etc.. on my gtk widgets,
could anyone tell me why
myPushButton->set_style(myStyle);
has a real effect on my pushButton while
myPushButtons->modify_style(myRcStyle);
on the same button, does absolutely nothing?

(both myStyle and myRcStyle have a background and foreground set the same way :
my(Rc)Style->set_fg(Gtk::STATE_NORMAL, anyGdkColor);

Any clue is welcome!

Thanks


On Jan 22, 2008 4:05 PM, Yannick Barbeaux <ybarbeaux gmail com> wrote:
well, thanks for those explanations but i guess i should explain a bit more the purpose of my questions,
in fact i am creating a graphic library with a common interface encapsulating gtkmm on one side and QT on the other side,
that is why i need something more general to modify the widget properties, without modifying the rc file directly.
In my toolkit, i want to create a so-called "palette" (that corresponds to a Style or RcStyle in gtkmm),
modify the properties of the palette (palette->set_background(myColor) for example)
then associate the palette to the widgets of my toolkit.
In Qt, thhis object is a QPalette. In the gtkmm implementation part, the palette object is either a Style or a RcStyle,
for the moment it is a Style since, as I said, modifying the rcStyle doesn't produce any effect.. (and I still don't understand exactly why... newbie question?)

In the future, I will also have to investigate how to handle a common configuration file using widget names, themes, states, ...
for Qt AND Gtk, so as to have a general apperance configuration











On Jan 22, 2008 2:08 PM, Paul Davis < paul linuxaudiosystems com > wrote:
On Tue, 2008-01-22 at 10:05 +0100, Yannick Barbeaux wrote:
> Hello
>
> i am working with gtkmm 2.4 and i am trying to modify the colors of
> given widgets in my application,
> the gtkmm documentation advices to use
> widget->modify_style(Gtk::RcStyle myRcStyle)
> function instead of
> widget->set_style(Gtk::Style myStyle)
> (because "it interacts badly with themes"?)
>
> the strange behaviour I found out is that using the modify_style has
> no effects in my application:
>
> e.g.:
>
> I create a new rcStyle with the static create function:
>
> Glib::RefPtr<Gtk::RcStyle> myRcStyle = Gtk::RcStyle::create();
>
> then change the colors e.g.:
>
> myRcStyle->set_bg(Gtk::STATE_NORMAL, anyGdkColor);
>
> then set the style to the main window or any widget:
>
> mainWindow->modify_style(myRcStyle);
> or
> myPushButton->modify_style(myRcStyle);

why not just use Widget::modify_fg() ?

moreover, why do this in code at all? just name the widgets
(Widget::set_name()), and load an app-specific RC file that defines the
styles. that way you can modify the styles without a recompile.


> then change the colors the same way e.g.:
>
> myStyle->set_bg(Gtk::STATE_NORMAL, anyGdkColor);
>
> then set the style to the widget ;
>
> main_window->set_style(myStyle);
> or
> myPushButton->set_style(myStyle);

you are aware, i hope, that many widgets do not have their own window,
and thus setting the bg for them has no effect - they just draw
themselves on an existing bg.

> And to be more general, why do exist two classes Style and RcStyle
> with many common functions?
> What is the specific use of each class? is there a correspondance
> between those 2 classes?

RcStyle represents the definition of a style taken from an RC file. it
is held separately from a Style (the style as used by the widget) so as
to (a) allow for slightly different representation based on its origin
in the file (b) to allow heirarchical inheritance of RcStyles while
compositing a particular widget's Style.







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