PDA

View Full Version : NxS Thinger plugin for Winamp 2.x/5.x


saivert
1st October 2004, 07:43
I have created this plugin which gives you a Thinger for Winamp 2.x/5.x series.

Use this only with classic skins as it doesn't work well when using Modern skins, but you shouldn't need to use this plugin in that case since most modern skins have thinger built-in.

It will be published at Winamp.com soon, but until this download from:

Saivert's homepage (http://inthegray.com/saivert/winamp-plugins/)

Have fun ;)

saivert
1st October 2004, 09:46
I also have a XFade control plugin that makes it easy to change the crossfade duration and switch it on/off.

Here it is:

http://inthegray.com/saivert/winamp-plugins/gen_xfade_setup.exe

DrO
1st October 2004, 12:16
Originally posted by saivert
It will be published at Winamp.com soonat some point over the weekend it will be reviewed when i've some freetime between work (if it crashes my machine i will hunt you down and... :blah: )

-daz

saivert
5th October 2004, 06:30
Oh... take it ease DrO!!

It's now in Winamp.com's plugin db (http://www.winamp.com/plugins/details.php?id=143015).

Comments to the comments
Yeah, I know! It could do with some more work on it, but I like it the way it is currently. If someone does have any suggestion, you may post em' here!

You can also post shit on my own message board (http://inthegray.com/saivert/cgi-bin/wwwboard/wwwboard.shtml).

DrO
5th October 2004, 07:38
Originally posted by saivert
Oh... take it ease DrO!!funnily enough it wasn't me who reviewed it (i went to do it inbetween setup up my new machine and found it had already been done though who is brendan?!?)

-daz

billyvnilly
13th October 2004, 18:39
is it possible to add other things to this thinger?

i would really like to see Dynamic Library and Album List, perhaps one of the better lyrics plugins. (mostly DL though)

saivert
19th October 2004, 08:54
This should be possible. I'm working on an external API that can be used by other plugins in the same way that the Global Hotkeys plugin API work.

I'm going to upload a new version of NxS Thinger soon which will have this implemented. Since the icons are currently standard STATIC controls, I must rewrite the entire plugin to handle any number of icons, and finally let the arrow buttons do something.

I have an intermediate update available now at my winamp-plugins section which have better looking icons and some other fixes (but no API yet):

http://www.inthegray.com/saivert/winamp-plugins/

This is also uploaded to Winamp.com:
http://www.winamp.com/plugins/details.php?id=143015

saivert
3rd November 2004, 07:19
I'm going to upload a new version of NxS Thinger soon. It will have these features:

- Message API for adding new icons.
- Scrollable view.
- Capacity: Logically sizeof(int) icons max
- All icons have two states: Highlight and no-highlight.
- ??

saivert
12th November 2004, 08:08
The new version is now uploaded to Winamp.com and can also be downloaded from my homepage (http://inthegray.com/saivert/winamp-plugins/).

Other plugin authors can now add new icons to the Thinger by using the included C header file ("NxSThingerAPI.h").

saivert
16th November 2004, 11:06
New version of XFade Dlg out now. Version 0.61. Submitted to Winamp.com, but in the meanwhile download at:

http://www.inthegray.com/saivert/winamp-plugins/

d3x7r0
16th November 2004, 17:51
This is a nice idea, I can't see any reasons for people still using thd dead Winamp3 to continue using it if this plugin turns out good ;)

Keep up the good work :)

EDIT: Just tried the new version and...


...OMFG IT'S ALMOST PERFECT :D

Now all we need is DrO's PLEX to complete the WA3 improvments :D

Still I believe you still have at least one thing to do: the sliding of the thinger should stop while only showing the last item, currently it keeps groing without hitting a limit if I'm not wrong.

Another thing you could do was to try to make the thinger colours vary acourding to the skins playlist colors. Don't know if this is possible but it would make it perfect (my blue crystal pengium skin doesn't go well with black and green :D )

Anyway keep up the great work ;)

Lion12
27th November 2004, 00:44
Is it possible to have a thinger at least for JTFE, DL and Albumlist (maybe some more)? If this is possible this plugin is useful (and I would be really happy :D )
Otherwise its not really a pro to have just another window taking space of screen.

Edit: Its not up to me to add icons to thinger, is it - developer of plugins have to do this???

DrO
27th November 2004, 01:01
Originally posted by Lion12
Its not up to me to add icons to thinger, is it - developer of plugins have to do this??? the plugin developers have to do this

-daz

Lion12
27th November 2004, 10:19
Originally posted by DrO
the plugin developers have to do this

-daz
Haha, ok and will they do so?

Lion12
27th November 2004, 16:48
ref jtf:
maybe this is an idea for a jtfe icon

saivert
29th November 2004, 06:15
I have currently implemented an API you can use to add icons to the thinger. You should have got a file called "NxSThingerAPI.h" when you installed NxS Thinger control. Using this header you can set up a structure and call SendMessage a couple of times and there you go....

