; Settings OutFile _cssfilter.exe Name "ComboBox Filter" SetDatablockOptimize on RequestExecutionLevel user ; Includes !include nsDialogs.nsh !include LogicLib.nsh ;Dialog Variables Var Dialog Var ComboBox ;Pages Page custom theUI ; Sections Section -bla SectionEnd ; Functions Function theUI nsDialogs::Create /NOUNLOAD 1018 Pop $Dialog ${If} $Dialog == error Abort ${EndIf} ${NSD_CreateComboBox} 0 0 100% 100% "" Pop $ComboBox Call populateComboBox GetFunctionAddress $0 smartFilter nsDialogs::OnChange /NOUNLOAD $ComboBox $0 nsDialogs::Show FunctionEnd Function smartFilter SendMessage $ComboBox ${CB_GETCURSEL} 0 0 $9 ${If} $9 != -1 # user selected something System::Call "user32::SendMessage(i $ComboBox, i ${CB_GETLBTEXT}, i r9, t .R0)" ${Else} ${NSD_GetText} $ComboBox $R0 ${EndIf} ${If} $R0 == "" Call populateComboBox Abort ${EndIf} StrLen $R1 $R0 SendMessage $ComboBox ${CB_GETCOUNT} 0 0 $9 ClearErrors ${Do} IntOp $9 $9 - 1 # new System::Call "user32::SendMessage(i $ComboBox, i ${CB_GETLBTEXT}, i r9, t .r2)" # old #System::Alloc ${NSIS_MAX_STRLEN} #Pop $1 #SendMessage $ComboBox ${CB_GETLBTEXT} $9 $1 #System::Call "*$1(&t32.r2)" #System::Free $1 StrCpy $R2 $2 $R1 ${If} $R2 != $R0 #MessageBox MB_OK "$$R0=$R0$\n$$R2=$R2$\n$$9=$9$\n$$2=$2" SendMessage $ComboBox ${CB_DELETESTRING} $9 "STR:$2" ${EndIf} ${LoopUntil} $2 == "" FunctionEnd Function populateComboBox SendMessage $ComboBox ${CB_RESETCONTENT} 0 0 SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:background" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:background-color" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:background-image" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:background-repeat" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:background-attachment" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:background-position" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-bottom" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-bottom-color" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-bottom-style" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-bottom-width" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-color" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-left" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-left-color" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-left-style" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-left-width" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-right" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-right-color" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-right-style" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-right-width" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-style" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-to" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-top-color" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-top-style" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-top-width" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:border-width" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:font" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:font-family" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:font-size" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:font-style" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:font-variant" SendMessage $ComboBox ${CB_ADDSTRING} 0 "STR:font-weight" FunctionEnd