Update XPLM for ARM64

This commit is contained in:
Kilian committed 2022-09-27 15:34:46 +02:00
1 parent 40067a606d
commit 174c20bd8f
59 files changed
+12475 -9196

No files matched your search

+148 -130
View File
@@ -1,54 +1,62 @@
{
Copyright 2005-2012 Sandy Barbour and Ben Supnik
All rights reserved. See license.txt for usage.
X-Plane SDK Version: 2.1.1
Copyright 2005-2012 Sandy Barbour and Ben Supnik All rights reserved. See
license.txt for usage. X-Plane SDK Version: 2.1.1
}
UNIT XPLMMenus;
INTERFACE
{
XPLMMenus - Theory of Operation
Plug-ins can create menus in the menu bar of X-Plane. This is done by
creating a menu and then creating items. Menus are referred to by an
opaque ID. Items are referred to by (zero-based) index number.
Plug-ins can create menus in the menu bar of X-Plane. This is done by
creating a menu and then creating items. Menus are referred to by an
opaque ID. Items are referred to by index number. For each menu and item
you specify a void *. Per menu you specify a handler function that is
called with each void * when the menu item is picked. Menu item indices
are zero based.
Menus are "sandboxed" between plugins---no plugin can access the menus of
any other plugin. Furthermore, all menu indices are relative to your
plugin's menus only; if your plugin creates two sub-menus in the Plugins
menu at different times, it doesn't matter how many other plugins also
create sub-menus of Plugins in the intervening time: your sub-menus will be
given menu indices 0 and 1. (The SDK does some work in the back-end to
filter out menus that are irrelevant to your plugin in order to deliver
this consistency for each plugin.)
When you create a menu item, you specify how we should handle clicks on
that menu item. You can either have the XPLM trigger a callback (the
XPLMMenuHandler_f associated with the menu that contains the item), or you
can simply have a command be triggered (with no associated call to your
menu handler). The advantage of the latter method is that X-Plane will
display any keyboard shortcuts associated with the command. (In contrast,
there are no keyboard shortcuts associated with menu handler callbacks with
specific parameters.)
Menu text in X-Plane is UTF8; X-Plane's character set covers latin, greek
and cyrillic characters, Katakana, as well as some Japanese symbols. Some
APIs have a inDeprecatedAndIgnored parameter that used to select a
character set; since X-Plane 9 all localization is done via UTF-8 only.
}
USES XPLMDefs;
USES
XPLMDefs, XPLMUtilities;
{$A4}
{$IFDEF MSWINDOWS}
{$DEFINE DELPHI}
{$ENDIF}
{___________________________________________________________________________
* XPLM MENUS
___________________________________________________________________________}
{
}
{
XPLMMenuCheck
These enumerations define the various 'check' states for an X-Plane menu.
'checking' in x-plane actually appears as a light which may or may not be
lit. So there are three possible states.
These enumerations define the various 'check' states for an X-Plane menu.
'checking' in X-Plane actually appears as a light which may or may not be
lit. So there are three possible states.
}
TYPE
XPLMMenuCheck = (
{ there is no symbol to the left of the menu item. }
{ there is no symbol to the left of the menu item. }
xplm_Menu_NoCheck = 0
{ the menu has a mark next to it that is unmarked (not lit). }
{ the menu has a mark next to it that is unmarked (not lit). }
,xplm_Menu_Unchecked = 1
{ the menu has a mark next to it that is checked (lit). }
{ the menu has a mark next to it that is checked (lit). }
,xplm_Menu_Checked = 2
);
@@ -57,7 +65,7 @@ TYPE
{
XPLMMenuID
This is a unique ID for each menu you create.
This is a unique ID for each menu you create.
}
XPLMMenuID = pointer;
PXPLMMenuID = ^XPLMMenuID;
@@ -65,9 +73,9 @@ TYPE
{
XPLMMenuHandler_f
A menu handler function takes two reference pointers, one for the menu
(specified when the menu was created) and one for the item (specified when
the item was created).
A menu handler function takes two reference pointers, one for the menu
(specified when the menu was created) and one for the item (specified when
the item was created).
}
XPLMMenuHandler_f = PROCEDURE(
inMenuRef : pointer;
@@ -76,184 +84,194 @@ TYPE
{
XPLMFindPluginsMenu
This function returns the ID of the plug-ins menu, which is created for you
at startup.
This function returns the ID of the plug-ins menu, which is created for you
at startup.
}
FUNCTION XPLMFindPluginsMenu: XPLMMenuID;
{$IFDEF DELPHI}
cdecl; external 'XPLM.DLL';
{$ELSE}
cdecl; external '';
{$ENDIF}
cdecl; external XPLM_DLL;
{$IFDEF XPLM300}
{
XPLMFindAircraftMenu
This function returns the ID of the menu for the currently-loaded aircraft,
used for showing aircraft-specific commands.
The aircraft menu is created by X-Plane at startup, but it remains hidden
until it is populated via XPLMAppendMenuItem() or
XPLMAppendMenuItemWithCommand().
Only plugins loaded with the user's current aircraft are allowed to access
the aircraft menu. For all other plugins, this will return NULL, and any
attempts to add menu items to it will fail.
}
FUNCTION XPLMFindAircraftMenu: XPLMMenuID;
cdecl; external XPLM_DLL;
{$ENDIF XPLM300}
{
XPLMCreateMenu
This function creates a new menu and returns its ID. It returns NULL if
the menu cannot be created. Pass in a parent menu ID and an item index to
create a submenu, or NULL for the parent menu to put the menu in the menu
bar. The menu's name is only used if the menu is in the menubar. You also
pass a handler function and a menu reference value. Pass NULL for the
handler if you do not need callbacks from the menu (for example, if it only
contains submenus).
This function creates a new menu and returns its ID. It returns NULL if
the menu cannot be created. Pass in a parent menu ID and an item index to
create a submenu, or NULL for the parent menu to put the menu in the menu
bar. The menu's name is only used if the menu is in the menubar. You also
pass a handler function and a menu reference value. Pass NULL for the
handler if you do not need callbacks from the menu (for example, if it only
contains submenus).
Important: you must pass a valid, non-empty menu title even if the menu is
a submenu where the title is not visible.
Important: you must pass a valid, non-empty menu title even if the menu is
a submenu where the title is not visible.
}
FUNCTION XPLMCreateMenu(
inName : Pchar;
inName : XPLMString;
inParentMenu : XPLMMenuID;
inParentItem : integer;
inParentItem : Integer;
inHandler : XPLMMenuHandler_f;
inMenuRef : pointer) : XPLMMenuID;
{$IFDEF DELPHI}
cdecl; external 'XPLM.DLL';
{$ELSE}
cdecl; external '';
{$ENDIF}
cdecl; external XPLM_DLL;
{
XPLMDestroyMenu
This function destroys a menu that you have created. Use this to remove a
submenu if necessary. (Normally this function will not be necessary.)
This function destroys a menu that you have created. Use this to remove a
submenu if necessary. (Normally this function will not be necessary.)
}
PROCEDURE XPLMDestroyMenu(
inMenuID : XPLMMenuID);
{$IFDEF DELPHI}
cdecl; external 'XPLM.DLL';
{$ELSE}
cdecl; external '';
{$ENDIF}
cdecl; external XPLM_DLL;
{
XPLMClearAllMenuItems
This function removes all menu items from a menu, allowing you to rebuild
it. Use this function if you need to change the number of items on a menu.
This function removes all menu items from a menu, allowing you to rebuild
it. Use this function if you need to change the number of items on a menu.
}
PROCEDURE XPLMClearAllMenuItems(
inMenuID : XPLMMenuID);
{$IFDEF DELPHI}
cdecl; external 'XPLM.DLL';
{$ELSE}
cdecl; external '';
{$ENDIF}
cdecl; external XPLM_DLL;
{
XPLMAppendMenuItem
This routine appends a new menu item to the bottom of a menu and returns
its index. Pass in the menu to add the item to, the items name, and a void
* ref for this item. If you pass in inForceEnglish, this menu item will be
drawn using the english character set no matter what language x-plane is
running in. Otherwise the menu item will be drawn localized. (An example
of why you'd want to do this is for a proper name.) See XPLMUtilities for
determining the current langauge.
This routine appends a new menu item to the bottom of a menu and returns
its index. Pass in the menu to add the item to, the items name, and a void
* ref for this item.
Returns a negative index if the append failed (due to an invalid parent
menu argument).
Note that all menu indices returned are relative to your plugin's menus
only; if your plugin creates two sub-menus in the Plugins menu at different
times, it doesn't matter how many other plugins also create sub-menus of
Plugins in the intervening time: your sub-menus will be given menu indices
0 and 1. (The SDK does some work in the back-end to filter out menus that
are irrelevant to your plugin in order to deliver this consistency for each
plugin.)
}
FUNCTION XPLMAppendMenuItem(
inMenu : XPLMMenuID;
inItemName : Pchar;
inItemName : XPLMString;
inItemRef : pointer;
inForceEnglish : integer) : integer;
{$IFDEF DELPHI}
cdecl; external 'XPLM.DLL';
{$ELSE}
cdecl; external '';
{$ENDIF}
inDeprecatedAndIgnored: Integer) : Integer;
cdecl; external XPLM_DLL;
{$IFDEF XPLM300}
{
XPLMAppendMenuItemWithCommand
Like XPLMAppendMenuItem(), but instead of the new menu item triggering the
XPLMMenuHandler_f of the containiner menu, it will simply execute the
command you pass in. Using a command for your menu item allows the user to
bind a keyboard shortcut to the command and see that shortcut represented
in the menu.
Returns a negative index if the append failed (due to an invalid parent
menu argument).
Like XPLMAppendMenuItem(), all menu indices are relative to your plugin's
menus only.
}
FUNCTION XPLMAppendMenuItemWithCommand(
inMenu : XPLMMenuID;
inItemName : XPLMString;
inCommandToExecute : XPLMCommandRef) : Integer;
cdecl; external XPLM_DLL;
{$ENDIF XPLM300}
{
XPLMAppendMenuSeparator
This routine adds a seperator to the end of a menu.
This routine adds a separator to the end of a menu.
Returns a negative index if the append failed (due to an invalid parent
menu argument).
}
PROCEDURE XPLMAppendMenuSeparator(
inMenu : XPLMMenuID);
{$IFDEF DELPHI}
cdecl; external 'XPLM.DLL';
{$ELSE}
cdecl; external '';
{$ENDIF}
cdecl; external XPLM_DLL;
{
XPLMSetMenuItemName
This routine changes the name of an existing menu item. Pass in the menu
ID and the index of the menu item.
This routine changes the name of an existing menu item. Pass in the menu
ID and the index of the menu item.
}
PROCEDURE XPLMSetMenuItemName(
inMenu : XPLMMenuID;
inIndex : integer;
inItemName : Pchar;
inForceEnglish : integer);
{$IFDEF DELPHI}
cdecl; external 'XPLM.DLL';
{$ELSE}
cdecl; external '';
{$ENDIF}
inIndex : Integer;
inItemName : XPLMString;
inDeprecatedAndIgnored: Integer);
cdecl; external XPLM_DLL;
{
XPLMCheckMenuItem
Set whether a menu item is checked. Pass in the menu ID and item index.
Set whether a menu item is checked. Pass in the menu ID and item index.
}
PROCEDURE XPLMCheckMenuItem(
inMenu : XPLMMenuID;
index : integer;
index : Integer;
inCheck : XPLMMenuCheck);
{$IFDEF DELPHI}
cdecl; external 'XPLM.DLL';
{$ELSE}
cdecl; external '';
{$ENDIF}
cdecl; external XPLM_DLL;
{
XPLMCheckMenuItemState
This routine returns whether a menu item is checked or not. A menu item's
check mark may be on or off, or a menu may not have an icon at all.
This routine returns whether a menu item is checked or not. A menu item's
check mark may be on or off, or a menu may not have an icon at all.
}
PROCEDURE XPLMCheckMenuItemState(
inMenu : XPLMMenuID;
index : integer;
index : Integer;
outCheck : PXPLMMenuCheck);
{$IFDEF DELPHI}
cdecl; external 'XPLM.DLL';
{$ELSE}
cdecl; external '';
{$ENDIF}
cdecl; external XPLM_DLL;
{
XPLMEnableMenuItem
Sets whether this menu item is enabled. Items start out enabled.
Sets whether this menu item is enabled. Items start out enabled.
}
PROCEDURE XPLMEnableMenuItem(
inMenu : XPLMMenuID;
index : integer;
enabled : integer);
{$IFDEF DELPHI}
cdecl; external 'XPLM.DLL';
{$ELSE}
cdecl; external '';
{$ENDIF}
index : Integer;
enabled : Integer);
cdecl; external XPLM_DLL;
{$IFDEF XPLM210}
{
XPLMRemoveMenuItem
Removes one item from a menu. Note that all menu items below are moved up
one; your plugin must track the change in index numbers.
Removes one item from a menu. Note that all menu items below are moved up
one; your plugin must track the change in index numbers.
}
PROCEDURE XPLMRemoveMenuItem(
inMenu : XPLMMenuID;
inIndex : integer);
{$IFDEF DELPHI}
cdecl; external 'XPLM.DLL';
{$ELSE}
cdecl; external '';
{$ENDIF}
{$ENDIF}
inIndex : Integer);
cdecl; external XPLM_DLL;
{$ENDIF XPLM210}
IMPLEMENTATION
END.