UIProjectFrame.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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/AtomicEditor
  4. #pragma once
  5. #include "AEWidget.h"
  6. using namespace Atomic;
  7. namespace tb
  8. {
  9. class TBLayout;
  10. class TBMenuWindow;
  11. }
  12. namespace AtomicEditor
  13. {
  14. class ListView;
  15. class ListViewItem;
  16. class ProjectFrame : public AEWidget
  17. {
  18. OBJECT(ProjectFrame);
  19. void ScanDirForFolders(Vector<String>& dirs, const String& fullPath);
  20. void ScanContentDirForContent(Vector<String>& folders, Vector<String>& content, const String& fullPath);
  21. void RecursiveAddFolder(ListViewItem* parent, const String& fullpath, const String& folderName);
  22. public:
  23. /// Construct.
  24. ProjectFrame(Context* context);
  25. /// Destruct.
  26. virtual ~ProjectFrame();
  27. void RefreshFolders();
  28. void RefreshContent(const String& fullpath);
  29. bool OnEvent(const TBWidgetEvent &ev);
  30. void Clear();
  31. void Refresh();
  32. void SelectCurrentContentFolder(const String& folder);
  33. const String& GetCurrentContentFolder() { return currentContentFolder_; }
  34. private:
  35. bool OnContextMenuEvent(const TBWidgetEvent &ev);
  36. void CreateFolderContextMenu(const String& folder, int x, int y);
  37. void CreateContentContextMenu(const String& content, int x, int y);
  38. void CreateFolderContainerContextMenu(int x, int y);
  39. void CreateContentContainerContextMenu(int x, int y);
  40. void HandleFileChanged(StringHash eventType, VariantMap& eventData);
  41. TBLayout* CreateButtonLayout(const String& fullpath, const String &text);
  42. SharedPtr<ListView> folderList_;
  43. HashMap<uint32, String> tbidToFolder_;
  44. HashMap<uint32, String> tbidToContent_;
  45. HashMap<uint32, String> tbidToContentFolder_;
  46. String currentContentFolder_;
  47. // When operating with context menu
  48. String contextMenuPath_;
  49. };
  50. }