--[===[ Author: YoucefHam Email: youcefham20@gmail.com Discord: YoucefHam#5634 ADD to Main Cheat Engine window the Menu "Window" "Vertical", => The default Cheat Engine window. "Horizontal", => Make the Found list and Address List Side by Side. "Auto Switch", => Enable/Disable change mode automatically when the windows is maximized ADD to Main Cheat Engine window the Menu "▲-CE-▲" "▲-CE-▲", => Resize CE window (Compact CE). ]===] local function MainForm_Wide_Window(MainForm) if MainForm.Menu.Items.miWideWindow ~= nil then return end local MainForm_WW_State = false local MainForm_WW_State_ = false local MainForm_WW_AutoSwitch = false local SavePosition_State = true local MainForm_Compact_State = false local function MainForm_miWWVerticalClick() end local function MainForm_miWWHorizontalClick() end local function MainForm_miWWAutoSwitchClick(sender) end local function MainForm_miWWCompactCEwindowClick() end local function MainForm_WWSavePosition() end local function MainForm_WWLoadPosition() end local FondList = MainForm['Panel5'] local Splitter = MainForm['Splitter1'] local AddressList = MainForm['Panel1'] local advancedbutton = MainForm['Panel4'] local CESettings = getSettings('Wide Window\\MainForm') if CESettings.Value['MainForm_WW_AutoSwitch'] ~= '' then if CESettings.Value['MainForm_WW_AutoSwitch'] == 'true' then MainForm_WW_AutoSwitch = true else MainForm_WW_AutoSwitch = false end else CESettings.Value['MainForm_WW_AutoSwitch'] = 'false' end -- Set Default values for MainForm if #(CESettings.getBinaryValue('MainForm_Pos_NV')) <= 0 then local Form_Pos = createStringStream() Form_Pos.writeDword(MainForm.Top) Form_Pos.writeDword(MainForm.Left) Form_Pos.writeDword(MainForm.Width) Form_Pos.writeDword(MainForm.Height) CESettings.setBinaryValue(MainForm.Name..'_Pos_'..'NV',Form_Pos) Form_Pos.destroy() end if #(CESettings.getBinaryValue('MainForm_Pos_NH')) <= 0 then local Form_Pos = createStringStream() Form_Pos.writeDword(MainForm.Top) Form_Pos.writeDword(MainForm.Left) Form_Pos.writeDword(MainForm.Width * 1.8) Form_Pos.writeDword(MainForm.Height) CESettings.setBinaryValue(MainForm.Name..'_Pos_'..'NH',Form_Pos) Form_Pos.destroy() end if #(CESettings.getBinaryValue('MainForm_Pos_MV')) <= 0 then local Form_Pos = createStringStream() Form_Pos.writeDword(-5) Form_Pos.writeDword(-5) Form_Pos.writeDword(getScreenWidth()) Form_Pos.writeDword(getScreenHeight() * 0.95) CESettings.setBinaryValue(MainForm.Name..'_Pos_'..'MV',Form_Pos) Form_Pos.destroy() end if #(CESettings.getBinaryValue('MainForm_Pos_MH')) <= 0 then local Form_Pos = createStringStream() Form_Pos.writeDword(-5) Form_Pos.writeDword(-5) Form_Pos.writeDword(getScreenWidth()) Form_Pos.writeDword(getScreenHeight() * 0.95) CESettings.setBinaryValue(MainForm.Name..'_Pos_'..'MH',Form_Pos) Form_Pos.destroy() end -- Set Default values for FondList if #(CESettings.getBinaryValue(FondList.Name..'_Pos_'..'NV')) <= 0 then local Form_Pos = createStringStream() Form_Pos.writeDword(0) Form_Pos.writeDword(0) Form_Pos.writeDword(MainForm.btnMemoryView.Width * 4) Form_Pos.writeDword(FondList.Constraints.MinHeight) CESettings.setBinaryValue(FondList.Name..'_Pos_'..'NV',Form_Pos) Form_Pos.destroy() end if #(CESettings.getBinaryValue(FondList.Name..'_Pos_NH')) <= 0 then local Form_Pos = createStringStream() Form_Pos.writeDword(0) Form_Pos.writeDword(0) Form_Pos.writeDword(MainForm.btnMemoryView.Width * 4) Form_Pos.writeDword(MainForm.Height) CESettings.setBinaryValue(FondList.Name..'_Pos_'..'NH',Form_Pos) Form_Pos.destroy() end if #(CESettings.getBinaryValue(FondList.Name..'_Pos_MV')) <= 0 then local Form_Pos = createStringStream() Form_Pos.writeDword(0) Form_Pos.writeDword(0) Form_Pos.writeDword(MainForm.btnMemoryView.Width * 4) Form_Pos.writeDword(FondList.Constraints.MinHeight) CESettings.setBinaryValue(FondList.Name..'_Pos_'..'MV',Form_Pos) Form_Pos.destroy() end if #(CESettings.getBinaryValue(FondList.Name..'_Pos_MH')) <= 0 then local Form_Pos = createStringStream() Form_Pos.writeDword(0) Form_Pos.writeDword(0) Form_Pos.writeDword(MainForm.btnMemoryView.Width * 4) Form_Pos.writeDword(MainForm.Height) CESettings.setBinaryValue(FondList.Name..'_Pos_'..'MH',Form_Pos) Form_Pos.destroy() end --[[ Save form position (Top, Left, Width, Height) ]] function MainForm_WWSavePosition(Form,Condition,Status) if Condition == true then local Form_Pos = createStringStream() Form_Pos.writeDword(Form.Top) Form_Pos.writeDword(Form.Left) Form_Pos.writeDword(Form.Width) Form_Pos.writeDword(Form.Height) CESettings.setBinaryValue(Form.Name..'_Pos_'..Status,Form_Pos) Form_Pos.destroy() end end --[[ Load and set form position (t:Top, l:Left, w:Width, h:Height) ]] function MainForm_WWLoadPosition(Form,Conditions,properties,Status) if Conditions == true then if (properties ~= '' or properties ~= nil) and string.match(properties:lower(),'[tlwh]+') ~= nil then local Form_Pos = createStringStream() Form_Pos.write( CESettings.getBinaryValue(Form.Name..'_Pos_'..Status)) if #(CESettings.getBinaryValue(Form.Name..'_Pos_'..Status)) <= 0 then return end if string.match(properties:lower(),'[t]+') ~= nil then Form_Pos.Position = 0 Form.Top = Form_Pos.readDword() end if string.match(properties:lower(),'[l]+') ~= nil then Form_Pos.Position = 4 Form.Left = Form_Pos.readDword() end if string.match(properties:lower(),'[w]+') ~= nil then Form_Pos.Position = 8 Form.Width = Form_Pos.readDword() end if string.match(properties:lower(),'[h]+') ~= nil then Form_Pos.Position = 12 Form.Height = Form_Pos.readDword() end Form_Pos.destroy() end end end --Set window to Vertical mode function MainForm_miWWVerticalClick() if not MainForm_WW_State then return end MainForm_WW_State = false SavePosition_State = false MainForm.Menu.Items.miWideWindow.miWWHorizontal.Checked = false MainForm.Menu.Items.miWideWindow.miWWVertical.Checked = true --Make Items Visible if MainForm_Compact_State == false then FondList.Visible = true Splitter.Visible = true AddressList.Visible = true advancedbutton.Visible = true end --Adjust FondList to the Left FondList.Align = alTop FondList.Top = 0 FondList.Left = 0 FondList.BorderSpacing.Right = 0 FondList.Height = FondList.Constraints.MinHeight --Adjust Spliter to the right of the FondList Splitter.Align = alTop Splitter.Top = FondList.Top + FondList.Height Splitter.Left = FondList.Left --Adjust AddressList to the right of the window AddressList.Align = alClient AddressList.Top = Splitter.Top + Splitter.Height AddressList.Left = Splitter.Left AddressList.BorderSpacing.Right = 0 AddressList.BorderSpacing.Top = 2 MainForm_WWLoadPosition( MainForm, MainForm.WindowState ~= 'wsMinimized' and MainForm_Compact_State == false , 'w', (MainForm.WindowState == 'wsNormal' and 'N' or 'M')..'V') --Load FondList Height MainForm_WWLoadPosition( FondList, true , 'h', (MainForm.WindowState == 'wsNormal' and 'N' or 'M')..'V') if MainForm_Compact_State == false then if FondList.Height > MainForm.Height then FondList.Height = FondList.Constraints.MinHeight MainForm_WWSavePosition( FondList, true , (MainForm.WindowState == 'wsNormal' and 'N' or 'M')..'V') end end SavePosition_State = true end --Set window to Horizontal mode function MainForm_miWWHorizontalClick() if MainForm_WW_State then return end MainForm_WW_State = true SavePosition_State = false MainForm.Menu.Items.miWideWindow.miWWVertical.Checked = false MainForm.Menu.Items.miWideWindow.miWWHorizontal.Checked = true --Make Items Visible if MainForm_Compact_State == false then FondList.Visible = true Splitter.Visible = true AddressList.Visible = true advancedbutton.Visible = true end --Adjust FondList to the Left FondList.Align = alLeft FondList.Top = 0 FondList.Left = 0 FondList.BorderSpacing.Right = 5 FondList.Constraints.MinWidth = MainForm.btnMemoryView.Width * 4 --Adjust Splitter to the Left of the FondList Splitter.Align = alLeft Splitter.Top = FondList.Top Splitter.Left = FondList.Left + FondList.Width --Adjust AddressList to the Left of the window AddressList.Align = alClient AddressList.BorderSpacing.Top = 0 AddressList.BorderSpacing.Right = 2 --MainForm.Width = MainForm.btnMemoryView.Width * 8 MainForm_WWLoadPosition( MainForm, (MainForm.WindowState ~= 'wsMinimized' and MainForm_Compact_State == false) , 'w', (MainForm.WindowState == 'wsNormal' and 'N' or 'M')..'H') --Load FondList Width MainForm_WWLoadPosition( FondList, true , 'w', (MainForm.WindowState == 'wsNormal' and 'N' or 'M')..'H') if MainForm_Compact_State == false then if FondList.Width > MainForm.Width then FondList.Width = FondList.Constraints.MinWidth MainForm_WWSavePosition( FondList, true , (MainForm.WindowState == 'wsNormal' and 'N' or 'M')..'H') end end SavePosition_State = true end --Set window to Auto Switch if window Maximized function MainForm_miWWAutoSwitchClick(sender) sender.Checked = true if MainForm_WW_AutoSwitch == true then MainForm_WW_AutoSwitch = false sender.RadioItem = true else MainForm_WW_AutoSwitch = true sender.RadioItem = false if not MainForm_WW_State and MainForm.WindowState == 'wsMaximized' then MainForm_miWWHorizontalClick() MainForm_WWLoadPosition( FondList, true , 'w', 'MH') end end CESettings.Value['MainForm_WW_AutoSwitch'] = tostring(MainForm_WW_AutoSwitch) end -- Compact CE window function MainForm_miWWCompactCEwindowClick(sender) if MainForm_Compact_State == false then MainForm_Compact_State = true SavePosition_State = false local MinWidth = (MainForm.lblSigned and MainForm.lblSigned.Width or 0)+ (MainForm.imgSignature and MainForm.imgSignature.Width or 0)+ MainForm.advancedbutton.Width + MainForm.CommentButton.Width+20 MainForm.Constraints.MinHeight = advancedbutton.Height + 100 MainForm.Constraints.MinWidth = (MinWidth < MainForm.btnMemoryView.Width * 1.8) and MainForm.btnMemoryView.Width * 1.8 or MinWidth MainForm.Constraints.MaxHeight = advancedbutton.Height + 100 MainForm.Constraints.MaxWidth = (MinWidth < MainForm.btnMemoryView.Width * 1.8) and MainForm.btnMemoryView.Width * 1.8 or MinWidth MainForm.Height = advancedbutton.Height + 150 MainForm.Width = (MinWidth < MainForm.btnMemoryView.Width * 1.8) and MainForm.btnMemoryView.Width * 1.8 or MinWidth else MainForm_Compact_State = false MainForm.Constraints.MinHeight = 0 MainForm.Constraints.MinWidth = 0 MainForm.Constraints.MaxHeight = 0 MainForm.Constraints.MaxWidth = 0 MainForm_WWLoadPosition( MainForm,true, 'wh', (MainForm.WindowState == 'wsNormal' and 'N' or 'M')..(MainForm_WW_State and 'H' or 'V')) SavePosition_State = true end MainForm.Menu.Items.miWideWindow.Enabled = not MainForm_Compact_State MainForm.Menu.Items.miCompactCEwindow.caption = MainForm_Compact_State and '▼-CE-▼' or '▲-CE-▲' MainForm.BorderIcons = MainForm_Compact_State and '[biSystemMenu,biMinimize]' or '[biSystemMenu,biMinimize,biMaximize]' FondList.Visible = not MainForm_Compact_State AddressList.Visible = not MainForm_Compact_State Splitter.Visible = not MainForm_Compact_State end -- Create Menu Window local function addMenuItem(MenuItem, caption, Name, onClick, RadioItem, Checked) if MenuItem == nil then error('MenuItem is nil !!!') end local newItem = createMenuItem(MenuItem) MenuItem.add(newItem) newItem.Caption = caption or 'Menu' newItem.OnClick = onClick or nil newItem.Name = Name or '' newItem.RadioItem = RadioItem or false newItem.Checked = Checked or false return newItem end local parent = MainForm.Menu.Items local miWideWindow = addMenuItem(parent,translate('&Window'),'miWideWindow') addMenuItem(parent,'▲-CE-▲','miCompactCEwindow',MainForm_miWWCompactCEwindowClick) addMenuItem(miWideWindow,translate('&Vertical'),'miWWVertical', MainForm_miWWVerticalClick,false,true) addMenuItem(miWideWindow,'-') addMenuItem(miWideWindow,translate('&Horizontal'),'miWWHorizontal', MainForm_miWWHorizontalClick,false,false) addMenuItem(miWideWindow,'-') addMenuItem(miWideWindow,translate('&Auto Switch'),'miWWAutoSwitch', MainForm_miWWAutoSwitchClick,not MainForm_WW_AutoSwitch, true) -- Save Splitter position when Moved if Splitter.OnMoved ~= nil then if Old_Splitter_OnMoved == nil then local Old_Splitter_OnMoved = Splitter.OnMoved end end Splitter.OnMoved = function(...) MainForm_WWSavePosition( FondList, true , (MainForm.WindowState == 'wsNormal' and 'N' or 'M')..(MainForm_WW_State and 'H' or 'V' )) if Old_Splitter_OnMoved ~= nil then Old_Splitter_OnMoved(...) end end --Save window position when resized if MainForm.OnResize ~= nil then if Old_MainForm_OnResize == nil then local Old_MainForm_OnResize = MainForm.OnResize end end MainForm.OnResize = function(...) MainForm_WWSavePosition(MainForm , MainForm.WindowState ~= 'wsMinimized' and SavePosition_State == true and MainForm_Compact_State == false , (MainForm.WindowState == 'wsNormal' and 'N' or 'M')..(MainForm_WW_State and 'H' or 'V')) if Old_MainForm_OnResize ~= nil then Old_MainForm_OnResize(...) end end --Save window position when moved or resized if MainForm.OnChangeBounds ~= nil then if Old_MainForm_OnChangeBounds == nil then local Old_MainForm_OnChangeBounds = MainForm.OnChangeBounds end end MainForm.OnChangeBounds = function(...) MainForm_WWSavePosition(MainForm , MainForm.WindowState ~= 'wsMinimized' and SavePosition_State == true and MainForm_Compact_State == false , (MainForm.WindowState == 'wsNormal' and 'N' or 'M')..(MainForm_WW_State and 'H' or 'V')) if Old_MainForm_OnChangeBounds ~= nil then Old_MainForm_OnChangeBounds(...) end end --Set window to Horizontal mode when window is Maximized if MainForm.OnWindowStateChange ~= nil then if Old_MainForm_OnWindowStateChange == nil then local Old_MainForm_OnWindowStateChange = MainForm.OnWindowStateChange end end MainForm.OnWindowStateChange = function(...) if Old_MainForm_OnWindowStateChange ~= nil then Old_MainForm_OnWindowStateChange(...) end if MainForm.WindowState == 'wsMinimized' then return end SavePosition_State = false if MainForm.WindowState == 'wsMaximized' then MainForm_WW_State_ = MainForm_WW_State if MainForm_WW_State == false then if MainForm_WW_AutoSwitch == true then MainForm_miWWHorizontalClick() SavePosition_State = false MainForm_WWLoadPosition( MainForm, MainForm_Compact_State == false, 'w', 'MH') MainForm_WWLoadPosition( FondList, true , 'w', 'MH') else MainForm_WWLoadPosition( MainForm, MainForm_Compact_State == false, 'w', 'MV') MainForm_WWLoadPosition( FondList, true , 'h', 'MV') end else MainForm_WWLoadPosition( MainForm, MainForm_Compact_State == false, 'w', 'MH') MainForm_WWLoadPosition( FondList, true , 'w', 'MH') end elseif MainForm.WindowState == 'wsNormal' then if MainForm_WW_State == true then if MainForm_WW_State_ == false then MainForm_miWWVerticalClick() SavePosition_State = false MainForm_WWLoadPosition( MainForm, MainForm_Compact_State == false, 'w', 'NV') MainForm_WWLoadPosition( FondList, true , 'h', 'NV') else MainForm_WWLoadPosition( MainForm, MainForm_Compact_State == false, 'w', 'NH') MainForm_WWLoadPosition( FondList, true , 'w', 'NH') end else if MainForm_WW_State_ == true then MainForm_miWWHorizontalClick() SavePosition_State = false MainForm_WWLoadPosition( MainForm, MainForm_Compact_State == false , 'w', 'NH') MainForm_WWLoadPosition( FondList, true , 'w', 'NH') else MainForm_WWLoadPosition( MainForm, MainForm_Compact_State == false, 'w', 'NV') MainForm_WWLoadPosition( FondList, true , 'h', 'NV') end end end if MainForm_Compact_State == false then if MainForm_WW_State == true then if FondList.Width > MainForm.Width then FondList.Width = FondList.Constraints.MinWidth MainForm_WWSavePosition( FondList, true , (MainForm.WindowState == 'wsNormal' and 'N' or 'M')..'H') end else if FondList.Height > MainForm.Height then FondList.Height = FondList.Constraints.MinHeight MainForm_WWSavePosition( FondList, true , (MainForm.WindowState == 'wsNormal' and 'N' or 'M')..'V') end end end SavePosition_State = true end --Set window to Vertical mode when Closing CE if MainForm.OnClose ~= nil then if Old_MainForm_OnClose ~= nil then local Old_MainForm_OnClose = MainForm.OnClose end end MainForm.OnClose = function(sender,option) if MainForm_Compact_State == true then MainForm_miWWCompactCEwindowClick() end MainForm_miWWVerticalClick() if Old_MainForm_OnClose ~= nil then return Old_MainForm_OnClose(sender,option) else return option --Possible options: caHide, caFree, caMinimize, caNone end end end createThread(function() local MainForm = MainForm or getMainForm() --For Old CE local StartTime = os.clock() local TimeOut = false while MainForm == nil do sleep(1000) if (os.clock() - StartTime >= 120) then TimeOut = true end end if not TimeOut then MainForm_Wide_Window(MainForm) end end)