NAP
parametergui.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 #include <utility/dllexport.h>
8 #include <parameter.h>
9 #include <parameterservice.h>
10 #include <parameterguiservice.h>
11 #include <nap/resource.h>
12 #include <nap/resourceptr.h>
13 
14 namespace nap
15 {
16  class IMGuiService;
17 
27  class NAPAPI ParameterGUI : public Resource
28  {
29  RTTI_ENABLE(Resource)
30  public:
31  ParameterGUI(nap::Core& core);
32 
40  void show(bool newWindow = true);
41 
48  bool load(std::string preset, utility::ErrorState& errorState);
49 
54  int getSelectedPresetIndex() const;
55 
60  const std::string& getSelectedPreset() const;
61 
67  virtual bool init(utility::ErrorState& errorState) override;
68 
69  bool mSerializable = true;
70  ResourcePtr<nap::ParameterGroup> mParameterGroup = nullptr;
71 
72  private:
76  void showPresets();
77 
81  void handleLoadPresetPopup();
82 
86  void handleSaveAsPresetPopup();
87 
91  bool handleNewPresetPopup(std::string& outNewFilename);
92 
96  void savePresetState();
97 
101  void restorePresetState();
102 
108  void showParameters(ParameterGroup& parameterGroup, int depth = 0);
109 
110  private:
111  ParameterService& mParameterService;
112  ParameterGUIService& mParameterGUIService;
113  IMGuiService& mGUIService;
115  ParameterService::PresetFileList mPrevPresets;
116  int mSelectedPresetIndex = -1;
117  int mPrevSelectedPresetIndex = -1;
118  };
119 }
nap::ParameterService
Definition: parameterservice.h:20
nap::rtti::ObjectPtr
Definition: objectptr.h:154
nap::ParameterGUIService
Definition: parameterguiservice.h:19
nap::utility::ErrorState
Definition: errorstate.h:19
nap::Core
Definition: core.h:82
nap::ParameterService::PresetFileList
std::vector< std::string > PresetFileList
Definition: parameterservice.h:25
nap::IMGuiService
Definition: imguiservice.h:165
nap::ParameterGUI
Definition: parametergui.h:27
nap
Definition: templateapp.h:17
nap::Resource
Definition: resource.h:19
nap::Group
Definition: group.h:83