- NSIS Discussion
- Imagein description of a component
Archive: Imagein description of a component
Contex
7th April 2009 21:22 UTC
Imagein description of a component
Well, as it says in the title, I want to know if it is possible to insert an image in the discription of a component, if yes could anyone explain how?
Thanks, Contex
Here's a picture explaining where I want to have this image:
Animaether
7th April 2009 21:54 UTC
Not by default, no.
Probably the easiest method would be to reshack the modern UI resources and add a bitmap control the components page in exactly the spot you need it... you can load an image file into it from there.
Contex
8th April 2009 19:13 UTC
Alright so far I understand it but when I came to this word "bitmap control" my mind went crazy. :weird: Any more explanation of it please :rolleyes: :rolleyes:. Or even an example would be the best if you have one.
Animaether
8th April 2009 20:00 UTC
outside the scope of this forum, really... start with getting the ResHacker (Resource Hacker) utility:
http://angusj.com/resourcehacker/
And have a peek at the Tutorials for it, for example:
http://www.**********/tutorial-all-ab...rief-tutorial/
Scroll down to 'Adding Newly added Resources in Dialog Boxes'.
MarcelP1977
7th April 2010 18:51 UTC
I want to do the same as in first post said.
Has anyone an example script how can i do it??
Please help me.
It would be nice if i can put an preview picture from my "installabel Logos" in components page.
Best Regards, Marcel.
Animaether
7th April 2010 19:19 UTC
'll reply in this thread - no point in resurrecting two
As per the above - you would have to use reshacker to first add a bitmap resource to the appropriate dialog. After that you'd have to adjust the code involved with changing the component description to change the image instead (or in addition).
For -most- of these things, though, I don't thin you'd want to use the component page at all. The component page has very little real-estate for textual descriptions as it is, let along images.
Why not create an nsDialogs page with a drop-down list or a flat listbox and a big image area, and then change the images on that. Once the user has made a choice, hide the other Sections, and select the section that corresponds to the skin that he user chose.
Edit: possibly because the changed image refuses to take on the bitmap control.. huh.
MarcelP1977
7th April 2010 19:28 UTC
How can i do that? Do you have example for me? :)
Or maybe i send you my (big) script and you can take a look?
Another question, i have also implemented follow tweak from the Wiki "Controlling Available Install Options". But it is descript for 4 elements, but i have 17!
When i adapt these script i have more then one elemts choosen the first time.
Animaether
7th April 2010 19:52 UTC
Originally posted by MarcelP1977
How can i do that? Do you have example for me? :)
!addincludedir "."
!addplugindir "."
!include "LogicLib.nsh"
!include "MUI2.nsh"
!include "winMessages.nsh"
!include "nsDialogs.nsh"
OutFile "test.exe"
Section
SectionEnd
Var dialog
Var hwnd
Var null
Var hwnd_listbox
Var hwnd_bitmap
Var res_bmp
!macro RedrawControl control
Push $0
EnableWindow $0 0
StrCpy $0 ${control}
System::Call "user32::InvalidateRect(i,i,i)i (r0, 0, 1)"
EnableWindow $0 1
Pop $0
!macroend
!define RedrawControl `!insertmacro RedrawControl`
Page Custom customPage
Function customPage
nsDialogs::Create 1018
Pop $dialog
InitPluginsDir
SetOutPath "$PluginsDir"
File "a.bmp"
File "b.bmp"
${NSD_CreateListBox} 0 0 20% 100% ""
pop $hwnd_listbox
${NSD_LB_AddString} $hwnd_listbox "Skin A"
${NSD_LB_AddString} $hwnd_listbox "Skin B"
${NSD_OnChange} $hwnd_listbox custompage.droplist.onchange
${NSD_CreateBitmap} 25% 0 190 171 ""
Pop $hwnd_bitmap
nsDialogs::Show
${NSD_FreeImage} $res_bmp
FunctionEnd
Function custompage.droplist.onchange
Pop $hwnd
SendMessage $hwnd ${LB_GETCURSEL} 0 0 $0
${If} $0 >= 0
System::Call user32::SendMessage(i$hwnd,i${LB_GETTEXT},i$0,t.r1)
${Select} $1
${Case} "Skin A"
StrCpy $3 "a.bmp"
${Case} "Skin B"
StrCpy $3 "b.bmp"
${Default}
StrCpy $3 "a.bmp"
${EndSelect}
${NSD_FreeImage} $res_bmp
${NSD_SetImage} $hwnd_bitmap "$PluginsDir\$3" $res_bmp
${EndIf}
FunctionEnd
!insertmacro MUI_LANGUAGE "English"
Something like that.
*goes to figure out why this didn't work before*
Edit: Because I used $R0 for the filename and that gets overwritten in nsDialogs.. whoops.
MarcelP1977
7th April 2010 19:59 UTC
Nice, thanks, i will try this out.
Can you help me on another Thread?
This one:
http://forums.winamp.com/showthread.php?t=318232
Thanks.