From 864081102a5f252415f41950b3039a896b4ae9c5 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Mon, 8 Oct 2012 18:43:29 +0000 Subject: Awkwars's plugins - welcome to our trunk git-svn-id: http://svn.miranda-ng.org/main/trunk@1822 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Actman/ua/i_opt_dlg.inc | 571 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 571 insertions(+) create mode 100644 plugins/Actman/ua/i_opt_dlg.inc (limited to 'plugins/Actman/ua/i_opt_dlg.inc') diff --git a/plugins/Actman/ua/i_opt_dlg.inc b/plugins/Actman/ua/i_opt_dlg.inc new file mode 100644 index 0000000000..01f01dceb7 --- /dev/null +++ b/plugins/Actman/ua/i_opt_dlg.inc @@ -0,0 +1,571 @@ +{} +const + settings:HWND = 0; +const + NumControls = 17; + + IDsArray:array [0..NumControls-1] of integer =( + // Menu settings controls + IDC_UA_SEPARATE ,IDC_UA_POPUPT ,IDC_UA_POPUPV, + IDC_UA_VARNAMEST,IDC_UA_VARNAMESV,IDC_UA_VARNAMESH, + IDC_UA_SHOWVART ,IDC_UA_SHOWVARV ,IDC_UA_SHOWVARH, + IDC_UA_TWOSTATE ,IDC_UA_SAVSTATE ,IDC_UA_COMMON, + // toolbar settings controls + IDC_UA_TTNORMALT,IDC_UA_TTNORMALV,IDC_UA_TTPRESSEDT,IDC_UA_TTPRESSEDV, + IDC_UA_GLOBAL + ); + + // Show-hide controls by place type + SHArray:array [0..NumTypes-1, 0..NumControls-1] of integer = ( + // CList Modern toolbar + (SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE, SW_SHOW,SW_SHOW,SW_SHOW, + SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE), + // TabSRMM toolbar + (SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE, + SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW), + // Core Hotkey + (SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE, + SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE), + // Main menu + (SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, + SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE), + // Contact menu + (SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, + SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_SHOW), + // Tray menu + (SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, + SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE), + // Protocol menu + (SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, + SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE), + // Status menu + (SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, SW_SHOW,SW_SHOW,SW_SHOW, + SW_SHOW,SW_SHOW,SW_SHOW, SW_HIDE,SW_HIDE,SW_HIDE,SW_HIDE, SW_HIDE) + ); + // additional show/hide controls check by Variables installings (1 - need to check) + SHVarArray:array [0..NumControls-1] of byte = ( + 0,0,0, 0,0,1, 1,1,1, + 0,0,0,0,0,0,0, 0); + // additional enable/disable controls check (1 - always enable) + EnDisArray:array [0..NumControls-1] of byte = ( + 0,0,0, 0,0,0, 0,0,0, + 1,1,1,0,0,0,0, 1); + +var + hIC:THANDLE; + +procedure CheckPlacesAbility; +var + i:integer; +begin + for i:=0 to NumTypes-1 do + begin + with NamesArray[i] do + begin + enable:=(service=nil) or (ServiceExists(service)<>0); + end; + end; +end; + +function CompareItem(lParam1,lParam2:LPARAM;SortType:LPARAM):int; stdcall; +begin + result:=UActionList[lParam1].wSortIndex-UActionList[lParam2].wSortIndex; +end; + +// Show or hide option items +procedure SetupControls(Dialog:HWND;atype:integer;item:integer=-1); +var + i: cardinal; + typ:integer; + wnd,wnd1:HWND; + enable:boolean; +begin + if atype<0 then + begin + for i:=0 to NumControls-1 do + begin + ShowWindow(GetDlgItem(Dialog,IDsArray[i]),SW_HIDE); + end; + end + else + begin + wnd1:=GetDlgItem(Dialog,IDC_UA_PLACELIST); + if item<0 then + item:=SendMessage(wnd1,LVM_GETNEXTITEM,-1,LVNI_FOCUSED); + enable:=ListView_GetCheckState(wnd1,item)<>0; + + for i:=0 to NumControls-1 do + begin + typ:=SHArray[LoByte(atype)+HiByte(atype)][i]; + if typ=SW_SHOW then + if (SHVarArray[i]<>0) and (not IsVarsInstalled) then + typ:=SW_HIDE; + wnd:=GetDlgItem(Dialog,IDsArray[i]); + ShowWindow(wnd,typ); + EnableWindow(wnd,enable or (EnDisArray[i]<>0)); + end; + + // common settings + EnableWindow(GetDlgItem(Dialog,IDC_UA_SAVSTATE), + IsDlgButtonChecked(Dialog,IDC_UA_TWOSTATE)<>BST_UNCHECKED); + + // personal settings + case LoByte(atype) of + uaTTB, uaTAB: begin + enable:=false; + if IsDlgButtonChecked(Dialog,IDC_UA_TWOSTATE)<>BST_UNCHECKED then + if IsWindowEnabled(GetDlgItem(Dialog,IDC_UA_TTNORMALV)) then + enable:=true; + EnableWindow(GetDlgItem(Dialog,IDC_UA_TTPRESSEDV),enable); + end; + end; + end; +end; + +// Clear all screen buttons/text fields (reset) +procedure ClearControls(Dialog:HWND); +var + s:HWND; +begin + s:=settings; + settings:=0; + CheckDlgButton (Dialog,IDC_UA_TWOSTATE ,BST_UNCHECKED); + CheckDlgButton (Dialog,IDC_UA_SAVSTATE ,BST_UNCHECKED); + + CheckDlgButton (Dialog,IDC_UA_SEPARATE ,BST_UNCHECKED); + SetDlgItemTextW(Dialog,IDC_UA_POPUPV ,nil); + SetDlgItemTextW(Dialog,IDC_UA_VARNAMESV,nil); + SetDlgItemTextW(Dialog,IDC_UA_SHOWVARV ,nil); + settings:=s; +end; + +procedure ShowSubAction(Dialog:HWND;aType:integer;item:integer=-1); +var + UA:pMyActionItem; + s:HWND; +begin + s:=settings; + settings:=0; + ClearControls(Dialog); + + // get UAction number + item:=LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),item); + + UA:=@UActionList[item]; + + // common settings + if (UA.flags and UAF_2STATE)<>0 then + CheckDlgButton(Dialog,IDC_UA_TWOSTATE,BST_CHECKED); + + if (UA.flags and UAF_SAVESTATE)<>0 then + CheckDlgButton(Dialog,IDC_UA_SAVSTATE,BST_CHECKED); + + if (UA.flags and UAF_GLOBAL)=0 then + CheckDlgButton(Dialog,IDC_UA_GLOBAL,BST_CHECKED); + + // Show real UA settings + case LoByte(aType) of + uaTTB: begin // CList modern toolbar + SetDlgItemTextA(Dialog,IDC_UA_TTNORMALV ,UA.szTTBTooltip); + SetDlgItemTextA(Dialog,IDC_UA_TTPRESSEDV,UA.szTTBTooltipPressed); + SetDlgItemTextW(Dialog,IDC_UA_SHOWVARV ,UA.szTTBShowWhenVars); + end; + + uaTAB: begin // TabSRMM toolbar + SetDlgItemTextW(Dialog,IDC_UA_TTNORMALV ,UA.szTabBTooltip); + SetDlgItemTextW(Dialog,IDC_UA_TTPRESSEDV,UA.szTabBTooltipPressed); + end; + + uaMenu: begin + with UA.UAMenuItem[tMenuType(HiByte(aType))] do + begin + if (menu_opt and UAF_MENUSEP)<>0 then + CheckDlgButton(Dialog,IDC_UA_SEPARATE,BST_CHECKED); + SetDlgItemTextW(Dialog,IDC_UA_POPUPV ,szMenuPopup); + SetDlgItemTextW(Dialog,IDC_UA_VARNAMESV,szMenuNameVars); + SetDlgItemTextW(Dialog,IDC_UA_SHOWVARV ,szMenuShowWhenVars); + end; + end; + + uaHotkey: begin // Hotkey + // Settings in Customize/Hotkeys + end; + end; + SetupControls(Dialog,aType,-1); + settings:=s; +end; + +function isPlaceActive(idx,place:integer):boolean; +begin + result:=false; + with UActionList[idx] do + case LoByte(place) of + uaTTB : result:=(flags and UAF_REGTTBB)<>0; + uaTAB : result:=(flags and UAF_REGTABB)<>0; + uaHotkey : result:=(flags and UAF_REGHOTKEY)<>0; + uaMenu: begin + result:=(UAMenuItem[tMenuType(HiByte(place))].menu_opt and UAF_MENUUSE)<>0 + end; + end; +end; + +procedure ShowAction(Dialog:HWND;item:integer=-1); +var + i,j:integer; + wnd:HWND; + li:LV_ITEMW; + buf:array [0..255] of WideChar; + lset:HWND; +begin + wnd:=GetDlgItem(Dialog,IDC_UA_PLACELIST); + SendMessage(wnd,LVM_DELETEALLITEMS,0,0); + j:=LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),item); + if j>=0 then + begin + with UActionList[j] do + begin + lset:=settings; + settings:=0; + // make "places" list + for i:=0 to NumTypes-1 do + begin + with NamesArray[i] do + begin + if enable then // cached ability flag + begin + li.mask :=LVIF_TEXT+LVIF_PARAM; + li.iSubItem:=0; + li.iItem :=i; + li.lParam :=atype; //!!!!!! need to add subtype + li.pszText :=TranslateW(FastAnsiToWideBuf(name,buf)); + li.iItem :=SendMessageW(wnd,LVM_INSERTITEMW,0,LPARAM(@li)); + + ListView_SetCheckState(wnd,li.iItem,isPlaceActive(j,atype)); + end; + end; + end; + ListView_SetItemState(wnd,0, + LVIS_FOCUSED or LVIS_SELECTED, + LVIS_FOCUSED or LVIS_SELECTED); + // show first selected "place" + ShowSubAction(Dialog,LV_GetLParam(wnd)); + settings:=lset; + end; + end + else + begin + ClearControls(Dialog); + SetupControls(Dialog,-1,-1); + end; +end; + +procedure SetChangedFlag(Dialog:HWND); +var + num,atype:integer; +begin + num :=LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),-1); + atype:=LV_GetLParam(GetDlgItem(Dialog,IDC_UA_PLACELIST ),-1); + UActionList[num].UAMenuItem[tMenuType(HiByte(atype))].changed:=true; +end; + +procedure SaveMenuSubAction(Dialog:HWND;var MenuItem:tUAMenuItem); +begin + with MenuItem do + begin + mFreeMem(szMenuPopup ); szMenuPopup :=GetDlgText(Dialog,IDC_UA_POPUPV); + mFreeMem(szMenuNameVars ); szMenuNameVars :=GetDlgText(Dialog,IDC_UA_VARNAMESV); + mFreeMem(szMenuShowWhenVars); szMenuShowWhenVars:=GetDlgText(Dialog,IDC_UA_SHOWVARV); + menu_opt:=0; + if IsDlgButtonchecked(Dialog,IDC_UA_SEPARATE)<>BST_UNCHECKED then + menu_opt:=menu_opt or UAF_MENUSEP; + end; +end; + +procedure SetPlaceActive(idx,place:integer;active:boolean); +begin + with UActionList[idx] do + case LoByte(place) of + uaTTB : if active then flags:=flags or UAF_REGTTBB else flags:=flags and not UAF_REGTTBB; + uaTAB : if active then flags:=flags or UAF_REGTABB else flags:=flags and not UAF_REGTABB; + uaHotkey: if active then flags:=flags or UAF_REGHOTKEY else flags:=flags and not UAF_REGHOTKEY; + uaMenu : + with UAMenuItem[tMenuType(HiByte(place))] do + if active then menu_opt:=menu_opt or UAF_MENUUSE + else menu_opt:=menu_opt and not UAF_MENUUSE; + end; +end; + +procedure SaveAction(Dialog:HWND;item:integer=-1;atype:integer=-1); +var + i,num:integer; + wnd:HWND; +begin + num:=LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),item); + if num<0 then exit; + + wnd:=GetDlgItem(Dialog,IDC_UA_PLACELIST); + atype:=LV_GetLParam(wnd,atype); + with UActionList[num] do + begin + // main flags + flags:=flags and not UAF_USING; + // common section + if IsDlgButtonChecked(Dialog,IDC_UA_TWOSTATE)<>BST_UNCHECKED then + flags:=flags or UAF_2STATE + else + flags:=flags and not UAF_2STATE; + + if IsDlgButtonChecked(Dialog,IDC_UA_SAVSTATE)<>BST_UNCHECKED then + flags:=flags or UAF_SAVESTATE + else + flags:=flags and not UAF_SAVESTATE; + + if IsDlgButtonChecked(Dialog,IDC_UA_GLOBAL)=BST_UNCHECKED then + flags:=flags or UAF_GLOBAL + else + flags:=flags and not UAF_GLOBAL; + + // custom data + case LoByte(atype) of + uaTTB: begin // CList modern toolbar + mFreeMem(szTTBTooltip ); szTTBTooltip :=GetDlgText(Dialog,IDC_UA_TTNORMALV ,true); + mFreeMem(szTTBTooltipPressed); szTTBTooltipPressed:=GetDlgText(Dialog,IDC_UA_TTPRESSEDV,true); + mFreeMem(szTTBShowWhenVars ); szTTBShowWhenVars :=GetDlgText(Dialog,IDC_UA_SHOWVARV); + end; + + uaTAB: begin // TabSRMM toolbar + mFreeMem(szTabBTooltip ); szTabBTooltip :=GetDlgText(Dialog,IDC_UA_TTNORMALV); + mFreeMem(szTabBTooltipPressed); szTabBTooltipPressed:=GetDlgText(Dialog,IDC_UA_TTPRESSEDV); + end; + + uaMenu: SaveMenuSubAction(Dialog,UAMenuItem[tMenuType(HiByte(atype))]); + + uaHotkey: begin // Hotkey + // Settings in Customize/Hotkeys + end; + end; + for i:=0 to SendMessage(wnd,LVM_GETITEMCOUNT,0,0)-1 do + begin + SetPlaceActive(num,LV_GetLParam(wnd,i),ListView_GetCheckState(wnd,i)<>0); + end; + //just after Action (not place) changes + if item<0 then + SaveUA(num); + end; +end; + +procedure FillActionList(wnd:HWND); +var + i:integer; + li:LV_ITEMW; + il:HIMAGELIST; + lmenu:tMenuType; +begin + wnd:=GetDlgItem(wnd,IDC_UA_ACTIONLIST); + SendMessage(wnd,LVM_DELETEALLITEMS,0,0); + + il:=ImageList_Create(16,16,ILC_COLOR32 or ILC_MASK,0,1); + for i:=0 to HIGH(UActionList) do + begin + li.mask :=LVIF_TEXT+LVIF_PARAM+LVIF_IMAGE; + li.iSubItem:=0; + li.iItem :=i; + li.lParam :=i; + li.pszText :=UActionList[i].szActDescr; + li.iImage:=ImageList_AddIcon(il, + HICON(CallService(MS_SKIN2_GETICONBYHANDLE,0,LPARAM(UActionList[i].hIcolibIcon)))); + li.iItem :=SendMessageW(wnd,LVM_INSERTITEMW,0,LPARAM(@li)); + + for lmenu:=main_menu to HIGH(tMenuType) do + UActionList[i].UAMenuItem[lmenu].changed:=false; + end; + ImageList_Destroy(SendMessage(wnd,LVM_SETIMAGELIST,LVSIL_SMALL,il)); + + SendMessage(wnd,LVM_SORTITEMS,0,LPARAM(@CompareItem)); + + ListView_SetItemState(wnd,0, + LVIS_FOCUSED or LVIS_SELECTED, + LVIS_FOCUSED or LVIS_SELECTED); +end; + +// refresh icons in UA list (at least) +function IconChanged(wParam:WPARAM;lParam:LPARAM):int;cdecl; +var + i:integer; + li:LV_ITEMW; + il:HIMAGELIST; + wnd:HWND; +begin + result:=0; + wnd:=GetDlgItem(settings,IDC_UA_ACTIONLIST); + + il:=ImageList_Create(16,16,ILC_COLOR32 or ILC_MASK,0,1); + for i:=0 to HIGH(UActionList) do + begin + li.mask :=LVIF_IMAGE; + li.iSubItem:=0; + li.iItem :=i; + li.iImage:=ImageList_AddIcon(il, + HICON(CallService(MS_SKIN2_GETICONBYHANDLE,0,TLPARAM(UActionList[i].hIcolibIcon)))); + SendMessageW(wnd,LVM_SETITEM,0,TLPARAM(@li)); + end; + ImageList_Destroy(SendMessage(wnd,LVM_SETIMAGELIST,LVSIL_SMALL,il)); +//!!refresh? +end; + +function DlgProcOpt(Dialog:HWnd;hMessage:UINT;wParam:WPARAM;lParam:LPARAM):lresult; stdcall; +var + wnd:HWND; + lv:LV_COLUMNW; + i:integer; +begin + result:=0; + case hMessage of + WM_CLOSE: begin + settings:=0; + UnhookEvent(hIC); + end; + + WM_INITDIALOG: begin + settings:=0; + TranslateDialogDefault(Dialog); + + wnd:=GetDlgItem(Dialog,IDC_UA_PLACELIST); + SendMessage(wnd,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_CHECKBOXES,LVS_EX_CHECKBOXES); + SendMessage(wnd,LVM_SETUNICODEFORMAT,1,0); + zeromemory(@lv,sizeof(lv)); + lv.mask:=LVCF_WIDTH; + lv.cx :=110; + SendMessageW(wnd,LVM_INSERTCOLUMNW ,0,tlparam(@lv)); + SendMessageW(wnd,LVM_SETCOLUMNWIDTH,0,LVSCW_AUTOSIZE_USEHEADER); + + wnd:=GetDlgItem(Dialog,IDC_UA_ACTIONLIST); +// SendMessage(wnd,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_CHECKBOXES,LVS_EX_CHECKBOXES); + SendMessage(wnd,LVM_SETUNICODEFORMAT,1,0); + zeromemory(@lv,sizeof(lv)); + lv.mask:=LVCF_WIDTH; + lv.cx :=110; + SendMessageW(wnd,LVM_INSERTCOLUMNW ,0,tlparam(@lv)); + SendMessageW(wnd,LVM_SETCOLUMNWIDTH,0,LVSCW_AUTOSIZE_USEHEADER); + FillActionList(Dialog); + ShowAction(Dialog,-1); + +// if isVarsInstalled then + begin + SendDlgItemMessage(Dialog,IDC_UA_VARNAMESH,BM_SETIMAGE,IMAGE_ICON, + CallService(MS_VARS_GETSKINITEM,0,VSI_HELPICON)); + SendDlgItemMessage(Dialog,IDC_UA_SHOWVARH,BM_SETIMAGE,IMAGE_ICON, + CallService(MS_VARS_GETSKINITEM,0,VSI_HELPICON)); +// SendDlgItemMessage(Dialog,IDC_UA_VARNAMESH,BUTTONSETASFLATBTN,0,0); +// SendDlgItemMessage(Dialog,IDC_UA_SHOWVARH ,BUTTONSETASFLATBTN,0,0); + end; + + settings:=Dialog; + hIC:=HookEvent(ME_SKIN2_ICONSCHANGED,@IconChanged); + end; + + WM_COMMAND: begin + case wParam shr 16 of + EN_CHANGE: begin + if settings<>0 then + begin + SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); + if loword(wParam)=IDC_UA_POPUPV then + SetChangedFlag(Dialog); + end; + end; + + BN_CLICKED: begin + if settings<>0 then + begin + case loword(wParam) of + IDC_UA_TWOSTATE: begin + SetupControls(Dialog, + LV_GetLParam(GetDlgItem(Dialog,IDC_UA_PLACELIST)),-1); + { + EnableWindow(GetDlgItem(Dialog,IDC_UA_TTPRESSEDV), + IsDlgButtonChecked(Dialog,IDC_UA_TWOSTATE)<>BST_UNCHECKED); + } + if IsDlgButtonChecked(Dialog,IDC_UA_TWOSTATE)=BST_UNCHECKED then + DeleteIcolibIconP( + UActionList[LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),-1)]) + else + AddIcolibIconP( + UActionList[LV_GetLParam(GetDlgItem(Dialog,IDC_UA_ACTIONLIST),-1)]); + + SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); + end; + + IDC_UA_VARNAMESH: ShowVarHelp(Dialog,IDC_UA_VARNAMESV); + IDC_UA_SHOWVARH : ShowVarHelp(Dialog,IDC_UA_SHOWVARV); + +//??? IDC_UA_SAVSTATE, + IDC_UA_GLOBAL: SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); + + IDC_UA_SEPARATE: begin + SetChangedFlag(Dialog); + SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); + end; + end; + end; + end; + end; + end; + + WM_NOTIFY: begin + case integer(PNMHdr(lParam)^.code) of + PSN_APPLY: begin + SaveAction(Dialog); + SaveUAs; + FillChar(arMenuRec[0],Length(arMenuRec)*SizeOf(tuaMenuRecA),0); + for i:=0 to HIGH(UActionList) do + begin + SetAllActionUsers(UActionList[i],false); + end; + end; + + LVN_ITEMCHANGED: begin + if settings=0 then exit; + if PNMLISTVIEW(lParam)^.uChanged=LVIF_STATE then + begin + i:=(PNMLISTVIEW(lParam)^.uOldState and LVNI_FOCUSED)- + (PNMLISTVIEW(lParam)^.uNewState and LVNI_FOCUSED); + + if i>0 then // old focus + begin + if wParam=IDC_UA_ACTIONLIST then + SaveAction(Dialog,PNMLISTVIEW(lParam)^.iItem) + else //if wParam=IDC_UA_PLACELIST then + SaveAction(Dialog,-1,PNMLISTVIEW(lParam)^.iItem); + end + else if i<0 then // new focus + begin + if wParam=IDC_UA_ACTIONLIST then + ShowAction(Dialog,PNMLISTVIEW(lParam)^.iItem) + else//if wParam=IDC_UA_PLACELIST then + ShowSubAction(Dialog, + LV_GetLParam(GetDlgItem(Dialog,IDC_UA_PLACELIST), + PNMLISTVIEW(lParam)^.iItem)); + end + else if (settings<>0) and + ((PNMLISTVIEW(lParam)^.uOldState or PNMLISTVIEW(lParam)^.uNewState)=$3000) then + begin + // which type + wnd:=GetDlgItem(Dialog,IDC_UA_PLACELIST); + if PNMLISTVIEW(lParam)^.iItem<> + SendMessage(wnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED) then + ListView_SetItemState(wnd,PNMLISTVIEW(lParam)^.iItem, + LVIS_FOCUSED or LVIS_SELECTED, + LVIS_FOCUSED or LVIS_SELECTED) + else + SetupControls(Dialog,LV_GetLParam(wnd,PNMLISTVIEW(lParam)^.iItem), + PNMLISTVIEW(lParam)^.iItem); + + SendMessage(GetParent(Dialog),PSM_CHANGED,0,0); + end; + end; + end; + end; + end; + end; +end; -- cgit v1.2.3