There is also a new version of thinger out (version 0.5). Fetch it at: http://inthegray.com/saivert/winamp-plugins/

DrO
29th November 2004, 11:53
Originally posted by Lion12
ref jtf:
maybe this is an idea for a jtfe icon not bad :) i can't look at adding support for this to jtfe for a while due to work on other things but as long as the api in thinger is going to remain constant for the adding then i'm happy to add support in (and i won't mention about the bloat of adding in icons to the dll just for now :) )

-daz

Safai
29th November 2004, 16:58
Originally posted by saivert
I have currently implemented an API you can use to add icons to the thinger. You should have got a file called "NxSThingerAPI.h" when you installed NxS Thinger control. Using this header you can set up a structure and call SendMessage a couple of times and there you go....

There is also a new version of thinger out (version 0.5). Fetch it at: http://inthegray.com/saivert/winamp-plugins/

I was trying to delete an icon that was added previously but it is not working, after looking at the source code, it appears the implementation is different from the documentation for DELETE and MODIFY ...

in the code, it uses the uIconId that's passed in by the ADD, in the documentation, it appears to be using the return value of the ADD api... which way is it supposed to be?

Joonas
30th November 2004, 17:45
Two things...

I can't seem to add Dynamic Library as an icon...I dunno what I'm doing wrong...I use PostMessage for a function in my init()...you can see the code in the attached file that get called in the message queue.

Also...when I debugged I noticed that when you quit Winamp gen_thinger.dll seems to cause an exception...I thought it was something I did first but it happened whether I did anything associated with Thinger or not...

.NET said
HEAP[winamp.exe]: Invalid Address specified to RtlFreeHeap( 00150000, 001D17C8 )
Unhandled exception at 0x7c901230 in winamp.exe: User breakpoint.

It only occurs when gen_thinger is loaded and only when in debug mode...you can just continue but still seems like a good idea to fix?
you might have a look at it and see if it's only me :)

/Joonas

Safai
30th November 2004, 18:15
i got that exception too...

and to your problem... you need the BITMAP flag if you're using bitmaps... and it is probably a good idea to include the highlight bitmap too...

ntis.dwFlags = NTIS_ADD | NTIS_BITMAP

here is what i got... apart from the DELETE confusion i have stated above...

http://img.photobucket.com/albums/1003/Safai/AlbumList/NxSThinger.jpg

Joonas
30th November 2004, 18:49
Adding that flag and highlight bitmap did nothing...still don't get an icon in thinger :(

Thinger also seems to dislike modern skins...it's too big and the preferences box is too small...

/Joonas

Safai
30th November 2004, 19:04
in that case, maybe you're doing it too early... i think i did a PostMessage in init and do the stuff to add the thinger icon when i receive that 'post' message...

also my ntis is a member variable of my class... donno if that makes any difference...

and make sure you use at least v0.4 of the thinger...

oh... yeah... it doesn't work too well with modern skins...:(

Joonas
30th November 2004, 19:48
Well nothing seems to work...I am too calling it after a PostMessage in init()...

Maybe saivert can add some light what I'm doing wrong ;)

Also...in modern skins Thinger seems to be hooked to the same IPC as Media Library or something...cause it pops up together with Thinger...also I couldn't close Thinger...

/Joonas

Safai
30th November 2004, 20:04
do you have a test build somewhere? maybe i can try it out on my computer... :)

Joonas
30th November 2004, 20:12
The beta tries to add an icon...

/Joonas

Safai
30th November 2004, 20:38
okay... figured out what's wrong...

ntis.hWnd cannot be NULL... put a real window there... and it should work... :)



as for the exception... i changed 2 things... in iconlist.c

change the for loop to a while loop...

void IconList_Free(void) {
if (pList) {
/* Delete and free all icons */
int i;
while (pList->listsize) {
IconList_Del(0);
}

/* Free list */
HeapFree(GetProcessHeap(), 0, pList->listptr);
/* Free list structure itself */
HeapFree(GetProcessHeap(), 0, pList);
}
}


changed pList->listsize to idx

void IconList_Del(int idx)
{
[snip]
//Free NxSThingerIconStruct
HeapFree(GetProcessHeap(), 0, pList->listptr[idx]);

[snip]
}

billyvnilly
30th November 2004, 20:40
Also...in modern skins Thinger seems to be hooked to the same IPC as Media Library or somethingsame in classic skin. whenever i open up thinger, ML opens.

Safai
30th November 2004, 20:45
forgot to include the attachment...

Joonas
30th November 2004, 21:39
Safai..you're a genius :) Or at least a very patient person who has the time to parse code to find bugs :D

When adding a valid hwnd it worked fine...

Thanks!

/Joonas

DrO
30th November 2004, 21:42
Originally posted by Joonas
When adding a valid hwnd it worked fine...doh! :)

-daz

Joonas
30th November 2004, 21:44
Originally posted by DrO
doh! :)

-daz

