File indexing completed on 2024-04-06 12:11:31
0001
0002 #ifndef Fireworks_Core_FWGUIManager_h
0003 #define Fireworks_Core_FWGUIManager_h
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #include <functional>
0023 #include <map>
0024 #include <memory>
0025
0026 #include <sigc++/sigc++.h>
0027 #include "Rtypes.h"
0028 #include "GuiTypes.h"
0029 #include "TGFileDialog.h"
0030
0031
0032 #include "Fireworks/Core/interface/FWConfigurable.h"
0033 #include "DataFormats/Provenance/interface/EventID.h"
0034
0035
0036 class TGPictureButton;
0037 class TGComboBox;
0038 class TGTextButton;
0039 class TGTextEntry;
0040 class TGFrame;
0041 class TGSplitFrame;
0042 class TGVerticalFrame;
0043 class TGMainFrame;
0044 class TGPack;
0045 class TGCompositeFrame;
0046 class TGCheckButton;
0047 class TGPopupMenu;
0048
0049 class TGListTreeItem;
0050 class TGListTree;
0051 class TEveElementList;
0052 class TEveElement;
0053 class TEveWindowPack;
0054 class TEveWindowSlot;
0055 class TEveCompositeFrame;
0056 class TEveWindow;
0057
0058 class CmsShowMainFrame;
0059 class FWEventItem;
0060 class FWViewBase;
0061 class FWGUISubviewArea;
0062
0063 class FWSelectionManager;
0064 class FWSummaryManager;
0065 class FWDetailViewManager;
0066 class FWInvMassDialog;
0067 class CSGAction;
0068 class CSGContinuousAction;
0069
0070 class FWGUIEventDataAdder;
0071
0072 class CmsShowTaskExecutor;
0073
0074 class FWNavigatorBase;
0075
0076 class FWModelContextMenuHandler;
0077 class FWViewContextMenuHandlerBase;
0078 class TGWindow;
0079
0080 namespace edm {
0081 class EventBase;
0082 }
0083
0084 class CmsShowEDI;
0085 class CmsShowModelPopup;
0086 class CmsShowViewPopup;
0087 class FWViewManagerManager;
0088 class CmsShowCommonPopup;
0089 class CmsShowHelpPopup;
0090
0091 namespace fireworks {
0092 class Context;
0093 }
0094
0095 class FWGUIManager : public FWConfigurable {
0096
0097 public:
0098 typedef std::function<FWViewBase*(TEveWindowSlot*, const std::string&)> ViewBuildFunctor;
0099 typedef std::map<std::string, ViewBuildFunctor> NameToViewBuilder;
0100
0101 private:
0102 typedef std::map<TEveWindow*, FWViewBase*> ViewMap_t;
0103 typedef ViewMap_t::iterator ViewMap_i;
0104
0105 public:
0106 FWGUIManager(fireworks::Context* ctx, const FWViewManagerManager* iVMMgr, FWNavigatorBase* navigator);
0107
0108 ~FWGUIManager() override;
0109 void evePreTerminate();
0110
0111
0112 void addTo(FWConfiguration&) const override;
0113 void setFrom(const FWConfiguration&) override;
0114 void setWindowInfoFrom(const FWConfiguration& iFrom, TGMainFrame* iFrame);
0115 void initEmpty();
0116
0117 TGVerticalFrame* createList(TGCompositeFrame* p);
0118 void createViews(TEveWindowSlot* slot);
0119 void exportImageOfMainView();
0120 void exportImagesOfAllViews();
0121 void exportAllViews(const std::string& format, int height);
0122
0123 void createEDIFrame();
0124
0125 void showEDIFrame(int iInfoToShow = -1);
0126
0127 void open3DRegion();
0128 void showCommonPopup();
0129
0130 void createModelPopup();
0131 void showModelPopup();
0132 void showViewPopup();
0133 void popupViewClosed();
0134
0135 void showSelectedModelContextMenu(Int_t iGlobalX, Int_t iGlobalY, FWViewContextMenuHandlerBase* iHandler);
0136
0137 void showInvMassDialog();
0138
0139
0140
0141 void createHelpPopup();
0142 void createShortcutPopup();
0143 void createHelpGLPopup();
0144
0145
0146
0147 CSGContinuousAction* playEventsAction();
0148 CSGContinuousAction* playEventsBackwardsAction();
0149 CSGContinuousAction* loopAction();
0150
0151
0152 static FWGUIManager* getGUIManager();
0153 fireworks::Context* getContext() { return m_context; }
0154 static TGFrame* makeGUIsubview(TEveCompositeFrame* cp, TGCompositeFrame* parent, Int_t height);
0155
0156
0157
0158 void registerViewBuilder(const std::string& iName, ViewBuildFunctor& iBuilder);
0159
0160 ViewMap_i createView(const std::string& iName, TEveWindowSlot* slot = nullptr);
0161 void newViewSlot(const std::string& iName);
0162
0163 void connectSubviewAreaSignals(FWGUISubviewArea*);
0164 void enableActions(bool enable = true);
0165 void disablePrevious();
0166 void disableNext();
0167 void setPlayMode(bool);
0168 void updateStatus(const char* status);
0169 void clearStatus();
0170 void eventChangedCallback();
0171
0172 CSGAction* getAction(const std::string name);
0173
0174 void addData();
0175 void titleChanged(const char* title);
0176
0177 void openEveBrowserForDebugging() const;
0178 void setDelayBetweenEvents(Float_t);
0179
0180 void showEventFilterGUI();
0181 void filterButtonClicked();
0182 void setFilterButtonText(const char* txt);
0183 void setFilterButtonIcon(int);
0184 void updateEventFilterEnable(bool);
0185
0186 void runIdChanged();
0187 void lumiIdChanged();
0188 void eventIdChanged();
0189 void checkSubviewAreaIconState(TEveWindow*);
0190 void subviewIsBeingDestroyed(FWGUISubviewArea*);
0191 void subviewDestroy(FWGUISubviewArea*);
0192 void subviewDestroyAll();
0193 void subviewInfoSelected(FWGUISubviewArea*);
0194 void subviewInfoUnselected(FWGUISubviewArea*);
0195 void subviewSwapped(FWGUISubviewArea*);
0196
0197 CmsShowMainFrame* getMainFrame() const { return m_cmsShowMainFrame; }
0198 const edm::EventBase* getCurrentEvent() const;
0199
0200 void resetWMOffsets();
0201
0202
0203 sigc::signal<void()> filterButtonClicked_;
0204 sigc::signal<void(const TGWindow*)> showEventFilterGUI_;
0205 sigc::signal<void(const std::string&)> writeToConfigurationFile_;
0206 sigc::signal<void(const std::string&)> writePartialToConfigurationFile_;
0207 sigc::signal<void(const std::string&)> loadFromConfigurationFile_;
0208 sigc::signal<void(const std::string&)> loadPartialFromConfigurationFile_;
0209 sigc::signal<void(edm::RunNumber_t, edm::LuminosityBlockNumber_t, edm::EventNumber_t)> changedEventId_;
0210 sigc::signal<void()> goingToQuit_;
0211 sigc::signal<void()> writeToPresentConfigurationFile_;
0212
0213 sigc::signal<void()> changedRunEntry_;
0214 sigc::signal<void()> changedEventEntry_;
0215 sigc::signal<void(Float_t)> changedDelayBetweenEvents_;
0216
0217 FWGUIManager(const FWGUIManager&) = delete;
0218 const FWGUIManager& operator=(const FWGUIManager&) = delete;
0219
0220 private:
0221 TEveWindow* getSwapCandidate();
0222
0223 void newItem(const FWEventItem*);
0224
0225 bool promptForConfigurationFile(std::string& result, enum EFileDialogMode mode);
0226 void promptForSaveConfigurationFile();
0227 void promptForPartialSaveConfigurationFile();
0228 void promptForLoadConfigurationFile();
0229 void promptForPartialLoadConfigurationFile();
0230 void savePartialToConfigurationFile();
0231
0232 void delaySliderChanged(Int_t);
0233
0234 void finishUpColorChange();
0235
0236 void setViewPopup(TEveWindow*);
0237
0238 void measureWMOffsets();
0239
0240
0241
0242 static FWGUIManager* m_guiManager;
0243
0244
0245 fireworks::Context* m_context;
0246
0247 FWSummaryManager* m_summaryManager;
0248
0249
0250 FWDetailViewManager* m_detailViewManager;
0251 const FWViewManagerManager* m_viewManagerManager;
0252 FWModelContextMenuHandler* m_contextMenuHandler;
0253 FWNavigatorBase* m_navigator;
0254 CmsShowMainFrame* m_cmsShowMainFrame;
0255
0256 TGPopupMenu* m_fileMenu;
0257 FWGUIEventDataAdder* m_dataAdder;
0258
0259
0260 CmsShowEDI* m_ediFrame;
0261 CmsShowModelPopup* m_modelPopup;
0262 CmsShowViewPopup* m_viewPopup;
0263 CmsShowCommonPopup* m_commonPopup;
0264 FWInvMassDialog* m_invMassDialog;
0265
0266
0267 CmsShowHelpPopup* m_helpPopup;
0268 CmsShowHelpPopup* m_shortcutPopup;
0269 CmsShowHelpPopup* m_helpGLPopup;
0270
0271
0272 mutable ViewMap_t m_viewMap;
0273 NameToViewBuilder m_nameToViewBuilder;
0274
0275 TEveWindowPack* m_viewPrimPack;
0276 TEveWindowPack* m_viewSecPack;
0277
0278 sigc::connection m_modelChangeConn;
0279
0280 std::unique_ptr<CmsShowTaskExecutor> m_tasks;
0281 std::vector<FWViewBase*> m_regionViews;
0282 int m_WMOffsetX, m_WMOffsetY, m_WMDecorH;
0283 };
0284
0285 #endif