Generated reference › API — ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block
kind: generated#api#icoreblocks-icorestudio-studioobjects-icoremodelviews-block

API — ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block

The public contract of 37 header(s) under src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block — 33 class/struct definition(s), 377 declaration(s). Each section shows the header's banner and its public (and protected-virtual) surface exactly as the file writes it.

HeaderDefinesDeclarationsBases
ICoreBlockConfigView.hICoreBlockConfigView29public ICoreCanvasObjectsRoot
ICoreBlockCodeEditorWindow.hICoreBlockCodeEditorWindow2public ICoreWidget
ICoreBlockConfigView_ConfigDialog.hICoreBlockConfigView_ConfigDialog15public ICoreCanvasObjectsRoot
ICoreBlockConfigDialogContentPane.hICoreBlockConfigDialogContentPane13public ICoreGraphicsObject
ICoreBlockConfigDialogContentPaneEntry.hICoreBlockConfigDialogContentPaneEntry17public ICoreGraphicsItem
ICoreBlockConfigDialogContentPaneEntryComboBox.hICoreBlockConfigDialogContentPaneEntryComboBox6public ICoreGraphicsComboBox
ICoreBlockConfigDialogContentPaneEntryImagePicker.hICoreBlockConfigDialogContentPaneEntryImagePicker4public ICoreGraphicsBoxedText
ICoreBlockConfigDialogContentPaneEntryTextBox.hICoreBlockConfigDialogContentPaneEntryTextBox2public ICoreGraphicsBoxedText
ICoreBlockConfigDialogTitleBar.hICoreBlockConfigDialogTitleBar10public ICoreGraphicsObject
ICoreBlockConfigDialogTitleBarLabel.h—0—
ICoreBlockConfigDialogTitleBarShowDescButton.hICoreBlockConfigDialogTitleBarShowDescButton4public ICoreGraphicsButton
ICoreBlockConfigDialogToolBar.hICoreBlockConfigDialogToolBar12public ICoreGraphicsObject
ICoreBlockConfigDialogToolBarButton.hICoreBlockConfigDialogToolBarButton17public ICoreGraphicsObject
ICoreBlockConfigDialogToolBarButton_EditCode.hICoreBlockConfigDialogToolBarButton_EditCode2public ICoreBlockConfigDialogToolBarButton
ICoreBlockConfigDialogToolBarButton_Pin.hICoreBlockConfigDialogToolBarButton_Pin2public ICoreBlockConfigDialogToolBarButton
ICoreBlockConfigDialogToolBarButton_ShowHideName.hICoreBlockConfigDialogToolBarButton_ShowHideName2public ICoreBlockConfigDialogToolBarButton
ICoreBlockConfigView_DescriptionDialog.hICoreBlockConfigView_DescriptionDialog14public ICoreCanvasObjectsRoot
ICoreDescriptionDialogContentPanel.hICoreDescriptionDialogContentPanel6public ICoreGraphicsItem
ICoreDescriptionDialogTitleBar.hICoreDescriptionDialogTitleBar11public ICoreGraphicsObject
ICoreDescriptionDialogTitleBarLabel.h—0—
ICoreBlockConfigViewAddInputPortButton.hICoreBlockConfigViewAddInputPortButton10public ICoreGraphicsButton
ICoreBlockConfigViewAddOutputPortButton.hICoreBlockConfigViewAddOutputPortButton10public ICoreGraphicsButton
ICoreBlockConfigViewDeleteInputPortButton.hICoreBlockConfigViewDeleteInputPortButton10public ICoreGraphicsButton
ICoreBlockConfigViewDeleteOutputPortButton.hICoreBlockConfigViewDeleteOutputPortButton10public ICoreGraphicsButton
ICoreBlockConfigViewPortToolBar.hICoreBlockConfigViewPortToolBar12public ICoreGraphicsObject
ICoreBlockView.hICoreBlockView40public ICoreCanvasObjectsRoot
ICoreBlockViewConfigButton.hICoreBlockViewConfigButton3public ICoreGraphicsButton
ICoreBlockViewFaceLabel.hICoreBlockViewFaceLabel9public ICoreGraphicsText
ICoreBlockViewFrame.hICoreBlockViewFrame25public ICoreGraphicsObject
ICoreBlockViewFrameRenderer.hICoreBlockViewFrameRenderer7public ICoreWidget
ICoreBlockViewNameLabel.h—0—
ICoreBlockViewRotater.hICoreBlockViewRotater14public ICoreGraphicsObject
ICoreFaceDrawingPainter.hICoreFaceDrawingPainter1—
ICorePortsPosAligner.hICorePortsPosAligner9—
ICorePortView.hICorePortView36public ICoreGraphicsObject
ICorePortViewDescriptionLabel.hICorePortViewDescriptionLabel13public ICoreGraphicsText
ICorePortViewSignalTypeLabel.h—0—

ICoreBlockConfigView.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/ICoreBlockConfigView.h

Q_OBJECT removed (P2.9d-3): this class declares no signal, slot, Q_PROPERTY or Q_INVOKABLE of its own, and nothing qobject_casts to it, holds a QPointer to it, animates it by name or reaches its metaObject(). It therefore had a meta-object nobody consulted -- and it could not keep one past P2.9d-5, when the base stops being a QObject.

ICoreBlockConfigView#

ICoreBlockConfigView.h:18 · class · bases public ICoreCanvasObjectsRoot · pImpl · 29 declaration(s)

class ICoreBlockConfigView : public ICoreCanvasObjectsRoot {
public:
    explicit ICoreBlockConfigView(ICoreCanvas* parent, ICoreBlockConfigurator* parentBlockConfigurator);

    void animateConfigPaneShow();
    void animateDescriptionPaneShow() const;
    void animateDescriptionPaneHide() const;

    [[nodiscard]] bool isDescriptionPaneShown() const;
    void hide();
    void ensureAttachedToParentBlock();

    void setWidth(double width) override;
    void setHeight(double height) override;

    // Both re-anchor the two port tool bars, which hang off the CANVAS beside
    // this view rather than off this view -- see kToolBarZ in
    // ICoreBlockConfigViewPortToolBar.cpp. setPos() keeps them tracking the
    // scrim; reconstructDescendents() takes them back as children so the
    // garbage collector detaches them along with this view.
    void setPos(double newPosX, double newPosY) override;
    void reconstructDescendents() override;

    ICoreBlockConfigView_ConfigDialog* getConfigDialog() const;
    ICoreBlockConfigView_DescriptionDialog* getDescriptionDialog() const;

    [[nodiscard]] bool isShown() const;

    ICoreBlockConfigViewAddInputPortButton *getAddInputPortButton() const;

    ICoreBlockConfigViewAddOutputPortButton *getAddOutputPortButton() const;

    ICoreBlockConfigViewDeleteInputPortButton *getDeleteInputPortButton() const;

    ICoreBlockConfigViewDeleteOutputPortButton *getDeleteOutputPortButton() const;

    [[nodiscard]] double getPadding() const;

    void resetToInitialState(ICoreCanvas* parent, ICoreBlockConfigurator* parentBlockConfigurator);
    void kill();
    void setAlive();
    bool isAlive() const;

    // The two halves of the configuration overlay, from block.config* — see the
    // note on those tokens for why the state takes two treatments rather than
    // one wash. The scrim is what the backdrop over the block wears; the pane
    // is what the parameter and description dialogs wear.
    static void applyConfigScrimTo(ICoreCanvasObjectsRoot* target);
    static void applyConfigPaneTo(ICoreCanvasObjectsRoot* target);

    // The raised plate a tool bar in this UI stands on. Three bars wear it now —
    // the config dialog's, and the two port bars beside the block — so it is
    // painted from one place rather than from three copies of the same gradient
    // and the same two alphas.
    static void paintToolBarPlate(ICorePainter& painter, const ICoreRect& bounds);

    ICoreBlockConfigViewPortToolBar* getInputPortToolBar() const;
    ICoreBlockConfigViewPortToolBar* getOutputPortToolBar() const;