Well the documentation claimed NULL would imply Winamp... :/


HWND hWnd; /* Set to NULL to send to Winamp */


/Joonas

Safai
30th November 2004, 21:54
yeah, NULL is supposed to work... guess that is not implemented yet...

debugging other people's code is fun... :weird: :D

saivert
1st December 2004, 09:05
Thanks
Umm!! Thanks for fixing my code. See how nice it was to include the source?? Well If you got the updated Thinger, maybe send the updated source to me so I can take a look at it.

About problems
I have tested NxS Thinger on several computers (all running Windows XP and same version of Winamp with a classic skin) without any problems.

About the code problems
When you add an icon using my API you will get an index value in return. Use this when deleting icons. Sorry for the bugs! Safai has fixed it though.

About ML appearing together with Thinger
I have subclassed Winamp in order to catch the message sent when people click the Winamp lightning bolt. I have to make sure I'm the first one to get this message. It seems like this on my own comouter, but you guys may have a different load order for the general purpose plugins. Since ML is a plugin it may be called first and then Thinger gets the message. Thats why they both appear when you click the lightning bolt. Sorry! Should fix that!

Thinger is for Classic skins only
I made the Thinger control for use with Classic skins only. It does show up in modern skins too, but then it has two major bugs:
1. I can't seem to resize the modern window to be smaller than it's internal size limit, but when I'm using a classic skin I can make it smaller. How do you hack into the moderns skin frame windows to make it smaller?
2. And when you try to close the Thinger window under a Modern skin it will simply reappear. Hope someone can answer this.

So for now: Use classic skins!

Joonas
1st December 2004, 10:11
Originally posted by saivert

About ML appearing together with Thinger
I have subclassed Winamp in order to catch the message sent when people click the Winamp lightning bolt. I have to make sure I'm the first one to get this message. It seems like this on my own comouter, but you guys may have a different load order for the general purpose plugins. Since ML is a plugin it may be called first and then Thinger gets the message. Thats why they both appear when you click the lightning bolt. Sorry! Should fix that!


This is really a problem. DL also wants to catch the lightning-bolt and Media Library and probably other plugins as well...a shame you (people in general) can't guarantee which one gets called :(


Thinger is for Classic skins only
I made the Thinger control for use with Classic skins only. It does show up in modern skins too, but then it has two major bugs:
1. I can't seem to resize the modern window to be smaller than it's internal size limit, but when I'm using a classic skin I can make it smaller. How do you hack into the moderns skin frame windows to make it smaller?
2. And when you try to close the Thinger window under a Modern skin it will simply reappear. Hope someone can answer this.

So for now: Use classic skins! [/B]

That's not a problem. I only use classic myself, only noticed it when debugging DL...

/Joonas

Safai
1st December 2004, 14:30
Originally posted by saivert
Thanks
Umm!! Thanks for fixing my code. See how nice it was to include the source?? Well If you got the updated Thinger, maybe send the updated source to me so I can take a look at it.

i'll do that tonight when i get home... :)

btw, source for AL2 is posted on sourceforge if you guys are interested...

Originally posted by saivert
About the code problems
When you add an icon using my API you will get an index value in return. Use this when deleting icons. Sorry for the bugs! Safai has fixed it though.

hmm... okay... maybe i'll fix that too while i'm at it... i haven't change that part yet since i don't know what the behaviour is supposed to be... right now, i'm passing in an ID with the ADD call which works...

Lion12
1st December 2004, 20:57
icons fixed ;)

DrO
1st December 2004, 21:03
*cough* :)

-daz

Safai
2nd December 2004, 04:10
changed source...

iconlist.c
* fixed exception in IconList_Del & IconList_Free
* changed IconList_Add to properly update uIconId

thinger.c
* support NULL as the hwnd for NTIS_ADD

saivert
2nd December 2004, 06:31
I have merged your changes with the rest, and uploaded a new version (0.51) with the bug fixes applied.


The Winamp.com team may take some time reviewing it, so in the meantime, download it from:

gen_thinger_setup.exe (http://inthegray.com/saivert/winamp-plugins/gen_thinger_setup.exe)

Here's the "What's New?":
[list=1]
Bug fixes by Safai! :-)
No more infinite scroll when clicking the right scroll button.
[/list=1]

DrO
2nd December 2004, 08:12
Originally posted by saivert
The Winamp.com team may take some time reviewing ityou'll be waiting some time since when i checked on the weekend the whole submission/review system was borked and it's been like that for a while now

-daz

d3x7r0
2nd December 2004, 15:25
great, I love this plugin ;)

Pity it doesn't qork with moder skins. This with my Wasabi.Player skin would be perfect :p

d3x7r0
2nd December 2004, 15:28
ok now let us see: the thinger is gone :|

I'll never switch to modern skins again when using this plugin :?

btw is it just me or the installer and the plugin say 0.3 :S

edit: nevermind, it's back now, i think it was my fault: didn't click the lightning bolt :p

