• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdesdk API Reference
  • KDE Home
  • Contact Us
 

okteta

  • sources
  • kde-4.12
  • kdesdk
  • okteta
  • kasten
  • controllers
  • view
  • viewconfig
viewconfigcontroller.cpp
Go to the documentation of this file.
1 /*
2  This file is part of the Okteta Kasten module, made within the KDE community.
3 
4  Copyright 2006-2010,2012 Friedrich W. H. Kossebau <kossebau@kde.org>
5 
6  This library is free software; you can redistribute it and/or
7  modify it under the terms of the GNU Lesser General Public
8  License as published by the Free Software Foundation; either
9  version 2.1 of the License, or (at your option) version 3, or any
10  later version accepted by the membership of KDE e.V. (or its
11  successor approved by the membership of KDE e.V.), which shall
12  act as a proxy defined in Section 6 of version 3 of the license.
13 
14  This library is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  Lesser General Public License for more details.
18 
19  You should have received a copy of the GNU Lesser General Public
20  License along with this library. If not, see <http://www.gnu.org/licenses/>.
21 */
22 
23 #include "viewconfigcontroller.h"
24 
25 // lib
26 #include "bytesperlinedialog.h"
27 #include "bytespergroupdialog.h"
28 #include <bytearrayview.h>
29 // Okteta core
30 #include <charcodec.h>
31 // KDE
32 #include <KXMLGUIClient>
33 #include <KLocale>
34 #include <KActionCollection>
35 #include <KSelectAction>
36 #include <KToggleAction>
37 
38 
39 namespace Kasten2
40 {
41 
42 ViewConfigController::ViewConfigController( KXMLGUIClient* guiClient )
43  : mByteArrayView( 0 )
44 {
45  KActionCollection* actionCollection = guiClient->actionCollection();
46 
47  // Offset coding
48  mOffsetCodingAction = actionCollection->add<KSelectAction>( QLatin1String("view_offsetcoding") );
49  mOffsetCodingAction->setText( i18nc("@title:menu","&Offset Coding") );
50  QStringList list;
51  list.append( i18nc("@item:inmenu offset in the hexadecimal format",
52  "&Hexadecimal") );
53  list.append( i18nc("@item:inmenu offset in the decimal format",
54  "&Decimal") );
55  mOffsetCodingAction->setItems( list );
56  connect( mOffsetCodingAction, SIGNAL(triggered(int)), SLOT(setOffsetCoding(int)) );
57 
58  // value valueCoding
59  mCodingAction = actionCollection->add<KSelectAction>( QLatin1String("view_valuecoding") );
60  mCodingAction->setText( i18nc("@title:menu","&Value Coding") );
61  list.clear();
62  list.append( i18nc("@item:inmenu encoding of the bytes as values in the hexadecimal format",
63  "&Hexadecimal") );
64  list.append( i18nc("@item:inmenu encoding of the bytes as values in the decimal format",
65  "&Decimal") );
66  list.append( i18nc("@item:inmenu encoding of the bytes as values in the octal format",
67  "&Octal") );
68  list.append( i18nc("@item:inmenu encoding of the bytes as values in the binary format",
69  "&Binary") );
70  mCodingAction->setItems( list );
71  connect( mCodingAction, SIGNAL(triggered(int)), SLOT(setValueCoding(int)) );
72 
73  // char valueCoding
74  mEncodingAction = actionCollection->add<KSelectAction>( QLatin1String("view_charencoding") );
75  mEncodingAction->setText( i18nc("@title:menu","&Char Coding") );
76  mEncodingAction->setItems( Okteta::CharCodec::codecNames() );
77  connect( mEncodingAction, SIGNAL(triggered(int)), SLOT(setCharCoding(int)) );
78 
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)) );
82 
83  // bytes per line
84  mSetBytesPerLineAction = actionCollection->addAction( QLatin1String("view_bytesperline"),
85  this, SLOT(setBytesPerLine()) );
86  mSetBytesPerLineAction->setText( i18nc("@action:inmenu","Set Bytes per Line...") );
87 
88  // byte groups size
89  mSetBytesPerGroupAction = actionCollection->addAction( QLatin1String("view_bytespergroup"),
90  this, SLOT(setBytesPerGroup()) );
91  mSetBytesPerGroupAction->setText( i18nc("@action:inmenu","Set Bytes per Group...") );
92 
93  // resize style
94  mResizeStyleAction = actionCollection->add<KSelectAction>( QLatin1String("resizestyle") );
95  mResizeStyleAction->setText( i18nc("@title:menu","&Dynamic Layout") );
96  list.clear();
97  list.append( i18nc("@item:inmenu The layout will not change on size changes.",
98  "&Off") );
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.",
102  "&On") );
103  mResizeStyleAction->setItems( list );
104  connect( mResizeStyleAction, SIGNAL(triggered(int)), SLOT(setLayoutStyle(int)) );
105 
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)) );
110 
111  // show buffer columns
112  mToggleColumnsAction = actionCollection->add<KSelectAction>( QLatin1String("togglecolumns") );
113  mToggleColumnsAction->setText( i18nc("@title:menu","&Show Values or Chars") );
114  list.clear();
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)) );
120 
121  setTargetModel( 0 );
122 }
123 
124 void ViewConfigController::setTargetModel( AbstractModel* model )
125 {
126  if( mByteArrayView ) mByteArrayView->disconnect( this );
127 
128  mByteArrayView = model ? model->findBaseModel<ByteArrayView*>() : 0;
129 
130  const bool hasView = ( mByteArrayView != 0 );
131  if( hasView )
132  {
133  onOffsetColumnVisibleChanged( mByteArrayView->offsetColumnVisible() );
134  onOffsetCodingChanged( mByteArrayView->offsetCoding() );
135  onShowsNonprintingChanged( mByteArrayView->showsNonprinting() );
136  onValueCodingChanged( mByteArrayView->valueCoding() );
137  onCharCodecChanged( mByteArrayView->charCodingName() );
138  onLayoutStyleChanged( mByteArrayView->layoutStyle() );
139  onVisibleByteArrayCodingsChanged( mByteArrayView->visibleByteArrayCodings() );
140 
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)) );
152  }
153 
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 );
163 }
164 
165 
166 void ViewConfigController::setValueCoding( int valueCoding )
167 {
168  mByteArrayView->setValueCoding( valueCoding );
169 }
170 
171 void ViewConfigController::setShowsNonprinting( bool on )
172 {
173  mByteArrayView->setShowsNonprinting( on );
174 }
175 
176 void ViewConfigController::toggleOffsetColumn( bool on )
177 {
178  mByteArrayView->toggleOffsetColumn( on );
179 }
180 
181 void ViewConfigController::setOffsetCoding( int offsetCoding )
182 {
183  mByteArrayView->setOffsetCoding( offsetCoding );
184 }
185 
186 void ViewConfigController::setBytesPerLine()
187 {
188  BytesPerLineDialog dialog;
189  dialog.setBytesPerLine( mByteArrayView->noOfBytesPerLine() );
190  if( dialog.exec() )
191  {
192  mByteArrayView->setNoOfBytesPerLine( dialog.bytesPerLine() );
193 
194  // TODO: change should be signalled and the action listen to that
195  mResizeStyleAction->setCurrentItem( mByteArrayView->layoutStyle() );
196  }
197 }
198 
199 void ViewConfigController::setBytesPerGroup()
200 {
201  BytesPerGroupDialog dialog;
202  dialog.setGroupedBytesCount( mByteArrayView->noOfGroupedBytes() );
203  if( dialog.exec() )
204  mByteArrayView->setNoOfGroupedBytes( dialog.groupedBytesCount() );
205 }
206 
207 void ViewConfigController::setLayoutStyle( int layoutStyle )
208 {
209  mByteArrayView->setLayoutStyle( layoutStyle );
210 }
211 
212 void ViewConfigController::setCharCoding( int charCoding )
213 {
214  mByteArrayView->setCharCoding( Okteta::CharCodec::codecNames()[charCoding] );
215 }
216 
217 void ViewConfigController::toggleValueCharColumns( int visibleColumns )
218 {
219  mByteArrayView->setVisibleByteArrayCodings( visibleColumns+1 );
220 }
221 
222 void ViewConfigController::onOffsetColumnVisibleChanged( bool offsetColumnVisible )
223 {
224  mShowOffsetColumnAction->setChecked( offsetColumnVisible );
225 }
226 
227 void ViewConfigController::onOffsetCodingChanged( int offsetCoding )
228 {
229  mOffsetCodingAction->setCurrentItem( offsetCoding );
230 }
231 
232 void ViewConfigController::onShowsNonprintingChanged( bool showsNonprinting )
233 {
234  mShowsNonprintingAction->setChecked( showsNonprinting );
235 }
236 
237 void ViewConfigController::onValueCodingChanged( int valueCoding )
238 {
239  mCodingAction->setCurrentItem( valueCoding );
240 }
241 
242 void ViewConfigController::onCharCodecChanged( const QString& charCodecName )
243 {
244  const int charCodingIndex = Okteta::CharCodec::codecNames().indexOf( charCodecName );
245 
246  mEncodingAction->setCurrentItem( charCodingIndex );
247 }
248 
249 void ViewConfigController::onLayoutStyleChanged( int layoutStyle )
250 {
251  mResizeStyleAction->setCurrentItem( layoutStyle );
252 }
253 
254 void ViewConfigController::onVisibleByteArrayCodingsChanged( int visibleByteArrayCodings )
255 {
256  mToggleColumnsAction->setCurrentItem( visibleByteArrayCodings-1 );
257 }
258 
259 }
Kasten2::ByteArrayView::showsNonprinting
bool showsNonprinting() const
Definition: bytearrayview.cpp:286
Kasten2::ByteArrayView::valueCoding
int valueCoding() const
Definition: bytearrayview.cpp:250
Kasten2::ByteArrayView::charCodingName
QString charCodingName() const
Definition: bytearrayview.cpp:255
Kasten2::ByteArrayView::noOfBytesPerLine
int noOfBytesPerLine() const
Definition: bytearrayview.cpp:244
Kasten2::ByteArrayView::setValueCoding
void setValueCoding(int valueCoding)
Definition: bytearrayview.cpp:260
Kasten2::ViewConfigController::ViewConfigController
ViewConfigController(KXMLGUIClient *guiClient)
Definition: viewconfigcontroller.cpp:42
Kasten2::ByteArrayView::setCharCoding
void setCharCoding(const QString &charCodingName)
Definition: bytearrayview.cpp:265
Kasten2::ByteArrayView::visibleByteArrayCodings
int visibleByteArrayCodings() const
Definition: bytearrayview.cpp:306
Okteta::CharCodec::codecNames
static const QStringList & codecNames()
Definition: charcodec.cpp:35
Kasten2::ByteArrayView::setLayoutStyle
void setLayoutStyle(int layoutStyle)
Definition: bytearrayview.cpp:336
Kasten2::ByteArrayView::setShowsNonprinting
void setShowsNonprinting(bool showsNonprinting=true)
Definition: bytearrayview.cpp:316
Kasten2::ByteArrayView::setNoOfGroupedBytes
void setNoOfGroupedBytes(int noOfGroupedBytes)
Definition: bytearrayview.cpp:321
Kasten2::ByteArrayView::setVisibleByteArrayCodings
void setVisibleByteArrayCodings(int columns)
Definition: bytearrayview.cpp:346
Kasten2::ByteArrayView::setNoOfBytesPerLine
void setNoOfBytesPerLine(int noOfBytesPerLine)
Definition: bytearrayview.cpp:341
Kasten2::ByteArrayView::noOfGroupedBytes
int noOfGroupedBytes() const
Definition: bytearrayview.cpp:382
viewconfigcontroller.h
Kasten2::AbstractModel::findBaseModel
T findBaseModel() const
returns the first baseModel which is of type T, or null if none is found.
Definition: abstractmodel.h:93
bytespergroupdialog.h
charcodec.h
bytesperlinedialog.h
Kasten2::ByteArrayView::offsetColumnVisible
bool offsetColumnVisible() const
Definition: bytearrayview.cpp:291
Kasten2::ByteArrayView::setOffsetCoding
void setOffsetCoding(int offsetCoding)
Definition: bytearrayview.cpp:331
Kasten2::AbstractModel
Definition: abstractmodel.h:40
Kasten2::ByteArrayView::offsetCoding
int offsetCoding() const
Definition: bytearrayview.cpp:296
Kasten2::ViewConfigController::setTargetModel
virtual void setTargetModel(AbstractModel *model)
Definition: viewconfigcontroller.cpp:124
Kasten2::ByteArrayView::layoutStyle
int layoutStyle() const
Definition: bytearrayview.cpp:301
Kasten2::ByteArrayView::toggleOffsetColumn
void toggleOffsetColumn(bool visible)
Definition: bytearrayview.cpp:326
Kasten2::ByteArrayView
Definition: bytearrayview.h:51
bytearrayview.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:04:09 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

okteta

Skip menu "okteta"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdesdk API Reference

Skip menu "kdesdk API Reference"
  • kapptemplate
  • kcachegrind
  • kompare
  • lokalize
  • okteta
  • umbrello
  •   umbrello

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal