From: Nathaniel Talbott Date: 2000-12-13T10:55:08+09:00 Subject: [ruby-talk:7122] Re: Gtk widget color > # # Help! I can't seem to change the color of a gtk widget dynamically > # # within Ruby. > > # (1) Identify the version of Ruby and OS you are using. Sorry, I knew I should have done this, but it was getting late... $ ruby -v ruby 1.6.2 (2000-11-17) [i386-cygwin] $ cmd Microsoft Windows 2000 [Version 5.00.2195] > # (2) In case no one else can answer this (e.g. perhaps it's just a > # bug or maybe it involves something that hasn't been completely > # implemented yet), always consider a cc: to the appropriate > # developer(s) unless you know that they follow the English mail list. Excellent suggestion; will do in the future. > And I should have added: > > (3) Show the code (unless it's 100s of lines). It is pretty long. Here are some pertient pieces: def setupWindow ... @progressBar = Gtk::ProgressBar.new @progressBar.set_usize(@progressBar.allocation.width, 50) @redStyle = @progressBar.get_style.copy @greenStyle = @progressBar.get_style.copy @greenStyle.set_bg(Gtk::STATE_PRELIGHT, 0x0000, 0xFFFF, 0x0000) @redStyle.set_bg(Gtk::STATE_PRELIGHT, 0xFFFF, 0x0000, 0x0000) @progressBar.set_style(@greenStyle) hBox.pack_start(@progressBar, true, true, 0) ... end def goRed @progressBar.set_style(@redStyle) @window.queue_draw end goRed is called (indirectly) from a signal handler. Note that the progress bar IS green; it just doesn't become red. Any ideas? > If I had tried to run your code under Windows NT 4 with ruby 1.6.1 > (2000-10-05) [i386-cygwin], I would have encountered the > following error > first: > > # ruby smart.rb > smart.rb:53:in `require': dlopen: Win32 error 126 - /Program > Files/Ruby/lib/ruby > /site_ruby/1.6/i386-cygwin/gtk.so (LoadError) > from smart.rb:53 I've recompiled gtk.so for cygwin 1.1.6 and ruby 1.6.2. I also found that I was missing one of the gtk dlls. Here's the list of dlls I need to get it to work: gtk-1.3.dll gmodule-1.3.dll glib-1.3.dll iconv-1.3.dll (I think this was the one I was missing) gnu-intl.dll gdk-1.3.dll Make sure you have all the dlls; if you do, you might have to recompile the ruby gtk extension. I had to munge the extconf.rb file to get it to compile under cygwin, and I haven't had a chance to go back over my changes to try and release them to everyone else. Thanks for the help! It's great to ask a question when you go to bed and have answers when you get up the next morning :) Nathaniel <:((>< + - - + - - | RoleModel Software, Inc. & | EQUIP VI | The XP Software Studio(TM) |