still it says 0.3, may my cache settings :(

Joonas
3rd December 2004, 20:51
Something is messed up again...when using the old thinger from Winamp.com Dynamic Library shows up fine...but it doesn't with the updated one I took from this thread...I do get a DEBUG Messagebox saying it received an ADD message though...

/Joonas

d3x7r0
3rd December 2004, 21:45
same here :?

Safai
4th December 2004, 01:08
same here... :cry:

saivert
6th December 2004, 09:40
Updated it once more. Try this release:

gen_thinger_setup.exe version 0.512 (http://inthegray.com/saivert/winamp-plugins/gen_thinger_setup.exe)

It's not my fault that it does not work in Modern Skins. It is the modern skins support plugin that is enforcing a very huge minimum size limit for all windows. I could create my own window but it wouldn't be propely skinned and wouldn't dock to Winamp's main window as it's supposed to either.
Somebody must helpt me out and tell me how to hack Modern Skins frame windows.

You should be able to get your icon added. Just read the "NxSThingerAPI.h" file included with this new relese.

Joonas
6th December 2004, 11:17
Originally posted by saivert
You should be able to get your icon added. Just read the "NxSThingerAPI.h" file included with this new relese. [/B]

well I was able before :)
perhaps now too...will check when I get home.

/Joonas

DrO
6th December 2004, 11:20
Originally posted by saivert
Somebody must helpt me out and tell me how to hack Modern Skins frame windows.you need the wasabi sdk to be able to do that

and until this is confirmed working i'm holding out adding it into jtfe (so i'll let Joonas by the guinea pig for this :) )

-daz

d3x7r0
6th December 2004, 12:51
very nice, the perfect thinger ;) (well not perfect for everybody but for me it is :p )

Joonas
6th December 2004, 12:54
Originally posted by DrO
you need the wasabi sdk to be able to do that

and until this is confirmed working i'm holding out adding it into jtfe (so i'll let Joonas by the guinea pig for this :) )

-daz

Confirmed that the icon is now added properly as of gen_thinger_setup.exe version 0.512

/Joonas

DrO
6th December 2004, 13:08
Originally posted by Joonas
Confirmed that the icon is now added properly as of gen_thinger_setup.exe version 0.512cool, well if that's so i can look at adding in jtfe icons in the next few weeks (deciding whether to use Lion12's ones or do something else and just have icons with 'JTFE' in it, such are the woahs of keeping people who like pictures happy :) )

-daz

d3x7r0
6th December 2004, 13:09
lol, me like pictures :D

THINGER POWA, now all we need is a sidecar in the playlist to complete the winamp3 look ;)

Joonas
6th December 2004, 13:29
I still would like pictures that don't take 4 kb of space before I finally add them...lion12 or anyone else up for it? else I have to draw them and that is not a pretty sight :)

/Joonas

Safai
6th December 2004, 14:52
best i could do... (hope Lion12 don't mind me messing with his icons...)

Lion12
6th December 2004, 16:33
Hey **** no, I'm too late :cry: !
Neglected my duty because of this!
@safai: No problem.

Though 16 colors seems to be enough :D
Completely repainted the DL icon.

Lion12
6th December 2004, 20:55
Can anyone confirm the last icons are allright? It's hard to assess using a TFT.

Originally posted by DrO
cool, well if that's so i can look at adding in jtfe icons in the next few weeks (deciding whether to use Lion12's ones or do something else and just have icons with 'JTFE' in it, such are the woahs of keeping people who like pictures happy :) )

-daz
Tried to so same with jtfe icons. Added an alternative version of jtfe icon. Do you think the picture is as significant as it should be? Other ideas are welcome!

d3x7r0
6th December 2004, 20:58
The dl icons are sweet Lion21, very nice ;)

In the jtfe icons I prefer the first ones but the other ones are cool to I guess :)

DrO
6th December 2004, 21:00
they all look pretty decent to me from what i can see (and for a change this old monitor isn't playing up ;) )

and for the jtfe icons, they are sweet (especially the first version ones in there <3)

hehe, was just writing this as d3x7r0 replied. right i'll be adding in the first ones then when i get around to doing it (hopefully sooner once i finish the project i'm working on at the moment)

-daz

Lion12
6th December 2004, 21:29
Originally posted by DrO
... in there <3 ...

But please no
" <3 "
Please not red!

Oh God! That won't keep you out of mischief! :rolleyes:

saivert
7th December 2004, 08:03
I have now uploaded yet another release. This one is version 0.513 and here is the new stuff:

# Bundled an example plugin project that demonstrates how to use the Thinger API. This plugin will be copied to "Winamp\Plugins\NxS Thinger vx.x Source\Example plugin". I hope this example plugin gets rid of all the misunderstandings around the API.

# Added a new menu item to Thingers right-click menu: "Debug: Show icon info". Use this to display a message box with information about the icon you right-clicked.

Uploaded to Winamp.com, but until they have checked it in you must fetch it from:

