PolycodeProjectBrowser.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include "PolycodeProjectBrowser.h"
  2. PolycodeProjectBrowser::PolycodeProjectBrowser() : ScreenEntity() {
  3. treeContainer = new UITreeContainer("boxIcon.png", L"Projects", 200, 555);
  4. treeContainer->getRootNode()->toggleCollapsed();
  5. treeContainer->getRootNode()->addEventListener(this, UITreeEvent::SELECTED_EVENT);
  6. addChild(treeContainer);
  7. treeContainer->setPosition(0,45);
  8. selectedData = NULL;
  9. }
  10. PolycodeProjectBrowser::~PolycodeProjectBrowser() {
  11. }
  12. void PolycodeProjectBrowser::addProject(PolycodeProject *project) {
  13. UITree *projectTree = treeContainer->getRootNode()->addTreeChild("projectIcon.png", project->getProjectName(), (void*) project);
  14. projectTree->toggleCollapsed();
  15. wstring projectPath = project->getRootFolder();
  16. string wpath;
  17. wpath.assign(projectPath.begin(), projectPath.end());
  18. parseFolderIntoNode(projectTree, wpath);
  19. }
  20. void PolycodeProjectBrowser::handleEvent(Event *event) {
  21. if(event->getDispatcher() == treeContainer->getRootNode()) {
  22. if(event->getEventCode() == UITreeEvent::SELECTED_EVENT){
  23. selectedData = (BrowserUserData *)treeContainer->getRootNode()->getSelectedNode()->getUserData();
  24. dispatchEvent(new Event(), Event::CHANGE_EVENT);
  25. }
  26. }
  27. ScreenEntity::handleEvent(event);
  28. }
  29. void PolycodeProjectBrowser::parseFolderIntoNode(UITree *node, string spath) {
  30. printf("Parsing %s\n", spath.c_str());
  31. vector<OSFileEntry> files = OSBasics::parseFolder(spath, false);
  32. for(int i=0; i < files.size(); i++) {
  33. OSFileEntry entry = files[i];
  34. if(entry.type == OSFileEntry::TYPE_FOLDER) {
  35. wstring name;
  36. name.assign(entry.name.begin(),entry.name.end());
  37. BrowserUserData *data = new BrowserUserData();
  38. data->fileEntry = entry;
  39. UITree *newChild = node->addTreeChild("folder.png", name, (void*) data);
  40. parseFolderIntoNode(newChild, entry.fullPath);
  41. } else {
  42. wstring name;
  43. name.assign(entry.name.begin(),entry.name.end());
  44. BrowserUserData *data = new BrowserUserData();
  45. data->fileEntry = entry;
  46. UITree *newChild = node->addTreeChild("file.png", name, (void*) data);
  47. }
  48. }
  49. }
  50. void PolycodeProjectBrowser::Resize(int newWidth, int newHeight) {
  51. treeContainer->Resize(newWidth, newHeight);
  52. }