User:Generalantilles/rm you
(→IRC with Timeless concerning GTK stuff with the sound applet:) |
(→IRC with Timeless concerning GTK stuff with the sound applet:) |
||
Line 47: | Line 47: | ||
rm_you: can you do a search for "gtk_menu" | rm_you: can you do a search for "gtk_menu" | ||
- | timeless: oh. yeah, essentially this | + | timeless: oh. yeah, essentially this re-implements and delegates to things :) |
rm_you: ? | rm_you: ? | ||
Line 69: | Line 69: | ||
rm_you: WHAT!? | rm_you: WHAT!? | ||
- | timeless: sorry, I'm | + | timeless: sorry, I'm definitely not copying the rest of the code |
- | timeless: ( | + | timeless: but yeah, pretty much, that's it :) |
+ | |||
+ | timeless: oh yeah... the window calls gtk_window_set_type_hint(...., GDK_WINDOW_TYPE_HINT_MENU) | ||
+ | |||
+ | rm_you: yeah but... there must be something special... I *tried* putting the hildon_hvolumebar_new object into a vbox into a GtkMenu/GtkMenuItem | ||
+ | |||
+ | rm_you: it doesn't work | ||
+ | |||
+ | rm_you: so they have a custom implementation of GtkMenu? | ||
+ | |||
+ | timeless: yep | ||
+ | |||
+ | rm_you: that's... ridiculous | ||
+ | |||
+ | rm_you: is it in the statusbar code? or is it in a library? | ||
+ | |||
+ | timeless: it's in the same file as far as I can tell | ||
+ | |||
+ | rm_you: <_< | ||
+ | |||
+ | timeless: but there's no way I can justify sharing it | ||
+ | |||
+ | rm_you: how long is it | ||
+ | |||
+ | rm_you: <_< | ||
+ | |||
+ | timeless: you should just instrument gtk | ||
+ | |||
+ | rm_you: just tell me as much as you can ABOUT it | ||
+ | |||
+ | timeless: it's not that hard | ||
+ | |||
+ | rm_you: I tried asking people in #gtk+ | ||
+ | |||
+ | rm_you: multiple people told me either that what I wanted to do wasn't possible without some serious hackage, or that I would have to rewrite my own gtkmenu system | ||
+ | |||
+ | timeless: I mean, this should be fairly easy... you either use a perl script to rewrite the library entry points | ||
+ | |||
+ | timeless: or use a debugger to dynamically do it | ||
+ | |||
+ | timeless: either way, it's fairly trivial | ||
+ | |||
+ | timeless: all you need is for each gtk method to spit out at entry all strings and all pointers, and at exit to spit out any returned pointers | ||
+ | |||
+ | timeless: from there since everything is a gtk call, you can find out which methods are called in order for each object | ||
+ | |||
+ | rm_you: htm | ||
+ | |||
+ | timeless: it is "serious" hackage, but it's fairly automatable | ||
+ | |||
+ | timeless: so it's not "hard" hackage | ||
+ | |||
+ | timeless: more like "thorough" | ||
+ | |||
+ | rm_you: hrm. I don't think I know enough about GTK to do that though. :( | ||
+ | |||
+ | rm_you: I'll have to find help | ||
+ | |||
+ | rm_you: though duplicating that is ridiculous | ||
+ | |||
+ | rm_you: Nokia has no reason to keep that closed | ||
+ | |||
+ | rm_you: in fact, it should probably be a separate library, eg HildonMenu | ||
+ | |||
+ | * timeless nods | ||
+ | |||
+ | rm_you: and be put into libhildon | ||
===Emails from Timeless concerning GTK stuff with applets:=== | ===Emails from Timeless concerning GTK stuff with applets:=== |
Revision as of 12:05, 10 June 2008
Hey, it's rm_you!
Check out Advanced Backlight Statusbar Applet!
IRC with Timeless concerning GTK stuff with the sound applet:
rm_you: open the official sound statusbar applet code
rm_you: search for hildon_hvolumebar_new
timeless: Searching...
timeless: ok
timeless: Found one matching line
rm_you: and then once you know what the name of that object is, find what container they add it to
rm_you: then all I need to know is what type of container it is
timeless: it gets munged by gtk_box_pack_start
rm_you: gtk_box_pack_start... ok
rm_you: into what kind of box
rm_you: and what does that box get added to
timeless: gtk_vbox_new (false, 5)
timeless: and into the soundwindow, whatever that is
rm_you: ok, so they put the "hildon_hvolumebar_new" object into a "gtk_vbox_new" object
rm_you: and that gets added to... a "soundwindow"?
timeless: g_object_new (... "statusbar-item" ...)
rm_you: ... what?
timeless: yeah a SOUND_TYPE_WINDOW
rm_you: can you do a search for "gtk_menu"
timeless: oh. yeah, essentially this re-implements and delegates to things :)
rm_you: ?
timeless: basically the sound_window thing acts almost like a gtkmenu container
timeless: and special handles things to make it all work :)
rm_you: ....
timeless: e.g. it has a set_focus method which will call gtk_menu_item_(de)select on things
rm_you: so
rm_you: but
rm_you: but
rm_you: but
rm_you: WHAT!?
timeless: sorry, I'm definitely not copying the rest of the code
timeless: but yeah, pretty much, that's it :)
timeless: oh yeah... the window calls gtk_window_set_type_hint(...., GDK_WINDOW_TYPE_HINT_MENU)
rm_you: yeah but... there must be something special... I *tried* putting the hildon_hvolumebar_new object into a vbox into a GtkMenu/GtkMenuItem
rm_you: it doesn't work
rm_you: so they have a custom implementation of GtkMenu?
timeless: yep
rm_you: that's... ridiculous
rm_you: is it in the statusbar code? or is it in a library?
timeless: it's in the same file as far as I can tell
rm_you: <_<
timeless: but there's no way I can justify sharing it
rm_you: how long is it
rm_you: <_<
timeless: you should just instrument gtk
rm_you: just tell me as much as you can ABOUT it
timeless: it's not that hard
rm_you: I tried asking people in #gtk+
rm_you: multiple people told me either that what I wanted to do wasn't possible without some serious hackage, or that I would have to rewrite my own gtkmenu system
timeless: I mean, this should be fairly easy... you either use a perl script to rewrite the library entry points
timeless: or use a debugger to dynamically do it
timeless: either way, it's fairly trivial
timeless: all you need is for each gtk method to spit out at entry all strings and all pointers, and at exit to spit out any returned pointers
timeless: from there since everything is a gtk call, you can find out which methods are called in order for each object
rm_you: htm
timeless: it is "serious" hackage, but it's fairly automatable
timeless: so it's not "hard" hackage
timeless: more like "thorough"
rm_you: hrm. I don't think I know enough about GTK to do that though. :(
rm_you: I'll have to find help
rm_you: though duplicating that is ridiculous
rm_you: Nokia has no reason to keep that closed
rm_you: in fact, it should probably be a separate library, eg HildonMenu
- timeless nods
rm_you: and be put into libhildon
Emails from Timeless concerning GTK stuff with applets:
On Wed, May 7, 2008 at 7:38 AM, Adam Harwell <aharwell at trinity.edu> wrote:
>> The binary package osso-statusbar-sound contains a statusbar applet that can
>> be used to control the volume level of the system. It consists primarily of
>> some GtkContainer or HildonContainer object that can be used as a
>> popup/popdown menu. That object then contains a "hildon_hvolumebar" as well
>> as a menu item of some kind that launches the sound configuration
>> controlpanel applet.
>>
>> Currently I am using a "hildon_desktop_popup_window". This sort of works,
what follows is JavaScript notation based on C GObject code.
function SoundWindow() {
var box = new gtk["vbox"];
gtk["container"].add (this, box);
box.pack([volumebar, ...]);
}
SoundWindow.prototype = {
type_hint: GDK_WINDOW_TYPE_HINT_MENU,
name: "hildon-status-bar-popup",
resizable: false,
decorated: false,
/* i think this is the cute border you're asking about, and yes, it
seems like it's just hard coded into the C */
border_width: 20,
keep_above: true
}
fwiw, the same general approach is used by the display applet.
>> but it lacks the nice thick border and rounded corners that the default
>> sound applet uses, as well as some intelligent autoclose functions. Can you
>> find out if there is some kind of hildon container that is being used for
>> the default sound applet?