32 #include <KXMLGUIClient>
34 #include <KActionCollection>
35 #include <KSelectAction>
36 #include <KToggleAction>
45 KActionCollection* actionCollection = guiClient->actionCollection();
48 mOffsetCodingAction = actionCollection->add<KSelectAction>( QLatin1String(
"view_offsetcoding") );
49 mOffsetCodingAction->setText( i18nc(
"@title:menu",
"&Offset Coding") );
51 list.append( i18nc(
"@item:inmenu offset in the hexadecimal format",
53 list.append( i18nc(
"@item:inmenu offset in the decimal format",
55 mOffsetCodingAction->setItems( list );
56 connect( mOffsetCodingAction, SIGNAL(triggered(
int)), SLOT(setOffsetCoding(
int)) );
59 mCodingAction = actionCollection->add<KSelectAction>( QLatin1String(
"view_valuecoding") );
60 mCodingAction->setText( i18nc(
"@title:menu",
"&Value Coding") );
62 list.append( i18nc(
"@item:inmenu encoding of the bytes as values in the hexadecimal format",
64 list.append( i18nc(
"@item:inmenu encoding of the bytes as values in the decimal format",
66 list.append( i18nc(
"@item:inmenu encoding of the bytes as values in the octal format",
68 list.append( i18nc(
"@item:inmenu encoding of the bytes as values in the binary format",
70 mCodingAction->setItems( list );
71 connect( mCodingAction, SIGNAL(triggered(
int)), SLOT(setValueCoding(
int)) );
74 mEncodingAction = actionCollection->add<KSelectAction>( QLatin1String(
"view_charencoding") );
75 mEncodingAction->setText( i18nc(
"@title:menu",
"&Char Coding") );
77 connect( mEncodingAction, SIGNAL(triggered(
int)), SLOT(setCharCoding(
int)) );
79 mShowsNonprintingAction = actionCollection->add<KToggleAction>( QLatin1String(
"view_showsnonprinting") );
80 mShowsNonprintingAction->setText( i18nc(
"@option:check",
"Show &Non-printing Chars") );
81 connect( mShowsNonprintingAction, SIGNAL(triggered(
bool)), SLOT(setShowsNonprinting(
bool)) );
84 mSetBytesPerLineAction = actionCollection->addAction( QLatin1String(
"view_bytesperline"),
85 this, SLOT(setBytesPerLine()) );
86 mSetBytesPerLineAction->setText( i18nc(
"@action:inmenu",
"Set Bytes per Line...") );
89 mSetBytesPerGroupAction = actionCollection->addAction( QLatin1String(
"view_bytespergroup"),
90 this, SLOT(setBytesPerGroup()) );
91 mSetBytesPerGroupAction->setText( i18nc(
"@action:inmenu",
"Set Bytes per Group...") );
94 mResizeStyleAction = actionCollection->add<KSelectAction>( QLatin1String(
"resizestyle") );
95 mResizeStyleAction->setText( i18nc(
"@title:menu",
"&Dynamic Layout") );
97 list.append( i18nc(
"@item:inmenu The layout will not change on size changes.",
99 list.append( i18nc(
"@item:inmenu The layout will adapt to the size, but only with complete groups of bytes.",
100 "&Wrap Only Complete Byte Groups") );
101 list.append( i18nc(
"@item:inmenu The layout will adapt to the size and fit in as much bytes per line as possible.",
103 mResizeStyleAction->setItems( list );
104 connect( mResizeStyleAction, SIGNAL(triggered(
int)), SLOT(setLayoutStyle(
int)) );
106 mShowOffsetColumnAction = actionCollection->add<KToggleAction>( QLatin1String(
"view_lineoffset") );
107 mShowOffsetColumnAction->setText( i18nc(
"@option:check",
"Show &Line Offset") );
108 mShowOffsetColumnAction->setShortcut( Qt::Key_F11 );
109 connect( mShowOffsetColumnAction, SIGNAL(triggered(
bool)), SLOT(toggleOffsetColumn(
bool)) );
112 mToggleColumnsAction = actionCollection->add<KSelectAction>( QLatin1String(
"togglecolumns") );
113 mToggleColumnsAction->setText( i18nc(
"@title:menu",
"&Show Values or Chars") );
115 list.append( i18nc(
"@item:inmenu",
"&Values") );
116 list.append( i18nc(
"@item:inmenu",
"&Chars") );
117 list.append( i18nc(
"@item:inmenu",
"Values && Chars") );
118 mToggleColumnsAction->setItems( list );
119 connect( mToggleColumnsAction, SIGNAL(triggered(
int)), SLOT(toggleValueCharColumns(
int)) );
126 if( mByteArrayView ) mByteArrayView->disconnect(
this );
130 const bool hasView = ( mByteArrayView != 0 );
134 onOffsetCodingChanged( mByteArrayView->
offsetCoding() );
136 onValueCodingChanged( mByteArrayView->
valueCoding() );
138 onLayoutStyleChanged( mByteArrayView->
layoutStyle() );
141 connect( mByteArrayView, SIGNAL(offsetColumnVisibleChanged(
bool)),
142 SLOT(onOffsetColumnVisibleChanged(
bool)) );
143 connect( mByteArrayView, SIGNAL(offsetCodingChanged(
int)), SLOT(onOffsetCodingChanged(
int)) );
144 connect( mByteArrayView, SIGNAL(showsNonprintingChanged(
bool)),
145 SLOT(onShowsNonprintingChanged(
bool)) );
146 connect( mByteArrayView, SIGNAL(valueCodingChanged(
int)), SLOT(onValueCodingChanged(
int)) );
147 connect( mByteArrayView, SIGNAL(charCodecChanged(QString)),
148 SLOT(onCharCodecChanged(QString)) );
149 connect( mByteArrayView, SIGNAL(layoutStyleChanged(
int)), SLOT(onLayoutStyleChanged(
int)) );
150 connect( mByteArrayView, SIGNAL(visibleByteArrayCodingsChanged(
int)),
151 SLOT(onVisibleByteArrayCodingsChanged(
int)) );
154 mOffsetCodingAction->setEnabled( hasView );
155 mCodingAction->setEnabled( hasView );
156 mEncodingAction->setEnabled( hasView );
157 mShowsNonprintingAction->setEnabled( hasView );
158 mSetBytesPerLineAction->setEnabled( hasView );
159 mSetBytesPerGroupAction->setEnabled( hasView );
160 mResizeStyleAction->setEnabled( hasView );
161 mShowOffsetColumnAction->setEnabled( hasView );
162 mToggleColumnsAction->setEnabled( hasView );
166 void ViewConfigController::setValueCoding(
int valueCoding )
171 void ViewConfigController::setShowsNonprinting(
bool on )
176 void ViewConfigController::toggleOffsetColumn(
bool on )
181 void ViewConfigController::setOffsetCoding(
int offsetCoding )
186 void ViewConfigController::setBytesPerLine()
188 BytesPerLineDialog dialog;
195 mResizeStyleAction->setCurrentItem( mByteArrayView->
layoutStyle() );
199 void ViewConfigController::setBytesPerGroup()
201 BytesPerGroupDialog dialog;
207 void ViewConfigController::setLayoutStyle(
int layoutStyle )
212 void ViewConfigController::setCharCoding(
int charCoding )
217 void ViewConfigController::toggleValueCharColumns(
int visibleColumns )
222 void ViewConfigController::onOffsetColumnVisibleChanged(
bool offsetColumnVisible )
224 mShowOffsetColumnAction->setChecked( offsetColumnVisible );
227 void ViewConfigController::onOffsetCodingChanged(
int offsetCoding )
229 mOffsetCodingAction->setCurrentItem( offsetCoding );
232 void ViewConfigController::onShowsNonprintingChanged(
bool showsNonprinting )
234 mShowsNonprintingAction->setChecked( showsNonprinting );
237 void ViewConfigController::onValueCodingChanged(
int valueCoding )
239 mCodingAction->setCurrentItem( valueCoding );
242 void ViewConfigController::onCharCodecChanged(
const QString& charCodecName )
246 mEncodingAction->setCurrentItem( charCodingIndex );
249 void ViewConfigController::onLayoutStyleChanged(
int layoutStyle )
251 mResizeStyleAction->setCurrentItem( layoutStyle );
254 void ViewConfigController::onVisibleByteArrayCodingsChanged(
int visibleByteArrayCodings )
256 mToggleColumnsAction->setCurrentItem( visibleByteArrayCodings-1 );
bool showsNonprinting() const
QString charCodingName() const
int noOfBytesPerLine() const
void setValueCoding(int valueCoding)
ViewConfigController(KXMLGUIClient *guiClient)
void setCharCoding(const QString &charCodingName)
int visibleByteArrayCodings() const
static const QStringList & codecNames()
void setLayoutStyle(int layoutStyle)
void setShowsNonprinting(bool showsNonprinting=true)
void setNoOfGroupedBytes(int noOfGroupedBytes)
void setVisibleByteArrayCodings(int columns)
void setNoOfBytesPerLine(int noOfBytesPerLine)
int noOfGroupedBytes() const
T findBaseModel() const
returns the first baseModel which is of type T, or null if none is found.
bool offsetColumnVisible() const
void setOffsetCoding(int offsetCoding)
virtual void setTargetModel(AbstractModel *model)
void toggleOffsetColumn(bool visible)