gen_thinger_setup.exe (http://inthegray.com/saivert/winamp-plugins/gen_thinger_setup.exe)

Icons
The icons you guys have designed look great. And 16 colors isn't that bad at all. Just lacks some depth though, but me likes it. Maybe I will add support for PNG in the future? Someone up for this?

Updated JTFE?
@DrO: When will we see an update of JTFE?

DrO
7th December 2004, 08:36
Originally posted by saivert
Updated JTFE?
@DrO: When will we see an update of JTFE? in a few weeks, i've got a list of things to look into to check/fix and other projects are of a high priority at the moment before i can start adding in new stuff to the ol' girl ;)

-daz

saivert
7th December 2004, 09:07
I just wanted to try out a version of JTFE that adds an icon to my NxS Thinger plugin. But I will wait...

DrO
7th December 2004, 09:40
if i can, i'll try and make a test build up in the next few days (between fixing pc's for people and coding for toqer things are a bit pushed at the moment)

-daz

Thunder Pussy
7th December 2004, 19:42
Hi, I posted this in the Dynamic Library thread a little while ago & am copying it here.

"
As far as the thinger icons, shouldn't they be packaged with the thinger plugin instead of dl? Thinger access is a neat idea although I like to use hotkeys instead of the mouse. The icons being present in the Thinger would be way of informing people about DL & jtfe. If they click the icon for DL & they don't have dl installed, a message box could offer to take them to this [DL]thread, or DrO's site for JtFE.
"

Best,
¿¢?

shaneh
8th December 2004, 01:45
Err.. you could use it as an ad., but I dont think thats the intention. Its a mechanism for launching dialogs etc of plugins you have installed. What if you dont want JTFE or DL? What if some other app comes along later that you do want on there?

Thats like saying "shouldnt the start menu in Windows be full of applications you dont have installed and popup a dialog when you try and use them."

saivert
8th December 2004, 09:27
Yeah! I agree shaneh. The original Thinger component from Winamp3 didn't contain icons for all possible components either.

Each an every component who wanted an icon in the thinger had to keep it's own icons inside the component DLL. This was of course PNG images so it didn't take up all that space.

I'm trying to implement support for PNG images instead of bloated bitmaps (BMP) or crappy icons. I might support other color shades for the Thinger too, like the Winamp3 version did.

Joonas
8th December 2004, 10:15
Originally posted by saivert
Yeah! I agree shaneh. The original Thinger component from Winamp3 didn't contain icons for all possible components either.

Each an every component who wanted an icon in the thinger had to keep it's own icons inside the component DLL. This was of course PNG images so it didn't take up all that space.

I'm trying to implement support for PNG images instead of bloated bitmaps (BMP) or crappy icons. I might support other color shades for the Thinger too, like the Winamp3 version did.

That would be fine...I'm not against the idea of the icons in DL really but rather the wasted space...not that it matters really but can you minimize the size you should I think...

/Joonas

DrO
8th December 2004, 11:19
a 1.5k or so overhead when using those 16 colour images isn't too bad when compared to the size of dl, jtfe, albumlist, etc.

png support may be a good idea if more colours are needed but these 16 colour ones pretty sweet to me i think :)

-daz

DrO
8th December 2004, 11:19
a 1.5k or so overhead when using those 16 colour images isn't too bad when compared to the size of dl, jtfe, albumlist, etc.

png support may be a good idea if more colours are needed but these 16 colour ones pretty sweet to me i think :)

-daz

Safai
8th December 2004, 14:28
agreed. like in my plugin... i actually create multiple icons in the thinger... one for each profile/window...

Thunder Pussy
8th December 2004, 15:30
I mentioned it as a way for someone who doesn't know about plugin x to learn about it, which I suppose is an advertisement. With the original version and the current version of thinger there are icons for features not installed so it isn't unusual for there to be icons that don't link to anything. Winamp3 would never run for long on my pc w/o crashing so I never had a great deal of experience with it, and didn't know Winamp3 components contained thinger icons. I see more clearly now, and rescind the idea.

Lion12
8th December 2004, 19:01
Originally posted by ¿¢?
I like to use hotkeys instead of the mouse
...I see more clearly now, and rescind the idea. And I want to avoid to have too much hotkeys and that's why I really love this idea. :up:

Originally posted by saivert
I might support other color shades for the Thinger too, like the Winamp3 version did.

I'm not worried because of that as I only use winamp built in classic skin but probably people want to have icons and background in different colour paints. Think that's something you really should support in some manner - see attached file. (Though I have no clue about Winamp3 features.)
I 've a highlighted 'H' in the thinger title even if window is in shade mode. Is it only me? But that's only a minor thing.

Edit:
@safai: Great to have icons for each profile - I lost my heart to your plugin. ;)

Kebabrov
8th December 2004, 22:12
This is pretty nifty :)

seems a bit flickery if i move the mouse across it quickly

