const int GAP_ADR_HEX = 1;
const int GAP_HEX_ASCII = 3;
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::HexView
+/// \param parent 親ウィジェット
+///
+/// コンストラクタ
+///
HexView::HexView(QScrollArea *parent) :
QWidget(parent)
{
resetSelection(0);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::setData
+/// \param data データ
+///
+/// データを設定します。
+///
void HexView::setData(const QByteArray &data)
{
m_data = data;
adjust();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::addressChars
+/// \return アドレスエリアの表示桁数を返します。
+///
int HexView::addressChars() const
{
return QString("%1").arg(m_data.size(), 0, 16).length();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::adjust
+///
+/// ウィジェットサイズを調整します。
+///
void HexView::adjust()
{
int lines = (m_data.size() / BYTES_PER_LINE) + 1;
setMinimumWidth(addressArea + hexArea + asciiArea);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::cursorPos
+/// \param pos カーソル位置
+/// \return カーソル位置に対応するデータインデックスを返します。
+///
int HexView::cursorPos(const QPoint &pos)
{
int result = -1;
return result;
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::resetSelection
+/// \param index データインデックス
+///
+/// 選択範囲を初期化します。
+///
void HexView::resetSelection(int index)
{
m_selectionBegin = index;
emit copyAvailable(false);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::setSelection
+/// \param index データインデックス
+///
+/// 選択範囲を設定します。
+///
void HexView::setSelection(int index)
{
if (index > m_selectionInit) {
emit copyAvailable(m_selectionBegin != m_selectionEnd);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::xPosHex
+/// \return 16進表示エリアの開始座標を返します。
+///
int HexView::xPosHex() const
{
return m_charWidth * (addressChars() + GAP_ADR_HEX);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::xPosAscii
+/// \return アスキー文字表示エリアの開始座標を返します。
+///
int HexView::xPosAscii() const
{
return xPosHex() + m_charWidth * (HEXCHARS_IN_LINE + GAP_HEX_ASCII);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::onCopy
+///
+/// 選択範囲をクリップボードにコピーします。
+///
void HexView::onCopy()
{
QString selected;
clipboard->setText(selected.trimmed());
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::onScaleDown
+///
+/// 文字を小さくします。
+///
void HexView::onScaleDown()
{
Preferences prefs(this);
update();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::onScaleUp
+///
+/// 文字を大きくします。
+///
void HexView::onScaleUp()
{
Preferences prefs(this);
update();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::onSelectAll
+///
+/// すべて選択します。
+///
void HexView::onSelectAll()
{
resetSelection(0);
update();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::setVisible
+/// \param visible 表示(true)/非表示(false)
+///
+/// 表示状態になった場合の処理を行います。
+///
void HexView::setVisible(bool visible)
{
if (visible) {
QWidget::setVisible(visible);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::mousePressEvent
+/// \param e マウスイベントオブジェクト
+///
+/// マウスクリック時の処理を行います。
+///
void HexView::mousePressEvent(QMouseEvent *e)
{
if (e->button() == Qt::LeftButton) {
}
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::mouseDoubleClickEvent
+/// \param e マウスイベントオブジェクト
+///
+/// ダブルクリック時の処理を行います。
+///
void HexView::mouseDoubleClickEvent(QMouseEvent *e)
{
if (e->button() == Qt::LeftButton) {
}
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::mouseMoveEvent
+/// \param e マウスイベントオブジェクト
+///
+/// マウス移動時の処理を行います。
+///
void HexView::mouseMoveEvent(QMouseEvent *e)
{
m_scrollArea->ensureVisible(e->x(), e->y());
}
}
-void HexView::keyPressEvent(QKeyEvent *)
-{
-}
-
+///////////////////////////////////////////////////////////////////////////////
+/// \brief HexView::paintEvent
+/// \param e 描画イベントオブジェクト
+///
+/// 描画イベントを処理します。
+///
void HexView::paintEvent(QPaintEvent *e)
{
QPainter painter(this);