Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
2.9 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. // $NoKeywords: $
  6. //=============================================================================
  7. #include "ServerContextMenu.h"
  8. #include <VGUI_Controls.h>
  9. #include <VGUI_IInput.h>
  10. #include <VGUI_IPanel.h>
  11. #include <VGUI_ISurface.h>
  12. #include <VGUI_KeyValues.h>
  13. #include <VGUI_PropertySheet.h>
  14. #include <stdio.h>
  15. using namespace vgui;
  16. //-----------------------------------------------------------------------------
  17. // Purpose: Constructor
  18. //-----------------------------------------------------------------------------
  19. CServerContextMenu::CServerContextMenu(CServerPage *parent) : Menu(parent, "ServerContextMenu")
  20. {
  21. CServerContextMenu::parent=parent;
  22. }
  23. //-----------------------------------------------------------------------------
  24. // Purpose: Destructor
  25. //-----------------------------------------------------------------------------
  26. CServerContextMenu::~CServerContextMenu()
  27. {
  28. }
  29. //-----------------------------------------------------------------------------
  30. // Purpose: Activates the menu
  31. //-----------------------------------------------------------------------------
  32. void CServerContextMenu::ShowMenu(Panel *target, unsigned int serverID, bool showConnect, bool showRefresh, bool showAddToFavorites,bool manage)
  33. {
  34. ClearMenu();
  35. // by default show the menu
  36. bool displayed=false;
  37. if(serverID==-1)
  38. {
  39. displayed=true; // no server selected, clicking on an empty area :)
  40. }
  41. if (showConnect)
  42. {
  43. displayed=true;
  44. AddMenuItem("ConnectToServer", "&Connect to server", new KeyValues("ConnectToServer", "serverID", serverID), target);
  45. AddMenuItem("ViewGameInfo", "&View server info", new KeyValues("ViewGameInfo", "serverID", serverID), target);
  46. }
  47. if (showRefresh)
  48. {
  49. displayed=true;
  50. AddMenuItem("RefreshServer", "&Refresh server", new KeyValues("RefreshServer", "serverID", serverID), target);
  51. }
  52. if (showAddToFavorites)
  53. {
  54. displayed=true;
  55. AddMenuItem("AddToFavorites", "&Add server to favorites", new KeyValues("AddToFavorites", "serverID", serverID), target);
  56. }
  57. if(manage)
  58. {
  59. displayed=true;
  60. AddMenuItem("Manage", "&Manage Server", new KeyValues("Manage", "serverID", serverID), CServerContextMenu::parent);
  61. }
  62. /* if (parent->IsCursorOver() ) // if the cursor is over the tabs
  63. {
  64. displayed=false;
  65. if((int) parent->GetTabPanel()->GetActivePageNum()!=0) // don't let the first tab be deleted, its our servers tab :)
  66. {
  67. char name[100];
  68. displayed=true;
  69. strncpy(name,"&Delete ",100);
  70. parent->GetTabPanel()->GetActiveTabTitle(name+8,100-8);
  71. AddMenuItem("Delete", name,new KeyValues("DeleteServer", "panelid",(int) parent->GetTabPanel()->GetActivePageNum()), CServerContextMenu::parent);
  72. }
  73. } */
  74. if(displayed)
  75. {
  76. MakePopup();
  77. int x, y, gx, gy;
  78. input()->GetCursorPos(x, y);
  79. ipanel()->GetPos(surface()->GetEmbeddedPanel(), gx, gy);
  80. SetPos(x - gx, y - gy);
  81. MoveToFront();
  82. RequestFocus();
  83. SetVisible(true);
  84. }
  85. }