//----------------------------------------------------------------------------- // $Id: QtRpl/RplFunctionPanel.hpp 2017/07/23 16:20:45 philw $ // Editor panel (with menubar construction) for RplFunction objects. //----------------------------------------------------------------------------- // // class RplFunctionPanel : public QFrame, public RplObjPanel // class RplParamLineEdit : public QLineEdit // //--- #pragma once #ifndef RplFunctionPanelINCLUDED #define RplFunctionPanelINCLUDED #ifndef RplBaseDlgINCLUDED #include "RplBaseDlg.hpp" #endif #ifndef RplFunctionINCLUDED #include "RplFunction.hpp" #endif #ifndef RplObjPanelINCLUDED #include "RplObjPanel.hpp" #endif #ifndef cwCoreINCLUDED #include "cwCore.hpp" //--- cwListLoc #endif class Ui_RplFunctionPanelWidgets; class RplFunctionMenus; class QVBoxLayout; class RowOToggles; class RplFrame; #include #include #include //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- class RplFunctionPanel : public QFrame, public RplObjPanel { Q_OBJECT public: RplFunctionPanel(RplBaseDlg* parent, RplFunction*); virtual void completeInit() override; virtual void installMenuBar() override; virtual RplFunctionPanel* instance() override {return this;} ~RplFunctionPanel(); virtual bool update() override; virtual bool updateDescr() override; virtual bool updateNotes() override; virtual bool updateLoadStatus() override; virtual bool rebuild() override; virtual void showDescription(bool) override; virtual void showNotes(bool) override; virtual void selectStringInDescription( const Rpl::SearchSpec& searchSpec) override; virtual void selectStringInNotes( const Rpl::SearchSpec& searchSpec) override; // Not implemented in this class virtual void selectRplStatement(RplStatement*) override {} public slots: virtual void updateEditActions() override; private slots: void rplSetTypeIconButton_clicked(); void rplGroupTypeIconButton_clicked(); void returnTypeHandler(); void argsHandler(); void editArgsButtonHandler(); void diagnosticsHandler(); void unitsHandler(); void showOptionalFrames(); void addMinConstraint(); void addMaxConstraint(); void addMinError(); void addMaxError(); void setTimeVarying(bool on); void setBreakBeforeEval(bool doBreak); void setBreakAfterEval(bool doBreak); void printPredefined(); public: // Virtual RplBaseDlg methods virtual RplObj *getRplObj() const override { return _rplFunction; }; virtual QString nameEditorText() const override; private: // Initialization and updates void initConnections(); void initWidgets(); void initForApplication(); void initVisibilityToggles(QVBoxLayout* containingLayout); void updateBodyRplFrameVisibility (bool force=false); void loadSettings(); void saveSettings() const; public: virtual void updateExternalDocButton() override; virtual void debuggerStateChanged() override; int renameSymbolInFrames(QString origName, QString newName); private: // Containing QMainWindow dialog RplBaseDlg* _dlg; bool _initialized; // RPL elements RplFunction *_rplFunction; bool _isPredefined; // GUI elements Ui_RplFunctionPanelWidgets* _ui; RplFunctionMenus* _mu; RplFrame *_bodyRplFrame; RplFrame *_constraintRplFrame; QUndoStack _undoStack; QVBoxLayout* _bodyLayout; RowOToggles* _toggles; int _showDescriptionToggleIndex; int _showNotesToggleIndex; int _showPostExecChecksToggleIndex; int _showDiagSettingsToggleIndex; int _showCommentsToggleIndex; public slots: void aboutToShowEditMenu(); void aboutToShowViewMenu(); void aboutToShowFunctionMenu(); void showCommentsChangedHandler(bool show); virtual void scrollToDebugCursor() override; private slots: void updateDescriptionToggleRelevance(); void updateNotesToggleRelevance(); void updatePostExecConstraintsToggleRelevance(); void updateDiagSettingsToggleRelevance(); void updateCommentsToggleRelevance(); void visibilityToggleChangedHandler(int toggleIndex, bool on); }; //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // Little helper class to tack some nifty copy behavior onto QLineEdit. class RplParamLineEdit : public QLineEdit { Q_OBJECT public: RplParamLineEdit(QWidget* parent); protected: void contextMenuEvent(QContextMenuEvent* event) override; private slots: void copyTriggeredCustomHandler(); }; #endif // RplFunctionPanelINCLUDED //--- (end RplFunctionPanel.hpp) ---