UIProjectFrame.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  2. // Please see LICENSE.md in repository root for license information
  3. // https://github.com/AtomicGameEngine/AtomicGameEngine
  4. #pragma once
  5. #include "AEWidget.h"
  6. #include "UIMenubar.h"
  7. using namespace Atomic;
  8. namespace tb
  9. {
  10. class TBLayout;
  11. class TBMenuWindow;
  12. }
  13. namespace AtomicEditor
  14. {
  15. class ListView;
  16. class ListViewItem;
  17. class ProjectFrame : public AEWidget
  18. {
  19. OBJECT(ProjectFrame);
  20. void ScanDirForFolders(Vector<String>& dirs, const String& fullPath);
  21. void ScanContentDirForContent(Vector<String>& folders, Vector<String>& content, const String& fullPath);
  22. void RecursiveAddFolder(ListViewItem* parent, const String& fullpath, const String& folderName);
  23. public:
  24. /// Construct.
  25. ProjectFrame(Context* context);
  26. /// Destruct.
  27. virtual ~ProjectFrame();
  28. void RefreshFolders();
  29. void RefreshContent(const String& fullpath);
  30. bool OnEvent(const TBWidgetEvent &ev);
  31. void Clear();
  32. void Refresh();
  33. void SelectCurrentContentFolder(const String& folder);
  34. String GetCurrentContentFolder();
  35. private:
  36. void InitializeMenuSources();
  37. bool HandlePopMenuEvent(const TBWidgetEvent &ev);
  38. bool CheckResourceCreatePath(const String& path, const String& resourceType);
  39. bool OnContextMenuEvent(const TBWidgetEvent &ev);
  40. void CreateFolderContextMenu(const String& folder, int x, int y);
  41. void CreateContentContextMenu(const String& content, int x, int y);
  42. void CreateFolderContainerContextMenu(int x, int y);
  43. void CreateContentContainerContextMenu(int x, int y);
  44. void HandleFileChanged(StringHash eventType, VariantMap& eventData);
  45. TBLayout* CreateButtonLayout(const String& fullpath, const String &text);
  46. SharedPtr<ListView> folderList_;
  47. HashMap<uint32, String> tbidToFolder_;
  48. HashMap<uint32, String> tbidToContent_;
  49. HashMap<uint32, String> tbidToContentFolder_;
  50. MenubarItemSource menuCreateSource;
  51. String currentContentFolder_;
  52. // When operating with context menu
  53. String contextMenuPath_;
  54. };
  55. }