|
wiRedPanda
Logic Circuit Simulator
|
Rotary switch input that activates one output port at a time. More...
#include <InputRotary.h>
Public Member Functions | |
| InputRotary (QGraphicsItem *parent=nullptr) | |
| Constructs the rotary switch with optional parent. | |
| bool | isOn (const int port=0) const override |
Returns true if output port port is the currently active selection. | |
| void | load (QDataStream &stream, SerializationContext &context) override |
| Deserializes the current port selection. | |
| int | outputSize () const override |
| Returns the number of selectable output ports. | |
| int | outputValue () const override |
| Returns the index of the currently active output port. | |
| void | paint (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override |
| Paints the rotary wheel with the indicator arrow pointing to the active port. | |
| void | refresh () override |
| Refreshes the arrow direction and port positions. | |
| void | save (QDataStream &stream, SerializationOptions options) const override |
| Serializes the current port selection to stream. | |
| void | setAppearance (const bool defaultAppearance, const QString &fileName) override |
| Applies custom appearance images for the rotary body and arrow. | |
| void | setOff () override |
| Resets the selection to port 0 (logic-0 on all ports). | |
| void | setOn () override |
| Activates port 0 (no-op if already at 0). | |
| void | setOn (const bool value, const int port=0) override |
| Sets the active port to port when value is true. | |
| void | setWaveformValue (const bool value, const int port=0) override |
| void | updatePortsProperties () override |
| Recalculates port positions based on the current output count. | |
| Public Member Functions inherited from GraphicElementInput | |
| GraphicElementInput (ElementType type, QGraphicsItem *parent=nullptr) | |
| bool | isLocked () const |
Returns true if the element is locked against user interaction. | |
| void | setLocked (const bool locked) |
| Locks or unlocks user interaction on this element. | |
| void | updateOutputs () |
| Propagates the current on/off state of each output to the backing logic element. | |
| ~GraphicElementInput () override=default | |
| Public Member Functions inherited from GraphicElement | |
| QVector< Port * > | allPorts () const |
| Returns a combined list of all input and output ports as Port pointers. | |
| QPixmap | appearancePreviewPixmap (const int index, const QSize &size) const |
| Returns a small preview pixmap for the appearance at index (see appearanceStates()). | |
| virtual QList< std::pair< int, QString > > | appearanceStates () const |
| Returns the list of editable appearance states for this element. Each pair is (appearance list index, human-readable state description). Override in subclasses with multi-state appearances (e.g., Led). | |
| virtual QString | audio () const |
| Returns the name of the audio file currently associated with this element. | |
| void | beginDeferredCommit () |
| virtual const QString & | blobName () const |
| Returns the blob name for embedded ICs, empty string otherwise. Base returns empty. | |
| QRectF | boundingRect () const override |
| Returns the bounding rectangle of this element in local coordinates. | |
| bool | canChangeAppearance () const |
Returns true if the user is allowed to choose a custom appearance for this element. | |
| void | clearOutputChanged () |
| Clears the simulation output-changed flag. | |
| virtual QString | color () const |
| Returns the name of the color currently applied to this element. | |
| void | commitDeferredOutputs () |
| void | connectPredecessor (const int inputIndex, GraphicElement *source, const int outputPort) |
| Connects simulation input inputIndex to output outputPort of source element. | |
| virtual double | delay () const |
| Returns the clock phase delay in seconds (overridden by Clock; returns 0 for other elements). | |
| QList< PropertyDescriptor > | editableProperties () const |
| Returns the list of editable properties this element exposes in the ElementEditor. | |
| ElementGroup | elementGroup () const |
| Returns the group this element belongs to. | |
| ElementType | elementType () const |
| Returns the type identifier for this element. | |
| virtual QStringList | externalFiles () const |
| virtual double | frequency () const |
| Returns the clock frequency in Hz (overridden by Clock; returns 0 for other elements). | |
| virtual QString | genericProperties () |
| Returns a string encoding element-specific properties for serialization or display. | |
| GraphicElement (ElementType type, QGraphicsItem *parent=nullptr) | |
| Constructs a graphic element of the given type, fetching all properties from the metadata registry. | |
| bool | hasAudio () const |
Returns true if this element type supports audio output. | |
| bool | hasAudioBox () const |
Returns true if this element type shows an audio selection box. | |
| bool | hasColors () const |
Returns true if this element type supports color selection. | |
| bool | hasDelay () const |
Returns true if this element type exposes a configurable clock phase delay. | |
| bool | hasFrequency () const |
Returns true if this element type exposes a configurable clock frequency. | |
| bool | hasLabel () const |
Returns true if this element type supports a user-editable label. | |
| bool | hasTrigger () const |
Returns true if this element type supports a keyboard trigger. | |
| bool | hasTruthTable () const |
Returns true if this element type has an editable truth table. | |
| bool | hasVolume () const |
Returns true if this element type supports volume control. | |
| virtual bool | hasWirelessMode () const |
| Returns true if this element supports a configurable wireless routing mode. | |
| void | initSimulationVectors (const int inputCount, const int outputCount) |
| Allocates simulation I/O vectors with inputs inputs and outputs outputs. | |
| void | inlineEditRequested (GraphicElement *element) |
| InputPort * | inputPort (const int index=0) const |
| Returns the input port at index (default 0). | |
| const QVector< InputPort * > & | inputs () const |
| Returns a const reference to the vector of all input ports. | |
| int | inputSize () const |
| Returns the current number of input ports. | |
| virtual bool | isEmbedded () const |
| Returns true if this element is an embedded IC (not file-backed). Base returns false. | |
| bool | isFlippedX () const |
Returns true if this element is mirrored along the X axis (horizontal flip). | |
| bool | isFlippedY () const |
Returns true if this element is mirrored along the Y axis (vertical flip). | |
| bool | isValid () |
Returns true if the element is fully initialised and connected correctly. | |
| QString | label () const |
| Returns the user-visible label text for this element. | |
| QRectF | labelSceneBoundingRect () const |
| virtual void | loadFromDrop (const QString &fileName, const QString &contextDir) |
| Polymorphic interface for drag-drop initialization (replaces elementType() == IC checks). | |
| int | maxInputSize () const |
| Returns the maximum allowed number of input ports. | |
| int | maxOutputSize () const |
| Returns the maximum allowed number of output ports. | |
| int | minInputSize () const |
| Returns the minimum allowed number of input ports. | |
| int | minOutputSize () const |
| Returns the minimum allowed number of output ports. | |
| QString | nextColor () const |
| Returns the name of the next color in the element's color list. | |
| bool | outputChanged () const |
| OutputPort * | outputPort (const int index=0) const |
| Returns the output port at index (default 0). | |
| const QVector< OutputPort * > & | outputs () const |
| Returns a const reference to the vector of all output ports. | |
| int | outputSize () const |
| Returns the current number of output ports. | |
| Status | outputValue (const int index=0) const |
| Returns the four-state signal value on simulation output port index. | |
| void | paint (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override |
| Paints the element onto the scene. | |
| QPointF | pixmapCenter () const |
| Returns the centre point of the element's pixmap in local coordinates. | |
| QString | previousColor () const |
| Returns the name of the previous color in the element's color list. | |
| void | reapplyAppearanceOrientation () |
| virtual void | resetSimState () |
| Resets all simulation-visible state to power-on defaults. | |
| virtual void | resettleCombinational () |
| Re-evaluates combinational outputs after the synchronous sequential commit, propagating just-committed flip-flop/latch state to downstream logic and IC output boundaries within the same tick. | |
| void | retranslate () |
| Updates the translated display name, tooltip, and port object name after a locale change. | |
| void | rotatePorts () |
| bool | rotatesGraphic () const |
| qreal | rotation () const |
| Returns the current rotation angle of this element in degrees. | |
| void | setAppearanceAt (const int index, const QString &fileName) |
| Sets a custom appearance at a specific index in the appearance list. | |
| virtual void | setAudio (const QString &audio) |
| Sets the audio file associated with this element to audio. | |
| virtual void | setColor (const QString &color) |
| Sets the element color to color and refreshes the pixmap. | |
| virtual void | setDelay (const double delay) |
| Sets the clock phase delay to delay (overridden by clock elements). | |
| void | setFlippedX (bool flipped) |
| Sets the horizontal mirror state and updates the item transform. | |
| void | setFlippedY (bool flipped) |
| Sets the vertical mirror state and updates the item transform. | |
| virtual void | setFrequency (const double freq) |
| Sets the clock frequency to freq (overridden by clock elements). | |
| void | setInputs (const QVector< InputPort * > &inputs) |
| Replaces the input port vector with inputs. | |
| virtual void | setInputSize (const int size) |
| Adjusts the number of input ports to size, adding or removing ports as needed. | |
| void | setLabel (const QString &label) |
| Sets the label text to label and refreshes the display. | |
| virtual void | setOutputSize (const int size) |
| Adjusts the number of output ports to size, adding or removing ports as needed. | |
| void | setOutputValue (const bool value) |
Convenience overload — converts bool to Active/Inactive for port 0. | |
| void | setOutputValue (const int index, const bool value) |
Convenience overload — converts bool to Active/Inactive for port index. | |
| void | setOutputValue (const int index, const Status value) |
| Sets simulation output port index to value. | |
| void | setOutputValue (const Status value) |
| Sets simulation output port 0 to value. | |
| void | setPixmap (const int index) |
| Loads and applies the appearance at position index in the appearance list. | |
| void | setPixmap (const QString &pixmapPath) |
| Loads and applies the pixmap located at pixmapPath. | |
| void | setPortName (const QString &name) |
| Sets the object name of all ports to name for identification. | |
| void | setRotation (const qreal angle) |
| Rotates the element to angle degrees and updates port positions. | |
| void | setTrigger (const QKeySequence &trigger) |
| Sets the keyboard shortcut to trigger and updates the label. | |
| virtual void | setVolume (float vol) |
| Sets the audio playback volume to vol (0.0–1.0). | |
| const QVector< Status > & | simInputs () const |
| Read-only view of the cached simulation input values. | |
| const QVector< Status > & | simOutputs () const |
| Read-only view of the current simulation output values. | |
| qsizetype | simOutputSize () const |
| Returns the number of simulation output slots. | |
| QKeySequence | trigger () const |
| Returns the keyboard shortcut that activates this element. | |
| int | type () const override |
| Returns the custom type identifier for this item. | |
| void | updateLabel () |
| Repositions and updates the label child item to reflect current state. | |
| virtual void | updateLogic () |
| Computes this element's output values from its current inputs. | |
| virtual void | updateTheme () |
| Updates the element's visual theme according to the current dark/light palette. | |
| virtual float | volume () const |
| Returns the audio playback volume (0.0–1.0). | |
| virtual WirelessMode | wirelessMode () const |
| Returns the wireless routing mode for this element. | |
| ~GraphicElement () override | |
| Out-of-line so the unique_ptr to the forward-declared QSvgRenderer can be destroyed. | |
| Public Member Functions inherited from ItemWithId | |
| int | id () const |
| Returns the unique integer identifier of this item, or -1 if unassigned. | |
| ItemWithId ()=default | |
| Constructs a new ItemWithId with an unassigned ID of -1. | |
| void | setId (const int id) |
| Sets the identifier to id. | |
| virtual | ~ItemWithId () |
| Self-unregisters from the current SceneItemRegistry, if any. | |
Protected Member Functions | |
| void | mousePressEvent (QGraphicsSceneMouseEvent *event) override |
| Protected Member Functions inherited from GraphicElement | |
| int | decodeSelectValue (int offset, int count) const |
| Decodes count select-line statuses from simInputs() into a binary index. | |
| QVariant | itemChange (GraphicsItemChange change, const QVariant &value) override |
| Handles item state changes such as position, rotation, and selection. | |
| virtual void | labelContentChanged () |
| void | mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event) override |
| Requests inline label editing on double-click. | |
| QPixmap | pixmap () const |
| Returns the pixmap currently displayed by this element. | |
| QRectF | portsBoundingRect () const |
| Returns the bounding rectangle that encompasses all child ports. | |
| QRectF | renderBodyBounds () const |
| Footprint of a "procedural render body" (IC/Mux/Demux/TruthTable): the nominal 64x64 body unioned with wherever the ports actually land, which extends past it once an instance has enough ports. | |
| bool | sceneEvent (QEvent *event) override |
| Intercepts mouse-press and mouse-release events to handle Ctrl+click. | |
| void | setHasColors (const bool hasColors) |
| Sets whether this element type supports color selection. | |
| void | setLabelAnchor (const QPointF &pos) |
| void | setMaxInputSize (const int maxInputSize) |
| Sets the maximum number of input ports to maxInputSize. | |
| void | setMaxOutputSize (const int maxOutputSize) |
| Sets the maximum number of output ports to maxOutputSize. | |
| void | setMinInputSize (const int minInputSize) |
| Sets the minimum number of input ports to minInputSize. | |
| void | setMinOutputSize (const int minOutputSize) |
| Sets the minimum number of output ports to minOutputSize. | |
| bool | simUpdateInputs () |
| Snapshots each predecessor's output into the simulation input cache. | |
| bool | simUpdateInputsAllowUnknown () |
| Like simUpdateInputs(), but allows Unknown/Error values through. | |
Additional Inherited Members | |
| Public Types inherited from GraphicElement | |
| enum | { Type = QGraphicsItem::UserType + 3 } |
| Static Public Member Functions inherited from GraphicElement | |
| static int | colorNameToIndex (const QString &color) |
| Maps a color name ("White","Red","Green","Blue","Purple") to indices 0–4. | |
| Protected Attributes inherited from GraphicElementInput | |
| bool | m_isOn = false |
| bool | m_locked = false |
| Protected Attributes inherited from GraphicElement | |
| ElementAppearance | m_appearance {this} |
| QGraphicsSimpleTextItem * | m_label = new QGraphicsSimpleTextItem(this) |
| Child text item that displays the label and optional trigger shortcut. | |
| QPointF | m_labelAnchor |
| The label's intended anchor point in the element's un-rotated local frame; see setLabelAnchor(). | |
| ElementPorts | m_ports {this} |
| QString | m_titleText |
| Translated title text shown in UI panels (from metadata). | |
| QString | m_translatedName |
| Translated element name used as tooltip and port object name. | |
Rotary switch input that activates one output port at a time.
Each mouse click advances the active output by one. Only the currently selected port is driven logic-1; all others remain logic-0.
Definition at line 19 of file InputRotary.h.
|
explicit |
Constructs the rotary switch with optional parent.
Definition at line 51 of file InputRotary.cpp.
References GraphicElementInput::GraphicElementInput(), InputRotary(), GraphicElement::m_appearance, setOn(), and updatePortsProperties().
Referenced by InputRotary().
|
overridevirtual |
Returns true if output port port is the currently active selection.
Implements GraphicElementInput.
Definition at line 235 of file InputRotary.cpp.
|
overridevirtual |
Deserializes the current port selection.
Reimplemented from GraphicElement.
Definition at line 309 of file InputRotary.cpp.
References VersionInfo::hasLockState(), VersionInfo::hasQMapFormat(), GraphicElement::load(), GraphicElementInput::m_locked, Serialization::readBoundedMetadata(), setOn(), and SerializationContext::version.
|
overrideprotected |
Definition at line 280 of file InputRotary.cpp.
References GraphicElementInput::m_locked, outputSize(), and setOn().
|
overridevirtual |
Returns the number of selectable output ports.
Reimplemented from GraphicElementInput.
Definition at line 351 of file InputRotary.cpp.
References GraphicElement::outputs().
Referenced by mousePressEvent(), paint(), refresh(), setOn(), setOn(), and updatePortsProperties().
|
overridevirtual |
Returns the index of the currently active output port.
Reimplemented from GraphicElementInput.
Definition at line 356 of file InputRotary.cpp.
Referenced by setOn().
|
override |
Paints the rotary wheel with the indicator arrow pointing to the active port.
Definition at line 191 of file InputRotary.cpp.
References outputSize(), GraphicElement::paint(), GraphicElement::pixmapCenter(), and rotaryArrowRenderer().
|
overridevirtual |
Refreshes the arrow direction and port positions.
Reimplemented from GraphicElement.
Definition at line 64 of file InputRotary.cpp.
References outputSize().
Referenced by updatePortsProperties().
|
overridevirtual |
Serializes the current port selection to stream.
Reimplemented from GraphicElement.
Definition at line 290 of file InputRotary.cpp.
References GraphicElementInput::m_locked, PortableFile, SerializationOptions::purpose, and GraphicElement::save().
|
overridevirtual |
Applies custom appearance images for the rotary body and arrow.
Reimplemented from GraphicElementInput.
Definition at line 339 of file InputRotary.cpp.
References GraphicElement::m_appearance, and GraphicElement::setPixmap().
|
overridevirtual |
Resets the selection to port 0 (logic-0 on all ports).
Implements GraphicElementInput.
Definition at line 240 of file InputRotary.cpp.
|
overridevirtual |
Activates port 0 (no-op if already at 0).
Implements GraphicElementInput.
Definition at line 244 of file InputRotary.cpp.
References outputSize(), outputValue(), and setOn().
Referenced by InputRotary(), load(), mousePressEvent(), setOn(), and setWaveformValue().
|
overridevirtual |
Sets the active port to port when value is true.
| value | When true, activates port. |
| port | Port index to activate. |
Reimplemented from GraphicElementInput.
Definition at line 251 of file InputRotary.cpp.
References GraphicElement::outputPort(), outputSize(), and OutputPort::setStatus().
|
overridevirtual |
Reimplemented from GraphicElementInput.
Definition at line 271 of file InputRotary.cpp.
References setOn().
|
overridevirtual |
Recalculates port positions based on the current output count.
Reimplemented from GraphicElement.
Definition at line 74 of file InputRotary.cpp.
References GraphicElement::outputPort(), outputSize(), refresh(), and Port::setName().
Referenced by InputRotary().