<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://maemo.octonezd.me/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=24.18.159.98</id>
	<title>Maemo Wiki Mirror - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://maemo.octonezd.me/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=24.18.159.98"/>
	<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php/Special:Contributions/24.18.159.98"/>
	<updated>2026-04-22T08:44:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=Java&amp;diff=13528</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=Java&amp;diff=13528"/>
		<updated>2008-06-11T13:43:42Z</updated>

		<summary type="html">&lt;p&gt;24.18.159.98: New page: This page is about the Java programming language and Java Virtual Machine on the Nokia 770.  Thre is no official J2ME or J2SE for the Nokia 770 as of yet.  The Nokia 770&amp;#039;s ARM CPU does hav...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is about the Java programming language and Java Virtual Machine on the Nokia 770.&lt;br /&gt;
&lt;br /&gt;
Thre is no official J2ME or J2SE for the Nokia 770 as of yet.&lt;br /&gt;
&lt;br /&gt;
The Nokia 770&#039;s ARM CPU does have a proprietary extenstion called Jazelle that provides two key capabilities for accelerated execution of Java applications.&lt;br /&gt;
&lt;br /&gt;
These are:&lt;br /&gt;
&lt;br /&gt;
  * Jazelle DBX (Direct Bytecode eXecution) technology for direct bytecode execution of Java bytecode instructions&lt;br /&gt;
  * Jazelle RCT (Runtime Compilation Target) for JIT compilation of Java bytecode instructions to ARM native instructions.&lt;br /&gt;