i know its not finish but will these ever be added:
-ability to remove or rearrange thinger icons
-i think something needs to be changed about the colours for different skins. it looks weird with my MacOS style skin. unfortunately, i cant see anyway of doing it without creating a whole new set of different coloured icons. whats wrong with using windows .ico files? they have a transparency so the background of the thinger can be skin-coloured.
-make it so that if a window is visible, but not active, it becomes activated when its icon is clicked. if its already active, it becomes hidden. that way i can have DL, ML, AVS and Video windows all docked in the same place, and they're only a thinger-click away :)

shins
9th December 2004, 05:01
Would be great if this plugin progresses enough to the point where it's integrated into an official Winamp release.:up:

billyvnilly
9th December 2004, 05:11
not even a consideration until the damn modern skin bug can be fixed. but i agree.


Bugs
*opens ml when thinger is opened from dropdown menu
*modern skin bug

Request
*ability to delete icons (its greyed out but i expect its coming soon)
*ability to sort icons


good job saivert
:up: :up:

saivert
9th December 2004, 06:35
These are the points I'm going to work on to archieve:

[list=1]
Thinger icons that support transparency. Maybe encourage people to use icons. Even in the current version of NxS Thinger you can use icons. Just assign a HICON to the hIcon member of a NxSThingerIconStruct and don't include the NTIS_BITMAP flag in the dwFlags member of the same structure.
Ability to reorder the icons at run-time. Currently icons are just arranged as they are added to the internal list object. Don't think I have to write a lot of code to archieve this.
PNG support. Since transparencies in icons are simply based on a solid color, this may look odd depending on what background color you have. PNG images support an alpha channel and you can thus have different transparency levels in the image. Nice drop shadows will be simple to make then.
[/list=1]

PS! I like the idea of having NxS Thinger bundled with Winamp. Just like DrO's JTFE. But I think I will have to work a bit harder for that to happen. Keeping up with DrO isn't easy. :-)

DrO
9th December 2004, 07:36
getting into the winamp distro isn't easy either (look at ml_ipod even that hasn't been shipped with it and there was serious talk about doing it).

-daz

saivert
9th December 2004, 10:12
Yeah! And ml_ipod is even partly developed by Justin Frankel!!
I think you have to make a real good plugin if it's ever going to be bundled with Winamp. The reason why JTFE was included is because it integrates so tighly with Winamp. It's almost like it was a feature in Winamp's core.
But I think NxS Thinger will get to a point where it's seen as a viable part of Winamp. It is actually based on something that was part of Winamp 3, so I'm already seeing this possible.

shins
9th December 2004, 13:51
If you get around to adding better icon support, I can cook up some nice icons for you in photoshop. Good luck.

Wildrose-Wally
10th December 2004, 01:31
Originally posted by saivert
PS! I like the idea of having NxS Thinger bundled with Winamp. Just like DrO's JTFE. But I think I will have to work a bit harder for that to happen. Keeping up with DrO isn't easy. :-)
Will never happen. It barely got into Winamp3, and if it had not been for Brennan, it would have probably been axed from that before the first and only public release came out.

saivert
10th December 2004, 06:43
I have updated my NxS Thinger (http://forums.winamp.com/showthread.php?postid=1531563) plugin to version
0.514. This is the new stuff:


# Removed "Test: Add an icon" and "Test: Delete an icon" from the Thinger menu. This was misleading users who thought they could right-click icons and delete them.

# The built in Media Library icon is now not added if the Media Library plugin (gen_ml.dll) is not installed.

# Bitmaps are now drawn transparently. All areas of the bitmaps that has the color RGB(255,0,255) or Fuchsia will be transparent.

Download from: http://inthegray.com/saivert/winamp-plugins/gen_thinger_setup.exe

@wildrose-wally:
What did you say?? It barely got into Winamp3?? What is your source. What kind of research is it that backs up that statement.

Lion12
10th December 2004, 11:33
Originally posted by saivert
# The built in Media Library icon is now not added if the Media Library plugin (gen_ml.dll) is not installed.

Can you add something like this for video and avs icon too? I have no avs installed for example and I have an avs icon which does nothing. Or you can add checkboxes in the config dialog for your preset icons - would be nice to hace the ability to disable preferences icon too.

DrO
10th December 2004, 16:38
got to agree with wildrose-wally on that since it was one of those debated things. i remember when i browsed the forums when Winamp3 was coming to life the talk about the thinger. it's sort of like marmite, you either like it or you don't (i fall into the second group) but i'm all for providing people with what they want. if people want a thinger then i'll recommend this.

jtfe only went into winamp since it was the best implementation for the enqueue feature which was missing from the 2.x core and i know a few people behind the scenes really pushed for it to be included. as for thinger going back in, i don't think there would be that level of enthusiasm and really it was only a modern skin thing which is why it was never implemented natively for classic skins.

all i can say is make it as good as you can and make it seem just like it was built by nullsoft and if you can do that then you know you've got that level of integration which will please a lot of people.

-daz

Joonas
11th December 2004, 12:09
Well before I can even think about using it I really think you have to fix this about ML opening when you open Thinger...damn annoying ;)