    ~ICoreBlockConfigView() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockCodeEditorWindow.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/CodeEditorWindow/ICoreBlockCodeEditorWindow.h

ICoreBlockCodeEditorWindow#

ICoreBlockCodeEditorWindow.h:18 · class · bases public ICoreWidget · pImpl · 2 declaration(s)

Top-level editor window for a block's designated source-code config variable (ICoreBlockConfigurator::getCodeEditorVariableName), opened from the config dialog's "Edit Code" toolbar button.

class ICoreBlockCodeEditorWindow : public ICoreWidget {
public:
    explicit ICoreBlockCodeEditorWindow(ICoreBlockConfigurator* blockConfigurator);

    ~ICoreBlockCodeEditorWindow() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigView_ConfigDialog.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/ConfigDialog/ICoreBlockConfigView_ConfigDialog.h

Q_OBJECT removed (P2.9d-3): this class declares no signal, slot, Q_PROPERTY or Q_INVOKABLE of its own, and nothing qobject_casts to it, holds a QPointer to it, animates it by name or reaches its metaObject(). It therefore had a meta-object nobody consulted -- and it could not keep one past P2.9d-5, when the base stops being a QObject.

ICoreBlockConfigView_ConfigDialog#

ICoreBlockConfigView_ConfigDialog.h:15 · class · bases public ICoreCanvasObjectsRoot · pImpl · 15 declaration(s)

class ICoreBlockConfigView_ConfigDialog : public ICoreCanvasObjectsRoot {
public:
    explicit ICoreBlockConfigView_ConfigDialog(ICoreCanvas* parentCanvas, ICoreBlockConfigurator* parentBlockConfigurator,
                    ICoreBlockConfigView* grandParentConfigUI);

    void animateShow(const ICoreRect &blockBounds, double padding);
    void animateToDelete();

    void reconstructDescendents() override;

    void triggerScroll(double scrollDelta) const;

    void setWidth(double newWidth) override;
    void setHeight(double newHeight) override;

    ICoreBlockConfigDialogContentPane *getContentPane() const;

    ICoreBlockConfigDialogTitleBar* getTitleBar() const;

    ICoreCanvas* getCanvas() const;

    ICoreBlockConfigurator* getBlockConfigurator() const;

    void resetToInitialState(ICoreCanvas* parentCanvas, ICoreBlockConfigurator* parentBlockConfigurator, ICoreBlockConfigView* grandParentConfigUI);
    void kill();
    void setAlive();
    bool isAlive() const;

    ~ICoreBlockConfigView_ConfigDialog() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigDialogContentPane.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/ConfigDialog/ContentPane/ICoreBlockConfigDialogContentPane.h

Q_OBJECT removed (P2.9d-3): this class declares no signal, slot, Q_PROPERTY or Q_INVOKABLE of its own, and nothing qobject_casts to it, holds a QPointer to it, animates it by name or reaches its metaObject(). It therefore had a meta-object nobody consulted -- and it could not keep one past P2.9d-5, when the base stops being a QObject.

ICoreBlockConfigDialogContentPane#

ICoreBlockConfigDialogContentPane.h:14 · class · bases public ICoreGraphicsObject · pImpl · 13 declaration(s)

class ICoreBlockConfigDialogContentPane : public ICoreGraphicsObject {
public:
    explicit ICoreBlockConfigDialogContentPane(ICoreBlockConfigView_ConfigDialog* parentDialog, ICoreBlockConfigurator* grandParentBlockConfigurator);

    ICoreRect contentBounds() const override;

    void paintContent(ICorePainter& painter) override;

    void populateWithConfigVariables();

    // Push every config variable's current value back into its entry (values only;
    // no rebuild). For changes made outside the dialog while it is visible.
    void refreshEntryValuesFromConfigVariables() const;

    void updateEntriesPositions() const;

    void clearAllEntries();

    void setWidth(double newWidth) const;

    // void setHeight(double newHeight) const;

    void setHeight(double newHeight);

    ICoreBlockConfigView_ConfigDialog* getParentDialog() const;

    void printEntries() const;

    void resetToInitialState(ICoreBlockConfigView_ConfigDialog* parentDialog, ICoreBlockConfigurator* grandParentBlockConfigurator);

    ~ICoreBlockConfigDialogContentPane() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigDialogContentPaneEntry.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/ConfigDialog/ContentPane/ICoreBlockConfigDialogContentPaneEntry.h

contentBounds(), not boundingRect(): after ICoreGraphicsItem's conversion the QGraphicsItem is its Impl, which does not derive from this class, so a boundingRect() override here would never be called by anything.

ICoreBlockConfigDialogContentPaneEntry#

ICoreBlockConfigDialogContentPaneEntry.h:13 · class · bases public ICoreGraphicsItem · pImpl · 17 declaration(s)

class ICoreBlockConfigDialogContentPaneEntry : public ICoreGraphicsItem {
public:
    explicit ICoreBlockConfigDialogContentPaneEntry(ICoreBlockConfigDialogContentPane* parentDialogContentPane,
         ICoreBlockConfigVariable* variable);

    // contentBounds(), not boundingRect(): after ICoreGraphicsItem's conversion
    // the QGraphicsItem is its Impl, which does not derive from this class, so
    // a boundingRect() override here would never be called by anything.
    ICoreRect contentBounds() const override;

    void paintContent(ICorePainter& painter) override;

    void updateBlockConfigWithUserEntry() const;

    // Inverse of updateBlockConfigWithUserEntry: push the config variable's current
    // value back into the value box (used when the variable is changed from outside
    // the dialog, e.g. by a recipe command, while the dialog is visible).
    void refreshValueFromConfigVariable() const;

    ICoreGraphicsBoxedText* getNameTextBox() const;
    ICoreGraphicsBoxedText* getValueTextBox() const;

    double getWidth() const;
    double getHeight() const;

    void setWidth(double newWidth) override;

    std::string castOptionsToString();

    ICoreBlockConfigDialogContentPane* getParentDialogContentPane() const;

    ICoreBlockConfigVariable* getAssociatedConfigVariable() const;

    void resetToInitialState(ICoreBlockConfigDialogContentPane* parentDialogContentPane, ICoreBlockConfigVariable* variable);
    void kill();
    void setAlive();
    bool isAlive() const;

    ~ICoreBlockConfigDialogContentPaneEntry() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigDialogContentPaneEntryComboBox.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/ConfigDialog/ContentPane/ICoreBlockConfigDialogContentPaneEntryComboBox.h

⚠ setPopupOpen, NOT animateComboDialogShow/Hide, AND THAT SWAP IS THE WHOLE OF A10.47. The two animate verbs are a compatibility spelling with one caller in the tree; every gesture that actually opens or closes this dropdown goes through setPopupOpen(). Overriding the pair meant the re-parent onto the canvas's floating layer -- the thing that puts the options list in front of the entries below it -- never ran on a click.

ICoreBlockConfigDialogContentPaneEntryComboBox#

ICoreBlockConfigDialogContentPaneEntryComboBox.h:8 · class · bases public ICoreGraphicsComboBox · pImpl · 6 declaration(s)

class ICoreBlockConfigDialogContentPaneEntryComboBox : public ICoreGraphicsComboBox {
public:
    explicit ICoreBlockConfigDialogContentPaneEntryComboBox(ICoreBlockConfigDialogContentPaneEntry* parentEntry);

    void setChosenOption(const std::string& newChosenOption) override;

    // ⚠ setPopupOpen, NOT animateComboDialogShow/Hide, AND THAT SWAP IS THE
    // WHOLE OF A10.47. The two animate verbs are a compatibility spelling with
    // one caller in the tree; every gesture that actually opens or closes this
    // dropdown goes through setPopupOpen(). Overriding the pair meant the
    // re-parent onto the canvas's floating layer -- the thing that puts the
    // options list in front of the entries below it -- never ran on a click.
    void setPopupOpen(bool open) override;

