• 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
  • viewprofiles
viewprofileedit.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 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 "viewprofileedit.h"
24 
25 // Okteta Gui Kasten
26 #include <bytearrayviewprofile.h>
27 // Okteta core
28 #include <charcodec.h>
29 // KDE
30 #include <KLocale>
31 #include <KIntNumInput>
32 #include <KComboBox>
33 #include <KLineEdit>
34 // Qt
35 #include <QtGui/QVBoxLayout>
36 #include <QtGui/QGroupBox>
37 #include <QtGui/QFormLayout>
38 #include <QtGui/QCheckBox>
39 
40 namespace Kasten2
41 {
42 
43 static int
44 listIndexFromByteArrayCodingsFlags( int byteArrayCodingsFlags )
45 {
46  return byteArrayCodingsFlags - 1;
47 }
48 
49 static int
50 byteArrayCodingsFlagsFromListIndex( int listIndex )
51 {
52  return listIndex + 1;
53 }
54 
55 
56 ViewProfileEdit::ViewProfileEdit( QWidget* parent )
57  : QWidget( parent )
58 {
59  QVBoxLayout* layout = new QVBoxLayout( this );
60 
61  // titel
62  QFormLayout* titleFormLayout = new QFormLayout;
63  // char for non-printable bytes
64  mTitleEdit = new KLineEdit( this );
65  connect( mTitleEdit, SIGNAL(textChanged(QString)), SIGNAL(profileTitleChanged(QString)) );
66  titleFormLayout->addRow( i18n("Title:"), mTitleEdit );
67 
68  // display settings
69  QGroupBox* displayBox = new QGroupBox( this );
70  displayBox->setTitle( i18n("Display") );
71  QFormLayout* displayBoxFormLayout = new QFormLayout( displayBox );
72  // line offset shown
73  mLineOffsetShownCheckBox = new QCheckBox( displayBox );
74  displayBoxFormLayout->addRow( i18n("Show Line Offset:"), mLineOffsetShownCheckBox );
75  // offset coding
76  mOffsetCodingComboBox = new KComboBox( displayBox );
77  QStringList offsetCodingList;
78  offsetCodingList.append( i18nc("@item:inmenu offset in the hexadecimal format",
79  "Hexadecimal") );
80  offsetCodingList.append( i18nc("@item:inmenu offset in the decimal format",
81  "Decimal") );
82  mOffsetCodingComboBox->addItems( offsetCodingList );
83  displayBoxFormLayout->addRow( i18n("Offset Coding:"), mOffsetCodingComboBox );
84  // values or char shown
85  mValuesCharsShownComboBox = new KComboBox( displayBox );
86  QStringList valuesCharsList;
87  valuesCharsList.append( i18nc("@item:","Values") );
88  valuesCharsList.append( i18nc("@item:","Chars") );
89  valuesCharsList.append( i18nc("@item:","Values & Chars") );
90  mValuesCharsShownComboBox->addItems( valuesCharsList );
91  displayBoxFormLayout->addRow( i18n("Show Values or Chars:"), mValuesCharsShownComboBox );
92  // display mode
93  const QString displayModeLabel =
94  i18nc( "@label:listbox ",
95  "Show with Rows or Columns:" );
96  mDisplayModeComboBox = new KComboBox( displayBox );
97  QStringList displayModeList;
98  displayModeList.append( i18nc("@item:","Columns") );
99  displayModeList.append( i18nc("@item:","Rows") );
100  mDisplayModeComboBox->addItems( displayModeList );
101  displayBoxFormLayout->addRow( displayModeLabel, mDisplayModeComboBox );
102 
103  // layout settings
104  QGroupBox* layoutBox = new QGroupBox( this );
105  layoutBox->setTitle( i18n("Layout") );
106  QFormLayout* layoutBoxFormLayout = new QFormLayout( layoutBox );
107  // line break
108  mLineBreakComboBox = new KComboBox( layoutBox );
109  QStringList lineBreakList;
110  lineBreakList.append( i18nc("@item:inmenu The layout will not change on size changes.",
111  "Off") );
112  lineBreakList.append( i18nc("@item:inmenu The layout will adapt to the size, but only with complete groups of bytes.",
113  "Wrap Only Complete Byte Groups") );
114  lineBreakList.append( i18nc("@item:inmenu The layout will adapt to the size and fit in as much bytes per line as possible.",
115  "On") );
116  mLineBreakComboBox->addItems( lineBreakList );
117  connect( mLineBreakComboBox, SIGNAL(currentIndexChanged(int)),
118  SLOT(onLineBreakIndexChanged(int)) );
119  layoutBoxFormLayout->addRow( i18n("Break lines:"), mLineBreakComboBox );
120  // bytes per group
121  mGroupedBytesCountEdit = new KIntNumInput( this );
122  mGroupedBytesCountEdit->setRange( 0, INT_MAX );
123  mGroupedBytesCountEdit->setSuffix( ki18np(" byte"," bytes") );
124  const QString noGroupingText = i18nc( "@label",
125  "No grouping." );
126  mGroupedBytesCountEdit->setSpecialValueText( noGroupingText );
127  const QString groupedBytesCountLabel =
128  i18nc( "@label:spinbox number of bytes which are grouped",
129  "Bytes per Group:" );
130  layoutBoxFormLayout->addRow( groupedBytesCountLabel, mGroupedBytesCountEdit );
131  // bytes per group
132  mBytesPerLineEdit = new KIntNumInput( this );
133  mBytesPerLineEdit->setRange( 1, INT_MAX );
134  mBytesPerLineEdit->setSuffix( ki18np(" byte"," bytes") );
135  const QString bytesPerLineLabel =
136  i18nc( "@label:spinbox number of bytes which are shown per line",
137  "Bytes per Line:" );
138  layoutBoxFormLayout->addRow( bytesPerLineLabel, mBytesPerLineEdit );
139 
140  // value settings
141  QGroupBox* valuesBox = new QGroupBox( this );
142  valuesBox->setTitle( i18n("Values") );
143  QFormLayout* valuesBoxFormLayout = new QFormLayout( valuesBox );
144  // coding
145  mValueCodingComboBox = new KComboBox( valuesBox );
146  QStringList valueCodingList;
147  valueCodingList.append( i18nc("@item:inmenu encoding of the bytes as values in the hexadecimal format",
148  "Hexadecimal") );
149  valueCodingList.append( i18nc("@item:inmenu encoding of the bytes as values in the decimal format",
150  "Decimal") );
151  valueCodingList.append( i18nc("@item:inmenu encoding of the bytes as values in the octal format",
152  "Octal") );
153  valueCodingList.append( i18nc("@item:inmenu encoding of the bytes as values in the binary format",
154  "Binary") );
155  mValueCodingComboBox->addItems( valueCodingList );
156  valuesBoxFormLayout->addRow( i18n("Coding:"), mValueCodingComboBox );
157 
158  // char settings
159  QGroupBox* charsBox = new QGroupBox( this );
160  charsBox->setTitle( i18n("Chars") );
161  QFormLayout* charsBoxFormLayout = new QFormLayout( charsBox );
162  // coding
163  mCharCodingComboBox = new KComboBox( charsBox );
164  mCharCodingComboBox->addItems( Okteta::CharCodec::codecNames() );
165  charsBoxFormLayout->addRow( i18n("Coding:"), mCharCodingComboBox );
166  // line offset shown
167  mNonPrintableShownCheckBox = new QCheckBox( charsBox );
168  charsBoxFormLayout->addRow( i18n("Show Non-printable:"), mNonPrintableShownCheckBox );
169  // char for non-printable bytes
170  mNonPrintableCharEdit = new KLineEdit( charsBox ); // TODO: use a validator to ensure always one char
171  mNonPrintableCharEdit->setMaxLength( 1 );
172  charsBoxFormLayout->addRow( i18n("Char for non-printable bytes:"), mNonPrintableCharEdit );
173  // char for undefined bytes
174  mUndefinedCharEdit = new KLineEdit( charsBox ); // TODO: use a validator to ensure always one char
175  mUndefinedCharEdit->setMaxLength( 1 );
176  charsBoxFormLayout->addRow( i18n("Char for undefined bytes:"), mUndefinedCharEdit );
177 
178  layout->addLayout( titleFormLayout );
179  layout->addWidget( displayBox );
180  layout->addWidget( layoutBox );
181  layout->addWidget( valuesBox );
182  layout->addWidget( charsBox );
183 
184  mTitleEdit->setFocus();
185 }
186 
187 ByteArrayViewProfile ViewProfileEdit::viewProfile() const
188 {
189  ByteArrayViewProfile viewProfile;
190  viewProfile.setViewProfileTitle( mTitleEdit->text() );
191 
192  viewProfile.setOffsetColumnVisible( mLineOffsetShownCheckBox->isChecked() );
193  viewProfile.setOffsetCoding( mOffsetCodingComboBox->currentIndex() );
194  const int visibleByteArrayCodings =
195  byteArrayCodingsFlagsFromListIndex( mValuesCharsShownComboBox->currentIndex() );
196  viewProfile.setVisibleByteArrayCodings( visibleByteArrayCodings );
197  viewProfile.setViewModus( mDisplayModeComboBox->currentIndex() );
198 
199  viewProfile.setLayoutStyle( mLineBreakComboBox->currentIndex() );
200  viewProfile.setNoOfGroupedBytes( mGroupedBytesCountEdit->value() );
201  viewProfile.setNoOfBytesPerLine( mBytesPerLineEdit->value() );
202 
203  viewProfile.setValueCoding( mValueCodingComboBox->currentIndex() );
204 
205  viewProfile.setCharCoding( mCharCodingComboBox->currentText() );
206  viewProfile.setShowsNonprinting( mNonPrintableShownCheckBox->isChecked() );
207  viewProfile.setSubstituteChar( mNonPrintableCharEdit->text().at(0) ); // TODO: need make sure is one char
208  viewProfile.setUndefinedChar( mUndefinedCharEdit->text().at(0) ); // TODO: need make sure is one char
209 
210  return viewProfile;
211 }
212 
213 void ViewProfileEdit::setViewProfile( const ByteArrayViewProfile& viewProfile )
214 {
215  mTitleEdit->setText( viewProfile.viewProfileTitle() );
216 
217  mLineOffsetShownCheckBox->setChecked( viewProfile.offsetColumnVisible() );
218  mOffsetCodingComboBox->setCurrentIndex( viewProfile.offsetCoding() );
219  const int valuesCharsShownListIndex =
220  listIndexFromByteArrayCodingsFlags( viewProfile.visibleByteArrayCodings() );
221  mValuesCharsShownComboBox->setCurrentIndex( valuesCharsShownListIndex );
222  mDisplayModeComboBox->setCurrentIndex( viewProfile.viewModus() );
223 
224  mLineBreakComboBox->setCurrentIndex( viewProfile.layoutStyle() );
225  mGroupedBytesCountEdit->setValue( viewProfile.noOfGroupedBytes() );
226  mBytesPerLineEdit->setValue( viewProfile.noOfBytesPerLine() );
227 
228  mValueCodingComboBox->setCurrentIndex( viewProfile.valueCoding() );
229 
230  mCharCodingComboBox->setCurrentItem( viewProfile.charCodingName() );
231  mNonPrintableShownCheckBox->setChecked( viewProfile.showsNonprinting() );
232  mNonPrintableCharEdit->setText( viewProfile.substituteChar() );
233  mUndefinedCharEdit->setText( viewProfile.undefinedChar() );
234 }
235 
236 void ViewProfileEdit::onLineBreakIndexChanged( int lineBreakIndex )
237 {
238  const bool isLineBreakByByte = ( lineBreakIndex == 0 );
239 
240  mBytesPerLineEdit->setEnabled( isLineBreakByByte );
241 }
242 
243 ViewProfileEdit::~ViewProfileEdit()
244 {
245 }
246 
247 }
Kasten2::ByteArrayViewProfile::setValueCoding
void setValueCoding(int valueCoding)
Definition: bytearrayviewprofile.cpp:126
Kasten2::ViewProfileEdit::onLineBreakIndexChanged
void onLineBreakIndexChanged(int lineBreakIndex)
Definition: viewprofileedit.cpp:236
Kasten2::ByteArrayViewProfile::setNoOfGroupedBytes
void setNoOfGroupedBytes(int noOfGroupedBytes)
Definition: bytearrayviewprofile.cpp:135
Kasten2::ViewProfileEdit::~ViewProfileEdit
virtual ~ViewProfileEdit()
Definition: viewprofileedit.cpp:243
Kasten2::ViewProfileEdit::mNonPrintableCharEdit
KLineEdit * mNonPrintableCharEdit
Definition: viewprofileedit.h:80
Kasten2::byteArrayCodingsFlagsFromListIndex
static int byteArrayCodingsFlagsFromListIndex(int listIndex)
Definition: viewprofileedit.cpp:50
Kasten2::ByteArrayViewProfile::valueCoding
int valueCoding() const
Definition: bytearrayviewprofile.cpp:112
Kasten2::ByteArrayViewProfile::setOffsetCoding
void setOffsetCoding(int offsetCoding)
Definition: bytearrayviewprofile.cpp:125
QWidget
Kasten2::ViewProfileEdit::viewProfile
ByteArrayViewProfile viewProfile() const
Definition: viewprofileedit.cpp:187
Kasten2::ByteArrayViewProfile
Definition: bytearrayviewprofile.h:39
viewprofileedit.h
Kasten2::ByteArrayViewProfile::setOffsetColumnVisible
void setOffsetColumnVisible(bool visible)
Definition: bytearrayviewprofile.cpp:130
Kasten2::ByteArrayViewProfile::setSubstituteChar
void setSubstituteChar(const QChar &substituteChar)
Definition: bytearrayviewprofile.cpp:128
Kasten2::ViewProfileEdit::mBytesPerLineEdit
KIntNumInput * mBytesPerLineEdit
Definition: viewprofileedit.h:73
Kasten2::ByteArrayViewProfile::offsetColumnVisible
bool offsetColumnVisible() const
Definition: bytearrayviewprofile.cpp:113
bytearrayviewprofile.h
Kasten2::ViewProfileEdit::mLineOffsetShownCheckBox
QCheckBox * mLineOffsetShownCheckBox
Definition: viewprofileedit.h:66
Kasten2::ViewProfileEdit::mOffsetCodingComboBox
KComboBox * mOffsetCodingComboBox
Definition: viewprofileedit.h:67
Okteta::CharCodec::codecNames
static const QStringList & codecNames()
Definition: charcodec.cpp:35
Kasten2::ByteArrayViewProfile::offsetCoding
int offsetCoding() const
Definition: bytearrayviewprofile.cpp:110
Kasten2::ViewProfileEdit::setViewProfile
void setViewProfile(const ByteArrayViewProfile &viewProfile)
Definition: viewprofileedit.cpp:213
Kasten2::ByteArrayViewProfile::setShowsNonprinting
void setShowsNonprinting(bool showsNonprinting)
Definition: bytearrayviewprofile.cpp:134
Kasten2::ByteArrayViewProfile::viewModus
int viewModus() const
Definition: bytearrayviewprofile.cpp:121
Kasten2::ByteArrayViewProfile::noOfGroupedBytes
int noOfGroupedBytes() const
Definition: bytearrayviewprofile.cpp:120
Kasten2::ViewProfileEdit::mValueCodingComboBox
KComboBox * mValueCodingComboBox
Definition: viewprofileedit.h:75
Kasten2::ByteArrayViewProfile::setUndefinedChar
void setUndefinedChar(const QChar &undefinedChar)
Definition: bytearrayviewprofile.cpp:129
Kasten2::listIndexFromByteArrayCodingsFlags
static int listIndexFromByteArrayCodingsFlags(int byteArrayCodingsFlags)
Definition: viewprofileedit.cpp:44
Kasten2::ByteArrayViewProfile::setNoOfBytesPerLine
void setNoOfBytesPerLine(int noOfBytesPerLine)
Definition: bytearrayviewprofile.cpp:133
Kasten2::ViewProfileEdit::mGroupedBytesCountEdit
KIntNumInput * mGroupedBytesCountEdit
Definition: viewprofileedit.h:72
Kasten2::ByteArrayViewProfile::showsNonprinting
bool showsNonprinting() const
Definition: bytearrayviewprofile.cpp:119
Kasten2::ViewProfileEdit::mUndefinedCharEdit
KLineEdit * mUndefinedCharEdit
Definition: viewprofileedit.h:79
Kasten2::ByteArrayViewProfile::substituteChar
QChar substituteChar() const
Definition: bytearrayviewprofile.cpp:117
Kasten2::ByteArrayViewProfile::charCodingName
QString charCodingName() const
Definition: bytearrayviewprofile.cpp:111
charcodec.h
Kasten2::ViewProfileEdit::mTitleEdit
KLineEdit * mTitleEdit
Definition: viewprofileedit.h:64
Kasten2::ViewProfileEdit::mLineBreakComboBox
KComboBox * mLineBreakComboBox
Definition: viewprofileedit.h:71
KLineEdit
Kasten2::ByteArrayViewProfile::layoutStyle
int layoutStyle() const
Definition: bytearrayviewprofile.cpp:116
Kasten2::ByteArrayViewProfile::visibleByteArrayCodings
int visibleByteArrayCodings() const
Definition: bytearrayviewprofile.cpp:114
Kasten2::ByteArrayViewProfile::setVisibleByteArrayCodings
void setVisibleByteArrayCodings(int columns)
Definition: bytearrayviewprofile.cpp:131
Kasten2::ViewProfileEdit::ViewProfileEdit
ViewProfileEdit(QWidget *parent=0)
Definition: viewprofileedit.cpp:56
Kasten2::ByteArrayViewProfile::setViewModus
void setViewModus(int viewModus)
Definition: bytearrayviewprofile.cpp:136
Kasten2::ViewProfileEdit::mCharCodingComboBox
KComboBox * mCharCodingComboBox
Definition: viewprofileedit.h:77
Kasten2::ByteArrayViewProfile::viewProfileTitle
QString viewProfileTitle() const
Definition: bytearrayviewprofile.cpp:109
Kasten2::ByteArrayViewProfile::undefinedChar
QChar undefinedChar() const
Definition: bytearrayviewprofile.cpp:118
Kasten2::ViewProfileEdit::mNonPrintableShownCheckBox
QCheckBox * mNonPrintableShownCheckBox
Definition: viewprofileedit.h:78
Kasten2::ByteArrayViewProfile::setCharCoding
void setCharCoding(const QString &charCodingName)
Definition: bytearrayviewprofile.cpp:127
Kasten2::ViewProfileEdit::mValuesCharsShownComboBox
KComboBox * mValuesCharsShownComboBox
Definition: viewprofileedit.h:68
Kasten2::ByteArrayViewProfile::setLayoutStyle
void setLayoutStyle(int layoutStyle)
Definition: bytearrayviewprofile.cpp:132
Kasten2::ViewProfileEdit::profileTitleChanged
void profileTitleChanged(const QString &title)
Kasten2::ByteArrayViewProfile::setViewProfileTitle
void setViewProfileTitle(const QString &title)
Definition: bytearrayviewprofile.cpp:124
Kasten2::ByteArrayViewProfile::noOfBytesPerLine
int noOfBytesPerLine() const
Definition: bytearrayviewprofile.cpp:115
Kasten2::ViewProfileEdit::mDisplayModeComboBox
KComboBox * mDisplayModeComboBox
Definition: viewprofileedit.h:69
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