This repository has been archived on 2025-03-23. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
xerobrowser/packages/CefSharp.Common.113.3.50/src/CefSharp.Core.Runtime/Internals/CefMenuModelWrapper.h
2023-06-07 22:24:57 +12:00

440 lines
No EOL
12 KiB
C++

// Copyright © 2015 The CefSharp Authors. All rights reserved.
//
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
#pragma once
#include "Stdafx.h"
#include "include\cef_menu_model.h"
#include "CefWrapper.h"
namespace CefSharp
{
namespace Internals
{
private ref class CefMenuModelWrapper : public IMenuModel, public CefWrapper
{
private:
MCefRefPtr<CefMenuModel> _menu;
public:
CefMenuModelWrapper(CefRefPtr<CefMenuModel> &menu) :
_menu(menu)
{
}
!CefMenuModelWrapper()
{
_menu = nullptr;
}
~CefMenuModelWrapper()
{
this->!CefMenuModelWrapper();
_disposed = true;
}
virtual property int Count
{
int get()
{
ThrowIfDisposed();
return _menu->GetCount();
}
}
virtual bool Clear()
{
ThrowIfDisposed();
return _menu->Clear();
}
virtual String^ GetLabelAt(int index)
{
ThrowIfDisposed();
return StringUtils::ToClr(_menu->GetLabelAt(index));
}
virtual CefMenuCommand GetCommandIdAt(int index)
{
ThrowIfDisposed();
return (CefMenuCommand)_menu->GetCommandIdAt(index);
}
virtual bool Remove(CefMenuCommand commandId)
{
ThrowIfDisposed();
return _menu->Remove((int)commandId);
}
virtual bool AddSeparator()
{
ThrowIfDisposed();
return _menu->AddSeparator();
}
virtual bool AddItem(CefMenuCommand commandId, String^ label)
{
ThrowIfDisposed();
return _menu->AddItem((int)commandId, StringUtils::ToNative(label));
}
virtual bool AddCheckItem(CefMenuCommand commandId, String^ label)
{
ThrowIfDisposed();
return _menu->AddCheckItem((int)commandId, StringUtils::ToNative(label));
}
virtual bool AddRadioItem(CefMenuCommand commandId, String^ label, int groupId)
{
ThrowIfDisposed();
return _menu->AddRadioItem((int)commandId, StringUtils::ToNative(label), groupId);
}
virtual IMenuModel^ AddSubMenu(CefMenuCommand commandId, String^ label)
{
ThrowIfDisposed();
auto subMenu = _menu->AddSubMenu((int)commandId, StringUtils::ToNative(label));
if (subMenu.get())
{
return gcnew CefMenuModelWrapper(subMenu);
}
return nullptr;
}
virtual bool InsertSeparatorAt(int index)
{
ThrowIfDisposed();
return _menu->InsertSeparatorAt(index);
}
virtual bool InsertItemAt(int index, CefMenuCommand commandId, String^ label)
{
ThrowIfDisposed();
return _menu->InsertItemAt(index, (int)commandId, StringUtils::ToNative(label));
}
virtual bool InsertCheckItemAt(int index, CefMenuCommand commandId, String^ label)
{
ThrowIfDisposed();
return _menu->InsertCheckItemAt(index, (int)commandId, StringUtils::ToNative(label));
}
virtual bool InsertRadioItemAt(int index, CefMenuCommand commandId, String^ label, int groupId)
{
ThrowIfDisposed();
return _menu->InsertRadioItemAt(index, (int)commandId, StringUtils::ToNative(label), groupId);
}
virtual IMenuModel^ InsertSubMenuAt(int index, CefMenuCommand commandId, String^ label)
{
ThrowIfDisposed();
auto subMenu = _menu->InsertSubMenuAt(index, (int)commandId, StringUtils::ToNative(label));
if (subMenu.get())
{
return gcnew CefMenuModelWrapper(subMenu);
}
return nullptr;
}
virtual bool RemoveAt(int index)
{
ThrowIfDisposed();
return _menu->RemoveAt(index);
}
virtual int GetIndexOf(CefMenuCommand commandId)
{
ThrowIfDisposed();
return _menu->GetIndexOf((int)commandId);
}
virtual bool SetCommandIdAt(int index, CefMenuCommand commandId)
{
ThrowIfDisposed();
return _menu->SetCommandIdAt(index, (int)commandId);
}
virtual String^ GetLabel(CefMenuCommand commandId)
{
ThrowIfDisposed();
return StringUtils::ToClr(_menu->GetLabel((int)commandId));
}
virtual bool SetLabel(CefMenuCommand commandId, String^ label)
{
ThrowIfDisposed();
return _menu->SetLabel((int)commandId, StringUtils::ToNative(label));
}
virtual bool SetLabelAt(int index, String^ label)
{
ThrowIfDisposed();
return _menu->SetLabelAt(index, StringUtils::ToNative(label));
}
virtual MenuItemType GetType(CefMenuCommand commandId)
{
ThrowIfDisposed();
return (CefSharp::MenuItemType)_menu->GetType((int)commandId);
}
virtual MenuItemType GetTypeAt(int index)
{
ThrowIfDisposed();
return (MenuItemType)_menu->GetTypeAt(index);
}
virtual int GetGroupId(CefMenuCommand commandId)
{
ThrowIfDisposed();
return _menu->GetGroupId((int)commandId);
}
virtual int GetGroupIdAt(int index)
{
ThrowIfDisposed();
return _menu->GetGroupIdAt(index);
}
virtual bool SetGroupId(CefMenuCommand commandId, int groupId)
{
ThrowIfDisposed();
return _menu->SetGroupId((int)commandId, groupId);
}
virtual bool SetGroupIdAt(int index, int groupId)
{
ThrowIfDisposed();
return _menu->SetGroupIdAt(index, groupId);
}
virtual IMenuModel^ GetSubMenu(CefMenuCommand commandId)
{
ThrowIfDisposed();
auto subMenu = _menu->GetSubMenu((int)commandId);
if (subMenu.get())
{
return gcnew CefMenuModelWrapper(subMenu);
}
return nullptr;
}
virtual IMenuModel^ GetSubMenuAt(int index)
{
ThrowIfDisposed();
auto subMenu = _menu->GetSubMenuAt(index);
if (subMenu.get())
{
return gcnew CefMenuModelWrapper(subMenu);
}
return nullptr;
}
virtual bool IsVisible(CefMenuCommand commandId)
{
ThrowIfDisposed();
return _menu->IsVisible((int)commandId);
}
virtual bool IsVisibleAt(int index)
{
ThrowIfDisposed();
return _menu->IsVisibleAt(index);
}
virtual bool SetVisible(CefMenuCommand commandId, bool visible)
{
ThrowIfDisposed();
return _menu->SetVisible((int)commandId, visible);
}
virtual bool SetVisibleAt(int index, bool visible)
{
ThrowIfDisposed();
return _menu->SetVisibleAt(index, visible);
}
virtual bool IsEnabled(CefMenuCommand commandId)
{
ThrowIfDisposed();
return _menu->IsEnabled((int)commandId);
}
virtual bool IsEnabledAt(int index)
{
ThrowIfDisposed();
return _menu->IsEnabledAt(index);
}
virtual bool SetEnabled(CefMenuCommand commandId, bool enabled)
{
ThrowIfDisposed();
return _menu->SetEnabled((int)commandId, enabled);
}
virtual bool SetEnabledAt(int index, bool enabled)
{
ThrowIfDisposed();
return _menu->SetEnabledAt(index, enabled);
}
virtual bool IsChecked(CefMenuCommand commandId)
{
ThrowIfDisposed();
return _menu->IsChecked((int)commandId);
}
virtual bool IsCheckedAt(int index)
{
ThrowIfDisposed();
return _menu->IsCheckedAt(index);
}
virtual bool SetChecked(CefMenuCommand commandId, bool isChecked)
{
ThrowIfDisposed();
return _menu->SetChecked((int)commandId, isChecked);
}
virtual bool SetCheckedAt(int index, bool isChecked)
{
ThrowIfDisposed();
return _menu->SetCheckedAt(index, isChecked);
}
virtual bool HasAccelerator(CefMenuCommand commandId)
{
ThrowIfDisposed();
return _menu->HasAccelerator((int)commandId);
}
virtual bool HasAcceleratorAt(int index)
{
ThrowIfDisposed();
return _menu->HasAcceleratorAt(index);
}
virtual bool SetAccelerator(CefMenuCommand commandId, int keyCode, bool shiftPressed, bool ctrlPressed, bool altPressed)
{
ThrowIfDisposed();
return _menu->SetAccelerator((int)commandId, keyCode, shiftPressed, ctrlPressed, altPressed);
}
virtual bool SetAcceleratorAt(int index, int keyCode, bool shiftPressed, bool ctrlPressed, bool altPressed)
{
ThrowIfDisposed();
return _menu->SetAcceleratorAt(index, keyCode, shiftPressed, ctrlPressed, altPressed);
}
virtual bool RemoveAccelerator(CefMenuCommand commandId)
{
ThrowIfDisposed();
return _menu->RemoveAccelerator((int)commandId);
}
virtual bool RemoveAcceleratorAt(int index)
{
ThrowIfDisposed();
return _menu->RemoveAcceleratorAt(index);
}
virtual bool GetAccelerator(CefMenuCommand commandId, int% keyCode, bool% shiftPressed, bool% ctrlPressed, bool% altPressed)
{
ThrowIfDisposed();
int key;
bool shift;
bool ctrl;
bool alt;
auto result = _menu->GetAccelerator((int)commandId, key, shift, ctrl, alt);
keyCode = key;
shiftPressed = shift;
ctrlPressed = ctrl;
altPressed = alt;
return result;
}
virtual bool GetAcceleratorAt(int index, int% keyCode, bool% shiftPressed, bool% ctrlPressed, bool% altPressed)
{
ThrowIfDisposed();
int key;
bool shift;
bool ctrl;
bool alt;
auto result = _menu->GetAcceleratorAt(index, key, shift, ctrl, alt);
keyCode = key;
shiftPressed = shift;
ctrlPressed = ctrl;
altPressed = alt;
return result;
}
};
}
}