    void resetToInitialState_BlockConfigDialogContentPaneEntryComboBox(ICoreBlockConfigDialogContentPaneEntry* parentEntry);

protected:
    // ⚠⚠ THE ROOM, AND THIS IS THE ONE CLASS IN THE TREE THAT CAN ANSWER IT
    // (A10.45). The base declines the question -- a combo box is TEXT tier and
    // cannot see its container -- and that decline is correct for it. This
    // subclass already walks entry -> content pane -> dialog -> canvas on the
    // open path, and a canvas has a VIEW, so the visible area is two calls
    // away: ICoreCanvasParent::getVisibleSceneRect(), then back through the
    // canvas item and down to this box's own origin.
    //
    // ⚠ EVERY LINK OF THAT WALK IS OPTIONAL and a missing one returns the
    // EMPTY rect, not a zero-sized guess -- an entry with no canvas keeps the
    // downward default rather than being told there is no room anywhere.
    ICoreRect popupBounds() const override;

public:

    ~ICoreBlockConfigDialogContentPaneEntryComboBox() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigDialogContentPaneEntryImagePicker.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/ConfigDialog/ContentPane/ICoreBlockConfigDialogContentPaneEntryImagePicker.h

ICoreBlockConfigDialogContentPaneEntryImagePicker#

ICoreBlockConfigDialogContentPaneEntryImagePicker.h:14 · class · bases public ICoreGraphicsBoxedText · pImpl · 4 declaration(s)

The value box of a config marked ICoreBlockConfigVariable::setIsImagePath (FEATURES_TO_ADD.md BF22.3).

class ICoreBlockConfigDialogContentPaneEntryImagePicker : public ICoreGraphicsBoxedText {
public:
    explicit ICoreBlockConfigDialogContentPaneEntryImagePicker(
        ICoreBlockConfigDialogContentPaneEntry* parentEntry);

    // What a click does once the picker has answered: import the file and, if
    // it is a picture, store its project-relative path in the config. False,
    // with the config left as it was, when the file is missing or is not a
    // picture. Public so the step can be exercised without a native dialog.
    bool chooseFile(const std::filesystem::path& sourceImagePath);

    void resetToInitialState_BlockConfigDialogContentPaneEntryImagePicker(
        ICoreBlockConfigDialogContentPaneEntry* parentEntry);

    ~ICoreBlockConfigDialogContentPaneEntryImagePicker() override;

protected:
    bool mousePressed(const ICoreMouseEvent& event) override;
    bool mouseDoubleClicked(const ICoreMouseEvent& event) override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigDialogContentPaneEntryTextBox.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/ConfigDialog/ContentPane/ICoreBlockConfigDialogContentPaneEntryTextBox.h

ICoreBlockConfigDialogContentPaneEntryTextBox#

ICoreBlockConfigDialogContentPaneEntryTextBox.h:9 · class · bases public ICoreGraphicsBoxedText · pImpl · 2 declaration(s)

class ICoreBlockConfigDialogContentPaneEntryTextBox : public ICoreGraphicsBoxedText {
public:
    explicit ICoreBlockConfigDialogContentPaneEntryTextBox(
        ICoreBlockConfigDialogContentPaneEntry* parentEntry);

    void resetToInitialState_BlockConfigDialogContentPaneEntryTextBox(
        ICoreBlockConfigDialogContentPaneEntry* parentEntry);

    ~ICoreBlockConfigDialogContentPaneEntryTextBox() override;

protected:
    void focusLosing(const ICoreFocusEvent& event) override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigDialogTitleBar.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/ConfigDialog/TitleBar/ICoreBlockConfigDialogTitleBar.h

Q_OBJECT removed (P2.9d-3): this class declares no signal, slot, Q_PROPERTY or Q_INVOKABLE of its own, and nothing qobject_casts to it, holds a QPointer to it, animates it by name or reaches its metaObject(). It therefore had a meta-object nobody consulted -- and it could not keep one past P2.9d-5, when the base stops being a QObject.

ICoreBlockConfigDialogTitleBar#

ICoreBlockConfigDialogTitleBar.h:16 · class · bases public ICoreGraphicsObject · pImpl · 10 declaration(s)

class ICoreBlockConfigDialogTitleBar : public ICoreGraphicsObject {
public:
    explicit ICoreBlockConfigDialogTitleBar(ICoreBlockConfigView_ConfigDialog* parentDialog,
            ICoreBlockConfigurator* grandParentConfigurator, ICoreBlockConfigView* grandParentConfigUI);

    ICoreRect contentBounds() const override;

    void paintContent(ICorePainter& painter) override;

    void reconstructDescendents();

    void setWidth(double width) override; // Height is always fixed

    double getWidth() const;
    double getHeight() const;

    ICoreRect getBoundsInCanvas() const;

    ICoreBlockConfigDialogTitleBarShowDescButton* getInfoButton() const;

    void resetToInitialState(ICoreBlockConfigView_ConfigDialog* parentDialog,
            ICoreBlockConfigurator* grandParentConfigurator, ICoreBlockConfigView* grandParentConfigUI);

    ~ICoreBlockConfigDialogTitleBar() override;

protected:
    void pointerEntered(const ICoreMouseEvent& event) override;
    void pointerLeft() override;
    // void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
    // void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
    // void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigDialogTitleBarLabel.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/ConfigDialog/TitleBar/ICoreBlockConfigDialogTitleBarLabel.h

Declares no class of its own — see the file.

ICoreBlockConfigDialogTitleBarShowDescButton.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/ConfigDialog/TitleBar/ICoreBlockConfigDialogTitleBarShowDescButton.h

ICoreBlockConfigDialogTitleBarShowDescButton#

ICoreBlockConfigDialogTitleBarShowDescButton.h:9 · class · bases public ICoreGraphicsButton · pImpl · 4 declaration(s)

class ICoreBlockConfigDialogTitleBarShowDescButton : public ICoreGraphicsButton {
public:
    explicit ICoreBlockConfigDialogTitleBarShowDescButton(
        ICoreBlockConfigDialogTitleBar* parentTitleBar, ICoreBlockConfigView* blockConfigUI);

    void updatePosition();

    void resetToInitialState(ICoreBlockConfigDialogTitleBar* parentTitleBar, ICoreBlockConfigView* blockConfigUI);

    ~ICoreBlockConfigDialogTitleBarShowDescButton() override;

protected:
    bool mousePressed(const ICoreMouseEvent& event) override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigDialogToolBar.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/ConfigDialog/ToolBar/ICoreBlockConfigDialogToolBar.h

Q_OBJECT removed (P2.9d-3): this class declares no signal, slot, Q_PROPERTY or Q_INVOKABLE of its own, and nothing qobject_casts to it, holds a QPointer to it, animates it by name or reaches its metaObject(). It therefore had a meta-object nobody consulted -- and it could not keep one past P2.9d-5, when the base stops being a QObject.

ICoreBlockConfigDialogToolBar#

ICoreBlockConfigDialogToolBar.h:22 · class · bases public ICoreGraphicsObject · pImpl · 12 declaration(s)

class ICoreBlockConfigDialogToolBar : public ICoreGraphicsObject {
public:
    explicit ICoreBlockConfigDialogToolBar(ICoreBlockConfigView_ConfigDialog* parentBlockConfigDialog = nullptr);

    ICoreRect contentBounds() const override;

    void paintContent(ICorePainter& painter) override;

    void reconstructDescendents();

    void setWidth(double width) override;
    void setHeight(double height);

    std::vector<ICoreBlockConfigDialogToolBarButton*> getChildrenButtons();
    double getPadding() const;

    void resetToInitialState(ICoreBlockConfigView_ConfigDialog* parentBlockConfigDialog = nullptr);

