tge/lib/maxsdk31/frontend.h
2025-02-17 23:17:30 -06:00

248 lines
8.4 KiB
C++
Executable File

/*********************************************************************
*<
FILE: frontend.h
DESCRIPTION: A new plug-in type that controls the main UI for MAX
CREATED BY: Rolf Berteig
HISTORY: 4/01/97
*> Copyright (c) 1997, All Rights Reserved.
**********************************************************************/
#ifndef __FRONTEND_H__
#define __FRONTEND_H__
// layout bits
#define FE_LAYOUT_NO_TIMESLIDER (1<<0)
#define FE_LAYOUT_NO_TOOLBAR (1<<1)
#define FE_LAYOUT_NO_COMMAND_PANEL (1<<2)
#define FE_LAYOUT_CONTROL_COMMAND_PANEL (1<<3)
#define FE_LAYOUT_DEFAULT 0
// Tool bar buttons
#define TOOLBUT_HELP 0
#define TOOLBUT_UNDO 1
#define TOOLBUT_REDO 2
#define TOOLBUT_LINK 3
#define TOOLBUT_UNLINK 4
#define TOOLBUT_SPACEWARP_BIND 5
#define TOOLBUT_SELECT 6
#define TOOLBUT_REGION_TYPE 7
#define TOOLBUT_SELECT_FILTER 8
#define TOOLBUT_SELECT_BYNAME 9
#define TOOLBUT_MOVE 10
#define TOOLBUT_ROTATE 11
#define TOOLBUT_SCALE 12
#define TOOLBUT_REF_COORDSYS 13
#define TOOLBUT_REF_CENTER 14
#define TOOLBUT_CONST_X 15
#define TOOLBUT_CONST_Y 16
#define TOOLBUT_CONST_Z 17
#define TOOLBUT_CONST_PLANE 18
#define TOOLBUT_IK 19
#define TOOLBUT_MIRROR 20
#define TOOLBUT_ARRAY 21
#define TOOLBUT_ALIGN 22
#define TOOLBUT_NAMED_SELSETS 23
#define TOOLBUT_TRACKVIEW 24
#define TOOLBUT_MEDIT 25
#define TOOLBUT_RENDER 26
#define TOOLBUT_QUICK_RENDER 27
#define TOOLBUT_RENDER_TYPE 28
#define TOOLBUT_RENDER_LAST 29
#define TOOLBUT_SEPERATOR 30
#define TOOLBUT_LAYER_CURRENT 31
#define TOOLBUT_LAYER_PROP 32
#define TOOLBUT_LAYER_CONTROL 33
#define TOOLBUT_LAYER_OBJ_PROP 34
#define TOOLBUT_MEASURE 35
#define TOOLBUT_SCHEMATIC_VIEW 36
// Standard MAX tool buttons use IDs greater then this value.
// FE plug-in tool buttons should use IDs less then this max value
// and greater then this min value.
// Note that the actual resource IDs for standard MAX buttons will
// be converted to the above #defines when passed to ProcessToolButton().
#define MIN_FE_CUSTOM_TOOLID 1000
#define MAX_FE_CUSTOM_TOOLID 30000
// Menu items
#define MENUITEM_FILE_NEW 0
#define MENUITEM_FILE_RESET 1
#define MENUITEM_FILE_OPEN 2
#define MENUITEM_FILE_MERGE 3
#define MENUITEM_FILE_REPLACE 4
#define MENUITEM_FILE_INSERTTRACKS 5
#define MENUITEM_FILE_SAVE 6
#define MENUITEM_FILE_SAVEAS 7
#define MENUITEM_FILE_SAVESELECTED 8
#define MENUITEM_FILE_IMPORT 9
#define MENUITEM_FILE_EXPORT 10
#define MENUITEM_FILE_ARCHIVE 11
#define MENUITEM_FILE_SUMMARYINFO 12
#define MENUITEM_FILE_VIEWFILE 13
#define MENUITEM_FILE_CONFIGUREPATHS 14
#define MENUITEM_FILE_PREFERENCES 15
#define MENUITEM_FILE_EXIT 16
#define MENUITEM_EDIT_UNDO 17
#define MENUITEM_EDIT_REDO 18
#define MENUITEM_EDIT_HOLD 19
#define MENUITEM_EDIT_FETCH 20
#define MENUITEM_EDIT_DELETE 21
#define MENUITEM_EDIT_CLONE 22
#define MENUITEM_EDIT_SELECTALL 23
#define MENUITEM_EDIT_SELECTNONE 24
#define MENUITEM_EDIT_SELECTINVERT 25
#define MENUITEM_EDIT_SELECTBY_COLOR 26
#define MENUITEM_EDIT_SELECTBY_MATERIAL 27
#define MENUITEM_EDIT_SELECTBY_SMOOTHING 28
#define MENUITEM_EDIT_SELECTBY_NAME 29
#define MENUITEM_EDIT_REGION_WINDOW 30
#define MENUITEM_EDIT_REGION_CROSSING 31
#define MENUITEM_EDIT_REMOVENAMEDSELECTIONS 32
#define MENUITEM_EDIT_PROPERTIES 33
#define MENUITEM_TOOLS_TRANSFORMTYPEIN 34
#define MENUITEM_TOOLS_DISPLAYFLOATER 35
#define MENUITEM_TOOLS_SELECTIONFLOATER 36
#define MENUITEM_TOOLS_MIRROR 37
#define MENUITEM_TOOLS_ARRAY 38
#define MENUITEM_TOOLS_SNAPSHOT 39
#define MENUITEM_TOOLS_ALIGN 40
#define MENUITEM_TOOLS_ALIGNNORMALS 41
#define MENUITEM_TOOLS_PLACEHIGHLIGHT 42
#define MENUITEM_TOOLS_MTLEDIT 43
#define MENUITEM_TOOLS_MTLBROWSE 44
#define MENUITEM_GROUP_GROUP 45
#define MENUITEM_GROUP_OPEN 46
#define MENUITEM_GROUP_CLOSE 47
#define MENUITEM_GROUP_UNGROUP 48
#define MENUITEM_GROUP_EXPLODE 49
#define MENUITEM_GROUP_ATTACH 50
#define MENUITEM_GROUP_DETACH 51
#define MENUITEM_VIEWS_UNDO 52
#define MENUITEM_VIEWS_REDO 53
#define MENUITEM_VIEWS_SAVEACTIVEVIEW 54
#define MENUITEM_VIEWS_RESTOREACTIVEVIEW 55
#define MENUITEM_VIEWS_UNITSETUP 56
#define MENUITEM_VIEWS_DRAWINGAIDS 57
#define MENUITEM_VIEWS_GRIDS_SHOWHOMEGRID 58
#define MENUITEM_VIEWS_GRIDS_ACTIVATEHOMEGRID 59
#define MENUITEM_VIEWS_GRIDS_ACTIVATEGRIDOBJECT 60
#define MENUITEM_VIEWS_GRIDS_ALIGN 61
#define MENUITEM_VIEWS_IMAGEBACKGROUND 62
#define MENUITEM_VIEWS_UPDATEBKGIMAGE 63
#define MENUITEM_VIEWS_RESETBKGXFORM 64
#define MENUITEM_VIEWS_SHOWAXISICON 65
#define MENUITEM_VIEWS_SHOWGHOSTING 66
#define MENUITEM_VIEWS_SHOWKEYTIMES 67
#define MENUITEM_VIEWS_SHADESELECTED 68
#define MENUITEM_VIEWS_SHOWDEP 69
#define MENUITEM_VIEWS_MATCHCAMERATOVIEW 70
#define MENUITEM_VIEWS_REDRAW 71
#define MENUITEM_VIEWS_DEACT_MAPS 72
#define MENUITEM_VIEWS_UPDATEDURINGSPINNERDRAG 73
#define MENUITEM_VIEWS_EXPERTMODE 74
#define MENUITEM_VIEWS_VIEWPORTCONFIG 75
#define MENUITEM_RENDER_RENDER 76
#define MENUITEM_RENDER_VIDEOPOST 77
#define MENUITEM_RENDER_SHOW_LAST_IMG 78
#define MENUITEM_RENDER_ATMOSPHERE 79
#define MENUITEM_RENDER_PREVIEW 80
#define MENUITEM_RENDER_VIEWPREVIEW 81
#define MENUITEM_RENDER_RENAMEPREVIEW 82
#define MENUITEM_HELP_CONTENTS 83
#define MENUITEM_HELP_INDEX 84
#define MENUITEM_HELP_PLUGINHELP 85
#define MENUITEM_HELP_ABOUT 86
// VIZ specific
#define MENUITEM_TOOLS_SPACETOOL 87
#define MENUITEM_TOOLS_LAYERPROP 88
// JBW added MAXScript menu (11/11/98 & 12/15/98)
#define MENUITEM_MAXSCRIPT_LISTENER 89
#define MENUITEM_MAXSCRIPT_OPEN 90
#define MENUITEM_MAXSCRIPT_NEW 91
#define MENUITEM_MAXSCRIPT_RUN 92
#define MENUITEM_MAXSCRIPT_MACROREC 93
// Standard MAX menu items use IDs greater then this value.
// FE plug-in menu items should use IDs less then this max value
// and greater then this min value.
// Note that the actual resource IDs for standard MAX menu items will
// be converted to the above #defines when passed to ProcessMenuItem().
#define MIN_FE_CUSTOM_MENUEITEM 1000
#define MAX_FE_CUSTOM_MENUEITEM 30000
// Special interface given only to front end controllers
class IFrontEnd {
public:
virtual HWND GetCommandPanelHWND()=0;
virtual void *GetInterface(DWORD id)=0;
virtual void ClearToolBar()=0;
virtual void RemoveStandardToolButton(int id)=0;
virtual void AddStandardToolButton(int id,int sepSize=-1)=0;
virtual void CheckStandardTool(int id, BOOL onOff)=0;
virtual BOOL IsStandardToolChecked(int id, BOOL onOdd)=0;
virtual void EnableStandardTool(int id, BOOL enabled)=0;
virtual void SetStandardToolFlyoff(int id, int fly)=0;
virtual int GetStandardToolFlyoff(int id)=0;
virtual ICustToolbar *GetMainToolbar()=0;
virtual HMENU GetMainMenu()=0;
virtual void SetMainMenu(HMENU hMenu)=0;
virtual int MenuIDtoResID(int id)=0; // given one of the above defines, what is the corrisponding resource ID
virtual int ResIDtoMenuID(int id)=0; // oppisite of above
};
class FrontEndController {
public:
virtual void DeleteThis()=0;
virtual void *GetInterface(DWORD id) {return NULL;}
// Called once on startup. Note that MAX windows have been created
// but not necessarily sized.
virtual void Initialize(IFrontEnd *ife,Interface *ip) {}
virtual DWORD GetLayout() {return FE_LAYOUT_DEFAULT;}
// Notifications
virtual DWORD GeneralNotify(DWORD id, DWORD param1, DWORD param2) {return 0;}
virtual void SelectionChanged() {}
virtual void TimeChanged(TimeValue t) {}
virtual DWORD ProcessToolButton(int id, int notify) {return 0;}
virtual DWORD ProcessMenuItem(int id, int notify) {return 0;}
virtual DWORD ProcessInitMenu(HMENU hMenu) {return 0;}
virtual DWORD ProcessViewportRightClick(HWND hWnd, IPoint2 m) {return 0;}
virtual DWORD ProcessViewportLabelClick(HWND hWnd, IPoint2 m) {return 0;}
virtual DWORD ProcessViewportMenuItem(int id, int notify) {return 0;}
virtual DWORD ProcessViewportInitMenu(HMENU hMenu) {return 0;}
virtual void Resize() {}
};
#endif //__FRONTEND_H__