&lt;br /&gt;
Use of the Jazelle features is &amp;quot;locked&amp;quot; unless a vendor licenses the ARM Jazelle Technology Enabling Kit (JTEK). It&#039;s not clear whether Nokia has chosen to license the JTEK for use with the Nokia 770. While it would be highly desirable for a Jazelle-enhanced JVM to be available for the Nokia 770, it is not necessary to use this technology in order to create a JVM for the 770.&lt;br /&gt;
&lt;br /&gt;
For example, it should be feasible to get good results by porting one of the existing open source JVMs to the 770:&lt;br /&gt;
&lt;br /&gt;
  * LuisMontes is in the process of porting kaffe to maemo. (Where can further information be found?)&lt;br /&gt;
  * JamVM has been ported to maemo - here is a link to packages: http://gilles.frattini.free.fr/wordpress/index.php?p=3&lt;br /&gt;
    * here is a howto describing jamvm building and running a java app on 770: http://www.microemu.org/maemo/&lt;br /&gt;
  * other debs for jamvm, classpath, and jikes&lt;br /&gt;
    * discussion: http://www.internettablettalk.com/forums/showthread.php?t=2896&amp;amp;page=2#12&lt;br /&gt;
    * applicationcatalogwip page: http://maemo.org/maemowiki/ApplicationCatalog2006Wip#head-27308ca5c27fe7db1e0c2fc21649ffa7b88ff28d&lt;br /&gt;
  * Interesting mailing list threads:&lt;br /&gt;
    * http://www.gossamer-threads.com/lists/maemo/developers/12377&lt;br /&gt;
    * there are some more... search...&lt;br /&gt;
  * Java Phone ME for 770&lt;br /&gt;
    * Binaries built by Johannes Eickhold: http://i30www.ira.uka.de/p2p/ambicomp/phoneME_Nokia770/&lt;br /&gt;
    * Forum thread: http://forums.java.net/jive/thread.jspa?threadID=20835&amp;amp;tstart=15&lt;br /&gt;
    * Build instructions: http://wiki.java.net/bin/view/Mobileandembedded/PhoneMEAdvancedPlatformsNokia770&lt;br /&gt;
  * JaLiMo - Java-like environment for mobile Linux devices&lt;br /&gt;
    * http://www.jalimo.org&lt;/div&gt;</summary>
		<author><name>24.18.159.98</name></author>
	</entry>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=User:Generalantilles/rm_you&amp;diff=47940</id>
		<title>User:Generalantilles/rm you</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=User:Generalantilles/rm_you&amp;diff=47940"/>
		<updated>2008-06-10T13:01:02Z</updated>

		<summary type="html">&lt;p&gt;24.18.159.98: /* IRC with Timeless concerning GTK stuff with the sound applet: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hey, it&#039;s rm_you!&lt;br /&gt;
&lt;br /&gt;
Check out [http://adv-backlight.garage.maemo.org Advanced Backlight Statusbar Applet]! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===IRC with Timeless concerning GTK stuff with the sound applet:===&lt;br /&gt;
&lt;br /&gt;
rm_you: open the official sound statusbar applet code&lt;br /&gt;
&lt;br /&gt;
rm_you: search for hildon_hvolumebar_new&lt;br /&gt;
&lt;br /&gt;
timeless: Searching...&lt;br /&gt;
&lt;br /&gt;
timeless: ok&lt;br /&gt;
&lt;br /&gt;
timeless: Found one matching line&lt;br /&gt;
&lt;br /&gt;
rm_you: and then once you know what the name of that object is, find what container they add it to&lt;br /&gt;
&lt;br /&gt;
rm_you: then all I need to know is what type of container it is&lt;br /&gt;
&lt;br /&gt;
timeless: it gets munged by gtk_box_pack_start&lt;br /&gt;
&lt;br /&gt;
rm_you: gtk_box_pack_start... ok&lt;br /&gt;
&lt;br /&gt;
rm_you: into what kind of box&lt;br /&gt;
&lt;br /&gt;
rm_you: and what does that box get added to&lt;br /&gt;
&lt;br /&gt;
timeless: gtk_vbox_new (false, 5)&lt;br /&gt;
&lt;br /&gt;
timeless: and into the soundwindow, whatever that is&lt;br /&gt;
&lt;br /&gt;
rm_you: ok, so they put the &amp;quot;hildon_hvolumebar_new&amp;quot; object into a &amp;quot;gtk_vbox_new&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
rm_you: and that gets added to... a &amp;quot;soundwindow&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
timeless: g_object_new (... &amp;quot;statusbar-item&amp;quot; ...)&lt;br /&gt;
&lt;br /&gt;
rm_you: ... what?&lt;br /&gt;
&lt;br /&gt;
timeless: yeah a SOUND_TYPE_WINDOW&lt;br /&gt;
&lt;br /&gt;
rm_you: can you do a search for &amp;quot;gtk_menu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
timeless: oh. yeah, essentially this re-implements and delegates to things :)&lt;br /&gt;
&lt;br /&gt;
rm_you: ?&lt;br /&gt;
&lt;br /&gt;
timeless: basically the sound_window thing acts almost like a gtkmenu container&lt;br /&gt;
&lt;br /&gt;
timeless: and special handles things to make it all work :)&lt;br /&gt;
&lt;br /&gt;
rm_you: ....&lt;br /&gt;
&lt;br /&gt;
timeless: e.g. it has a set_focus method which will call gtk_menu_item_(de)select on things&lt;br /&gt;
&lt;br /&gt;
rm_you: so&lt;br /&gt;
&lt;br /&gt;
rm_you: but&lt;br /&gt;
&lt;br /&gt;
rm_you: but&lt;br /&gt;
&lt;br /&gt;
rm_you: but&lt;br /&gt;
&lt;br /&gt;
rm_you: WHAT!?&lt;br /&gt;
&lt;br /&gt;
timeless: sorry, I&#039;m definitely not copying the rest of the code&lt;br /&gt;
&lt;br /&gt;
timeless: but yeah, pretty much, that&#039;s it :)&lt;br /&gt;
&lt;br /&gt;
timeless: oh yeah... the window calls gtk_window_set_type_hint(...., GDK_WINDOW_TYPE_HINT_MENU)&lt;br /&gt;
&lt;br /&gt;
rm_you: yeah but... there must be something special... I *tried* putting the hildon_hvolumebar_new object into a vbox into a GtkMenu/GtkMenuItem&lt;br /&gt;
&lt;br /&gt;
rm_you: it doesn&#039;t work&lt;br /&gt;
&lt;br /&gt;
rm_you: so they have a custom implementation of GtkMenu?&lt;br /&gt;
&lt;br /&gt;
timeless: yep&lt;br /&gt;
&lt;br /&gt;
rm_you: that&#039;s... ridiculous&lt;br /&gt;
&lt;br /&gt;
rm_you: is it in the statusbar code? or is it in a library?&lt;br /&gt;
&lt;br /&gt;
timeless: it&#039;s in the same file as far as I can tell&lt;br /&gt;
&lt;br /&gt;
rm_you: &amp;lt;_&amp;lt;&lt;br /&gt;
&lt;br /&gt;
timeless: but there&#039;s no way I can justify sharing it&lt;br /&gt;
&lt;br /&gt;
rm_you: how long is it &lt;br /&gt;
&lt;br /&gt;
rm_you: &amp;lt;_&amp;lt;&lt;br /&gt;
&lt;br /&gt;
timeless: you should just instrument gtk&lt;br /&gt;
&lt;br /&gt;
rm_you: just tell me as much as you can ABOUT it&lt;br /&gt;
&lt;br /&gt;
timeless: it&#039;s not that hard&lt;br /&gt;
&lt;br /&gt;
rm_you: I tried asking people in #gtk+&lt;br /&gt;
&lt;br /&gt;
rm_you: multiple people told me either that what I wanted to do wasn&#039;t possible without some serious hackage, or that I would have to rewrite my own gtkmenu system&lt;br /&gt;
&lt;br /&gt;
timeless: I mean, this should be fairly easy... you either use a perl script to rewrite the library entry points&lt;br /&gt;
&lt;br /&gt;
timeless: or use a debugger to dynamically do it&lt;br /&gt;
&lt;br /&gt;
timeless: either way, it&#039;s fairly trivial&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
timeless: from there since everything is a gtk call, you can find out which methods are called in order for each object&lt;br /&gt;
&lt;br /&gt;
rm_you: htm&lt;br /&gt;
&lt;br /&gt;
timeless: it is &amp;quot;serious&amp;quot; hackage, but it&#039;s fairly automatable&lt;br /&gt;
&lt;br /&gt;
timeless: so it&#039;s not &amp;quot;hard&amp;quot; hackage&lt;br /&gt;
&lt;br /&gt;
timeless: more like &amp;quot;thorough&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm_you: hrm. I don&#039;t think I know enough about GTK to do that though. :(&lt;br /&gt;
&lt;br /&gt;
rm_you: I&#039;ll have to find help&lt;br /&gt;
&lt;br /&gt;
rm_you: though duplicating that is ridiculous&lt;br /&gt;
&lt;br /&gt;
rm_you: Nokia has no reason to keep that closed&lt;br /&gt;
&lt;br /&gt;
rm_you: in fact, it should probably be a separate library, eg HildonMenu&lt;br /&gt;
&lt;br /&gt;
* timeless nods&lt;br /&gt;
&lt;br /&gt;
rm_you: and be put into libhildon&lt;br /&gt;
&lt;br /&gt;
timeless: I might give you perl that would hack gtk_ for this...&lt;br /&gt;
&lt;br /&gt;
timeless: it really shouldn&#039;t be that bad&lt;br /&gt;
&lt;br /&gt;
rm_you: I tried rewriting GtkMenu / GtkMenuItem last week&lt;br /&gt;
&lt;br /&gt;
rm_you: it turned into a nightmare&lt;br /&gt;
&lt;br /&gt;
rm_you: I don&#039;t know nearly enough about the inner workings of GTK to mess with that stuff &amp;lt;_&amp;lt;&lt;br /&gt;
&lt;br /&gt;
timeless: well... you&#039;d want something like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
unless (/^gtk_.*_set_/) { print; next; }&lt;br /&gt;
&lt;br /&gt;
if (/\((.*)\)/) {&lt;br /&gt;
&lt;br /&gt;
# one line case - not implemented because afaict, gtk doesn&#039;t use it&lt;br /&gt;
&lt;br /&gt;
} elseif (/\((.*)/) {&lt;br /&gt;
&lt;br /&gt;
#multi line case&lt;br /&gt;
&lt;br /&gt;
my @args = ();&lt;br /&gt;
&lt;br /&gt;
some_looping_here:&lt;br /&gt;
&lt;br /&gt;
/\((?:const\s+|)(\S+)\s+(\*|)(\S+)([.)])/;&lt;br /&gt;
&lt;br /&gt;
my ($type, $pointer, $name, $more) = ($1, $2, $3, $4);&lt;br /&gt;
&lt;br /&gt;
push @args, $name;&lt;br /&gt;
&lt;br /&gt;
$types{$name} = $type;&lt;br /&gt;
&lt;br /&gt;
$pointers{$name} = $pointer;&lt;br /&gt;
&lt;br /&gt;
goto some_looping_here if ($more eq &#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
#oops, probably would have been a good idea to read another line from input before doing that goto :)&lt;br /&gt;
&lt;br /&gt;
#some perl assembly required ;-)&lt;br /&gt;
&lt;br /&gt;
#at this point we&#039;ve reached a line that ends in )&lt;br /&gt;
&lt;br /&gt;
#we probably should have been printing the lines somewhere too... oh well, more assembly required&lt;br /&gt;
&lt;br /&gt;
#eat the next line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
die &amp;quot;i was really hoping to see an open brace ...&amp;quot; unless /^[{]/;&lt;br /&gt;
&lt;br /&gt;
foreach my $arg (@args) {&lt;br /&gt;
&lt;br /&gt;
if ($pointers{$arg}) { print qq#fprintf(stderr, &amp;quot;$arg %p &amp;quot;, $arg);\n#; }&lt;br /&gt;
&lt;br /&gt;
elseif ($types{$arg} =~ /int$/i) { print qq#fprintf(stderr, &amp;quot;$arg %d, &amp;quot;, $arg);\n#; }&lt;br /&gt;
&lt;br /&gt;
else {&lt;br /&gt;
&lt;br /&gt;
#hrm, better work could be used here, you&#039;ll have to figure out what other creatures there are... you probably wanted to special case char before pointer :)&lt;br /&gt;
&lt;br /&gt;
print qq#fprintf(stderr, &amp;quot;$arg %p, &amp;quot;, &amp;amp; $arg);\n#; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
print qq#fprintf(stderr, &amp;quot;\n&amp;quot;);\n#;&lt;br /&gt;
&lt;br /&gt;
#ok... thats a draft for the head&lt;br /&gt;
&lt;br /&gt;
#in theory you&#039;d want to deal w/ gtk_new and anything else that creates a pointer, but in practice, you won&#039;t really need it&lt;br /&gt;
&lt;br /&gt;
#the goal is basically perl myscript.pl &amp;lt; gtkmenu.c &amp;gt; gtkmenu-evil.c&lt;br /&gt;
&lt;br /&gt;
===Emails from Timeless concerning GTK stuff with applets:===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Wed, May 7, 2008 at 7:38 AM, Adam Harwell &amp;lt;aharwell at trinity.edu&amp;gt; wrote:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; The binary package osso-statusbar-sound contains a statusbar applet that can&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; be used to control the volume level of the system. It consists primarily of&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; some GtkContainer or HildonContainer object that can be used as a&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; popup/popdown menu. That object then contains a &amp;quot;hildon_hvolumebar&amp;quot; as well&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; as a menu item of some kind that launches the sound configuration&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; controlpanel applet.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;  Currently I am using a &amp;quot;hildon_desktop_popup_window&amp;quot;. This sort of works,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
what follows is JavaScript notation based on C GObject code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function SoundWindow() {&lt;br /&gt;
&lt;br /&gt;
var box = new gtk[&amp;quot;vbox&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
gtk[&amp;quot;container&amp;quot;].add (this, box);&lt;br /&gt;
&lt;br /&gt;
box.pack([volumebar, ...]);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SoundWindow.prototype = {&lt;br /&gt;
&lt;br /&gt;
type_hint: GDK_WINDOW_TYPE_HINT_MENU,&lt;br /&gt;
&lt;br /&gt;
name: &amp;quot;hildon-status-bar-popup&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
resizable: false,&lt;br /&gt;
&lt;br /&gt;
decorated: false,&lt;br /&gt;
&lt;br /&gt;
/* i think this is the cute border you&#039;re asking about, and yes, it&lt;br /&gt;
&lt;br /&gt;
seems like it&#039;s just hard coded into the C */&lt;br /&gt;
&lt;br /&gt;
border_width: 20,&lt;br /&gt;
&lt;br /&gt;
keep_above: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fwiw, the same general approach is used by the display applet.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; but it lacks the nice thick border and rounded corners that the default&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; sound applet uses, as well as some intelligent autoclose functions. Can you&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; find out if there is some kind of hildon container that is being used for&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; the default sound applet?&lt;/div&gt;</summary>
		<author><name>24.18.159.98</name></author>
	</entry>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=User:Generalantilles/rm_you&amp;diff=47941</id>
		<title>User:Generalantilles/rm you</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=User:Generalantilles/rm_you&amp;diff=47941"/>
		<updated>2008-06-10T12:34:26Z</updated>

		<summary type="html">&lt;p&gt;24.18.159.98: /* IRC with Timeless concerning GTK stuff with the sound applet: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hey, it&#039;s rm_you!&lt;br /&gt;
&lt;br /&gt;
Check out [http://adv-backlight.garage.maemo.org Advanced Backlight Statusbar Applet]! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===IRC with Timeless concerning GTK stuff with the sound applet:===&lt;br /&gt;
&lt;br /&gt;
rm_you: open the official sound statusbar applet code&lt;br /&gt;
&lt;br /&gt;
rm_you: search for hildon_hvolumebar_new&lt;br /&gt;
&lt;br /&gt;
timeless: Searching...&lt;br /&gt;
&lt;br /&gt;
timeless: ok&lt;br /&gt;
&lt;br /&gt;
timeless: Found one matching line&lt;br /&gt;
&lt;br /&gt;
rm_you: and then once you know what the name of that object is, find what container they add it to&lt;br /&gt;
&lt;br /&gt;
rm_you: then all I need to know is what type of container it is&lt;br /&gt;
&lt;br /&gt;
timeless: it gets munged by gtk_box_pack_start&lt;br /&gt;
&lt;br /&gt;
rm_you: gtk_box_pack_start... ok&lt;br /&gt;
&lt;br /&gt;
rm_you: into what kind of box&lt;br /&gt;
&lt;br /&gt;
rm_you: and what does that box get added to&lt;br /&gt;
&lt;br /&gt;
timeless: gtk_vbox_new (false, 5)&lt;br /&gt;
&lt;br /&gt;
timeless: and into the soundwindow, whatever that is&lt;br /&gt;
&lt;br /&gt;
rm_you: ok, so they put the &amp;quot;hildon_hvolumebar_new&amp;quot; object into a &amp;quot;gtk_vbox_new&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
rm_you: and that gets added to... a &amp;quot;soundwindow&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
timeless: g_object_new (... &amp;quot;statusbar-item&amp;quot; ...)&lt;br /&gt;
&lt;br /&gt;
rm_you: ... what?&lt;br /&gt;
&lt;br /&gt;
timeless: yeah a SOUND_TYPE_WINDOW&lt;br /&gt;
&lt;br /&gt;
rm_you: can you do a search for &amp;quot;gtk_menu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
timeless: oh. yeah, essentially this re-implements and delegates to things :)&lt;br /&gt;
&lt;br /&gt;
rm_you: ?&lt;br /&gt;
&lt;br /&gt;
timeless: basically the sound_window thing acts almost like a gtkmenu container&lt;br /&gt;
&lt;br /&gt;
timeless: and special handles things to make it all work :)&lt;br /&gt;
&lt;br /&gt;
rm_you: ....&lt;br /&gt;
&lt;br /&gt;
timeless: e.g. it has a set_focus method which will call gtk_menu_item_(de)select on things&lt;br /&gt;
&lt;br /&gt;
rm_you: so&lt;br /&gt;
&lt;br /&gt;
rm_you: but&lt;br /&gt;
&lt;br /&gt;
rm_you: but&lt;br /&gt;
&lt;br /&gt;
rm_you: but&lt;br /&gt;
&lt;br /&gt;
rm_you: WHAT!?&lt;br /&gt;
&lt;br /&gt;
timeless: sorry, I&#039;m definitely not copying the rest of the code&lt;br /&gt;
&lt;br /&gt;
timeless: but yeah, pretty much, that&#039;s it :)&lt;br /&gt;
&lt;br /&gt;
timeless: oh yeah... the window calls gtk_window_set_type_hint(...., GDK_WINDOW_TYPE_HINT_MENU)&lt;br /&gt;
&lt;br /&gt;
rm_you: yeah but... there must be something special... I *tried* putting the hildon_hvolumebar_new object into a vbox into a GtkMenu/GtkMenuItem&lt;br /&gt;
&lt;br /&gt;
rm_you: it doesn&#039;t work&lt;br /&gt;
&lt;br /&gt;
rm_you: so they have a custom implementation of GtkMenu?&lt;br /&gt;
&lt;br /&gt;
timeless: yep&lt;br /&gt;
&lt;br /&gt;
rm_you: that&#039;s... ridiculous&lt;br /&gt;
&lt;br /&gt;
rm_you: is it in the statusbar code? or is it in a library?&lt;br /&gt;
&lt;br /&gt;
timeless: it&#039;s in the same file as far as I can tell&lt;br /&gt;
&lt;br /&gt;
rm_you: &amp;lt;_&amp;lt;&lt;br /&gt;
&lt;br /&gt;
timeless: but there&#039;s no way I can justify sharing it&lt;br /&gt;
&lt;br /&gt;
rm_you: how long is it &lt;br /&gt;
&lt;br /&gt;
rm_you: &amp;lt;_&amp;lt;&lt;br /&gt;
&lt;br /&gt;
timeless: you should just instrument gtk&lt;br /&gt;
&lt;br /&gt;
rm_you: just tell me as much as you can ABOUT it&lt;br /&gt;
&lt;br /&gt;
timeless: it&#039;s not that hard&lt;br /&gt;
&lt;br /&gt;
rm_you: I tried asking people in #gtk+&lt;br /&gt;
&lt;br /&gt;
rm_you: multiple people told me either that what I wanted to do wasn&#039;t possible without some serious hackage, or that I would have to rewrite my own gtkmenu system&lt;br /&gt;
&lt;br /&gt;
timeless: I mean, this should be fairly easy... you either use a perl script to rewrite the library entry points&lt;br /&gt;
&lt;br /&gt;
timeless: or use a debugger to dynamically do it&lt;br /&gt;
&lt;br /&gt;
timeless: either way, it&#039;s fairly trivial&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
timeless: from there since everything is a gtk call, you can find out which methods are called in order for each object&lt;br /&gt;
&lt;br /&gt;
rm_you: htm&lt;br /&gt;
&lt;br /&gt;
timeless: it is &amp;quot;serious&amp;quot; hackage, but it&#039;s fairly automatable&lt;br /&gt;
&lt;br /&gt;
timeless: so it&#039;s not &amp;quot;hard&amp;quot; hackage&lt;br /&gt;
&lt;br /&gt;
timeless: more like &amp;quot;thorough&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm_you: hrm. I don&#039;t think I know enough about GTK to do that though. :(&lt;br /&gt;
&lt;br /&gt;
rm_you: I&#039;ll have to find help&lt;br /&gt;
&lt;br /&gt;
rm_you: though duplicating that is ridiculous&lt;br /&gt;
&lt;br /&gt;
rm_you: Nokia has no reason to keep that closed&lt;br /&gt;
&lt;br /&gt;
rm_you: in fact, it should probably be a separate library, eg HildonMenu&lt;br /&gt;
&lt;br /&gt;
* timeless nods&lt;br /&gt;
&lt;br /&gt;
rm_you: and be put into libhildon&lt;br /&gt;
&lt;br /&gt;
timeless: I might give you perl that would hack gtk_ for this...&lt;br /&gt;
&lt;br /&gt;
timeless: it really shouldn&#039;t be that bad&lt;br /&gt;
&lt;br /&gt;
rm_you: I tried rewriting GtkMenu / GtkMenuItem last week&lt;br /&gt;
&lt;br /&gt;
rm_you: it turned into a nightmare&lt;br /&gt;
&lt;br /&gt;
rm_you: I don&#039;t know nearly enough about the inner workings of GTK to mess with that stuff &amp;lt;_&amp;lt;&lt;br /&gt;
&lt;br /&gt;
timeless: well... you&#039;d want something like:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
unless (/^gtk_.*_set_/) { print; next; }&lt;br /&gt;
&lt;br /&gt;
if (/\((.*)\)/) {&lt;br /&gt;
&lt;br /&gt;
# one line case - not implemented because afaict, gtk doesn&#039;t use it&lt;br /&gt;
&lt;br /&gt;
} elseif (/\((.*)/) {&lt;br /&gt;
&lt;br /&gt;
#multi line case&lt;br /&gt;
&lt;br /&gt;
my @args = ();&lt;br /&gt;
&lt;br /&gt;
some_looping_here:&lt;br /&gt;
&lt;br /&gt;
/\((?:const\s+|)(\S+)\s+(\*|)(\S+)([.)])/;&lt;br /&gt;
&lt;br /&gt;
my ($type, $pointer, $name, $more) = ($1, $2, $3, $4);&lt;br /&gt;
&lt;br /&gt;
push @args, $name;&lt;br /&gt;
&lt;br /&gt;
$types{$name} = $type;&lt;br /&gt;
&lt;br /&gt;
$pointers{$name} = $pointer;&lt;br /&gt;
&lt;br /&gt;
goto some_looping_here if ($more eq &#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
#oops, probably would have been a good idea to read another line from input before doing that goto :)&lt;br /&gt;
&lt;br /&gt;
#some perl assembly required ;-)&lt;br /&gt;
&lt;br /&gt;
#at this point we&#039;ve reached a line that ends in )&lt;br /&gt;
&lt;br /&gt;
#we probably should have been printing the lines somewhere too... oh well, more assembly required&lt;br /&gt;
&lt;br /&gt;
#eat the next line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
die &amp;quot;i was really hoping to see an open brace ...&amp;quot; unless /^[{]/;&lt;br /&gt;
&lt;br /&gt;
foreach my $arg (@args) {&lt;br /&gt;
&lt;br /&gt;
if ($pointers{$arg}) { print qq#fprintf(stderr, &amp;quot;$arg %p &amp;quot;, $arg);\n#; }&lt;br /&gt;
&lt;br /&gt;
elseif ($types{$arg} =~ /int$/i) { print qq#fprintf(stderr, &amp;quot;$arg %d, &amp;quot;, $arg);\n#; }&lt;br /&gt;
&lt;br /&gt;
else {&lt;br /&gt;
&lt;br /&gt;
#hrm, better work could be used here, you&#039;ll have to figure out what other creatures there are... you probably wanted to special case char before pointer :)&lt;br /&gt;
&lt;br /&gt;
print qq#fprintf(stderr, &amp;quot;$arg %p, &amp;quot;, &amp;amp; $arg);\n#; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
print qq#fprintf(stderr, &amp;quot;\n&amp;quot;);\n#;&lt;br /&gt;
&lt;br /&gt;
#ok... thats a draft for the head&lt;br /&gt;
&lt;br /&gt;
#in theory you&#039;d want to deal w/ gtk_new and anything else that creates a pointer, but in practice, you won&#039;t really need it&lt;br /&gt;
&lt;br /&gt;
#the goal is basically perl myscript.pl &amp;lt; gtkmenu.c &amp;gt; gtkmenu-evil.c&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Emails from Timeless concerning GTK stuff with applets:===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Wed, May 7, 2008 at 7:38 AM, Adam Harwell &amp;lt;aharwell at trinity.edu&amp;gt; wrote:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; The binary package osso-statusbar-sound contains a statusbar applet that can&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; be used to control the volume level of the system. It consists primarily of&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; some GtkContainer or HildonContainer object that can be used as a&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; popup/popdown menu. That object then contains a &amp;quot;hildon_hvolumebar&amp;quot; as well&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; as a menu item of some kind that launches the sound configuration&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; controlpanel applet.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;  Currently I am using a &amp;quot;hildon_desktop_popup_window&amp;quot;. This sort of works,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
what follows is JavaScript notation based on C GObject code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function SoundWindow() {&lt;br /&gt;
&lt;br /&gt;
var box = new gtk[&amp;quot;vbox&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
gtk[&amp;quot;container&amp;quot;].add (this, box);&lt;br /&gt;
&lt;br /&gt;
box.pack([volumebar, ...]);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SoundWindow.prototype = {&lt;br /&gt;
&lt;br /&gt;
type_hint: GDK_WINDOW_TYPE_HINT_MENU,&lt;br /&gt;
&lt;br /&gt;
name: &amp;quot;hildon-status-bar-popup&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
resizable: false,&lt;br /&gt;
&lt;br /&gt;
decorated: false,&lt;br /&gt;
&lt;br /&gt;
/* i think this is the cute border you&#039;re asking about, and yes, it&lt;br /&gt;
&lt;br /&gt;
seems like it&#039;s just hard coded into the C */&lt;br /&gt;
&lt;br /&gt;
border_width: 20,&lt;br /&gt;
&lt;br /&gt;
keep_above: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fwiw, the same general approach is used by the display applet.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; but it lacks the nice thick border and rounded corners that the default&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; sound applet uses, as well as some intelligent autoclose functions. Can you&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; find out if there is some kind of hildon container that is being used for&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; the default sound applet?&lt;/div&gt;</summary>
		<author><name>24.18.159.98</name></author>
	</entry>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=User:Generalantilles/rm_you&amp;diff=47942</id>
		<title>User:Generalantilles/rm you</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=User:Generalantilles/rm_you&amp;diff=47942"/>
		<updated>2008-06-10T12:33:44Z</updated>

		<summary type="html">&lt;p&gt;24.18.159.98: /* IRC with Timeless concerning GTK stuff with the sound applet: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hey, it&#039;s rm_you!&lt;br /&gt;
&lt;br /&gt;
Check out [http://adv-backlight.garage.maemo.org Advanced Backlight Statusbar Applet]! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===IRC with Timeless concerning GTK stuff with the sound applet:===&lt;br /&gt;
&lt;br /&gt;
rm_you: open the official sound statusbar applet code&lt;br /&gt;
&lt;br /&gt;
rm_you: search for hildon_hvolumebar_new&lt;br /&gt;
&lt;br /&gt;
timeless: Searching...&lt;br /&gt;
&lt;br /&gt;
timeless: ok&lt;br /&gt;
&lt;br /&gt;
timeless: Found one matching line&lt;br /&gt;
&lt;br /&gt;
rm_you: and then once you know what the name of that object is, find what container they add it to&lt;br /&gt;
&lt;br /&gt;
rm_you: then all I need to know is what type of container it is&lt;br /&gt;
&lt;br /&gt;
timeless: it gets munged by gtk_box_pack_start&lt;br /&gt;
&lt;br /&gt;
rm_you: gtk_box_pack_start... ok&lt;br /&gt;
&lt;br /&gt;
rm_you: into what kind of box&lt;br /&gt;
&lt;br /&gt;
rm_you: and what does that box get added to&lt;br /&gt;
&lt;br /&gt;
timeless: gtk_vbox_new (false, 5)&lt;br /&gt;
&lt;br /&gt;
timeless: and into the soundwindow, whatever that is&lt;br /&gt;
&lt;br /&gt;
rm_you: ok, so they put the &amp;quot;hildon_hvolumebar_new&amp;quot; object into a &amp;quot;gtk_vbox_new&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
rm_you: and that gets added to... a &amp;quot;soundwindow&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
timeless: g_object_new (... &amp;quot;statusbar-item&amp;quot; ...)&lt;br /&gt;
&lt;br /&gt;
rm_you: ... what?&lt;br /&gt;
&lt;br /&gt;
timeless: yeah a SOUND_TYPE_WINDOW&lt;br /&gt;
&lt;br /&gt;
rm_you: can you do a search for &amp;quot;gtk_menu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
timeless: oh. yeah, essentially this re-implements and delegates to things :)&lt;br /&gt;
&lt;br /&gt;
rm_you: ?&lt;br /&gt;
&lt;br /&gt;
timeless: basically the sound_window thing acts almost like a gtkmenu container&lt;br /&gt;
&lt;br /&gt;
timeless: and special handles things to make it all work :)&lt;br /&gt;
&lt;br /&gt;
rm_you: ....&lt;br /&gt;
&lt;br /&gt;
timeless: e.g. it has a set_focus method which will call gtk_menu_item_(de)select on things&lt;br /&gt;
&lt;br /&gt;
rm_you: so&lt;br /&gt;
&lt;br /&gt;
rm_you: but&lt;br /&gt;
&lt;br /&gt;
rm_you: but&lt;br /&gt;
&lt;br /&gt;
rm_you: but&lt;br /&gt;
&lt;br /&gt;
rm_you: WHAT!?&lt;br /&gt;
&lt;br /&gt;
timeless: sorry, I&#039;m definitely not copying the rest of the code&lt;br /&gt;
&lt;br /&gt;
timeless: but yeah, pretty much, that&#039;s it :)&lt;br /&gt;
&lt;br /&gt;
timeless: oh yeah... the window calls gtk_window_set_type_hint(...., GDK_WINDOW_TYPE_HINT_MENU)&lt;br /&gt;
&lt;br /&gt;
rm_you: yeah but... there must be something special... I *tried* putting the hildon_hvolumebar_new object into a vbox into a GtkMenu/GtkMenuItem&lt;br /&gt;
&lt;br /&gt;
rm_you: it doesn&#039;t work&lt;br /&gt;
&lt;br /&gt;
rm_you: so they have a custom implementation of GtkMenu?&lt;br /&gt;
&lt;br /&gt;
timeless: yep&lt;br /&gt;
&lt;br /&gt;
rm_you: that&#039;s... ridiculous&lt;br /&gt;
&lt;br /&gt;
rm_you: is it in the statusbar code? or is it in a library?&lt;br /&gt;
&lt;br /&gt;
timeless: it&#039;s in the same file as far as I can tell&lt;br /&gt;
&lt;br /&gt;
rm_you: &amp;lt;_&amp;lt;&lt;br /&gt;
&lt;br /&gt;
timeless: but there&#039;s no way I can justify sharing it&lt;br /&gt;
&lt;br /&gt;
rm_you: how long is it &lt;br /&gt;
&lt;br /&gt;
rm_you: &amp;lt;_&amp;lt;&lt;br /&gt;
&lt;br /&gt;
timeless: you should just instrument gtk&lt;br /&gt;
&lt;br /&gt;
rm_you: just tell me as much as you can ABOUT it&lt;br /&gt;
&lt;br /&gt;
timeless: it&#039;s not that hard&lt;br /&gt;
&lt;br /&gt;
rm_you: I tried asking people in #gtk+&lt;br /&gt;
&lt;br /&gt;
rm_you: multiple people told me either that what I wanted to do wasn&#039;t possible without some serious hackage, or that I would have to rewrite my own gtkmenu system&lt;br /&gt;
&lt;br /&gt;
timeless: I mean, this should be fairly easy... you either use a perl script to rewrite the library entry points&lt;br /&gt;
&lt;br /&gt;
timeless: or use a debugger to dynamically do it&lt;br /&gt;
&lt;br /&gt;
timeless: either way, it&#039;s fairly trivial&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
timeless: from there since everything is a gtk call, you can find out which methods are called in order for each object&lt;br /&gt;
&lt;br /&gt;
rm_you: htm&lt;br /&gt;
&lt;br /&gt;
timeless: it is &amp;quot;serious&amp;quot; hackage, but it&#039;s fairly automatable&lt;br /&gt;
&lt;br /&gt;
timeless: so it&#039;s not &amp;quot;hard&amp;quot; hackage&lt;br /&gt;
&lt;br /&gt;
timeless: more like &amp;quot;thorough&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm_you: hrm. I don&#039;t think I know enough about GTK to do that though. :(&lt;br /&gt;
&lt;br /&gt;
rm_you: I&#039;ll have to find help&lt;br /&gt;
&lt;br /&gt;
rm_you: though duplicating that is ridiculous&lt;br /&gt;
&lt;br /&gt;
rm_you: Nokia has no reason to keep that closed&lt;br /&gt;
&lt;br /&gt;
rm_you: in fact, it should probably be a separate library, eg HildonMenu&lt;br /&gt;
&lt;br /&gt;
* timeless nods&lt;br /&gt;
&lt;br /&gt;
rm_you: and be put into libhildon&lt;br /&gt;
&lt;br /&gt;
timeless: I might give you perl that would hack gtk_ for this...&lt;br /&gt;
&lt;br /&gt;
timeless: it really shouldn&#039;t be that bad&lt;br /&gt;
&lt;br /&gt;
rm_you: I tried rewriting GtkMenu / GtkMenuItem last week&lt;br /&gt;
&lt;br /&gt;
rm_you: it turned into a nightmare&lt;br /&gt;
&lt;br /&gt;
rm_you: I don&#039;t know nearly enough about the inner workings of GTK to mess with that stuff &amp;lt;_&amp;lt;&lt;br /&gt;
&lt;br /&gt;
timeless: well... you&#039;d want something like:&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
unless (/^gtk_.*_set_/) { print; next; }&lt;br /&gt;
&lt;br /&gt;
if (/\((.*)\)/) {&lt;br /&gt;
&lt;br /&gt;
# one line case - not implemented because afaict, gtk doesn&#039;t use it&lt;br /&gt;
&lt;br /&gt;
} elseif (/\((.*)/) {&lt;br /&gt;
&lt;br /&gt;
#multi line case&lt;br /&gt;
&lt;br /&gt;
my @args = ();&lt;br /&gt;
&lt;br /&gt;
some_looping_here:&lt;br /&gt;
&lt;br /&gt;
/\((?:const\s+|)(\S+)\s+(\*|)(\S+)([.)])/;&lt;br /&gt;
&lt;br /&gt;
my ($type, $pointer, $name, $more) = ($1, $2, $3, $4);&lt;br /&gt;
&lt;br /&gt;
push @args, $name;&lt;br /&gt;
&lt;br /&gt;
$types{$name} = $type;&lt;br /&gt;
&lt;br /&gt;
$pointers{$name} = $pointer;&lt;br /&gt;
&lt;br /&gt;
goto some_looping_here if ($more eq &#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
#oops, probably would have been a good idea to read another line from input before doing that goto :)&lt;br /&gt;
&lt;br /&gt;
#some perl assembly required ;-)&lt;br /&gt;
&lt;br /&gt;
#at this point we&#039;ve reached a line that ends in )&lt;br /&gt;
&lt;br /&gt;
#we probably should have been printing the lines somewhere too... oh well, more assembly required&lt;br /&gt;
&lt;br /&gt;
#eat the next line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
die &amp;quot;i was really hoping to see an open brace ...&amp;quot; unless /^[{]/;&lt;br /&gt;
&lt;br /&gt;
foreach my $arg (@args) {&lt;br /&gt;
&lt;br /&gt;
if ($pointers{$arg}) { print qq#fprintf(stderr, &amp;quot;$arg %p &amp;quot;, $arg);\n#; }&lt;br /&gt;
&lt;br /&gt;
elseif ($types{$arg} =~ /int$/i) { print qq#fprintf(stderr, &amp;quot;$arg %d, &amp;quot;, $arg);\n#; }&lt;br /&gt;
&lt;br /&gt;
else {&lt;br /&gt;
&lt;br /&gt;
#hrm, better work could be used here, you&#039;ll have to figure out what other creatures there are... you probably wanted to special case char before pointer :)&lt;br /&gt;
&lt;br /&gt;
print qq#fprintf(stderr, &amp;quot;$arg %p, &amp;quot;, &amp;amp; $arg);\n#; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
print qq#fprintf(stderr, &amp;quot;\n&amp;quot;);\n#;&lt;br /&gt;
&lt;br /&gt;
#ok... thats a draft for the head&lt;br /&gt;
&lt;br /&gt;
#in theory you&#039;d want to deal w/ gtk_new and anything else that creates a pointer, but in practice, you won&#039;t really need it&lt;br /&gt;
&lt;br /&gt;
#the goal is basically perl myscript.pl &amp;lt; gtkmenu.c &amp;gt; gtkmenu-evil.c&lt;br /&gt;
&lt;br /&gt;
===Emails from Timeless concerning GTK stuff with applets:===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Wed, May 7, 2008 at 7:38 AM, Adam Harwell &amp;lt;aharwell at trinity.edu&amp;gt; wrote:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; The binary package osso-statusbar-sound contains a statusbar applet that can&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; be used to control the volume level of the system. It consists primarily of&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; some GtkContainer or HildonContainer object that can be used as a&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; popup/popdown menu. That object then contains a &amp;quot;hildon_hvolumebar&amp;quot; as well&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; as a menu item of some kind that launches the sound configuration&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; controlpanel applet.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;  Currently I am using a &amp;quot;hildon_desktop_popup_window&amp;quot;. This sort of works,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
what follows is JavaScript notation based on C GObject code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function SoundWindow() {&lt;br /&gt;
&lt;br /&gt;
var box = new gtk[&amp;quot;vbox&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
gtk[&amp;quot;container&amp;quot;].add (this, box);&lt;br /&gt;
&lt;br /&gt;
box.pack([volumebar, ...]);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SoundWindow.prototype = {&lt;br /&gt;
&lt;br /&gt;
type_hint: GDK_WINDOW_TYPE_HINT_MENU,&lt;br /&gt;
&lt;br /&gt;
name: &amp;quot;hildon-status-bar-popup&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
resizable: false,&lt;br /&gt;
&lt;br /&gt;
decorated: false,&lt;br /&gt;
&lt;br /&gt;
/* i think this is the cute border you&#039;re asking about, and yes, it&lt;br /&gt;
&lt;br /&gt;
seems like it&#039;s just hard coded into the C */&lt;br /&gt;
&lt;br /&gt;
border_width: 20,&lt;br /&gt;
&lt;br /&gt;
keep_above: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fwiw, the same general approach is used by the display applet.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; but it lacks the nice thick border and rounded corners that the default&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; sound applet uses, as well as some intelligent autoclose functions. Can you&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; find out if there is some kind of hildon container that is being used for&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; the default sound applet?&lt;/div&gt;</summary>
		<author><name>24.18.159.98</name></author>
	</entry>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=User:Generalantilles/rm_you&amp;diff=47943</id>
		<title>User:Generalantilles/rm you</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=User:Generalantilles/rm_you&amp;diff=47943"/>
		<updated>2008-06-10T12:05:12Z</updated>

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

		<summary type="html">&lt;p&gt;24.18.159.98: /* IRC with Timeless concerning GTK stuff with the sound applet: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hey, it&#039;s rm_you!&lt;br /&gt;
&lt;br /&gt;
Check out [http://adv-backlight.garage.maemo.org Advanced Backlight Statusbar Applet]! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===IRC with Timeless concerning GTK stuff with the sound applet:===&lt;br /&gt;
&lt;br /&gt;
rm_you: open the official sound statusbar applet code&lt;br /&gt;
&lt;br /&gt;
rm_you: search for hildon_hvolumebar_new&lt;br /&gt;
&lt;br /&gt;
timeless: Searching...&lt;br /&gt;
&lt;br /&gt;
timeless: ok&lt;br /&gt;
&lt;br /&gt;
timeless: Found one matching line&lt;br /&gt;
&lt;br /&gt;
rm_you: and then once you know what the name of that object is, find what container they add it to&lt;br /&gt;
&lt;br /&gt;
rm_you: then all I need to know is what type of container it is&lt;br /&gt;
&lt;br /&gt;
timeless: it gets munged by gtk_box_pack_start&lt;br /&gt;
&lt;br /&gt;
rm_you: gtk_box_pack_start... ok&lt;br /&gt;
&lt;br /&gt;
rm_you: into what kind of box&lt;br /&gt;
&lt;br /&gt;
rm_you: and what does that box get added to&lt;br /&gt;
&lt;br /&gt;
timeless: gtk_vbox_new (false, 5)&lt;br /&gt;
&lt;br /&gt;
timeless: and into the soundwindow, whatever that is&lt;br /&gt;
&lt;br /&gt;
rm_you: ok, so they put the &amp;quot;hildon_hvolumebar_new&amp;quot; object into a &amp;quot;gtk_vbox_new&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
rm_you: and that gets added to... a &amp;quot;soundwindow&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
timeless: g_object_new (... &amp;quot;statusbar-item&amp;quot; ...)&lt;br /&gt;
&lt;br /&gt;
rm_you: ... what?&lt;br /&gt;
&lt;br /&gt;
timeless: yeah a SOUND_TYPE_WINDOW&lt;br /&gt;
&lt;br /&gt;
rm_you: can you do a search for &amp;quot;gtk_menu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
timeless: oh. yeah, essentially this reimplements and delegates to things :)&lt;br /&gt;
&lt;br /&gt;
rm_you: ?&lt;br /&gt;
&lt;br /&gt;
timeless: basically the sound_window thing acts almost like a gtkmenu container&lt;br /&gt;
&lt;br /&gt;
timeless: and special handles things to make it all work :)&lt;br /&gt;
&lt;br /&gt;
rm_you: ....&lt;br /&gt;
&lt;br /&gt;
timeless: e.g. it has a set_focus method which will call gtk_menu_item_(de)select on things&lt;br /&gt;
&lt;br /&gt;
rm_you: so&lt;br /&gt;
&lt;br /&gt;
rm_you: but&lt;br /&gt;
&lt;br /&gt;
rm_you: but&lt;br /&gt;
&lt;br /&gt;
rm_you: but&lt;br /&gt;
&lt;br /&gt;
rm_you: WHAT!?&lt;br /&gt;
&lt;br /&gt;
timeless: sorry, I&#039;m definately not copying the rest of the code&lt;br /&gt;
&lt;br /&gt;
timeless: (gone)&lt;br /&gt;
&lt;br /&gt;
===Emails from Timeless concerning GTK stuff with applets:===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Wed, May 7, 2008 at 7:38 AM, Adam Harwell &amp;lt;aharwell at trinity.edu&amp;gt; wrote:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; The binary package osso-statusbar-sound contains a statusbar applet that can&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; be used to control the volume level of the system. It consists primarily of&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; some GtkContainer or HildonContainer object that can be used as a&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; popup/popdown menu. That object then contains a &amp;quot;hildon_hvolumebar&amp;quot; as well&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; as a menu item of some kind that launches the sound configuration&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; controlpanel applet.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;  Currently I am using a &amp;quot;hildon_desktop_popup_window&amp;quot;. This sort of works,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
what follows is JavaScript notation based on C GObject code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function SoundWindow() {&lt;br /&gt;
&lt;br /&gt;
var box = new gtk[&amp;quot;vbox&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
gtk[&amp;quot;container&amp;quot;].add (this, box);&lt;br /&gt;
&lt;br /&gt;
box.pack([volumebar, ...]);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SoundWindow.prototype = {&lt;br /&gt;
&lt;br /&gt;
type_hint: GDK_WINDOW_TYPE_HINT_MENU,&lt;br /&gt;
&lt;br /&gt;
name: &amp;quot;hildon-status-bar-popup&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
resizable: false,&lt;br /&gt;
&lt;br /&gt;
decorated: false,&lt;br /&gt;
&lt;br /&gt;
/* i think this is the cute border you&#039;re asking about, and yes, it&lt;br /&gt;
&lt;br /&gt;
seems like it&#039;s just hard coded into the C */&lt;br /&gt;
&lt;br /&gt;
border_width: 20,&lt;br /&gt;
&lt;br /&gt;
keep_above: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fwiw, the same general approach is used by the display applet.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; but it lacks the nice thick border and rounded corners that the default&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; sound applet uses, as well as some intelligent autoclose functions. Can you&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; find out if there is some kind of hildon container that is being used for&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; the default sound applet?&lt;/div&gt;</summary>
		<author><name>24.18.159.98</name></author>
	</entry>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=User:Generalantilles/rm_you&amp;diff=47945</id>
		<title>User:Generalantilles/rm you</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=User:Generalantilles/rm_you&amp;diff=47945"/>
		<updated>2008-06-10T11:07:37Z</updated>

		<summary type="html">&lt;p&gt;24.18.159.98: /* IRC with Timeless concerning GTK stuff with the sound applet: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hey, it&#039;s rm_you!&lt;br /&gt;
&lt;br /&gt;
Check out [http://adv-backlight.garage.maemo.org Advanced Backlight Statusbar Applet]! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===IRC with Timeless concerning GTK stuff with the sound applet:===&lt;br /&gt;
&lt;br /&gt;
timeless: Searching...&lt;br /&gt;
&lt;br /&gt;
timeless: ok&lt;br /&gt;
&lt;br /&gt;
timeless: Found one matching line&lt;br /&gt;
&lt;br /&gt;
rm_you: and then once you know what the name of that object is, find what container they add it to&lt;br /&gt;
&lt;br /&gt;
rm_you: then all I need to know is what type of container it is&lt;br /&gt;
&lt;br /&gt;
timeless: it gets munged by gtk_box_pack_start&lt;br /&gt;
&lt;br /&gt;
rm_you: gtk_box_pack_start... ok&lt;br /&gt;
&lt;br /&gt;
rm_you: into what kind of box&lt;br /&gt;
&lt;br /&gt;
rm_you: and what does that box get added to&lt;br /&gt;
&lt;br /&gt;
timeless: gtk_vbox_new (false, 5)&lt;br /&gt;
&lt;br /&gt;
timeless: and into the soundwindow, whatever that is&lt;br /&gt;
&lt;br /&gt;
rm_you: ok, so they put the &amp;quot;hildon_hvolumebar_new&amp;quot; object into a &amp;quot;gtk_vbox_new&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
rm_you: and that gets added to... a &amp;quot;soundwindow&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
timeless: g_object_new (... &amp;quot;statusbar-item&amp;quot; ...)&lt;br /&gt;
&lt;br /&gt;
rm_you: ... what?&lt;br /&gt;
&lt;br /&gt;
timeless: yeah a SOUND_TYPE_WINDOW&lt;br /&gt;
&lt;br /&gt;
rm_you: can you do a search for &amp;quot;gtk_menu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
timeless: oh. yeah, essentially this reimplements and delegates to things :)&lt;br /&gt;
&lt;br /&gt;
rm_you: ?&lt;br /&gt;
&lt;br /&gt;
timeless: basically the sound_window thing acts almost like a gtkmenu container&lt;br /&gt;
&lt;br /&gt;
timeless: and special handles things to make it all work :)&lt;br /&gt;
&lt;br /&gt;
rm_you: ....&lt;br /&gt;
&lt;br /&gt;
timeless: e.g. it has a set_focus method which will call gtk_menu_item_(de)select on things&lt;br /&gt;
&lt;br /&gt;
rm_you: so&lt;br /&gt;
&lt;br /&gt;
rm_you: but&lt;br /&gt;
&lt;br /&gt;
rm_you: but&lt;br /&gt;
&lt;br /&gt;
rm_you: but&lt;br /&gt;
&lt;br /&gt;
rm_you: WHAT!?&lt;br /&gt;
&lt;br /&gt;
timeless: sorry, I&#039;m definately not copying the rest of the code&lt;br /&gt;
&lt;br /&gt;
timeless: (gone)&lt;br /&gt;
&lt;br /&gt;
===Emails from Timeless concerning GTK stuff with applets:===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Wed, May 7, 2008 at 7:38 AM, Adam Harwell &amp;lt;aharwell at trinity.edu&amp;gt; wrote:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; The binary package osso-statusbar-sound contains a statusbar applet that can&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; be used to control the volume level of the system. It consists primarily of&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; some GtkContainer or HildonContainer object that can be used as a&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; popup/popdown menu. That object then contains a &amp;quot;hildon_hvolumebar&amp;quot; as well&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; as a menu item of some kind that launches the sound configuration&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; controlpanel applet.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;  Currently I am using a &amp;quot;hildon_desktop_popup_window&amp;quot;. This sort of works,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
what follows is JavaScript notation based on C GObject code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function SoundWindow() {&lt;br /&gt;
&lt;br /&gt;
var box = new gtk[&amp;quot;vbox&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
gtk[&amp;quot;container&amp;quot;].add (this, box);&lt;br /&gt;
&lt;br /&gt;
box.pack([volumebar, ...]);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SoundWindow.prototype = {&lt;br /&gt;
&lt;br /&gt;
type_hint: GDK_WINDOW_TYPE_HINT_MENU,&lt;br /&gt;
&lt;br /&gt;
name: &amp;quot;hildon-status-bar-popup&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
resizable: false,&lt;br /&gt;
&lt;br /&gt;
decorated: false,&lt;br /&gt;
&lt;br /&gt;
/* i think this is the cute border you&#039;re asking about, and yes, it&lt;br /&gt;
&lt;br /&gt;
seems like it&#039;s just hard coded into the C */&lt;br /&gt;
&lt;br /&gt;
border_width: 20,&lt;br /&gt;
&lt;br /&gt;
keep_above: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fwiw, the same general approach is used by the display applet.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; but it lacks the nice thick border and rounded corners that the default&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; sound applet uses, as well as some intelligent autoclose functions. Can you&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; find out if there is some kind of hildon container that is being used for&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; the default sound applet?&lt;/div&gt;</summary>
		<author><name>24.18.159.98</name></author>
	</entry>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=User:Generalantilles/rm_you&amp;diff=47946</id>
		<title>User:Generalantilles/rm you</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=User:Generalantilles/rm_you&amp;diff=47946"/>
		<updated>2008-06-10T11:05:58Z</updated>

		<summary type="html">&lt;p&gt;24.18.159.98: /* Emails from Timeless concerning GTK stuff with applets: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hey, it&#039;s rm_you!&lt;br /&gt;
&lt;br /&gt;
Check out [http://adv-backlight.garage.maemo.org Advanced Backlight Statusbar Applet]! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===IRC with Timeless concerning GTK stuff with the sound applet:===&lt;br /&gt;
timeless: Searching...&lt;br /&gt;
timeless: ok&lt;br /&gt;
timeless: Found one matching line&lt;br /&gt;
rm_you: and then once you know what the name of that object is, find what container they add it to&lt;br /&gt;
rm_you: then all I need to know is what type of container it is&lt;br /&gt;
timeless: it gets munged by gtk_box_pack_start&lt;br /&gt;
rm_you: gtk_box_pack_start... ok&lt;br /&gt;
rm_you: into what kind of box&lt;br /&gt;
rm_you: and what does that box get added to&lt;br /&gt;
timeless: gtk_vbox_new (false, 5)&lt;br /&gt;
timeless: and into the soundwindow, whatever that is&lt;br /&gt;
rm_you: ok, so they put the &amp;quot;hildon_hvolumebar_new&amp;quot; object into a &amp;quot;gtk_vbox_new&amp;quot; object&lt;br /&gt;
rm_you: and that gets added to... a &amp;quot;soundwindow&amp;quot;?&lt;br /&gt;
timeless: g_object_new (... &amp;quot;statusbar-item&amp;quot; ...)&lt;br /&gt;
rm_you: ... what?&lt;br /&gt;
timeless: yeah a SOUND_TYPE_WINDOW&lt;br /&gt;
rm_you: can you do a search for &amp;quot;gtk_menu&amp;quot;&lt;br /&gt;
timeless: oh. yeah, essentially this reimplements and delegates to things :)&lt;br /&gt;
rm_you: ?&lt;br /&gt;
timeless: basically the sound_window thing acts almost like a gtkmenu container&lt;br /&gt;
timeless: and special handles things to make it all work :)&lt;br /&gt;
rm_you: ....&lt;br /&gt;
timeless: e.g. it has a set_focus method which will call gtk_menu_item_(de)select on things&lt;br /&gt;
rm_you: so&lt;br /&gt;
rm_you: but&lt;br /&gt;
rm_you: but&lt;br /&gt;
rm_you: but&lt;br /&gt;
rm_you: WHAT!?&lt;br /&gt;
timeless: sorry, I&#039;m definately not copying the rest of the code&lt;br /&gt;
timeless: (gone)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Emails from Timeless concerning GTK stuff with applets:===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Wed, May 7, 2008 at 7:38 AM, Adam Harwell &amp;lt;aharwell at trinity.edu&amp;gt; wrote:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; The binary package osso-statusbar-sound contains a statusbar applet that can&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; be used to control the volume level of the system. It consists primarily of&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; some GtkContainer or HildonContainer object that can be used as a&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; popup/popdown menu. That object then contains a &amp;quot;hildon_hvolumebar&amp;quot; as well&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; as a menu item of some kind that launches the sound configuration&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; controlpanel applet.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;  Currently I am using a &amp;quot;hildon_desktop_popup_window&amp;quot;. This sort of works,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
what follows is JavaScript notation based on C GObject code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function SoundWindow() {&lt;br /&gt;
&lt;br /&gt;
var box = new gtk[&amp;quot;vbox&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
gtk[&amp;quot;container&amp;quot;].add (this, box);&lt;br /&gt;
&lt;br /&gt;
box.pack([volumebar, ...]);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SoundWindow.prototype = {&lt;br /&gt;
&lt;br /&gt;
type_hint: GDK_WINDOW_TYPE_HINT_MENU,&lt;br /&gt;
&lt;br /&gt;
name: &amp;quot;hildon-status-bar-popup&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
resizable: false,&lt;br /&gt;
&lt;br /&gt;
decorated: false,&lt;br /&gt;
&lt;br /&gt;
/* i think this is the cute border you&#039;re asking about, and yes, it&lt;br /&gt;
&lt;br /&gt;
seems like it&#039;s just hard coded into the C */&lt;br /&gt;
&lt;br /&gt;
border_width: 20,&lt;br /&gt;
&lt;br /&gt;
keep_above: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fwiw, the same general approach is used by the display applet.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; but it lacks the nice thick border and rounded corners that the default&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; sound applet uses, as well as some intelligent autoclose functions. Can you&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; find out if there is some kind of hildon container that is being used for&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; the default sound applet?&lt;/div&gt;</summary>
		<author><name>24.18.159.98</name></author>
	</entry>
</feed>