    ~ICoreBlockConfigDialogToolBar() override;

protected:
    void pointerEntered(const ICoreMouseEvent& event) override;
    void pointerLeft() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigDialogToolBarButton.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/ConfigDialog/ToolBar/ICoreBlockConfigDialogToolBarButton.h

Q_OBJECT removed (P2.9d-3): this class declares no signal, slot, Q_PROPERTY or Q_INVOKABLE of its own, and nothing qobject_casts to it, holds a QPointer to it, animates it by name or reaches its metaObject(). It therefore had a meta-object nobody consulted -- and it could not keep one past P2.9d-5, when the base stops being a QObject.

ICoreBlockConfigDialogToolBarButton#

ICoreBlockConfigDialogToolBarButton.h:14 · class · bases public ICoreGraphicsObject · pImpl · 17 declaration(s)

class ICoreBlockConfigDialogToolBarButton : public ICoreGraphicsObject {
public:
    explicit ICoreBlockConfigDialogToolBarButton(ICoreBlockConfigDialogToolBar *parentToolBar = nullptr, ICoreBlockConfigView_ConfigDialog* grandParentConfigDialog = nullptr);

    ICoreRect contentBounds() const override;

    void paintContent(ICorePainter& painter) override;

    void configureInfoLabel(ICoreGraphicsInfoLabel* infoLabel, const ICoreString &title,
                                        const ICoreString &technique, double delayDuration);

    void animateShow();
    void animateHide() const;

    void setWidth(double width) override;
    void setHeight(double height);

    void setIcon(const ICoreIcon& icon);

    // ⚠ setIcon(icoreThemedIcon(path)) EXCEPT THAT IT FOLLOWS A THEME SWITCH.
    // The glyph is drawn through ICoreIconRenderer, which can rebuild the ART
    // and not merely its rasterization once it is given the path -- see that
    // header, which also records why the version of this that only repainted
    // could never have worked on a native seat.
    void setThemedIcon(const ICoreString& svgPath);

    void setHoldHoverStyle(bool newHoldHoverStyle);

    double getHeight() const;

    void resetToInitialState_ConfigDialogToolBarButton(ICoreBlockConfigDialogToolBar *parentToolBar = nullptr, ICoreBlockConfigView_ConfigDialog* grandParentConfigDialog = nullptr);

    ~ICoreBlockConfigDialogToolBarButton() override;

protected:
    // virtual method can be overridden in derived button classes
    virtual void onClicked();

    bool mousePressed(const ICoreMouseEvent& event) override;
    void pointerEntered(const ICoreMouseEvent& event) override;
    void pointerLeft() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigDialogToolBarButton_EditCode.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/ConfigDialog/ToolBar/ICoreBlockConfigDialogToolBarButton_EditCode.h

ICoreBlockConfigDialogToolBarButton_EditCode#

ICoreBlockConfigDialogToolBarButton_EditCode.h:11 · class · bases public ICoreBlockConfigDialogToolBarButton · pImpl · 2 declaration(s)

Opens an ICoreBlockCodeEditorWindow for the block's designated source-code config variable.

class ICoreBlockConfigDialogToolBarButton_EditCode : public ICoreBlockConfigDialogToolBarButton {
public:
    explicit ICoreBlockConfigDialogToolBarButton_EditCode(ICoreBlockConfigDialogToolBar* parentToolBar = nullptr,
                        ICoreBlockConfigView_ConfigDialog* grandParentBlockConfigDialog = nullptr, ICoreGraphicsInfoLabel* infoLabel = nullptr);

    void resetToInitialState(ICoreBlockConfigDialogToolBar* parentToolBar = nullptr,
                        ICoreBlockConfigView_ConfigDialog* grandParentBlockConfigDialog = nullptr, ICoreGraphicsInfoLabel* infoLabel = nullptr);

    ~ICoreBlockConfigDialogToolBarButton_EditCode() override;

protected:
    void onClicked() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigDialogToolBarButton_Pin.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/ConfigDialog/ToolBar/ICoreBlockConfigDialogToolBarButton_Pin.h

ICoreBlockConfigDialogToolBarButton_Pin#

ICoreBlockConfigDialogToolBarButton_Pin.h:8 · class · bases public ICoreBlockConfigDialogToolBarButton · pImpl · 2 declaration(s)

class ICoreBlockConfigDialogToolBarButton_Pin : public ICoreBlockConfigDialogToolBarButton {
public:
    explicit ICoreBlockConfigDialogToolBarButton_Pin(ICoreBlockConfigDialogToolBar* parentToolBar = nullptr,
                        ICoreBlockConfigView_ConfigDialog* grandParentBlockConfigDialog = nullptr, ICoreGraphicsInfoLabel* infoLabel = nullptr);

    void resetToInitialState(ICoreBlockConfigDialogToolBar* parentToolBar = nullptr,
                        ICoreBlockConfigView_ConfigDialog* grandParentBlockConfigDialog = nullptr, ICoreGraphicsInfoLabel* infoLabel = nullptr);

    ~ICoreBlockConfigDialogToolBarButton_Pin() override;

protected:
    void onClicked() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigDialogToolBarButton_ShowHideName.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/ConfigDialog/ToolBar/ICoreBlockConfigDialogToolBarButton_ShowHideName.h

ICoreBlockConfigDialogToolBarButton_ShowHideName#

ICoreBlockConfigDialogToolBarButton_ShowHideName.h:9 · class · bases public ICoreBlockConfigDialogToolBarButton · pImpl · 2 declaration(s)

class ICoreBlockConfigDialogToolBarButton_ShowHideName : public ICoreBlockConfigDialogToolBarButton {
public:
    explicit ICoreBlockConfigDialogToolBarButton_ShowHideName(ICoreBlockConfigDialogToolBar* parentToolBar = nullptr,
                        ICoreBlockConfigView_ConfigDialog* grandParentBlockConfigDialog = nullptr, ICoreGraphicsInfoLabel* infoLabel = nullptr);

    void resetToInitialState(ICoreBlockConfigDialogToolBar* parentToolBar = nullptr,
                        ICoreBlockConfigView_ConfigDialog* grandParentBlockConfigDialog = nullptr, ICoreGraphicsInfoLabel* infoLabel = nullptr);

    ~ICoreBlockConfigDialogToolBarButton_ShowHideName() override;

protected:
    void onClicked() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigView_DescriptionDialog.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/DescriptionDialog/ICoreBlockConfigView_DescriptionDialog.h

Q_OBJECT removed (P2.9d-3): this class declares no signal, slot, Q_PROPERTY or Q_INVOKABLE of its own, and nothing qobject_casts to it, holds a QPointer to it, animates it by name or reaches its metaObject(). It therefore had a meta-object nobody consulted -- and it could not keep one past P2.9d-5, when the base stops being a QObject.

ICoreBlockConfigView_DescriptionDialog#

ICoreBlockConfigView_DescriptionDialog.h:15 · class · bases public ICoreCanvasObjectsRoot · pImpl · 14 declaration(s)

class ICoreBlockConfigView_DescriptionDialog : public ICoreCanvasObjectsRoot {
public:
    explicit ICoreBlockConfigView_DescriptionDialog(ICoreCanvas* parentCanvas, ICoreBlockConfigurator* parentBlockConfigurator);

    void animateShow(const ICoreRect& configDialogBounds);
    void animateHide();

    // Whether the panel is currently open. Tracked here rather than read off
    // isVisible() so it stays the dialog's own answer, and so the Info button can
    // toggle against it.
    [[nodiscard]] bool isShown() const;

    void reconstructDescendents() override;

    void triggerScroll(double scrollDelta) const;

    void setWidth(double newWidth) override;
    void setHeight(double newHeight) override;

    ICoreCanvas* getCanvas() const;

    void resetToInitialState(ICoreCanvas* parentCanvas, ICoreBlockConfigurator* parentBlockConfigurator);
    void kill();
    void setAlive();
    bool isAlive() const;

