Show Active Position errors in X/26 triplet list

Attempts to move the Active Position upwards to a lesser numbered row,
or leftwards within the same row to a lesser numbered column, are now
highlighted red within the triplet list so the user can see which
triplets are being ignored due to these errors.

Detection for other triplet errors such as reserved bits/values or
object related errors will be added later on.

This is a part of moving the Active Position logic from the renderer
to the triplet list, so a renderer won't be needed if the ability to
editing (G)POP pages is added in the future.
This commit is contained in:
G.K.MacGregor
2021-06-28 22:07:41 +01:00
parent e1a1bcf070
commit e7f6a54d8d
4 changed files with 216 additions and 69 deletions

View File

@@ -25,6 +25,8 @@
class X26Triplet
{
public:
enum X26TripletError { NoError, ActivePositionMovedUp, ActivePositionMovedLeft };
X26Triplet() {}
// X26Triplet(const X26Triplet &other);
@@ -46,8 +48,17 @@ public:
void setAddressRow(int);
void setAddressColumn(int);
int activePositionRow() const { return m_activePositionRow; }
int activePositionColumn() const { return m_activePositionColumn; }
X26TripletError error() const { return m_error; }
friend class X26TripletList;
private:
int m_address, m_mode, m_data;
int m_activePositionRow = -1;
int m_activePositionColumn = -1;
X26TripletError m_error = NoError;
};
class X26TripletList
@@ -66,7 +77,27 @@ public:
int size() const { return m_list.size(); }
private:
void updateInternalData(int);
QList<X26Triplet> m_list;
class ActivePosition
{
public:
ActivePosition();
void reset();
// int row() const { return (m_row == -1) ? 0 : m_row; }
// int column() const { return (m_column == -1) ? 0 : m_column; }
int row() const { return m_row; }
int column() const { return m_column; }
bool isDeployed() const { return m_row != -1; }
bool setRow(int);
bool setColumn(int);
// bool setRowAndColumn(int, int);
private:
int m_row, m_column;
};
};
#endif