/Joonas

amano
17th December 2004, 00:13
Is there a separate thread to comment on Saivert's crossfader plugin which I like very much?

saivert
21st December 2004, 12:45
I have not created a spearate thread for NxS XFade control/dlg plugin. I'm nbot working much on it since it's about as finished as it ca get. The last improvements on the NxS Xfade Dlg was the fix of the ugly square in the bottom right corner.

I'm going to upload a new version, but since I don't have internet at home you wont see it untill middle of January i guess (school break)!

DrO
15th January 2005, 01:39
hmm, i keep getting the odd flashing of fushia in the thinger window if i hold the mouse down and the window is already at the limit of what it can scroll the list.

also why are the images set at 36*36 just out of curiosity?

other than that save/restore of the window position/size and disabling of the scroll buttons when there's not enough icons to scroll for the current window size would be nice. may alter the code myself if i can find the freetime (though i'd rather be lazy and have someone else do it ;) )

-daz

Joonas
15th January 2005, 07:43
As I debug DL I also noticed that Thinger still has some exception when it quits. It doesn't do much damage but perhaps it should be rooted out?

/Joonas

DrO
15th January 2005, 10:21
Originally posted by Joonas
As I debug DL I also noticed that Thinger still has some exception when it quits. It doesn't do much damage but perhaps it should be rooted out?

/Joonas i'd forgotten i had it installed on my winamp install, that could explain why i've been trying to find bugs that aren't there in my code :/ (coding late at night maybe isn't the best of things to be doing *shrugs* )

-daz

saivert
17th January 2005, 09:54
Thoughts...
When I decided to code the NxS Thinger control I simply tried to make an exact replica of the components in Winamp3.
That's why I'm using icons of 36x36 pixels. I'm also not hiding the scroll buttons since the Winamp3 Thinger never did that too.

Differences
Ofcourse there are a lot of things that differ between the Winamp3 Thinger and the NxS Thinger.
The main difference is the platform (Winamp3-->Winamp5) so I don't have access to the powerful skinning engine which would have simplified a lot of work.
If I could utilize the freeform skinning engine powers (gen_ff) I would have made the icons transparent and alpha-shaded from the beginning of, and they would be color-schemed like the Winamp3 Thinger.
Currently I'm using crappy Win32 GDI stuff to to the drawing and a so-called True Mask method (borrowed code) to draw the icons transparently (with Fuchsia as the mask color). This drawing code does not use a double buffer, so that's why it flickers. I'm going to change the code so it uses a double-buffer (just forgot all about it, only did this in visualization plugins where the flickers were more obvious). It really doesn't flicker all that much on my dev computer (Windows XP Pro SP2, 1.2Ghz AMD Duron, 256MB RAM).

Modern skin issues
As many users of NxS Thinger have concluded, the plugin doesn't behave well when the user is using a Modern skin for Winamp. All frame windows obtained using the IPC_GET_EMBEDIF IPC message has a lower size limit of 275x116 pixels which makes it difficult to make a plugin such as NxS Thinger which requires a smaller window to look best. I managed to code something that overrided this lower size limit, but this code only works with classic skins. The skinned frame provided when running under a Modern skin behaves a lot differently and I have not yet figured this out (any help is appreciated).
Another issue when using Modern skins together with NxS Thinger is the duplicate menu items appearing in Winamp's main menu. Since NxS Thinger creates a new window I decided to add a menu item to Winamp's main menu so that users could show/hide the NxS Thinger window easily. It seems like the Freeform skinning engine (gen_ff) adds it's own menu items for all Windows created and so caused duplicate menu items for NxS Thinger to appear. In the latest version of NxS Thinger, the menu item added by NxS Thinger is removed when the NxS Thinger window is visible under a Modern skin so that only the Freeform engine one is left. It is reinserted when it is hidden.

NxS Thinger API
Since I remembered that Winamp3 components could add their own icon to the Thinger component I decided to implement a similar system for NxS Thinger.
I used the new IPC_REGISTER_WINAMP_IPCMESSAGE IPC message to get a unique message identifier. Other plugins who wanted to add their icons would call the same in order to get the message to send to Winamp when adding icons.
After a while I thinked this message system sucked since I could just tell poeple to do a FindWindowEx(plugins.hwndParent, 0, "NxSThingerWnd", NULL) in order to get the handle to the NxS Thinger window and could later send special messages to this window when adding icons.

Updates
Shaneh is using GDI+ in his Toaster plugin, so I may start using that for NxS Thinger as well, but I'm not that familiar with the GDI+ class library yet. Seems like it looks like the MFC class wrappers for GDI's objects so it might not be that hard to learn.

Re: Exception on quit
I think this is becuase I'm using a falty pointer list system (for managing the icons). I'm going to make a total re-write of the entire plugin from C to C++ so I can use a real pointer list class that will take away much of the pain.
The source for Safai Ma's Album List plugin comes in handy now...

