File: tools.cpp

package info (click to toggle)
ares 126-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 32,600 kB
  • sloc: cpp: 356,508; ansic: 20,394; makefile: 16; sh: 2
file content (90 lines) | stat: -rw-r--r-- 3,249 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "../desktop-ui.hpp"
#include "manifest.cpp"
#include "memory.cpp"
#include "graphics.cpp"
#include "streams.cpp"
#include "properties.cpp"
#include "tracer.cpp"

namespace Instances { Instance<ToolsWindow> toolsWindow; }
ToolsWindow& toolsWindow = Instances::toolsWindow();
ManifestViewer& manifestViewer = toolsWindow.manifestViewer;
MemoryEditor& memoryEditor = toolsWindow.memoryEditor;
GraphicsViewer& graphicsViewer = toolsWindow.graphicsViewer;
StreamManager& streamManager = toolsWindow.streamManager;
PropertiesViewer& propertiesViewer = toolsWindow.propertiesViewer;
TraceLogger& traceLogger = toolsWindow.traceLogger;

ToolsWindow::ToolsWindow() {

  panelList.append(ListViewItem().setText("Manifest").setIcon(Icon::Emblem::Binary));
#if !defined(PLATFORM_MACOS)
  // Cocoa hiro is missing the hex editor widget
  panelList.append(ListViewItem().setText("Memory").setIcon(Icon::Device::Storage));
#endif
  panelList.append(ListViewItem().setText("Graphics").setIcon(Icon::Emblem::Image));
  panelList.append(ListViewItem().setText("Streams").setIcon(Icon::Emblem::Audio));
  panelList.append(ListViewItem().setText("Properties").setIcon(Icon::Emblem::Text));
  panelList.append(ListViewItem().setText("Tracer").setIcon(Icon::Emblem::Script));
  panelList->setUsesSidebarStyle();
  panelList.onChange([&] { eventChange(); });

  panelContainer.setPadding(5_sx, 5_sy);
  panelContainer.append(manifestViewer, Size{~0, ~0});
  panelContainer.append(memoryEditor, Size{~0, ~0});
  panelContainer.append(graphicsViewer, Size{~0, ~0});
  panelContainer.append(streamManager, Size{~0, ~0});
  panelContainer.append(propertiesViewer, Size{~0, ~0});
  panelContainer.append(traceLogger, Size{~0, ~0});
  panelContainer.append(homePanel, Size{~0, ~0});

  manifestViewer.construct();
  memoryEditor.construct();
  graphicsViewer.construct();
  streamManager.construct();
  propertiesViewer.construct();
  traceLogger.construct();
  homePanel.construct();

  setDismissable();
  setTitle("Tools");
  setSize({700_sx, 405_sy});
  setAlignment({1.0, 1.0});
  setMinimumSize({480_sx, 320_sy});
}

auto ToolsWindow::show(const string& panel) -> void {
  for(auto& item : panelList.items()) {
    if(item.text() == panel) {
      item.setSelected();
      eventChange();
      break;
    }
  }
  setVisible();
  setFocused();
  panelList.setFocused();
}

auto ToolsWindow::eventChange() -> void {
  manifestViewer.setVisible(false);
  memoryEditor.setVisible(false);
  graphicsViewer.setVisible(false);
  streamManager.setVisible(false);
  propertiesViewer.setVisible(false);
  traceLogger.setVisible(false);
  homePanel.setVisible(false);

  bool found = false;
  if(auto item = panelList.selected()) {
    if(item.text() == "Manifest"  ) found = true, manifestViewer.setVisible();
    if(item.text() == "Memory"    ) found = true, memoryEditor.setVisible();
    if(item.text() == "Graphics"  ) found = true, graphicsViewer.setVisible();
    if(item.text() == "Streams"   ) found = true, streamManager.setVisible();
    if(item.text() == "Properties") found = true, propertiesViewer.setVisible();
    if(item.text() == "Tracer"    ) found = true, traceLogger.setVisible();
  }
  if(!found) homePanel.setVisible();

  panelContainer.resize();
}