Re: Can I stop events for a while ??
- From: Shawn <ubergreatness yahoo com>
- To: gtkmm-list gnome org
- Subject: Re: Can I stop events for a while ??
- Date: Thu, 15 Dec 2005 15:48:36 -0500
You might want to look at pangomm instead
of trying to use a Gtk::Label. The
"rotated text" demo in gtk-demo has a
similar effect using pango.
On Thu, 15 Dec 2005 19:36:42 +0100
Sergio Trinidad <strinidadr gmail com> wrote:
> And then how can I do it?
>
> I explain:
> I want a GtkLabel to resize its text when his container or window resizes,
> to fill all the area that his container has.
>
> An example:
>
> int main(int argc, char* argv[])
> {
>
> Gtk::Main aplicacion(argc, argv);
> Gtk::Window ventana;
> Gtk::Label lbl("XXXX");
>
> ventana.add(lbl);
> ventana.set_default_size(150,150);
> ventana.show_all();
>
> aplicacion.run(ventana);
>
> return 0;
>
> }
>
> I write this simple program, that shows a label within a window, how can i
> resize the label text when the window size is modified ?
>
>
> 2005/12/15, Bob Caryl <bob fis-cal com>:
> >
> > Creating another function to modify the font and calling it from the
> > on_size_allocate override will prevent the endless loop, but the
> > practical results are not too good. The label font gets very large very
> > fast. This is probably a dreadful idea.
> >
> > Example code follows:
> >
> > // code starts
> > class miMaquina : public VBox
> > {
> > miMaquina(bool homogeneous,int spacing) {
> > Gtk::VBox::VBox(homogeneous,spacing); no_resize = FALSE; }
> > Gtk::Label *lbl;
> > protected:
> > bool no_resize;
> > resize_font(int height);
> > on_size_allocate(Gtk::Allocation &alloc);
> > }
> >
> > void miMaquina::resize_font(int height)
> > {
> > no_resize = TRUE; // setting this to true before modifying
> > // the font will prevent the
> > on_size_allocate
> > // override from calling this
> > function repeatedly.
> > Pango::FontDescription fd;
> > fd.set_size((height * Pango::SCALE));
> > lbl->modify_font(fd);
> > }
> >
> > void miMaquina::on_size_allocate(Gtk::Allocation &alloc)
> > {
> > int alto = alloc.get_height();
> > Gtk::VBox::on_size_allocate(alloc);
> > if(no_resize)
> > {
> > no_resize = FALSE;
> > return;
> > }
> > resize_font(alto);
> > }
> > // code ends
> >
> > Oh yeah, be sure to set miMaquina::lbl to point to whatever label you
> > are packing into your miMaquina instance.
> >
> > Bob
> >
> > Sergio Trinidad wrote:
> >
> > > I have the next code
> > >
> > > class miMaquina : public VBox
> > > {
> > > Gtk:Label *lbl;
> > > .....
> > >
> > > };
> > > ....
> > > ....
> > >
> > > void miMaquina::on_size_allocate(Gtk::Allocation &alloc)
> > > {
> > > int alto = alloc.get_height();
> > > int ancho = alloc.get_width();
> > > Gtk::VBox::on_size_allocate(alloc);
> > >
> > > Pango::FontDescription fd;
> > > fd.set_size((alto*Pango::SCALE));
> > > lbl->modify_font(fd);
> > >
> > > }
> > >
> > >
> > > The problem is that when the events ocurrs the lbl->modify_font(fd)
> > > activates
> > > a new on_size_allocate event, because the size of label changes with
> > > the size
> > > of new text, and a infinite loop is launchet until X server gets an
> > > error.
> > > Can I stop signal emiting for a while, then apply 'lbl->modify_font'
> > > and later
> > > activate again the event??
> > >
> > >------------------------------------------------------------------------
> > >
> > >_______________________________________________
> > >gtkmm-list mailing list
> > >gtkmm-list gnome org
> > >http://mail.gnome.org/mailman/listinfo/gtkmm-list
> > >
> > >
> >
>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]