Make sure you got the latest version
Download gen_thinger_setup.exe (http://inthegray.com/saivert/winamp-plugins/gen_thinger_setup.exe) (181 kB)

saivert
31st January 2005, 09:00
New in this release:

Fixed: You can now resize the thinger without seing weird stuff painted on the screen. I finally came to senses about the thing.
Thinger API: If icon/bitmap added is invalid, then a default one will be used. Previously a blank area was displayed if given an invalid icon/bitmap handle.


Download link:

gen_thinger_setup.exe (http://inthegray.com/saivert/winamp-plugins/gen_thinger_setup.exe)

saivert
2nd February 2005, 12:56
I have updated NxS Thinger to v0.517.

This release should work when using a Modern Skin. It will not be that tall.

This is the code I'm using to force the Modern type skinned frame into having a proper height (not to tall).

/* Force resize the modern skin frame window */
if (SendMessage(plugin.hwndParent, WM_WA_IPC, 0, IPC_GETSKININFO)!=1) {
HWND hwndFrame;
RECT r;

hwndFrame = GetParent(GetParent(hwnd));
GetWindowRect(hwndFrame, &r);
r.right -= r.left;
// r.bottom -= r.top;

SetWindowPos(hwndFrame, 0, 0, 0,
r.right, config_showsb?WND_HEIGHT:WND_HEIGHT_NOSB,
SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOMOVE
);
}



Download the new release from Winamp.com (soon to be reviewed/published). You can also download it directly from my own site here:

http://inthegray.com/saivert/winamp-plugins/

Just locate the file gen_thinger_setup.exe down the list

siebe83
6th February 2005, 13:56
Works nice :up: :)

Some issues though...
When I start Winamp with Modern skin enabled, it looks as in the first screenshot. After clicking on Thinger, it looks normal again. For some reason the scroll buttons are too tall (I think because of the forcing of window into proper height?). Also dragging Thinger looks weird. I actually think you already know about all this, but well...


The first time I ran Winamp after I installed Thinger (with classic skin enabled) all worked fine, until I switched to the Modern skin. I got an error message (see screenshot 2). I got the message only once though...

d3x7r0
6th February 2005, 14:15
same here :?

DrO
6th February 2005, 15:22
ah, it's Thinger causing that issue. i thought it was something with one of my dev plugin builds so ignored it when i mess around with skin switching.

with siebe's initial loading issue, a second Setwindowpos is needed to alter the size of the first parent of the window created to resize it to fit inside the resized frame otherwise it does what it currently does. the other way is to just use the correct wasabi function to resize the window.

as another note, just looking at that code snippet posted, using IPC_GETSKININFO as a test for the skin being a modern skin really isn't such a great idea as it's a callback message for anything to return say the readme info about that skin (which gen_ff and my early dev build of gen_kjofol does) which makes it a bit ropey to rely upon

-daz

saivert
9th February 2005, 11:24
Yup! I'm having big troubles with the Modern Skin framework.

How do I really tell the Modern Skin frame window I get from the IPC_GET_EMEBEDIF call that it shouldn't limit how small the window can be?? How do you call into wasabi from a General Purpose plugin?

I need help with this since I'm not a MAKI/wasabi guru.

And I though that using IPC_GETSKININFO was a good idea. If you know a better way to check if the current skin is modern or classic, send me a PM (or post it here).

Wildrose-Wally
12th July 2005, 04:51
Hi, would it be possible to choose from a few different colors for the icons?

I would like the color shown below, and maybe a generic grey and a few others could also be added if possible.

Thank you very much.

saivert
21st July 2005, 18:40
@wildrose-wally: The screenshot was from the Fusion for Winamp3 skin I guess. I was using the default Winamp3 skin and it's thinger as the base when I made NxS Thinger. I will not support modifying the layout of the thinger window. For this I would need to access the Freefrom engine in Winamp5 which currently is very hard to do from a general purpose plug-in (which NxS Thinger is).

I would like to use GDI+, but I don't have that much experience with it. I need to rewrite NxS Thinger in C++ if I'm going to use GDI+ (since GDI+ has a C++ class library). I think the icons then will be made in PNG (all plug-ins that use NxS Thinger would need to be updated as well) and I can blend the icon with a different color just like the skin engine in Winamp3 did it with the original thinger. The icon itself is just grayscale I suppose.

Since I have been out of the programmin loop for a while now, it takes some time before I'm up to date with everything. Currenlty I only updated the NxS Balloon Tip plug-in (added MSN Messenger support and fixed issues with SHOUTCast streams). I have asked for help with the development of my plug-ins before, but none whatsoever have offered any real help ( I love the pointers in the right direction though). I don't want this to become a one-man project only. Nothing good comes out of that. I do not want to be heroic ("look mom, no hackerfriends helped me" style). So please join the NxS team and we can make great software.