llviewermenu.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:6k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llviewermenu.h
  3.  * @brief Builds menus out of objects
  4.  *
  5.  * $LicenseInfo:firstyear=2002&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2002-2010, Linden Research, Inc.
  8.  * 
  9.  * Second Life Viewer Source Code
  10.  * The source code in this file ("Source Code") is provided by Linden Lab
  11.  * to you under the terms of the GNU General Public License, version 2.0
  12.  * ("GPL"), unless you have obtained a separate licensing agreement
  13.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  14.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  15.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  16.  * 
  17.  * There are special exceptions to the terms and conditions of the GPL as
  18.  * it is applied to this Source Code. View the full text of the exception
  19.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  20.  * online at
  21.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  22.  * 
  23.  * By copying, modifying or distributing this software, you acknowledge
  24.  * that you have read and understood your obligations described above,
  25.  * and agree to abide by those obligations.
  26.  * 
  27.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  28.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  29.  * COMPLETENESS OR PERFORMANCE.
  30.  * $/LicenseInfo$
  31.  */
  32. #ifndef LL_LLVIEWERMENU_H
  33. #define LL_LLVIEWERMENU_H
  34. #include "llmenugl.h"
  35. #include "llsafehandle.h"
  36. class LLMessageSystem;
  37. class LLSD;
  38. class LLUICtrl;
  39. class LLView;
  40. class LLParcelSelection;
  41. class LLObjectSelection;
  42. class LLSelectNode;
  43. void init_menus();
  44. void cleanup_menus();
  45. void show_debug_menus(); // checks for if menus should be shown first.
  46. void toggle_debug_menus(void*);
  47. void show_context_menu( S32 x, S32 y, MASK mask );
  48. void show_build_mode_context_menu(S32 x, S32 y, MASK mask);
  49. void show_navbar_context_menu(LLView* ctrl, S32 x, S32 y);
  50. BOOL enable_save_into_inventory(void*);
  51. void handle_reset_view();
  52. void handle_cut(void*);
  53. void handle_copy(void*);
  54. void handle_paste(void*);
  55. void handle_delete(void*);
  56. void handle_redo(void*);
  57. void handle_undo(void*);
  58. void handle_select_all(void*);
  59. void handle_deselect(void*);
  60. void handle_delete_object();
  61. void handle_duplicate(void*);
  62. void handle_duplicate_in_place(void*);
  63. BOOL enable_not_have_card(void *userdata);
  64. void process_grant_godlike_powers(LLMessageSystem* msg, void**);
  65. BOOL enable_cut(void*);
  66. BOOL enable_copy(void*);
  67. BOOL enable_paste(void*);
  68. BOOL enable_select_all(void*);
  69. BOOL enable_deselect(void*);
  70. BOOL enable_undo(void*);
  71. BOOL enable_redo(void*);
  72. BOOL is_agent_mappable(const LLUUID& agent_id);
  73. void confirm_replace_attachment(S32 option, void* user_data);
  74. void handle_detach_from_avatar(const LLSD& user_data);
  75. void attach_label(std::string& label, const LLSD&);
  76. void detach_label(std::string& label, const LLSD&);
  77. void handle_detach(void*);
  78. BOOL enable_god_full(void* user_data);
  79. BOOL enable_god_liaison(void* user_data);
  80. BOOL enable_god_basic(void* user_data);
  81. void set_underclothes_menu_options();
  82. void exchange_callingcard(const LLUUID& dest_id);
  83. void handle_gestures(void*);
  84. void handle_sit_down(void*);
  85. void handle_object_build(void*);
  86. void handle_object_touch();
  87. bool enable_object_open();
  88. void handle_object_open();
  89. // Buy either contents or object itself
  90. void handle_buy();
  91. void handle_take_copy();
  92. void handle_look_at_selection(const LLSD& param);
  93. void handle_zoom_to_object(LLUUID object_id);
  94. void handle_buy_land();
  95. // Takes avatar UUID, or if no UUID passed, uses last selected object
  96. void handle_avatar_freeze(const LLSD& avatar_id);
  97. // Takes avatar UUID, or if no UUID passed, uses last selected object
  98. void handle_avatar_eject(const LLSD& avatar_id);
  99. bool enable_freeze_eject(const LLSD& avatar_id);
  100. // Can anyone take a free copy of the object?
  101. // *TODO: Move to separate file
  102. bool anyone_copy_selection(LLSelectNode* nodep);
  103. // Is this selected object for sale?
  104. // *TODO: Move to separate file
  105. bool for_sale_selection(LLSelectNode* nodep);
  106. void handle_save_snapshot(void *);
  107. void handle_toggle_flycam();
  108. void handle_object_sit_or_stand();
  109. void handle_give_money_dialog();
  110. bool enable_pay_object();
  111. bool enable_buy_object();
  112. bool handle_go_to();
  113. // Export to XML or Collada
  114. void handle_export_selected( void * );
  115. class LLViewerMenuHolderGL : public LLMenuHolderGL
  116. {
  117. public:
  118. struct Params : public LLInitParam::Block<Params, LLMenuHolderGL::Params>
  119. {};
  120. LLViewerMenuHolderGL(const Params& p);
  121. virtual BOOL hideMenus();
  122. void setParcelSelection(LLSafeHandle<LLParcelSelection> selection);
  123. void setObjectSelection(LLSafeHandle<LLObjectSelection> selection);
  124. virtual const LLRect getMenuRect() const;
  125. protected:
  126. LLSafeHandle<LLParcelSelection> mParcelSelection;
  127. LLSafeHandle<LLObjectSelection> mObjectSelection;
  128. };
  129. extern const std::string SAVE_INTO_INVENTORY;
  130. extern LLMenuBarGL* gMenuBarView;
  131. //extern LLView* gMenuBarHolder;
  132. extern LLMenuGL* gPopupMenuView;
  133. extern LLViewerMenuHolderGL* gMenuHolder;
  134. extern LLMenuBarGL* gLoginMenuBarView;
  135. // Context menus in 3D scene
  136. extern LLContextMenu *gMenuAvatarSelf;
  137. extern LLContextMenu *gMenuAvatarOther;
  138. extern LLContextMenu *gMenuObject;
  139. extern LLContextMenu *gMenuAttachmentSelf;
  140. extern LLContextMenu *gMenuAttachmentOther;
  141. extern LLContextMenu *gMenuLand;
  142. // Needed to build menus when attachment site list available
  143. extern LLMenuGL* gAttachSubMenu;
  144. extern LLMenuGL* gDetachSubMenu;
  145. extern LLMenuGL* gTakeOffClothes;
  146. extern LLContextMenu* gAttachScreenPieMenu;
  147. extern LLContextMenu* gDetachScreenPieMenu;
  148. extern LLContextMenu* gAttachPieMenu;
  149. extern LLContextMenu* gDetachPieMenu;
  150. extern LLContextMenu* gAttachBodyPartPieMenus[8];
  151. extern LLContextMenu* gDetachBodyPartPieMenus[8];
  152. extern LLMenuItemCallGL* gAFKMenu;
  153. extern LLMenuItemCallGL* gBusyMenu;
  154. extern LLMenuItemCallGL* gMutePieMenu;
  155. extern LLMenuItemCallGL* gMuteObjectPieMenu;
  156. extern LLMenuItemCallGL* gBuyPassPieMenu;
  157. #endif