    ~ICoreBlockConfigView_DescriptionDialog() override;
private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreDescriptionDialogContentPanel.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/DescriptionDialog/ICoreDescriptionDialogContentPanel.h

contentBounds(), not boundingRect(): after ICoreGraphicsItem's conversion the QGraphicsItem is its Impl, which does not derive from this class, so a boundingRect() override here would never be called by anything.

ICoreDescriptionDialogContentPanel#

ICoreDescriptionDialogContentPanel.h:14 · class · bases public ICoreGraphicsItem · pImpl · 6 declaration(s)

class ICoreDescriptionDialogContentPanel : public ICoreGraphicsItem {
public:
    explicit ICoreDescriptionDialogContentPanel(ICoreBlockConfigView_DescriptionDialog* parentDialog,
        ICoreBlockConfigurator* parentBlockConfigurator, const std::string& descText);

    // contentBounds(), not boundingRect(): after ICoreGraphicsItem's conversion
    // the QGraphicsItem is its Impl, which does not derive from this class, so
    // a boundingRect() override here would never be called by anything.
    ICoreRect contentBounds() const override;

    void paintContent(ICorePainter& painter) override;

    void reconstructDescendents();

    void autoUpdateHeight();

    void setWidth(double newWidth) override;

    void resetToInitialState(ICoreBlockConfigView_DescriptionDialog* parentDialog,
        ICoreBlockConfigurator* parentBlockConfigurator, const std::string& descText);

    ~ICoreDescriptionDialogContentPanel() override;
private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreDescriptionDialogTitleBar.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/DescriptionDialog/TitleBar/ICoreDescriptionDialogTitleBar.h

Q_OBJECT removed (P2.9d-3): this class declares no signal, slot, Q_PROPERTY or Q_INVOKABLE of its own, and nothing qobject_casts to it, holds a QPointer to it, animates it by name or reaches its metaObject(). It therefore had a meta-object nobody consulted -- and it could not keep one past P2.9d-5, when the base stops being a QObject.

ICoreDescriptionDialogTitleBar#

ICoreDescriptionDialogTitleBar.h:15 · class · bases public ICoreGraphicsObject · pImpl · 11 declaration(s)

class ICoreDescriptionDialogTitleBar : public ICoreGraphicsObject {
public:
    explicit ICoreDescriptionDialogTitleBar(ICoreBlockConfigView_DescriptionDialog* parentDialog, ICoreBlockConfigurator* grandParentConfigurator);

    ICoreRect contentBounds() const override;

    void paintContent(ICorePainter& painter) override;
    void reconstructDescendents();
    void setWidth(double width) override; // Height is always fixed
    double getWidth() const;
    double getHeight() const;
    ICoreRect getBoundsInCanvas() const;
    void resetToInitialState(ICoreBlockConfigView_DescriptionDialog* parentDialog, ICoreBlockConfigurator* grandParentConfigurator);

    ~ICoreDescriptionDialogTitleBar() override;

protected:
    void pointerEntered(const ICoreMouseEvent& event) override;
    void pointerLeft() override;
    // void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
    // void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
    // void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreDescriptionDialogTitleBarLabel.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/DescriptionDialog/TitleBar/ICoreDescriptionDialogTitleBarLabel.h

Declares no class of its own — see the file.

ICoreBlockConfigViewAddInputPortButton.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/RootUIFloatingButtons/ICoreBlockConfigViewAddInputPortButton.h

ICoreBlockConfigViewAddInputPortButton#

ICoreBlockConfigViewAddInputPortButton.h:14 · class · bases public ICoreGraphicsButton · pImpl · 10 declaration(s)

class ICoreBlockConfigViewAddInputPortButton : public ICoreGraphicsButton {
public:
    explicit ICoreBlockConfigViewAddInputPortButton(ICoreBlockConfigView* graphicsParent, ICoreBlockConfigurator* parentBlockConfigurator);

    // The tool bar hands over its shared hover label and the side it opens on.
    void setInfoLabel(ICoreGraphicsInfoLabel* infoLabel, const ICoreString& technique);

    void resetToInitialState(ICoreBlockConfigView* graphicsParent, ICoreBlockConfigurator* parentBlockConfigurator);
    void kill();
    void setAlive();
    bool isAlive() const;

    ~ICoreBlockConfigViewAddInputPortButton() override;

protected:
    bool mousePressed(const ICoreMouseEvent& event) override;
    void pointerEntered(const ICoreMouseEvent& event) override;
    void pointerLeft() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigViewAddOutputPortButton.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/RootUIFloatingButtons/ICoreBlockConfigViewAddOutputPortButton.h

ICoreBlockConfigViewAddOutputPortButton#

ICoreBlockConfigViewAddOutputPortButton.h:14 · class · bases public ICoreGraphicsButton · pImpl · 10 declaration(s)

class ICoreBlockConfigViewAddOutputPortButton : public ICoreGraphicsButton {
public:
    explicit ICoreBlockConfigViewAddOutputPortButton(ICoreBlockConfigView* graphicsParent, ICoreBlockConfigurator* parentBlockConfigurator);

    // The tool bar hands over its shared hover label and the side it opens on.
    void setInfoLabel(ICoreGraphicsInfoLabel* infoLabel, const ICoreString& technique);

    void resetToInitialState(ICoreBlockConfigView* graphicsParent, ICoreBlockConfigurator* parentBlockConfigurator);
    void kill();
    void setAlive();
    bool isAlive() const;

    ~ICoreBlockConfigViewAddOutputPortButton() override;

protected:
    bool mousePressed(const ICoreMouseEvent& event) override;
    void pointerEntered(const ICoreMouseEvent& event) override;
    void pointerLeft() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigViewDeleteInputPortButton.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/RootUIFloatingButtons/ICoreBlockConfigViewDeleteInputPortButton.h

ICoreBlockConfigViewDeleteInputPortButton#

ICoreBlockConfigViewDeleteInputPortButton.h:14 · class · bases public ICoreGraphicsButton · pImpl · 10 declaration(s)

class ICoreBlockConfigViewDeleteInputPortButton : public ICoreGraphicsButton {
public:
    explicit ICoreBlockConfigViewDeleteInputPortButton(ICoreBlockConfigView* graphicsParent, ICoreBlockConfigurator* parentBlockConfigurator);

    // The tool bar hands over its shared hover label and the side it opens on.
    void setInfoLabel(ICoreGraphicsInfoLabel* infoLabel, const ICoreString& technique);

    void resetToInitialState(ICoreBlockConfigView* graphicsParent, ICoreBlockConfigurator* parentBlockConfigurator);
    void kill();
    void setAlive();
    bool isAlive() const;

    ~ICoreBlockConfigViewDeleteInputPortButton() override;

protected:
    bool mousePressed(const ICoreMouseEvent& event) override;
    void pointerEntered(const ICoreMouseEvent& event) override;
    void pointerLeft() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigViewDeleteOutputPortButton.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/RootUIFloatingButtons/ICoreBlockConfigViewDeleteOutputPortButton.h

ICoreBlockConfigViewDeleteOutputPortButton#

ICoreBlockConfigViewDeleteOutputPortButton.h:14 · class · bases public ICoreGraphicsButton · pImpl · 10 declaration(s)

class ICoreBlockConfigViewDeleteOutputPortButton : public ICoreGraphicsButton {
public:
    explicit ICoreBlockConfigViewDeleteOutputPortButton(ICoreBlockConfigView* graphicsParent, ICoreBlockConfigurator* parentBlockConfigurator);

    // The tool bar hands over its shared hover label and the side it opens on.
    void setInfoLabel(ICoreGraphicsInfoLabel* infoLabel, const ICoreString& technique);

    void resetToInitialState(ICoreBlockConfigView* graphicsParent, ICoreBlockConfigurator* parentBlockConfigurator);
    void kill();
    void setAlive();
    bool isAlive() const;

