##// END OF EJS Templates
GUI improvments
Jeandet Alexis -
r11:e0f25227d628 default
parent child
Show More
@@ -0,0 +1,153
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the SocExplorer Software
3 -- Copyright (C) 2014, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
22 #include "qvpushbutton.h"
23 #include <QStylePainter>
24 #include <QMenu>
25
26 QVPushButton::QVPushButton(QWidget *parent) :
27 QPushButton(parent)
28 {
29 init();
30 }
31
32 QVPushButton::QVPushButton(const QString &text, QWidget *parent)
33 {
34 init();
35 }
36
37 QVPushButton::QVPushButton(const QIcon &icon, const QString &text, QWidget *parent):
38 QPushButton(parent)
39 {
40 init();
41 }
42
43 QVPushButton::~QVPushButton()
44 {
45
46 }
47
48 Qt::Orientation QVPushButton::orientation() const
49 {
50 return orientation_;
51 }
52
53 void QVPushButton::setOrientation(Qt::Orientation orientation)
54 {
55 orientation_ = orientation;
56 switch (orientation)
57 {
58 case Qt::Horizontal:
59 setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
60 break;
61
62 case Qt::Vertical:
63 setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Minimum);
64 break;
65 }
66 }
67
68 bool QVPushButton::mirrored() const
69 {
70 return mirrored_;
71 }
72
73 void QVPushButton::setMirrored(bool mirrored)
74 {
75 mirrored_ = mirrored;
76 }
77
78 QSize QVPushButton::sizeHint() const
79 {
80 QSize size = QPushButton::sizeHint();
81 if (orientation_ == Qt::Vertical)
82 size.transpose();
83 return size;
84 }
85
86 void QVPushButton::paintEvent(QPaintEvent *event)
87 {
88 Q_UNUSED(event);
89 QStylePainter p(this);
90
91 switch (orientation_)
92 {
93 case Qt::Horizontal:
94 if (mirrored_)
95 {
96 p.rotate(180);
97 p.translate(-width(), -height());
98 }
99 break;
100
101 case Qt::Vertical:
102 if (mirrored_)
103 {
104 p.rotate(-90);
105 p.translate(-height(), 0);
106 }
107 else
108 {
109 p.rotate(90);
110 p.translate(0, -width());
111 }
112 break;
113 }
114
115 p.drawControl(QStyle::CE_PushButton, getStyleOption());
116 }
117
118 QStyleOptionButton QVPushButton::getStyleOption() const
119 {
120 QStyleOptionButton opt;
121 opt.initFrom(this);
122 if (orientation_ == Qt::Vertical)
123 {
124 QSize size = opt.rect.size();
125 size.transpose();
126 opt.rect.setSize(size);
127 }
128 opt.features = QStyleOptionButton::None;
129 if (isFlat())
130 opt.features |= QStyleOptionButton::Flat;
131 if (menu())
132 opt.features |= QStyleOptionButton::HasMenu;
133 if (autoDefault() || isDefault())
134 opt.features |= QStyleOptionButton::AutoDefaultButton;
135 if (isDefault())
136 opt.features |= QStyleOptionButton::DefaultButton;
137 if (isDown() || (menu() && menu()->isVisible()))
138 opt.state |= QStyle::State_Sunken;
139 if (isChecked())
140 opt.state |= QStyle::State_On;
141 if (!isFlat() && !isDown())
142 opt.state |= QStyle::State_Raised;
143 opt.text = text();
144 opt.icon = icon();
145 opt.iconSize = iconSize();
146 return opt;
147 }
148
149 void QVPushButton::init()
150 {
151 orientation_ = Qt::Horizontal;
152 mirrored_ = false;
153 }
@@ -0,0 +1,58
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the SocExplorer Software
3 -- Copyright (C) 2014, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 -- Copied from example http://www.qtcentre.org/wiki/index.php?title=OrientationButton
22 ----------------------------------------------------------------------------*/
23 #ifndef QVPUSHBUTTON_H
24 #define QVPUSHBUTTON_H
25
26 #include <QPushButton>
27 #include <QStyleOptionButton>
28
29 class QVPushButton : public QPushButton
30 {
31 Q_OBJECT
32 public:
33 explicit QVPushButton(QWidget *parent = 0);
34 QVPushButton(const QString& text, QWidget* parent = 0);
35 QVPushButton(const QIcon& icon, const QString& text, QWidget* parent = 0);
36 ~QVPushButton();
37
38 Qt::Orientation orientation() const;
39 void setOrientation(Qt::Orientation orientation);
40
41 bool mirrored() const;
42 void setMirrored(bool mirrored);
43
44 QSize sizeHint() const;
45
46 protected:
47 void paintEvent(QPaintEvent* event);
48
49 private:
50 QStyleOptionButton getStyleOption() const;
51 void init();
52
53 Qt::Orientation orientation_;
54 bool mirrored_;
55
56 };
57
58 #endif // QVPUSHBUTTON_H
@@ -0,0 +1,258
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 <!-- Created with Inkscape (http://www.inkscape.org/) -->
3 <svg
4 xmlns:dc="http://purl.org/dc/elements/1.1/"
5 xmlns:cc="http://web.resource.org/cc/"
6 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7 xmlns:svg="http://www.w3.org/2000/svg"
8 xmlns="http://www.w3.org/2000/svg"
9 xmlns:xlink="http://www.w3.org/1999/xlink"
10 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12 inkscape:export-ydpi="90.000000"
13 inkscape:export-xdpi="90.000000"
14 inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
15 width="48"
16 height="48"
17 id="svg11300"
18 sodipodi:version="0.32"
19 inkscape:version="0.45"
20 sodipodi:docbase="/home/dobey/Projects/gnome-icon-theme/scalable/emblems"
21 sodipodi:docname="emblem-unreadable.svg"
22 inkscape:output_extension="org.inkscape.output.svg.inkscape"
23 version="1.0">
24 <defs
25 id="defs3">
26 <linearGradient
27 inkscape:collect="always"
28 id="linearGradient7000">
29 <stop
30 style="stop-color:#ffffff;stop-opacity:1;"
31 offset="0"
32 id="stop7002" />
33 <stop
34 style="stop-color:#ffffff;stop-opacity:0;"
35 offset="1"
36 id="stop7004" />
37 </linearGradient>
38 <linearGradient
39 inkscape:collect="always"
40 id="linearGradient6964">
41 <stop
42 style="stop-color:#000000;stop-opacity:1;"
43 offset="0"
44 id="stop6966" />
45 <stop
46 style="stop-color:#000000;stop-opacity:0;"
47 offset="1"
48 id="stop6968" />
49 </linearGradient>
50 <linearGradient
51 id="linearGradient2790">
52 <stop
53 style="stop-color:white;stop-opacity:1;"
54 offset="0"
55 id="stop2792" />
56 <stop
57 id="stop2798"
58 offset="0.8108108"
59 style="stop-color:#d3d7cf;stop-opacity:1;" />
60 <stop
61 style="stop-color:#959e8b;stop-opacity:1;"
62 offset="1"
63 id="stop2794" />
64 </linearGradient>
65 <linearGradient
66 inkscape:collect="always"
67 xlink:href="#linearGradient2790"
68 id="linearGradient6945"
69 x1="4.3764215"
70 y1="0.068979882"
71 x2="19.255854"
72 y2="30.038462"
73 gradientUnits="userSpaceOnUse"
74 gradientTransform="matrix(1.7588235,0,0,1.7588235,6.032353,6.0323539)" />
75 <radialGradient
76 inkscape:collect="always"
77 xlink:href="#linearGradient6964"
78 id="radialGradient6970"
79 cx="-2"
80 cy="19.5"
81 fx="-2"
82 fy="19.5"
83 r="3"
84 gradientTransform="matrix(1,0,0,0.5,0,9.75)"
85 gradientUnits="userSpaceOnUse" />
86 <radialGradient
87 inkscape:collect="always"
88 xlink:href="#linearGradient6964"
89 id="radialGradient6972"
90 cx="-2"
91 cy="19.5"
92 fx="-2"
93 fy="19.5"
94 r="3"
95 gradientTransform="matrix(1,0,0,0.5,0,9.75)"
96 gradientUnits="userSpaceOnUse" />
97 <radialGradient
98 inkscape:collect="always"
99 xlink:href="#linearGradient6964"
100 id="radialGradient6976"
101 gradientUnits="userSpaceOnUse"
102 gradientTransform="matrix(1,0,0,0.5,0,9.75)"
103 cx="-2"
104 cy="19.5"
105 fx="-2"
106 fy="19.5"
107 r="3" />
108 <linearGradient
109 inkscape:collect="always"
110 xlink:href="#linearGradient7000"
111 id="linearGradient7006"
112 x1="17.838388"
113 y1="19.939341"
114 x2="39.418972"
115 y2="61.80806"
116 gradientUnits="userSpaceOnUse" />
117 <linearGradient
118 inkscape:collect="always"
119 xlink:href="#linearGradient7000"
120 id="linearGradient7010"
121 gradientUnits="userSpaceOnUse"
122 x1="17.838388"
123 y1="19.939341"
124 x2="27.044603"
125 y2="40.064526" />
126 </defs>
127 <sodipodi:namedview
128 stroke="#ef2929"
129 fill="#888a85"
130 id="base"
131 pagecolor="#ffffff"
132 bordercolor="#666666"
133 borderopacity="0.25490196"
134 inkscape:pageopacity="0.0"
135 inkscape:pageshadow="2"
136 inkscape:zoom="1"
137 inkscape:cx="118.89613"
138 inkscape:cy="30.767475"
139 inkscape:current-layer="layer1"
140 showgrid="false"
141 inkscape:grid-bbox="false"
142 inkscape:document-units="px"
143 inkscape:showpageshadow="false"
144 inkscape:window-width="908"
145 inkscape:window-height="924"
146 inkscape:window-x="573"
147 inkscape:window-y="126"
148 showborder="false"
149 width="48px"
150 height="48px"
151 borderlayer="true"
152 inkscape:grid-points="false"
153 inkscape:guide-bbox="true" />
154 <metadata
155 id="metadata4">
156 <rdf:RDF>
157 <cc:Work
158 rdf:about="">
159 <dc:format>image/svg+xml</dc:format>
160 <dc:type
161 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
162 <dc:creator>
163 <cc:Agent>
164 <dc:title>Lapo Calamandrei</dc:title>
165 </cc:Agent>
166 </dc:creator>
167 <dc:source />
168 <cc:license
169 rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
170 <dc:title>Read-only</dc:title>
171 <dc:subject>
172 <rdf:Bag>
173 <rdf:li>emblem</rdf:li>
174 <rdf:li>read-only</rdf:li>
175 <rdf:li>no-read</rdf:li>
176 <rdf:li>locked</rdf:li>
177 <rdf:li>lock</rdf:li>
178 </rdf:Bag>
179 </dc:subject>
180 </cc:Work>
181 <cc:License
182 rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
183 <cc:permits
184 rdf:resource="http://web.resource.org/cc/Reproduction" />
185 <cc:permits
186 rdf:resource="http://web.resource.org/cc/Distribution" />
187 <cc:requires
188 rdf:resource="http://web.resource.org/cc/Notice" />
189 <cc:permits
190 rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
191 <cc:requires
192 rdf:resource="http://web.resource.org/cc/ShareAlike" />
193 <cc:requires
194 rdf:resource="http://web.resource.org/cc/SourceCode" />
195 </cc:License>
196 </rdf:RDF>
197 </metadata>
198 <g
199 id="layer1"
200 inkscape:label="Layer 1"
201 inkscape:groupmode="layer">
202 <g
203 id="g6978"
204 style="opacity:0.7238806"
205 transform="matrix(1.8719362,0,0,1.5205944,5.0000002,10.484903)">
206 <path
207 transform="matrix(2.0312501,0,0,1.2946278,14.455805,-7.7591062)"
208 d="M 1 19.5 A 3 1.5 0 1 1 -5,19.5 A 3 1.5 0 1 1 1 19.5 z"
209 sodipodi:ry="1.5"
210 sodipodi:rx="3"
211 sodipodi:cy="19.5"
212 sodipodi:cx="-2"
213 id="path6974"
214 style="opacity:0.14179107;fill:url(#radialGradient6976);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
215 sodipodi:type="arc" />
216 <path
217 transform="matrix(1.6666667,0,0,1.2946278,8.3333333,-6.6568542)"
218 d="M 1 19.5 A 3 1.5 0 1 1 -5,19.5 A 3 1.5 0 1 1 1 19.5 z"
219 sodipodi:ry="1.5"
220 sodipodi:rx="3"
221 sodipodi:cy="19.5"
222 sodipodi:cx="-2"
223 id="path6960"
224 style="opacity:0.2;fill:url(#radialGradient6970);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
225 sodipodi:type="arc" />
226 <path
227 transform="matrix(1.6666667,0,0,1.2946278,19.333333,-6.6568542)"
228 d="M 1 19.5 A 3 1.5 0 1 1 -5,19.5 A 3 1.5 0 1 1 1 19.5 z"
229 sodipodi:ry="1.5"
230 sodipodi:rx="3"
231 sodipodi:cy="19.5"
232 sodipodi:cx="-2"
233 id="path6962"
234 style="opacity:0.2;fill:url(#radialGradient6972);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
235 sodipodi:type="arc" />
236 </g>
237 <path
238 style="fill:url(#linearGradient6945);fill-opacity:1;fill-rule:evenodd;stroke:#6f716b;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
239 d="M 14.82647,9.5500008 L 9.55,14.826471 L 19.22353,24.5 L 9.55,34.17353 L 14.82647,39.45 L 24.500002,29.776471 L 34.17352,39.45 L 39.45,34.17353 L 29.77647,24.5 L 39.45,14.826471 L 34.17352,9.5500008 L 24.500002,19.22353 L 14.82647,9.5500008 z "
240 id="path6930" />
241 <path
242 sodipodi:type="inkscape:offset"
243 inkscape:radius="-1.0514843"
244 inkscape:original="M 14.8125 8.5625 L 9.5625 13.8125 L 19.21875 23.5 L 9.5625 33.1875 L 14.8125 38.4375 L 24.5 28.78125 L 34.1875 38.4375 L 39.4375 33.1875 L 29.78125 23.5 L 39.4375 13.8125 L 34.1875 8.5625 L 24.5 18.21875 L 14.8125 8.5625 z "
245 style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7006);stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
246 id="path6996"
247 d="M 14.8125,10.0625 L 11.0625,13.8125 L 19.96875,22.75 C 20.169915,22.947709 20.283223,23.217943 20.283223,23.5 C 20.283223,23.782057 20.169915,24.052291 19.96875,24.25 L 11.0625,33.1875 L 14.8125,36.9375 L 23.75,28.03125 C 23.947709,27.830085 24.217943,27.716777 24.5,27.716777 C 24.782057,27.716777 25.052291,27.830085 25.25,28.03125 L 34.1875,36.9375 L 37.9375,33.1875 L 29.03125,24.25 C 28.830085,24.052291 28.716777,23.782057 28.716777,23.5 C 28.716777,23.217943 28.830085,22.947709 29.03125,22.75 L 37.9375,13.8125 L 34.1875,10.0625 L 25.25,18.96875 C 25.052291,19.169915 24.782057,19.283223 24.5,19.283223 C 24.217943,19.283223 23.947709,19.169915 23.75,18.96875 L 14.8125,10.0625 z "
248 transform="translate(0,1)" />
249 <path
250 sodipodi:type="inkscape:offset"
251 inkscape:radius="-1.0514843"
252 inkscape:original="M 14.8125 8.5625 L 9.5625 13.8125 L 19.21875 23.5 L 9.5625 33.1875 L 14.8125 38.4375 L 24.5 28.78125 L 34.1875 38.4375 L 39.4375 33.1875 L 29.78125 23.5 L 39.4375 13.8125 L 34.1875 8.5625 L 24.5 18.21875 L 14.8125 8.5625 z "
253 style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7010);stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
254 id="path7008"
255 d="M 14.8125,10.0625 L 11.0625,13.8125 L 19.96875,22.75 C 20.169915,22.947709 20.283223,23.217943 20.283223,23.5 C 20.283223,23.782057 20.169915,24.052291 19.96875,24.25 L 11.0625,33.1875 L 14.8125,36.9375 L 23.75,28.03125 C 23.947709,27.830085 24.217943,27.716777 24.5,27.716777 C 24.782057,27.716777 25.052291,27.830085 25.25,28.03125 L 34.1875,36.9375 L 37.9375,33.1875 L 29.03125,24.25 C 28.830085,24.052291 28.716777,23.782057 28.716777,23.5 C 28.716777,23.217943 28.830085,22.947709 29.03125,22.75 L 37.9375,13.8125 L 34.1875,10.0625 L 25.25,18.96875 C 25.052291,19.169915 24.782057,19.283223 24.5,19.283223 C 24.217943,19.283223 23.947709,19.169915 23.75,18.96875 L 14.8125,10.0625 z "
256 transform="translate(0,1)" />
257 </g>
258 </svg>
@@ -1,38 +1,59
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the SocExplorer Software
3 -- Copyright (C) 2014, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
1 #include "filelist.h"
22 #include "filelist.h"
2 #include <QMimeData>
23 #include <QMimeData>
3 #include <QUrl>
24 #include <QUrl>
4
25
5 FileList::FileList(QWidget *parent) :
26 FileList::FileList(QWidget *parent) :
6 QTableWidget(parent)
27 QTableWidget(parent)
7 {
28 {
8 setHorizontalHeaderLabels(QStringList()<<"File"<<"Type");
29 setHorizontalHeaderLabels(QStringList()<<"File"<<"Type");
9 this->setAcceptDrops(true);
30 this->setAcceptDrops(true);
10 }
31 }
11
32
12 void FileList::dragEnterEvent(QDragEnterEvent *event)
33 void FileList::dragEnterEvent(QDragEnterEvent *event)
13 {
34 {
14 event->acceptProposedAction();
35 event->acceptProposedAction();
15 }
36 }
16
37
17 void FileList::dragMoveEvent(QDragMoveEvent *event)
38 void FileList::dragMoveEvent(QDragMoveEvent *event)
18 {
39 {
19 event->acceptProposedAction();
40 event->acceptProposedAction();
20 }
41 }
21
42
22 void FileList::dropEvent(QDropEvent *event)
43 void FileList::dropEvent(QDropEvent *event)
23 {
44 {
24 const QMimeData* mimeData = event->mimeData();
45 const QMimeData* mimeData = event->mimeData();
25
46
26 if (mimeData->hasUrls())
47 if (mimeData->hasUrls())
27 {
48 {
28 QStringList pathList;
49 QStringList pathList;
29 QList<QUrl> urlList = mimeData->urls();
50 QList<QUrl> urlList = mimeData->urls();
30
51
31 for (int i = 0; i < urlList.size() && i < 32; ++i)
52 for (int i = 0; i < urlList.size() && i < 32; ++i)
32 {
53 {
33 pathList.append(urlList.at(i).toLocalFile());
54 pathList.append(urlList.at(i).toLocalFile());
34 }
55 }
35 emit openFiles(pathList);
56 emit openFiles(pathList);
36 event->acceptProposedAction();
57 event->acceptProposedAction();
37 }
58 }
38 }
59 }
@@ -1,26 +1,47
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the SocExplorer Software
3 -- Copyright (C) 2014, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
1 #ifndef FILELIST_H
22 #ifndef FILELIST_H
2 #define FILELIST_H
23 #define FILELIST_H
3
24
4 #include <QTableWidget>
25 #include <QTableWidget>
5 #include <QDropEvent>
26 #include <QDropEvent>
6 #include <QDragEnterEvent>
27 #include <QDragEnterEvent>
7 #include <QDragMoveEvent>
28 #include <QDragMoveEvent>
8 #include <QString>
29 #include <QString>
9 #include <QStringList>
30 #include <QStringList>
10
31
11 class FileList : public QTableWidget
32 class FileList : public QTableWidget
12 {
33 {
13 Q_OBJECT
34 Q_OBJECT
14 public:
35 public:
15 explicit FileList(QWidget *parent = 0);
36 explicit FileList(QWidget *parent = 0);
16 void dragEnterEvent(QDragEnterEvent *event);
37 void dragEnterEvent(QDragEnterEvent *event);
17 void dragMoveEvent(QDragMoveEvent *event);
38 void dragMoveEvent(QDragMoveEvent *event);
18 void dropEvent(QDropEvent *event);
39 void dropEvent(QDropEvent *event);
19
40
20 signals:
41 signals:
21 void openFiles(const QStringList& files);
42 void openFiles(const QStringList& files);
22 public slots:
43 public slots:
23
44
24 };
45 };
25
46
26 #endif // FILELIST_H
47 #endif // FILELIST_H
@@ -1,6 +1,7
1 <RCC>
1 <RCC>
2 <qresource prefix="/img">
2 <qresource prefix="/img">
3 <file>ressources/Gnome-list-add.svg</file>
3 <file>ressources/Gnome-list-add.svg</file>
4 <file>ressources/Gnome-user-trash.svg</file>
4 <file>ressources/Gnome-user-trash.svg</file>
5 <file>ressources/Gnome-emblem-unreadable.svg</file>
5 </qresource>
6 </qresource>
6 </RCC>
7 </RCC>
@@ -1,190 +1,228
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the SocExplorer Software
3 -- Copyright (C) 2014, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
1 #include "genericbinaryfilewidget.h"
22 #include "genericbinaryfilewidget.h"
2 #include "ui_genericbinaryfilewidget.h"
23 #include "ui_genericbinaryfilewidget.h"
3 #include <QFileDialog>
24 #include <QFileDialog>
4 #include <QFile>
25 #include <QFile>
5 #include "srec/srecfile.h"
26 #include "srec/srecfile.h"
6 #include "srec/srecfilewidget.h"
27 #include "srec/srecfilewidget.h"
7 #include "BinFile/binaryfile.h"
28 #include "BinFile/binaryfile.h"
8 #include "BinFile/binaryfilewidget.h"
29 #include "BinFile/binaryfilewidget.h"
9 #include "elf/elffile.h"
30 #include "elf/elffile.h"
10 #include "elf/elffilewidget.h"
31 #include "elf/elffilewidget.h"
11
32
12
33
13 genericBinaryFileWidget::genericBinaryFileWidget(QWidget *parent) :
34 genericBinaryFileWidget::genericBinaryFileWidget(QWidget *parent) :
14 QWidget(parent),
35 QWidget(parent),
15 ui(new Ui::genericBinaryFileWidget)
36 ui(new Ui::genericBinaryFileWidget)
16 {
37 {
17 ui->setupUi(this);
38 ui->setupUi(this);
39 ui->showFileListQpb->setOrientation(Qt::Vertical);
40 ui->showFileListWdgt->setHidden(true);
18 connect(this->ui->openFileQpb,SIGNAL(clicked()),this,SLOT(openFile()));
41 connect(this->ui->openFileQpb,SIGNAL(clicked()),this,SLOT(openFile()));
19 connect(this->ui->removeFileQpb,SIGNAL(clicked()),this,SLOT(removeFiles()));
42 connect(this->ui->removeFileQpb,SIGNAL(clicked()),this,SLOT(removeFiles()));
20 connect(this->ui->fileList,SIGNAL(cellActivated(int,int)),this,SLOT(fileCellActivated(int,int)));
43 connect(this->ui->fileList,SIGNAL(cellActivated(int,int)),this,SLOT(fileCellActivated(int,int)));
21 connect(this->ui->fileList,SIGNAL(openFiles(QStringList)),this,SLOT(openFile(QStringList)));
44 connect(this->ui->fileList,SIGNAL(openFiles(QStringList)),this,SLOT(openFile(QStringList)));
45 connect(this->ui->hideFileListQpb,SIGNAL(clicked()),this,SLOT(hideFileList()));
46 connect(this->ui->showFileListQpb,SIGNAL(clicked()),this,SLOT(showFileList()));
47
22 }
48 }
23
49
24 genericBinaryFileWidget::~genericBinaryFileWidget()
50 genericBinaryFileWidget::~genericBinaryFileWidget()
25 {
51 {
26 delete ui;
52 delete ui;
27 }
53 }
28
54
29 void genericBinaryFileWidget::openFile()
55 void genericBinaryFileWidget::openFile()
30 {
56 {
31 QStringList filesNames = QFileDialog::getOpenFileNames(
57 QStringList filesNames = QFileDialog::getOpenFileNames(
32 this,
58 this,
33 "Select one or more files to open",
59 "Select one or more files to open",
34 NULL,
60 NULL,
35 "Binary Files (*.bin);;SREC Files (*.srec);;Elf Files (*)");
61 "Binary Files (*.bin);;SREC Files (*.srec);;Elf Files (*)");
36
62
37 openFile(filesNames);
63 openFile(filesNames);
38 }
64 }
39
65
40 void genericBinaryFileWidget::openFile(const QStringList &FileList)
66 void genericBinaryFileWidget::openFile(const QStringList &FileList)
41 {
67 {
42 for(int i=0;i<FileList.count();i++)
68 for(int i=0;i<FileList.count();i++)
43 {
69 {
44 bool fileOpened = false;
70 bool fileOpened = false;
45 for(int l=0;l<files.count();l++)
71 for(int l=0;l<files.count();l++)
46 {
72 {
47 if(FileList.at(i)==files.at(l)->fileName)
73 if(FileList.at(i)==files.at(l)->fileName)
48 {
74 {
49 fileOpened = true;
75 fileOpened = true;
50 }
76 }
51 }
77 }
52 QFile file(FileList.at(i));
78 QFile file(FileList.at(i));
53 if(!fileOpened && file.open(QIODevice::ReadOnly))
79 if(!fileOpened && file.open(QIODevice::ReadOnly))
54 {
80 {
55 char magic[4];
81 char magic[4];
56 file.read(magic,4);
82 file.read(magic,4);
57 QString line;
83 QString line;
58 switch((int)magic[0])
84 switch((int)magic[0])
59 {
85 {
60 case 0x7F:
86 case 0x7F:
61 if((magic[1]=='E') && (magic[2]=='L') && (magic[3]=='F'))
87 if((magic[1]=='E') && (magic[2]=='L') && (magic[3]=='F'))
62 {
88 {
63 files.append(new FileListElement(FileList.at(i),false,Type_Elf,NULL,NULL));
89 files.append(new FileListElement(FileList.at(i),false,Type_Elf,NULL,NULL));
64 }
90 }
65 break;
91 break;
66 case 'S':
92 case 'S':
67 file.seek(0);
93 file.seek(0);
68 line = file.readLine();
94 line = file.readLine();
69 if(srecFile::checkSum(line))
95 if(srecFile::checkSum(line))
70 {
96 {
71 files.append(new FileListElement(FileList.at(i),false,Type_SREC,NULL,NULL));
97 files.append(new FileListElement(FileList.at(i),false,Type_SREC,NULL,NULL));
72 }
98 }
73 break;
99 break;
74 default:
100 default:
75 files.append(new FileListElement(FileList.at(i),false,Type_Bin,NULL,NULL));
101 files.append(new FileListElement(FileList.at(i),false,Type_Bin,NULL,NULL));
76 break;
102 break;
77 }
103 }
78 }
104 }
79 }
105 }
80 updateFileList();
106 updateFileList();
81 }
107 }
82
108
83 void genericBinaryFileWidget::updateFileList()
109 void genericBinaryFileWidget::updateFileList()
84 {
110 {
85 this->ui->fileList->clear();
111 this->ui->fileList->clear();
86 this->ui->fileList->setRowCount(files.count());
112 this->ui->fileList->setRowCount(files.count());
87 this->ui->fileList->setHorizontalHeaderLabels(QStringList()<<"File"<<"Type");
113 this->ui->fileList->setHorizontalHeaderLabels(QStringList()<<"File"<<"Type");
88 for(int i=0;i<files.count();i++)
114 for(int i=0;i<files.count();i++)
89 {
115 {
90 QTableWidgetItem *newItem = new QTableWidgetItem(files.at(i)->fileName);
116 QTableWidgetItem *newItem = new QTableWidgetItem(files.at(i)->fileName);
91 newItem->setFlags(newItem->flags() ^ Qt::ItemIsEditable);
117 newItem->setFlags(newItem->flags() ^ Qt::ItemIsEditable);
92 this->ui->fileList->setItem(i, 0, newItem);
118 this->ui->fileList->setItem(i, 0, newItem);
93
119
94 newItem = new QTableWidgetItem(files.at(i)->type());
120 newItem = new QTableWidgetItem(files.at(i)->type());
95 newItem->setFlags(newItem->flags() ^ Qt::ItemIsEditable);
121 newItem->setFlags(newItem->flags() ^ Qt::ItemIsEditable);
96 this->ui->fileList->setItem(i, 1, newItem);
122 this->ui->fileList->setItem(i, 1, newItem);
97 }
123 }
98 this->ui->fileList->resizeColumnsToContents();
124 this->ui->fileList->resizeColumnsToContents();
99 }
125 }
100
126
101 void genericBinaryFileWidget::removeFiles()
127 void genericBinaryFileWidget::removeFiles()
102 {
128 {
103 QList<QTableWidgetItem*> items = this->ui->fileList->selectedItems();
129 QList<QTableWidgetItem*> items = this->ui->fileList->selectedItems();
104 for(int i=0;i<items.count();i++)
130 for(int i=0;i<items.count();i++)
105 {
131 {
106 QString filename = this->ui->fileList->item(items.at(i)->row(),0)->text();
132 QString filename = this->ui->fileList->item(items.at(i)->row(),0)->text();
107 for(int l=0;l<files.count();l++)
133 for(int l=0;l<files.count();l++)
108 {
134 {
109 if(files.at(l)->fileName==filename)
135 if(files.at(l)->fileName==filename)
110 {
136 {
111 if(files.at(l)->isOpened)
137 if(files.at(l)->isOpened)
112 {
138 {
113 for(int m=0;m<this->ui->fileViewerTab->count();m++)
139 for(int m=0;m<this->ui->fileViewerTab->count();m++)
114 {
140 {
115 if(this->ui->fileViewerTab->widget(m)==this->files.at(l)->viewer)
141 if(this->ui->fileViewerTab->widget(m)==this->files.at(l)->viewer)
116 {
142 {
117 this->ui->fileViewerTab->removeTab(m);
143 this->ui->fileViewerTab->removeTab(m);
118 }
144 }
119 }
145 }
120 delete this->files.at(l)->viewer;
146 delete this->files.at(l)->viewer;
121 delete this->files.at(l)->parser;
147 delete this->files.at(l)->parser;
122 }
148 }
123 delete files.at(l);
149 delete files.at(l);
124 files.removeAt(l);
150 files.removeAt(l);
125 }
151 }
126 }
152 }
127 }
153 }
128 updateFileList();
154 updateFileList();
129 }
155 }
130
156
131 void genericBinaryFileWidget::fileCellActivated(int row, int column)
157 void genericBinaryFileWidget::fileCellActivated(int row, int column)
132 {
158 {
133 Q_UNUSED(column)
159 Q_UNUSED(column)
134 QString fileName = this->ui->fileList->item(row,0)->text();
160 QString fileName = this->ui->fileList->item(row,0)->text();
135 if(fileName!="")
161 if(fileName!="")
136 {
162 {
137 for(int l=0;l<files.count();l++)
163 for(int l=0;l<files.count();l++)
138 {
164 {
139 FileListElement* file = files.at(l);
165 FileListElement* file = files.at(l);
140 if(file->fileName==fileName)
166 if(file->fileName==fileName)
141 {
167 {
142 if(!file->isOpened)
168 if(!file->isOpened)
143 {
169 {
144 if(file->parser==NULL)
170 if(file->parser==NULL)
145 {
171 {
146 switch (file->FileType)
172 switch (file->FileType)
147 {
173 {
148 case Type_Bin:
174 case Type_Bin:
149 file->parser = new binaryFile(file->fileName);
175 file->parser = new binaryFile(file->fileName);
150 if(file->viewer==NULL)
176 if(file->viewer==NULL)
151 {
177 {
152 file->viewer = new binaryFileWidget();
178 file->viewer = new binaryFileWidget();
153 file->viewer->setFile(file->parser);
179 file->viewer->setFile(file->parser);
154 this->ui->fileViewerTab->addTab(file->viewer,file->fileName);
180 this->ui->fileViewerTab->addTab(file->viewer,file->fileName);
155 }
181 }
156 file->isOpened = true;
182 file->isOpened = true;
157 break;
183 break;
158 case Type_Elf:
184 case Type_Elf:
159 file->parser = new ElfFile(file->fileName);
185 file->parser = new ElfFile(file->fileName);
160 if(file->viewer==NULL)
186 if(file->viewer==NULL)
161 {
187 {
162 file->viewer = new elfFileWidget();
188 file->viewer = new elfFileWidget();
163 file->viewer->setFile(file->parser);
189 file->viewer->setFile(file->parser);
164 this->ui->fileViewerTab->addTab(file->viewer,file->fileName);
190 this->ui->fileViewerTab->addTab(file->viewer,file->fileName);
165 }
191 }
166 file->isOpened = true;
192 file->isOpened = true;
167 break;
193 break;
168 case Type_SREC:
194 case Type_SREC:
169 file->parser = new srecFile(file->fileName);
195 file->parser = new srecFile(file->fileName);
170 if(file->viewer==NULL)
196 if(file->viewer==NULL)
171 {
197 {
172 file->viewer = new srecFileWidget();
198 file->viewer = new srecFileWidget();
173 file->viewer->setFile(file->parser);
199 file->viewer->setFile(file->parser);
174 this->ui->fileViewerTab->addTab(file->viewer,file->fileName);
200 this->ui->fileViewerTab->addTab(file->viewer,file->fileName);
175 }
201 }
176 file->isOpened = true;
202 file->isOpened = true;
177 break;
203 break;
178 default:
204 default:
179 break;
205 break;
180 }
206 }
181 }
207 }
182 }
208 }
183 }
209 }
184 }
210 }
185 }
211 }
186 }
212 }
187
213
214 void genericBinaryFileWidget::hideFileList()
215 {
216 this->ui->fileListGBox->setHidden(true);
217 this->ui->showFileListWdgt->setVisible(true);
218 }
219
220 void genericBinaryFileWidget::showFileList()
221 {
222 this->ui->fileListGBox->setVisible(true);
223 this->ui->showFileListWdgt->setHidden(true);
224 }
188
225
189
226
190
227
228
@@ -1,64 +1,87
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the SocExplorer Software
3 -- Copyright (C) 2014, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
1 #ifndef GENERICBINARYFILEWIDGET_H
22 #ifndef GENERICBINARYFILEWIDGET_H
2 #define GENERICBINARYFILEWIDGET_H
23 #define GENERICBINARYFILEWIDGET_H
3
24
4 #include <QWidget>
25 #include <QWidget>
5 #include <QString>
26 #include <QString>
6 #include <QStringList>
27 #include <QStringList>
7 #include <abstractbinfile.h>
28 #include <abstractbinfile.h>
8
29
9 namespace Ui {
30 namespace Ui {
10 class genericBinaryFileWidget;
31 class genericBinaryFileWidget;
11 }
32 }
12
33
13 typedef enum {Type_SREC,Type_Bin,Type_Elf}FileTypeEnum;
34 typedef enum {Type_SREC,Type_Bin,Type_Elf}FileTypeEnum;
14 class FileListElement
35 class FileListElement
15 {
36 {
16 public:
37 public:
17 FileListElement() {}
38 FileListElement() {}
18 FileListElement(QString fileName,bool isOpened,FileTypeEnum FileType,abstractBinFileWidget* viewer=0,abstractBinFile* parser=0)
39 FileListElement(QString fileName,bool isOpened,FileTypeEnum FileType,abstractBinFileWidget* viewer=0,abstractBinFile* parser=0)
19 :fileName(fileName),isOpened(isOpened),FileType(FileType),viewer(viewer),parser(parser){}
40 :fileName(fileName),isOpened(isOpened),FileType(FileType),viewer(viewer),parser(parser){}
20 QString type()
41 QString type()
21 {
42 {
22 switch (this->FileType) {
43 switch (this->FileType) {
23 case Type_SREC:
44 case Type_SREC:
24 return "Srec";
45 return "Srec";
25 break;
46 break;
26 case Type_Bin:
47 case Type_Bin:
27 return "Binary";
48 return "Binary";
28 break;
49 break;
29 case Type_Elf:
50 case Type_Elf:
30 return "Elf";
51 return "Elf";
31 break;
52 break;
32 default:
53 default:
33 return "Unknow";
54 return "Unknow";
34 break;
55 break;
35 }
56 }
36 }
57 }
37 QString fileName;
58 QString fileName;
38 bool isOpened;
59 bool isOpened;
39 FileTypeEnum FileType;
60 FileTypeEnum FileType;
40 abstractBinFileWidget* viewer;
61 abstractBinFileWidget* viewer;
41 abstractBinFile* parser;
62 abstractBinFile* parser;
42 };
63 };
43
64
44 class genericBinaryFileWidget : public QWidget
65 class genericBinaryFileWidget : public QWidget
45 {
66 {
46 Q_OBJECT
67 Q_OBJECT
47
68
48 public:
69 public:
49 explicit genericBinaryFileWidget(QWidget *parent = 0);
70 explicit genericBinaryFileWidget(QWidget *parent = 0);
50 ~genericBinaryFileWidget();
71 ~genericBinaryFileWidget();
51
72
52 public slots:
73 public slots:
53 void openFile();
74 void openFile();
54 void openFile(const QStringList& FileList);
75 void openFile(const QStringList& FileList);
55 void updateFileList();
76 void updateFileList();
56 void removeFiles();
77 void removeFiles();
57 void fileCellActivated(int row, int column);
78 void fileCellActivated(int row, int column);
79 void hideFileList();
80 void showFileList();
58
81
59 private:
82 private:
60 Ui::genericBinaryFileWidget *ui;
83 Ui::genericBinaryFileWidget *ui;
61 QList<FileListElement*> files;
84 QList<FileListElement*> files;
62 };
85 };
63
86
64 #endif // GENERICBINARYFILEWIDGET_H
87 #endif // GENERICBINARYFILEWIDGET_H
@@ -1,119 +1,249
1 <?xml version="1.0" encoding="UTF-8"?>
1 <?xml version="1.0" encoding="UTF-8"?>
2 <ui version="4.0">
2 <ui version="4.0">
3 <class>genericBinaryFileWidget</class>
3 <class>genericBinaryFileWidget</class>
4 <widget class="QWidget" name="genericBinaryFileWidget">
4 <widget class="QWidget" name="genericBinaryFileWidget">
5 <property name="geometry">
5 <property name="geometry">
6 <rect>
6 <rect>
7 <x>0</x>
7 <x>0</x>
8 <y>0</y>
8 <y>0</y>
9 <width>878</width>
9 <width>878</width>
10 <height>360</height>
10 <height>360</height>
11 </rect>
11 </rect>
12 </property>
12 </property>
13 <property name="acceptDrops">
13 <property name="acceptDrops">
14 <bool>false</bool>
14 <bool>false</bool>
15 </property>
15 </property>
16 <property name="windowTitle">
16 <property name="windowTitle">
17 <string>Form</string>
17 <string>Form</string>
18 </property>
18 </property>
19 <layout class="QGridLayout" name="gridLayout_2">
19 <layout class="QHBoxLayout" name="horizontalLayout">
20 <item row="0" column="0">
20 <property name="spacing">
21 <number>0</number>
22 </property>
23 <property name="leftMargin">
24 <number>0</number>
25 </property>
26 <property name="topMargin">
27 <number>2</number>
28 </property>
29 <property name="rightMargin">
30 <number>2</number>
31 </property>
32 <property name="bottomMargin">
33 <number>2</number>
34 </property>
35 <item>
36 <widget class="QWidget" name="showFileListWdgt" native="true">
37 <layout class="QVBoxLayout" name="verticalLayout">
38 <property name="margin">
39 <number>0</number>
40 </property>
41 <item>
42 <widget class="QVPushButton" name="showFileListQpb">
43 <property name="text">
44 <string>File list</string>
45 </property>
46 </widget>
47 </item>
48 <item>
49 <spacer name="showFileListVSpacer">
50 <property name="orientation">
51 <enum>Qt::Vertical</enum>
52 </property>
53 <property name="sizeHint" stdset="0">
54 <size>
55 <width>20</width>
56 <height>40</height>
57 </size>
58 </property>
59 </spacer>
60 </item>
61 </layout>
62 </widget>
63 </item>
64 <item>
21 <widget class="QSplitter" name="splitter">
65 <widget class="QSplitter" name="splitter">
22 <property name="orientation">
66 <property name="orientation">
23 <enum>Qt::Horizontal</enum>
67 <enum>Qt::Horizontal</enum>
24 </property>
68 </property>
25 <widget class="QWidget" name="widget" native="true">
69 <widget class="QGroupBox" name="fileListGBox">
26 <layout class="QGridLayout" name="gridLayout">
70 <property name="title">
27 <item row="1" column="0">
71 <string>File list</string>
28 <widget class="QPushButton" name="openFileQpb">
72 </property>
29 <property name="text">
73 <layout class="QVBoxLayout" name="verticalLayout_2">
30 <string/>
74 <property name="spacing">
31 </property>
75 <number>2</number>
32 <property name="icon">
76 </property>
33 <iconset resource="genericBinaryFiles.qrc">
77 <property name="margin">
34 <normaloff>:/img/ressources/Gnome-list-add.svg</normaloff>:/img/ressources/Gnome-list-add.svg</iconset>
78 <number>2</number>
35 </property>
79 </property>
36 <property name="iconSize">
80 <item>
37 <size>
81 <widget class="QWidget" name="fileListWdgt" native="true">
38 <width>24</width>
82 <layout class="QGridLayout" name="gridLayout">
39 <height>24</height>
83 <property name="margin">
40 </size>
84 <number>2</number>
41 </property>
85 </property>
42 </widget>
86 <property name="spacing">
43 </item>
87 <number>2</number>
44 <item row="1" column="1">
45 <widget class="QPushButton" name="removeFileQpb">
46 <property name="text">
47 <string/>
48 </property>
49 <property name="icon">
50 <iconset resource="genericBinaryFiles.qrc">
51 <normaloff>:/img/ressources/Gnome-user-trash.svg</normaloff>:/img/ressources/Gnome-user-trash.svg</iconset>
52 </property>
53 <property name="iconSize">
54 <size>
55 <width>24</width>
56 <height>24</height>
57 </size>
58 </property>
59 </widget>
60 </item>
61 <item row="1" column="2">
62 <spacer name="horizontalSpacer">
63 <property name="orientation">
64 <enum>Qt::Horizontal</enum>
65 </property>
66 <property name="sizeHint" stdset="0">
67 <size>
68 <width>40</width>
69 <height>20</height>
70 </size>
71 </property>
72 </spacer>
73 </item>
74 <item row="0" column="0" colspan="3">
75 <widget class="FileList" name="fileList">
76 <property name="dragEnabled">
77 <bool>false</bool>
78 </property>
79 <column>
80 <property name="text">
81 <string>File</string>
82 </property>
88 </property>
83 </column>
89 <item row="1" column="3">
84 <column>
90 <widget class="QPushButton" name="hideFileListQpb">
85 <property name="text">
91 <property name="minimumSize">
86 <string>Type</string>
92 <size>
87 </property>
93 <width>16</width>
88 </column>
94 <height>16</height>
95 </size>
96 </property>
97 <property name="maximumSize">
98 <size>
99 <width>16</width>
100 <height>16</height>
101 </size>
102 </property>
103 <property name="text">
104 <string/>
105 </property>
106 <property name="icon">
107 <iconset resource="genericBinaryFiles.qrc">
108 <normaloff>:/img/ressources/Gnome-emblem-unreadable.svg</normaloff>:/img/ressources/Gnome-emblem-unreadable.svg</iconset>
109 </property>
110 </widget>
111 </item>
112 <item row="2" column="0" colspan="4">
113 <widget class="FileList" name="fileList">
114 <property name="dragEnabled">
115 <bool>false</bool>
116 </property>
117 <column>
118 <property name="text">
119 <string>File</string>
120 </property>
121 </column>
122 <column>
123 <property name="text">
124 <string>Type</string>
125 </property>
126 </column>
127 </widget>
128 </item>
129 <item row="1" column="0" colspan="3">
130 <spacer name="horizontalSpacer_2">
131 <property name="orientation">
132 <enum>Qt::Horizontal</enum>
133 </property>
134 <property name="sizeHint" stdset="0">
135 <size>
136 <width>40</width>
137 <height>20</height>
138 </size>
139 </property>
140 </spacer>
141 </item>
142 <item row="3" column="1">
143 <widget class="QPushButton" name="removeFileQpb">
144 <property name="minimumSize">
145 <size>
146 <width>32</width>
147 <height>32</height>
148 </size>
149 </property>
150 <property name="maximumSize">
151 <size>
152 <width>32</width>
153 <height>32</height>
154 </size>
155 </property>
156 <property name="text">
157 <string/>
158 </property>
159 <property name="icon">
160 <iconset resource="genericBinaryFiles.qrc">
161 <normaloff>:/img/ressources/Gnome-user-trash.svg</normaloff>:/img/ressources/Gnome-user-trash.svg</iconset>
162 </property>
163 <property name="iconSize">
164 <size>
165 <width>24</width>
166 <height>24</height>
167 </size>
168 </property>
169 </widget>
170 </item>
171 <item row="3" column="0">
172 <widget class="QPushButton" name="openFileQpb">
173 <property name="minimumSize">
174 <size>
175 <width>32</width>
176 <height>32</height>
177 </size>
178 </property>
179 <property name="maximumSize">
180 <size>
181 <width>32</width>
182 <height>32</height>
183 </size>
184 </property>
185 <property name="text">
186 <string/>
187 </property>
188 <property name="icon">
189 <iconset resource="genericBinaryFiles.qrc">
190 <normaloff>:/img/ressources/Gnome-list-add.svg</normaloff>:/img/ressources/Gnome-list-add.svg</iconset>
191 </property>
192 <property name="iconSize">
193 <size>
194 <width>24</width>
195 <height>24</height>
196 </size>
197 </property>
198 </widget>
199 </item>
200 <item row="3" column="2" colspan="2">
201 <spacer name="horizontalSpacer">
202 <property name="orientation">
203 <enum>Qt::Horizontal</enum>
204 </property>
205 <property name="sizeHint" stdset="0">
206 <size>
207 <width>40</width>
208 <height>20</height>
209 </size>
210 </property>
211 </spacer>
212 </item>
213 </layout>
89 </widget>
214 </widget>
90 </item>
215 </item>
91 </layout>
216 </layout>
92 </widget>
217 </widget>
93 <widget class="QTabWidget" name="fileViewerTab">
218 <widget class="QTabWidget" name="fileViewerTab">
94 <property name="minimumSize">
219 <property name="minimumSize">
95 <size>
220 <size>
96 <width>300</width>
221 <width>300</width>
97 <height>0</height>
222 <height>0</height>
98 </size>
223 </size>
99 </property>
224 </property>
100 <property name="currentIndex">
225 <property name="currentIndex">
101 <number>-1</number>
226 <number>-1</number>
102 </property>
227 </property>
103 </widget>
228 </widget>
104 </widget>
229 </widget>
105 </item>
230 </item>
106 </layout>
231 </layout>
107 </widget>
232 </widget>
108 <customwidgets>
233 <customwidgets>
109 <customwidget>
234 <customwidget>
110 <class>FileList</class>
235 <class>FileList</class>
111 <extends>QTableWidget</extends>
236 <extends>QTableWidget</extends>
112 <header>filelist.h</header>
237 <header>filelist.h</header>
113 </customwidget>
238 </customwidget>
239 <customwidget>
240 <class>QVPushButton</class>
241 <extends>QPushButton</extends>
242 <header>qvpushbutton.h</header>
243 </customwidget>
114 </customwidgets>
244 </customwidgets>
115 <resources>
245 <resources>
116 <include location="genericBinaryFiles.qrc"/>
246 <include location="genericBinaryFiles.qrc"/>
117 </resources>
247 </resources>
118 <connections/>
248 <connections/>
119 </ui>
249 </ui>
@@ -1,51 +1,72
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the SocExplorer Software
3 -- Copyright (C) 2014, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
1 #include "qtablewidgetintitem.h"
22 #include "qtablewidgetintitem.h"
2
23
3 QTableWidgetIntItem::QTableWidgetIntItem(const QString &text,int Type)
24 QTableWidgetIntItem::QTableWidgetIntItem(const QString &text,int Type)
4 :QTableWidgetItem(text,Type)
25 :QTableWidgetItem(text,Type)
5 {
26 {
6 }
27 }
7
28
8 bool QTableWidgetIntItem::operator <(const QTableWidgetItem& other) const
29 bool QTableWidgetIntItem::operator <(const QTableWidgetItem& other) const
9 {
30 {
10 return toInt() < toInt(other);
31 return toInt() < toInt(other);
11 }
32 }
12
33
13 bool QTableWidgetIntItem::operator >(const QTableWidgetItem &other) const
34 bool QTableWidgetIntItem::operator >(const QTableWidgetItem &other) const
14 {
35 {
15 return toInt() > toInt(other);
36 return toInt() > toInt(other);
16 }
37 }
17
38
18 bool QTableWidgetIntItem::operator ==(const QTableWidgetItem &other) const
39 bool QTableWidgetIntItem::operator ==(const QTableWidgetItem &other) const
19 {
40 {
20 return toInt() == toInt(other);
41 return toInt() == toInt(other);
21 }
42 }
22
43
23 int QTableWidgetIntItem::toInt() const
44 int QTableWidgetIntItem::toInt() const
24 {
45 {
25 bool ok=true;
46 bool ok=true;
26 if(type()==DecimalItem)
47 if(type()==DecimalItem)
27 {
48 {
28 return text().toInt();
49 return text().toInt();
29 }
50 }
30 else if(type()==HexaDecimalItem)
51 else if(type()==HexaDecimalItem)
31 {
52 {
32 return text().replace("0x","").toInt(&ok,16);
53 return text().replace("0x","").toInt(&ok,16);
33 }
54 }
34 return 0;
55 return 0;
35 }
56 }
36
57
37 int QTableWidgetIntItem::toInt(const QTableWidgetItem &item) const
58 int QTableWidgetIntItem::toInt(const QTableWidgetItem &item) const
38 {
59 {
39 bool ok=true;
60 bool ok=true;
40 if(item.type()==DecimalItem)
61 if(item.type()==DecimalItem)
41 {
62 {
42 return item.text().toInt();
63 return item.text().toInt();
43 }
64 }
44 else if(item.type()==HexaDecimalItem)
65 else if(item.type()==HexaDecimalItem)
45 {
66 {
46 return item.text().replace("0x","").toInt(&ok,16);
67 return item.text().replace("0x","").toInt(&ok,16);
47 }
68 }
48 return 0;
69 return 0;
49 }
70 }
50
71
51
72
@@ -1,22 +1,43
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the SocExplorer Software
3 -- Copyright (C) 2014, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
1 #ifndef QTABLEWIDGETINTITEM_H
22 #ifndef QTABLEWIDGETINTITEM_H
2 #define QTABLEWIDGETINTITEM_H
23 #define QTABLEWIDGETINTITEM_H
3
24
4 #include <QTableWidgetItem>
25 #include <QTableWidgetItem>
5
26
6 #define DecimalItem 0
27 #define DecimalItem 0
7 #define HexaDecimalItem 1
28 #define HexaDecimalItem 1
8
29
9 class QTableWidgetIntItem : public QTableWidgetItem
30 class QTableWidgetIntItem : public QTableWidgetItem
10 {
31 {
11
32
12 public:
33 public:
13 explicit QTableWidgetIntItem(const QString& text, int Type);
34 explicit QTableWidgetIntItem(const QString& text, int Type);
14 bool operator <(const QTableWidgetItem &other)const;
35 bool operator <(const QTableWidgetItem &other)const;
15 bool operator >(const QTableWidgetItem &other)const;
36 bool operator >(const QTableWidgetItem &other)const;
16 bool operator ==(const QTableWidgetItem &other)const;
37 bool operator ==(const QTableWidgetItem &other)const;
17 int toInt() const;
38 int toInt() const;
18 int toInt(const QTableWidgetItem &item) const;
39 int toInt(const QTableWidgetItem &item) const;
19
40
20 };
41 };
21
42
22 #endif // QTABLEWIDGETINTITEM_H
43 #endif // QTABLEWIDGETINTITEM_H
General Comments 0
You need to be logged in to leave comments. Login now