    ~ICoreBlockConfigViewDeleteOutputPortButton() override;

protected:
    bool mousePressed(const ICoreMouseEvent& event) override;
    void pointerEntered(const ICoreMouseEvent& event) override;
    void pointerLeft() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockConfigViewPortToolBar.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockConfigUI/RootUIFloatingButtons/ICoreBlockConfigViewPortToolBar.h

ICoreBlockConfigViewPortToolBar#

ICoreBlockConfigViewPortToolBar.h:25 · class · bases public ICoreGraphicsObject · pImpl · 12 declaration(s)

The plate the two port buttons stand on, one per side of the block being configured.

class ICoreBlockConfigViewPortToolBar : public ICoreGraphicsObject {
public:
    // Which side of the block the bar hangs off. It decides the horizontal
    // anchor and nothing else — both sides stack their pair identically.
    enum class Side { Input, Output };

    explicit ICoreBlockConfigViewPortToolBar(ICoreBlockConfigView* graphicsParent, Side side);

    // The dialog tool bar's button treatment, applied to a port button: icon
    // only, no fill, no caption, and the nav-item wash on hover — what
    // ICoreBlockConfigDialogToolBarButton paints for Pin, Show-Hide Name and
    // Edit Code. Static, and here rather than in each button, because the four
    // port buttons are four unrelated classes that must not drift apart.
    static void applyButtonTheme(ICoreGraphicsButton* button, const ICoreString& iconPath);

    // The bar's shared hover label — the wording the buttons used to carry as a
    // caption. It is a CHILD OF THE BAR on purpose: showInfoLabel() positions
    // itself in the shared parent's coordinates, so a label parented anywhere
    // else lands in the wrong place.
    ICoreGraphicsInfoLabel* getInfoLabel() const;

    // Which side of the button the hover label opens on — "leftMiddle" for the
    // input bar, which hangs off the block's left, and the default right-hand
    // placement for the output bar. Callers pass it straight to showInfoLabel().
    ICoreString getInfoLabelTechnique() const;

    ICoreRect contentBounds() const override;

    void paintContent(ICorePainter& painter) override;

    // Adopts the pair, sizes the plate around it and lays it out. Either
    // argument may be nullptr, which empties and hides the bar.
    void setButtons(ICoreGraphicsButton* addButton, ICoreGraphicsButton* deleteButton);

    // Re-anchors the plate against the scrim's current size. The scrim calls
    // this from its setWidth()/setHeight(), which is where the four buttons
    // used to be re-placed one at a time.
    void updatePosition();

    void setWidth(double width) override;
    void setHeight(double height);

    void resetToInitialState(ICoreBlockConfigView* graphicsParent);

    ~ICoreBlockConfigViewPortToolBar() override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockView.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockUI/ICoreBlockView.h

⚠ NAMED HERE BECAUSE IT IS USED HERE (std::optional, below). It arrived transitively until 2026-08-26, through an include of Theme/QtBinding/ that a neighbouring header carried and L9.10 deleted -- the shape the Apple backend plan A9.7 records: cutting one chain breaks files that never named what they used.

ICoreBlockView#

ICoreBlockView.h:29 · class · final · bases public ICoreCanvasObjectsRoot · pImpl · 40 declaration(s)

class ICoreBlockView final : public ICoreCanvasObjectsRoot {
public:

    // enum { Type = QGraphicsItem::UserType + 1 };
    // int type() const override { return Type; }

    explicit ICoreBlockView(ICoreGraphicsObject *parent = nullptr, ICoreBlock* parentBlock = nullptr);

    void prepareGeometryChange_public();
    void updateAllChildrenPositions() override;
    [[nodiscard]] std::optional<ICorePoint> getPositionInScreen() const;
    void reconstructDescendents() override;

    void updateAllMouseListenersValues() override;
    void updateAllPortsBoundsInCanvas() const;

    void setPos(double newPosX, double newPosY) override;
    void setWidth(double width) override;
    void setHeight(double height) override;
    void setRotation(double angle);

    void setAllowUserEditingPortDescLabels(bool newValue);

    void setCommentedOutStyle(bool commentedOut);
    // Re-reads the parent block's name property and the global name-label mode, and
    // shows or hides the label accordingly. Not a setter: under an AlwaysShow /
    // AlwaysHide override the block's own property does not get the last word.
    void refreshNameLabelVisibility() const;

    // The live readout centred on the block's face. Empty text hides it.
    //
    // GUI THREAD ONLY -- the values come off the solver thread and the hop is
    // ICoreBlock::setFaceText()'s, which is also what a block should call.
    void setFaceText(const ICoreString& text) const;

    // Whether this block carries a readout plate at all. Off by default, so
    // only a block type that says so wears one.
    void setFaceReadoutVisible(bool visible) const;

    // Whether the block type's registered art is painted on the face. Off for
    // a block whose face is taken by its readout -- see the frame's note on why
    // this is a paint switch and not an unregistration.
    void setFaceIconVisible(bool visible) const;

    // The picture this instance paints in place of its type's art, as a block
    // config stores it: "Images/<id>.<ext>" relative to the project folder, or
    // an absolute file name. "" goes back to the type's art.
    //
    // GUI THREAD ONLY -- the hop is ICoreBlock::setFacePicture()'s, which is
    // also what a block should call (FEATURES_TO_ADD.md BF22.4).
    void setFacePicture(const std::string& storedPath) const;
    // The drawing this block puts on its face (ICoreFaceDrawing), or null for
    // none. Stored and repainted here; painting it is BF5.4's.
    //
    // GUI THREAD ONLY -- the hop is ICoreBlock::setFaceDrawing()'s, which is
    // also what a block should call (FEATURES_TO_ADD.md BF5.3).
    void setFaceDrawing(std::shared_ptr<const ICoreFaceDrawing> drawing) const;
    [[nodiscard]] std::shared_ptr<const ICoreFaceDrawing> getFaceDrawing() const;

    void updateMinHeightAccordingToNumberOfPorts();
    void assignClonedProperties(const ICoreBlockView* originalBlockUI);
    void setTriangleFrame();
    void setCircleFrame();
    [[nodiscard]] bool isMouseOnBlock() const;
    [[nodiscard]] ICoreRect getRotatedBounds() const;

    [[nodiscard]] ICoreBlockViewFrame* getBlockFrame() const;
    [[nodiscard]] ICorePortsPosAligner* getPortsPosAligner() const;
    [[nodiscard]] double getRotation() const;
    [[nodiscard]] ICorePoint getCenterCoords_Global() const;
    [[nodiscard]] ICoreBlock* getParentBlock() const;
    [[nodiscard]] ICoreBlockViewNameLabel* getNameLabel() const;
    [[nodiscard]] ICoreBlockViewFaceLabel* getFaceLabel() const;
    [[nodiscard]] bool getAllowUserEditingPortDescLabels() const;

    [[nodiscard]] ICorePoint getPosRelativeToCanvasOrigin() const;

    void resetToInitialState(ICoreNativeItem* parent = nullptr, ICoreBlock* parentBlock = nullptr);
    void kill();
    void setAlive();
    bool isAlive() const;

    ~ICoreBlockView() override;

    // ⚠ THE pointerEntered/pointerLeft PAIR THAT STOOD HERE IS GONE, AND ITS
    // WORK IS NOT. Both overrides did one thing -- reveal and conceal the
    // rotater and the config button -- and both did it on the crossing itself,
    // which put the affordances away before the pointer could reach them. The
    // constructor registers the same two lines through
    // ICoreCanvasObjectsRoot::addHoverAffordance, so the base decides WHEN
    // (immediately on arrival, 30 points clear on departure -- A10.20) and this
    // class still decides WHAT.
    //
    // ⚠ `pointerLeft()` was PUBLIC here, for one external caller:
    // ICoreBlockViewFrame's double click, which needed the affordances gone as
    // the tab loaded the block's subsystem. That caller now says what it means
    // -- `concealHoverAffordancesNow()` -- because a crossing no longer hides
    // anything by itself.

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockViewConfigButton.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockUI/ICoreBlockViewConfigButton.h

ICoreBlockViewConfigButton#

ICoreBlockViewConfigButton.h:9 · class · final · bases public ICoreGraphicsButton · pImpl · 3 declaration(s)

class ICoreBlockViewConfigButton final : public ICoreGraphicsButton {
public:
    explicit ICoreBlockViewConfigButton(ICoreBlock* parentBlock);

    ~ICoreBlockViewConfigButton() override;

protected:
    bool mousePressed(const ICoreMouseEvent& event) override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockViewFaceLabel.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockUI/ICoreBlockViewFaceLabel.h

ICoreBlockViewFaceLabel#

ICoreBlockViewFaceLabel.h:28 · class · final · bases public ICoreGraphicsText · pImpl · 9 declaration(s)

The live readout a block paints on its OWN FACE, centred in the frame.

class ICoreBlockViewFaceLabel final : public ICoreGraphicsText {
public:
    explicit ICoreBlockViewFaceLabel(ICoreBlockView* parentBlockUI);

    // Whether this block has a readout at all. Off by default -- otherwise
    // every block on the canvas would wear an empty plate. A block type turns
    // it on once, from its solver environment's constructor.
    void setReadoutVisible(bool visible);

    // The value on the plate. Empty text leaves an EMPTY PLATE showing, not a
    // hidden one: a readout with nothing to read still looks like a readout,
    // and whether there is a plate at all is setReadoutVisible()'s question.
    void setText(const ICoreString& text);

    void updatePosition();
    void applyDefaultStyle();
    // Re-lays the document out and pins the plate to at least its minimum
    // width, so a short value is centred rather than shrink-wrapped.
    void applyPlateSizing();

    void resetToInitialState(ICoreBlockView* parentBlockUI);

    ~ICoreBlockViewFaceLabel() override;

protected:
    // The readout's own ground: a rounded, bordered plate under the digits, in
    // the field tokens -- which is what this is, a box holding a value the user
    // cannot type into. Drawn here rather than in paintContent because anything
    // painted there lands ON TOP of the text (ICoreGraphicsText.h).
    void paintBackground(ICorePainter& painter) override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockViewFrame.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockUI/ICoreBlockViewFrame.h

Q_OBJECT removed (P2.9d-3): this class declares no signal, slot, Q_PROPERTY or Q_INVOKABLE of its own, and nothing qobject_casts to it, holds a QPointer to it, animates it by name or reaches its metaObject(). It therefore had a meta-object nobody consulted -- and it could not keep one past P2.9d-5, when the base stops being a QObject.

ICoreBlockViewFrame#

ICoreBlockViewFrame.h:18 · class · bases public ICoreGraphicsObject · pImpl · 25 declaration(s)

class ICoreBlockViewFrame : public ICoreGraphicsObject {
public:
     explicit ICoreBlockViewFrame(ICoreBlockView* parent = nullptr, ICoreBlock* grandParentBlock = nullptr);

    ICoreRect contentBounds() const override;

    void paintContent(ICorePainter& painter) override;

    void setWidth(double width) override;
    void setHeight(double height);

    void setIcon(const ICorePixmap& icon);

    // Whether this frame paints the block type's registered art on its face.
    //
    // ⚠ It suppresses the PAINT, never the registration. The art is still
    // there for the library palette, the auto-inserter button and -- the one
    // that would bite -- ICoreRecipeInterpreter's block-type validity test,
    // which asks getBlockIconSVG() != nullptr. A block whose face is taken by
    // a live readout turns this off; it does not unregister its icon.
    void setIconVisible(bool visible);

    // A picture this block instance paints IN PLACE of its type's art, on any
    // frame shape (FEATURES_TO_ADD.md BF22.4): an absolute file name, as
    // ICoreBlockView::setFacePicture resolves it; "" goes back to the type's
    // art. Each file is read once per frame and kept, so a block that switches
    // between a few pictures per state does not reread them. The picture is
    // drawn from the file's own pixels at the on-screen size, so zooming in
    // stays as sharp as the file is. A file that cannot be read leaves the
    // type's art showing.
    void setFacePicture(const std::string& absoluteFile);
    [[nodiscard]] bool isShowingFacePicture() const;

    void setCircleShape();
    void setTriangleShape();

    void setFrameToIconBindingRatio(const double &ratio);

    void setBackgroundColor(const int& r, const int& g, const int& b);
    void setFillColor(const int& r, const int& g, const int& b);

    std::string getFrameShape();
    double getWidth() const;
    double getHeight() const;

    bool isCircle() const;

    void resetToInitialState(ICoreBlockView* parent = nullptr, ICoreBlock* grandParentBlock = nullptr);

    ~ICoreBlockViewFrame() override;

protected:
    bool mousePressed(const ICoreMouseEvent& event) override;
    bool mouseMoved(const ICoreMouseEvent& event) override;
    bool mouseReleased(const ICoreMouseEvent& event) override;
    bool mouseDoubleClicked(const ICoreMouseEvent& event) override;
    bool contextMenuRequested(const ICoreMouseEvent& event) override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockViewFrameRenderer.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockUI/ICoreBlockViewFrameRenderer.h

ICoreBlockViewFrameRenderer#

ICoreBlockViewFrameRenderer.h:22 · class · final · bases public ICoreWidget · pImpl · 7 declaration(s)

A LIBRARY TILE'S GLYPH: a rounded rectangle in the block tokens with the block's icon centred in it.

class ICoreBlockViewFrameRenderer final : public ICoreWidget {
public:
    explicit ICoreBlockViewFrameRenderer(const std::string& fullBlockType);

    // ⚠ setCircleShape() AND setTriangleShape() ARE GONE. Their only callers
    // were this class's own constructor, giving Sum/Subtract a circle and Gain
    // a triangle so a preview matched the canvas -- which is the resemblance
    // the owner asked to drop. Every block is a rectangle.
    void setFillColor(const ICoreColor& color);
    void setBorderColor(const ICoreColor& color);
    void setIcon(const ICorePixmap &pixmap);
    void setIconBindingRatio(double ratio);

    ~ICoreBlockViewFrameRenderer() override;

protected:
    void paintContent(ICorePainter& painter) override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreBlockViewNameLabel.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockUI/ICoreBlockViewNameLabel.h

Declares no class of its own — see the file.

ICoreBlockViewRotater.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockUI/ICoreBlockViewRotater.h

No Q_OBJECT since P2.9d-5e: the base is not a QObject, and the by-name anchor fade this macro served died at P2.9d-5d.

ICoreBlockViewRotater#

ICoreBlockViewRotater.h:14 · class · bases public ICoreGraphicsObject · pImpl · 14 declaration(s)

class ICoreBlockViewRotater : public ICoreGraphicsObject {
public:
    explicit ICoreBlockViewRotater(ICoreBlockView* parentBlockUI = nullptr);

    ICoreRect contentBounds() const override;

    void paintContent(ICorePainter& painter) override;

    void updatePosition();

    void showAnchor();
    void hideAnchor();
    void animateAnchor(double startOpacity, double endOpacity, int duration);

    void resetToInitialState(ICoreBlockView* parentBlockUI = nullptr);

    ~ICoreBlockViewRotater() override;

protected:

    // Hover events
    void pointerEntered(const ICoreMouseEvent& event) override;
    void pointerLeft() override;

    // Mouse events
    bool mousePressed(const ICoreMouseEvent& event) override;
    bool mouseMoved(const ICoreMouseEvent& event) override;
    bool mouseReleased(const ICoreMouseEvent& event) override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICoreFaceDrawingPainter.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockUI/ICoreFaceDrawingPainter.h

ICoreFaceDrawingPainter#

ICoreFaceDrawingPainter.h:16 · class · 1 declaration(s)

Paints a block's face drawing (ICoreFaceDrawing) with the toolkit-free painter, so every backend, print and PDF export draw it through the one path the block frame already paints with.

class ICoreFaceDrawingPainter {
public:
    static void paint(ICorePainter& painter, const ICoreFaceDrawing& drawing, const ICoreRect& target);
};
};

ICorePortsPosAligner.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/BlockUI/ICorePortsPosAligner.h

ICorePortsPosAligner#

ICorePortsPosAligner.h:9 · class · pImpl · 9 declaration(s)

class ICorePortsPosAligner {
public:
    explicit ICorePortsPosAligner(ICoreBlock* parentBlock, ICoreBlockViewFrame* parentBlockFrame);
    void updatePortsPosition();
    void storePortUI(ICorePortView* portUI, bool isOutputPort, std::string preferredPortFacing);
    void updatePortsLabelsRotation() const;
    void updateAllLinksOnPortsMove(bool blockTranslating = false) const;
    void checkPortOut(ICorePort* portToCheckOut);

    void checkAllPortsOut();

    void resetToInitialState(ICoreBlock* parentBlock, ICoreBlockViewFrame* parentBlockFrame);
    ~ICorePortsPosAligner();

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICorePortView.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/PortUI/ICorePortView.h

Q_OBJECT removed (P2.9d-3): this class declares no signal, slot, Q_PROPERTY or Q_INVOKABLE of its own, and nothing qobject_casts to it, holds a QPointer to it, animates it by name or reaches its metaObject(). It therefore had a meta-object nobody consulted -- and it could not keep one past P2.9d-5, when the base stops being a QObject.

ICorePortView#

ICorePortView.h:19 · class · bases public ICoreGraphicsObject · pImpl · 36 declaration(s)

class ICorePortView : public ICoreGraphicsObject {
public:
    explicit ICorePortView(ICoreBlockViewFrame* parent = nullptr, ICorePort* parentPort = nullptr, ICoreBlockView* grandParentBlockUI = nullptr);

    ICoreRect contentBounds() const override;

    void paintContent(ICorePainter& painter) override;

    void assignClonedProperties(ICorePortView* originalPortUI) const;

    void setRotation(double angle);
    void setRelatedBaseCoordinates(ICorePoint newBaseCoordinates);
    void setActualFacing(const std::string& actualFacing);

    void setConnectedStyle();
    void setUnconnectedStyle();

    void updateBoundsInCanvas();

    std::string getActualFacing();
    void recenterTransformOrigin();
    bool isOutputPort();
    ICorePortViewDescriptionLabel* getDescriptionLabel() const;
    ICorePoint getBaseCoordinatesToCanvas();
    std::pair<ICorePoint, ICorePoint> getConnectionCoordinates();

    ICorePort* getParentPort() const;

    // ---- the refused drop, while the user is still holding it (T4.6) -----
    //
    // A drag is ONE gesture at a time and it is not owned by any single port
    // view -- the port being dragged FROM sets this, and the port being
    // dragged ONTO reads it to paint itself, as does the wire in flight. That
    // is what makes it three statics rather than three members.
    //
    // `refusedPort` is the port under the cursor whose accepted set turns the
    // dragged signal down; nullptr means the drop is fine (or there is no drag).
    [[nodiscard]] static const ICorePort* dropRefusedPort();
    [[nodiscard]] static const ICoreLinkBranch* dropRefusedBranch();
    static void clearDropRefusal();

    // Records that `candidate` turns this drag down, and returns true so the
    // caller can drop the candidate before it snaps.
    //
    // ⚠ The SNAP and the refusal must be decided by ONE rule. A candidate the
    // model will refuse on release must never have snapped the wire to it on
    // the way there -- snapping is the UI promising a connection, so promising
    // one that cannot be made is the defect. That is why this is public: the
    // three drag helpers on the LINK views (head pane, tail pane, and the
    // right-drag branch on a segment) share it with the four here, rather than
    // each growing its own spelling of "is this allowed".
    //
    // `headPort` is the end that has to accept `sourceTypeId` -- which is NOT
    // always the candidate. On a head drag the candidate IS the head; on a tail
    // drag the candidate is the source and the head is the one the branch
    // already has. An empty `sourceTypeId`, or a null end, means nothing is
    // driving the branch yet and there is nothing to refuse with.
    //
    // ⚠ SILENT. It is called from a MOUSE MOVE, so a diagnostic here would be
    // one line per pixel of travel. The refusal is said in PAINT -- the port
    // and the wire go red -- and logged once, on release, by
    // logAndClearDropRefusal().
    static bool dropRefused(const ICorePort* candidate, const ICorePort* headPort,
                            const std::string& sourceTypeId, const ICoreLinkBranch* branch);

    // The type half of dropRefused(), with no record and no tooltip: whether
    // `headPort` takes a `sourceTypeId` signal. True when either is missing --
    // no head to refuse with, or nothing driving the branch yet.
    // ICoreCanvasConnectHints marks every port with it when a drag starts, so
    // the marks and the refusal cannot disagree.
    [[nodiscard]] static bool headAccepts(const ICorePort* headPort, const std::string& sourceTypeId);

    // The type a branch would carry if `tailPort` -- or, failing that, the
    // branch it splits from -- were its source. Empty when neither drives it.
    [[nodiscard]] static std::string branchSourceType(const ICorePort* tailPort,
                                                      const ICoreLinkBranch* splittingFrom);

    // Logs the pending refusal once, drops the tooltip, and clears the record.
    // Every drag's RELEASE handler calls this -- the one here and the three on
    // the link views -- because the record is what paints red and it outlives
    // the gesture otherwise.
    static void logAndClearDropRefusal();

    ICoreRect getBoundsInCanvas() const;

    double getFacingAngle_rad();

    double getAwayFromPortDistance() const;

    ICorePortViewSignalTypeLabel* getSignalTypeLabel() const;

    void resetToInitialState(ICoreBlockViewFrame* parent = nullptr, ICorePort* parentPort = nullptr, ICoreBlockView* grandParentBlockUI = nullptr);
    void kill();
    void setAlive();
    bool isAlive() const;

    ~ICorePortView() override;

protected:
    void pointerEntered(const ICoreMouseEvent& event) override;
    void pointerLeft() override;

    bool mousePressed(const ICoreMouseEvent& event) override;
    bool mouseMoved(const ICoreMouseEvent& event) override;
    bool mouseReleased(const ICoreMouseEvent& event) override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICorePortViewDescriptionLabel.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/PortUI/ICorePortViewDescriptionLabel.h

A label the block forbids editing accepts no mouse button, so a press on it lands on the block frame underneath. Re-run when the block's flag changes.

ICorePortViewDescriptionLabel#

ICorePortViewDescriptionLabel.h:10 · class · bases public ICoreGraphicsText · pImpl · 13 declaration(s)

class ICorePortViewDescriptionLabel : public ICoreGraphicsText {
public:
    explicit ICorePortViewDescriptionLabel(ICoreBlockViewFrame* graphicsParent, ICorePortView* parentPortUI);

    double getWidth() const;
    double getHeight() const;

    void updateWirelessPortPairedToDescLabel() const;

    void resetToInitialState(ICoreBlockViewFrame* graphicsParent, ICorePortView* parentPortUI);

    // A label the block forbids editing accepts no mouse button, so a press on it
    // lands on the block frame underneath. Re-run when the block's flag changes.
    void syncMouseButtonsToEditability();

    ~ICorePortViewDescriptionLabel() override;

protected:
    bool mousePressed(const ICoreMouseEvent& event) override;
    bool contextMenuRequested(const ICoreMouseEvent& event) override;
    bool focusGaining(const ICoreFocusEvent& event) override;
    void focusLosing(const ICoreFocusEvent& event) override;
    void focusLost(const ICoreFocusEvent& event) override;

    // Return/Enter COMMITS the edit; a port description is one line. See the .cpp,
    // and ICoreBlockViewNameLabel for what an edit that never ends costs.
    bool keyPressed(const ICoreKeyEvent& event) override;

private:
    class Impl;                    // the two-line residue; state lives here
    std::unique_ptr<Impl> impl;
};

ICorePortViewSignalTypeLabel.h#

src/ICoreBlocks/ICoreStudio/StudioObjects/ICoreModelViews/Block/PortUI/ICorePortViewSignalTypeLabel.h

Declares no class of its own — see the file.