Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpenBoard
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lifo
Nicolas Ollinger
OpenBoard
Commits
c29832a5
Commit
c29832a5
authored
Apr 05, 2012
by
Aleksei Kanash
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of github.com:Sankore/Sankore-3.1
parents
daca7121
18bedfca
Changes
21
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
211 additions
and
70 deletions
+211
-70
languages.js
.../library/interactivities/Choisir.wgt/scripts/languages.js
+11
-11
script.js
.../library/interactivities/associer_images.wgt/js/script.js
+1
-1
script.js
...brary/interactivities/categoriser_images.wgt/js/script.js
+1
-1
script.js
...library/interactivities/categoriser_text.wgt/js/script.js
+2
-2
script.js
resources/library/interactivities/etudier.wgt/js/script.js
+2
-2
template2.js
...ractivities/ord-words.wgt/locales/fr/scripts/template2.js
+1
-1
script.js
...ctivities/ordonner_des_images.wgt/locales/fr/js/script.js
+3
-3
script.js
...tivities/ordonner_des_letters.wgt/locales/fr/js/script.js
+3
-3
script.js
.../interactivities/selectionner.wgt/locales/fr/js/script.js
+2
-2
wcontainer.js
...ctivities/spl-phrase.wgt/locales/fr/scripts/wcontainer.js
+2
-2
wcontainer.js
...ractivities/spl-text.wgt/locales/fr/scripts/wcontainer.js
+1
-1
wcontainer.js
...ractivities/spl-word.wgt/locales/fr/scripts/wcontainer.js
+1
-1
UBBoardView.cpp
src/board/UBBoardView.cpp
+2
-1
UBSettings.cpp
src/core/UBSettings.cpp
+3
-0
UBSettings.h
src/core/UBSettings.h
+3
-2
UBGraphicsDelegateFrame.cpp
src/domain/UBGraphicsDelegateFrame.cpp
+137
-27
UBGraphicsDelegateFrame.h
src/domain/UBGraphicsDelegateFrame.h
+14
-3
UBGraphicsItemDelegate.cpp
src/domain/UBGraphicsItemDelegate.cpp
+15
-4
UBGraphicsItemDelegate.h
src/domain/UBGraphicsItemDelegate.h
+2
-0
UBGraphicsPixmapItem.cpp
src/domain/UBGraphicsPixmapItem.cpp
+1
-1
domain.pri
src/domain/domain.pri
+4
-2
No files found.
resources/library/interactivities/Choisir.wgt/scripts/languages.js
View file @
c29832a5
...
...
@@ -6,20 +6,20 @@ var sankoreLang = {
"example_question"
:
"This is an example of the question"
,
"answer"
:
"This is an example of the answer"
,
"q"
:
"Q"
,
"add_new_question"
:
"Add new question ..."
,
"add_new_question"
:
"Add
a
new question ..."
,
"options"
:
"Options"
,
"close"
:
"Close"
,
"delete_question"
:
"Delete question"
,
"delete_answer"
:
"Delete a
nswer
"
,
"delete_question"
:
"Delete
the
question"
,
"delete_answer"
:
"Delete a
possibility
"
,
"right_answer"
:
"Right answer"
,
"template_question"
:
"Enter
your
question here ..."
,
"template_answer"
:
"Enter
the answer
here ..."
,
"add_answer"
:
"Add a
nswer
"
,
"template_question"
:
"Enter
a
question here ..."
,
"template_answer"
:
"Enter
a possibility
here ..."
,
"add_answer"
:
"Add a
possibility
"
,
"select_text"
:
"Choose the right answer"
,
"options_desc"
:
"
You can choose any of these three options of displaying your answers. See a short their description.
"
,
"radio_desc"
:
"
This option allow to choose one answer only and the answer
s are displayed as radio buttons."
,
"checkbox_desc"
:
"
This option allow to choose several answers and the answer
s are displayed as checkboxes."
,
"select_desc"
:
"
This option allow to chose one answer only and the answer
s are displayed as pull-down menu."
,
"options_desc"
:
"
Types of question
"
,
"radio_desc"
:
"
Option 1 : one right answer, possibilitie
s are displayed as radio buttons."
,
"checkbox_desc"
:
"
Option 2 : several right answers, possibilitie
s are displayed as checkboxes."
,
"select_desc"
:
"
Option 3 : one right answer, possibilitie
s are displayed as pull-down menu."
,
"a"
:
"A"
},
"ru"
:{
...
...
@@ -59,7 +59,7 @@ var sankoreLang = {
"delete_answer"
:
"Supprimer la possibilité"
,
"right_answer"
:
"Bonne réponse"
,
"template_question"
:
"Saisir la question ici ..."
,
"template_answer"
:
"Saisir
la réponse
ici ..."
,
"template_answer"
:
"Saisir
une possibilité
ici ..."
,
"add_answer"
:
"Ajouter une possibilité"
,
"select_text"
:
"Choisir la bonne réponse"
,
"options_desc"
:
"Types de questions"
,
...
...
resources/library/interactivities/associer_images.wgt/js/script.js
View file @
c29832a5
...
...
@@ -3,7 +3,7 @@ var sankoreLang = {
edit
:
"Edit"
,
short_desc
:
"Select the number
\"
three
\"
."
,
add
:
"Add new block"
,
enter
:
"Enter
your condition
here ..."
enter
:
"Enter
what to do
here ..."
};
//main function
...
...
resources/library/interactivities/categoriser_images.wgt/js/script.js
View file @
c29832a5
...
...
@@ -3,7 +3,7 @@ var sankoreLang = {
edit
:
"Edit"
,
first_desc
:
"Odd numbers"
,
second_desc
:
"Even numbers"
,
enter
:
"Enter
your
category name here ..."
,
enter
:
"Enter
a
category name here ..."
,
add
:
"Add new block"
};
...
...
resources/library/interactivities/categoriser_text.wgt/js/script.js
View file @
c29832a5
...
...
@@ -3,12 +3,12 @@ var sankoreLang = {
edit
:
"Edit"
,
first_desc
:
"Fruits"
,
second_desc
:
"Vegetables"
,
potatoes
:
"Potato
es
"
,
potatoes
:
"Potato"
,
carrot
:
"Carrot"
,
onion
:
"Onion"
,
apple
:
"Apple"
,
pear
:
"Pear"
,
enter
:
"Enter
your
category name here ..."
,
enter
:
"Enter
a
category name here ..."
,
add
:
"Add new block"
,
text
:
"Some text"
};
...
...
resources/library/interactivities/etudier.wgt/js/script.js
View file @
c29832a5
var
sankoreLang
=
{
display
:
"Display"
,
edit
:
"Edit"
,
text_content
:
"This is an example. Instead of this text you can put your own content
.
"
,
text_content
:
"This is an example. Instead of this text you can put your own content
or drag an drop a picture or an audio file
"
,
new_txt
:
"New text block"
,
new_slide
:
"This is new slide."
new_slide
:
"This is
a
new slide."
};
//some flags
...
...
resources/library/interactivities/ord-words.wgt/locales/fr/scripts/template2.js
View file @
c29832a5
...
...
@@ -29,7 +29,7 @@ function checkResponse()
var
sankoreLang
=
{
view
:
"Afficher"
,
edit
:
"Modifier"
,
example
:
"Il*
y*a*longtemps*,*nous*tions**la*mer*
."
example
:
"Il*
était*une*fois*..
."
};
var
word
=
""
;
...
...
resources/library/interactivities/ordonner_des_images.wgt/locales/fr/js/script.js
View file @
c29832a5
var
sankoreLang
=
{
display
:
"Affich
age
"
,
display
:
"Affich
er
"
,
edit
:
"Modifier"
,
short_desc
:
"Place
z
les photos dans l'ordre croissant."
,
short_desc
:
"Place
r
les photos dans l'ordre croissant."
,
add
:
"Nouveau bloc"
,
enter
:
"Saisi
ssez
votre texte ici ..."
enter
:
"Saisi
r
votre texte ici ..."
};
//main function
...
...
resources/library/interactivities/ordonner_des_letters.wgt/locales/fr/js/script.js
View file @
c29832a5
var
sankoreLang
=
{
display
:
"
D'affichage
"
,
display
:
"
Afficher
"
,
edit
:
"Modifier"
,
short_desc
:
"Ecoute
z le son et faire le bon mot
."
,
short_desc
:
"Ecoute
r le son et replacer les lettres dans l'ordre
."
,
add
:
"Nouveau bloc"
,
enter
:
"
Entrez votre description
ici ..."
,
enter
:
"
Saisir la consigne
ici ..."
,
example
:
"exemple"
};
...
...
resources/library/interactivities/selectionner.wgt/locales/fr/js/script.js
View file @
c29832a5
var
sankoreLang
=
{
display
:
"Affichage"
,
edit
:
"Modifier"
,
short_desc
:
"Sélectionne
z les animaux de la liste suivante
:"
,
short_desc
:
"Sélectionne
r les animaux dans la liste suivante
:"
,
add
:
"Nouveau bloc"
,
enter
:
"Saisi
ssez votr
e texte ici ..."
,
enter
:
"Saisi
r l
e texte ici ..."
,
cat
:
"chat"
,
ball
:
"balle"
,
shovel
:
"pelle"
,
...
...
resources/library/interactivities/spl-phrase.wgt/locales/fr/scripts/wcontainer.js
View file @
c29832a5
var
sankoreLang
=
{
view
:
"
D'affichage
"
,
view
:
"
Afficher
"
,
edit
:
"Modifier"
,
example
:
"
c'est un tas de mots qui ne devraient être répartis à par
t"
example
:
"
Ceci est une série de mots à séparer correctemen
t"
};
// if use the "view/edit" button or rely on the api instead
...
...
resources/library/interactivities/spl-text.wgt/locales/fr/scripts/wcontainer.js
View file @
c29832a5
var
sankoreLang
=
{
view
:
"
D'affichage
"
,
view
:
"
Afficher
"
,
edit
:
"Modifier"
,
example
:
"bonjour, ceci est la première phrase. salut, c'est la deuxième phrase. bonjour à nouveau, c'est la troisième phrase. bonjour, c'est la quatrième phrase. salut, désolé, je suis en retard, je suis la cinquième phrase."
};
...
...
resources/library/interactivities/spl-word.wgt/locales/fr/scripts/wcontainer.js
View file @
c29832a5
var
sankoreLang
=
{
view
:
"
D'affichage
"
,
view
:
"
Afficher
"
,
edit
:
"Modifier"
,
example
:
"so*phis*ti*qué"
};
...
...
src/board/UBBoardView.cpp
View file @
c29832a5
...
...
@@ -427,7 +427,8 @@ UBBoardView::mousePressEvent (QMouseEvent *event)
||
movingItem
->
type
()
==
UBGraphicsPDFItem
::
Type
||
movingItem
->
type
()
==
UBGraphicsPolygonItem
::
Type
||
movingItem
->
type
()
==
UBGraphicsCache
::
Type
||
movingItem
->
type
()
==
UBGraphicsTriangle
::
Type
)
||
movingItem
->
type
()
==
UBGraphicsTriangle
::
Type
||
movingItem
==
this
->
scene
()
->
backgroundObject
())
{
movingItem
=
NULL
;
QGraphicsView
::
mousePressEvent
(
event
);
...
...
src/core/UBSettings.cpp
View file @
c29832a5
...
...
@@ -377,6 +377,8 @@ void UBSettings::init()
KeyboardLocale
=
new
UBSetting
(
this
,
"Board"
,
"StartupKeyboardLocale"
,
0
);
swapControlAndDisplayScreens
=
new
UBSetting
(
this
,
"App"
,
"SwapControlAndDisplayScreens"
,
false
);
angleTolerance
=
new
UBSetting
(
this
,
"App"
,
"AngleTolerance"
,
4
);
}
...
...
@@ -1139,3 +1141,4 @@ QString UBSettings::replaceWildcard(QString& path)
return
result
;
}
src/core/UBSettings.h
View file @
c29832a5
...
...
@@ -98,7 +98,6 @@ class UBSettings : public QObject
void
init
();
//user directories
static
QString
userDataDirectory
();
static
QString
userDocumentDirectory
();
...
...
@@ -326,6 +325,8 @@ class UBSettings : public QObject
UBSetting
*
KeyboardLocale
;
UBSetting
*
swapControlAndDisplayScreens
;
UBSetting
*
angleTolerance
;
public
slots
:
void
setPenWidthIndex
(
int
index
);
...
...
src/domain/UBGraphicsDelegateFrame.cpp
View file @
c29832a5
...
...
@@ -29,8 +29,6 @@
#include "core/memcheck.h"
qreal
const
UBGraphicsDelegateFrame
::
mAngleTolerance
=
6
;
UBGraphicsDelegateFrame
::
UBGraphicsDelegateFrame
(
UBGraphicsItemDelegate
*
pDelegate
,
QRectF
pRect
,
qreal
pFrameWidth
,
bool
respectRatio
)
:
QGraphicsRectItem
(),
QObject
(
pDelegate
)
,
mCurrentTool
(
None
)
...
...
@@ -48,7 +46,11 @@ UBGraphicsDelegateFrame::UBGraphicsDelegateFrame(UBGraphicsItemDelegate* pDelega
,
mTotalTranslateX
(
0
)
,
mTotalTranslateY
(
0
)
,
mOperationMode
(
Scaling
)
,
mMirrorX
(
false
)
,
mMirrorY
(
false
)
{
mAngleTolerance
=
UBSettings
::
settings
()
->
angleTolerance
->
get
().
toReal
();
setFlag
(
QGraphicsItem
::
ItemSendsGeometryChanges
,
true
);
setAcceptedMouseButtons
(
Qt
::
LeftButton
);
...
...
@@ -69,9 +71,11 @@ UBGraphicsDelegateFrame::UBGraphicsDelegateFrame(UBGraphicsItemDelegate* pDelega
mBottomResizeGrip
=
new
QGraphicsRectItem
(
this
);
mBottomResizeGrip
->
setPen
(
Qt
::
NoPen
);
mLeftResizeGrip
=
new
QGraphicsRectItem
(
this
);
mLeftResizeGrip
->
setToolTip
(
"left"
);
mLeftResizeGrip
->
setPen
(
Qt
::
NoPen
);
mRightResizeGrip
=
new
QGraphicsRectItem
(
this
);
mRightResizeGrip
->
setPen
(
Qt
::
NoPen
);
mRightResizeGrip
->
setToolTip
(
"Right"
);
mTopResizeGrip
=
new
QGraphicsRectItem
(
this
);
mTopResizeGrip
->
setPen
(
Qt
::
NoPen
);
...
...
@@ -86,11 +90,14 @@ UBGraphicsDelegateFrame::UBGraphicsDelegateFrame(UBGraphicsItemDelegate* pDelega
positionHandles
();
this
->
setAcceptHoverEvents
(
true
);
angleWidget
=
new
UBAngleWidget
();
}
UBGraphicsDelegateFrame
::~
UBGraphicsDelegateFrame
()
{
delete
angleWidget
;
// NOOP
}
...
...
@@ -156,14 +163,39 @@ void UBGraphicsDelegateFrame::initializeTransform()
QPointF
topRight
=
itemTransform
.
map
(
itemRect
.
topRight
());
QPointF
bottomLeft
=
itemTransform
.
map
(
itemRect
.
bottomLeft
());
qreal
horizontalFlip
=
(
topLeft
.
x
()
>
topRight
.
x
())
?
-
1
:
1
;
mMirrorX
=
horizontalFlip
<
0
;
if
(
horizontalFlip
<
0
){
// why this is because of the way of calculating the translations that checks which side is the most is the
// nearest instead of checking which one is the left side.
QPointF
tmp
=
topLeft
;
topLeft
=
topRight
;
topRight
=
tmp
;
// because of the calculation of the height is done by lenght and not deltaY
bottomLeft
=
itemTransform
.
map
(
itemRect
.
bottomRight
());
}
qreal
verticalFlip
=
(
bottomLeft
.
y
()
<
topLeft
.
y
())
?
-
1
:
1
;
// not sure that is usefull
mMirrorY
=
verticalFlip
<
0
;
if
(
verticalFlip
<
0
&&
!
mMirrorX
){
topLeft
=
itemTransform
.
map
(
itemRect
.
bottomLeft
());
topRight
=
itemTransform
.
map
(
itemRect
.
bottomRight
());
bottomLeft
=
itemTransform
.
map
(
itemRect
.
topLeft
());
}
QLineF
topLine
(
topLeft
,
topRight
);
QLineF
leftLine
(
topLeft
,
bottomLeft
);
qreal
width
=
topLine
.
length
();
qreal
height
=
leftLine
.
length
();
mAngle
=
topLine
.
angle
();
mTotalScaleX
=
width
/
itemRect
.
width
();
mTotalScaleY
=
height
/
itemRect
.
height
();
//the fact the the lenght is used we loose the horizontalFlip information
// a better way to do this is using DeltaX that preserve the direction information.
mTotalScaleX
=
(
width
/
itemRect
.
width
())
*
horizontalFlip
;
mTotalScaleY
=
height
/
itemRect
.
height
()
*
verticalFlip
;
QTransform
tr
;
QPointF
center
=
delegated
()
->
boundingRect
().
center
();
...
...
@@ -192,6 +224,7 @@ void UBGraphicsDelegateFrame::mousePressEvent(QGraphicsSceneMouseEvent *event)
mAngleOffset
=
0
;
mInitialTransform
=
buildTransform
();
mCurrentTool
=
toolFromPos
(
event
->
pos
());
event
->
accept
();
...
...
@@ -205,9 +238,16 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
qreal
moveY
=
-
move
.
length
()
*
sin
((
move
.
angle
()
-
mAngle
)
*
PI
/
180
);
qreal
width
=
delegated
()
->
boundingRect
().
width
()
*
mTotalScaleX
;
qreal
height
=
delegated
()
->
boundingRect
().
height
()
*
mTotalScaleY
;
mTranslateX
=
moveX
;
if
(
mOperationMode
==
Scaling
)
{
// // Hide the buttons
// mDelegate->setButtonsVisible(false);
// mResizing = true;
// Perform the resize
if
(
resizingBottomRight
())
{
// -----------------------------------------------------
...
...
@@ -243,8 +283,9 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
scaleX
=
(
width
+
moveX
)
/
width
;
}
if
(
mDelegate
->
isFlippable
()
&&
qAbs
(
scaleX
)
!=
0
){
if
((
width
*
qAbs
(
scaleX
))
<
2
*
mFrameWidth
){
if
((
qAbs
(
width
*
scaleX
))
<
2
*
mFrameWidth
){
bool
negative
=
(
scaleX
<
0
)
?
true
:
false
;
//mMirrorX = (negative?mMirrorX:!mMirrorX);
if
(
negative
){
scaleX
=
-
2
*
mFrameWidth
/
width
;
}
else
{
...
...
@@ -269,8 +310,9 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
}
if
(
mDelegate
->
isFlippable
()
&&
qAbs
(
scaleY
)
!=
0
){
if
((
height
*
qAbs
(
scaleY
))
<
2
*
mFrameWidth
){
if
((
qAbs
(
height
*
scaleY
))
<
2
*
mFrameWidth
){
bool
negative
=
(
scaleY
<
0
)
?
true
:
false
;
//mMirrorY = (negative?mMirrorY:!mMirrorY);
if
(
negative
){
scaleY
=
-
2
*
mFrameWidth
/
width
;
}
else
{
...
...
@@ -281,11 +323,13 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
}
else
if
(
scaleY
>
1
||
(
height
*
scaleY
)
>
2
*
mFrameWidth
)
{
mScaleY
=
scaleY
;
if
(
resizingTop
()){
mTranslateY
=
moveY
;
}
}
}
}
}
else
if
(
mOperationMode
==
Resizing
)
{
UBResizableGraphicsItem
*
resizableItem
=
dynamic_cast
<
UBResizableGraphicsItem
*>
(
delegated
());
...
...
@@ -331,7 +375,9 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
QLineF
startLine
(
sceneBoundingRect
().
center
(),
event
->
lastScenePos
());
QLineF
currentLine
(
sceneBoundingRect
().
center
(),
event
->
scenePos
());
mAngle
+=
startLine
.
angleTo
(
currentLine
);
if
((
int
)
mAngle
%
45
>=
45
-
mAngleTolerance
||
(
int
)
mAngle
%
45
<=
mAngleTolerance
)
if
((
int
)
mAngle
%
45
>=
45
-
mAngleTolerance
||
(
int
)
mAngle
%
45
<=
mAngleTolerance
)
{
mAngle
=
qRound
(
mAngle
/
45
)
*
45
;
mAngleOffset
+=
startLine
.
angleTo
(
currentLine
);
...
...
@@ -341,6 +387,23 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
mAngleOffset
=
0
;
}
}
else
if
((
int
)
mAngle
%
30
>=
30
-
mAngleTolerance
||
(
int
)
mAngle
%
30
<=
mAngleTolerance
)
{
mAngle
=
qRound
(
mAngle
/
30
)
*
30
;
mAngleOffset
+=
startLine
.
angleTo
(
currentLine
);
if
((
int
)
mAngleOffset
%
360
>
mAngleTolerance
&&
(
int
)
mAngleOffset
%
360
<
360
-
mAngleTolerance
)
{
mAngle
+=
mAngleOffset
;
mAngleOffset
=
0
;
}
}
if
(
!
angleWidget
->
isVisible
())
angleWidget
->
show
();
angleWidget
->
setText
(
QString
::
number
((
int
)
mAngle
%
360
));
angleWidget
->
update
();
}
else
if
(
moving
())
...
...
@@ -410,6 +473,9 @@ QTransform UBGraphicsDelegateFrame::buildTransform()
void
UBGraphicsDelegateFrame
::
mouseReleaseEvent
(
QGraphicsSceneMouseEvent
*
event
)
{
if
(
angleWidget
->
isVisible
())
angleWidget
->
hide
();
updateResizeCursors
();
mDelegate
->
commitUndoStep
();
...
...
@@ -421,6 +487,12 @@ void UBGraphicsDelegateFrame::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
mCurrentTool
=
None
;
QGraphicsRectItem
::
mouseReleaseEvent
(
event
);
// Show the buttons
if
(
isResizing
()){
mResizing
=
false
;
}
mDelegate
->
setButtonsVisible
(
true
);
}
...
...
@@ -464,6 +536,14 @@ void UBGraphicsDelegateFrame::positionHandles()
QPointF
bottomLeft
=
itemTransform
.
map
(
itemRect
.
bottomLeft
());
QPointF
center
=
itemTransform
.
map
(
itemRect
.
center
());
// Handle the mirroring
if
(
topLeft
.
x
()
>
topRight
.
x
()){
QPointF
tmp
=
topRight
;
topRight
=
topLeft
;
topLeft
=
tmp
;
bottomLeft
.
setX
(
topLeft
.
x
());
}
QLineF
topLine
(
topLeft
,
topRight
);
qreal
angle
=
topLine
.
angle
();
qreal
width
=
topLine
.
length
();
...
...
@@ -507,17 +587,8 @@ void UBGraphicsDelegateFrame::positionHandles()
mBottomRightResizeGripSvgItem
->
setPos
(
rect
().
right
()
-
brRect
.
width
(),
rect
().
bottom
()
-
brRect
.
height
());
mBottomResizeGripSvgItem
->
setPos
(
rect
().
center
().
x
()
-
bRect
.
width
()
/
2
,
rect
().
bottom
()
-
bRect
.
height
());
if
(
0
<=
mScaleX
){
mLeftResizeGripSvgItem
->
setPos
(
rect
().
left
(),
rect
().
center
().
y
()
-
lRect
.
height
()
/
2
);
mRightResizeGripSvgItem
->
setPos
(
rect
().
right
()
-
rRect
.
width
(),
rect
().
center
().
y
()
-
rRect
.
height
()
/
2
);
}
else
{
mLeftResizeGripSvgItem
->
setPos
(
rect
().
right
()
-
rRect
.
width
(),
rect
().
center
().
y
()
-
lRect
.
height
()
/
2
);
mRightResizeGripSvgItem
->
setPos
(
rect
().
left
()
,
rect
().
center
().
y
()
-
rRect
.
height
()
/
2
);
}
if
(
0
<
mScaleY
){
}
mTopResizeGripSvgItem
->
setPos
(
rect
().
center
().
x
()
-
trRect
.
width
()
/
2
,
rect
().
y
());
mRotateButton
->
setPos
(
rect
().
right
()
-
mFrameWidth
-
5
,
rect
().
top
()
+
5
);
...
...
@@ -571,14 +642,35 @@ UBGraphicsDelegateFrame::FrameTool UBGraphicsDelegateFrame::toolFromPos(QPointF
return
None
;
else
if
(
bottomRightResizeGripRect
().
contains
(
pos
))
return
ResizeBottomRight
;
else
if
(
bottomResizeGripRect
().
contains
(
pos
))
else
if
(
bottomResizeGripRect
().
contains
(
pos
)){
if
(
mMirrorY
){
return
ResizeTop
;
}
else
{
return
ResizeBottom
;
else
if
(
leftResizeGripRect
().
contains
(
pos
))
}
}
else
if
(
leftResizeGripRect
().
contains
(
pos
)){
if
(
mMirrorX
){
return
ResizeRight
;
}
else
{
return
ResizeLeft
;
else
if
(
rightResizeGripRect
().
contains
(
pos
))
}
return
ResizeLeft
;
}
else
if
(
rightResizeGripRect
().
contains
(
pos
)){
if
(
mMirrorX
){
return
ResizeLeft
;
}
else
{
return
ResizeRight
;
else
if
(
topResizeGripRect
().
contains
(
pos
))
}
}
else
if
(
topResizeGripRect
().
contains
(
pos
)){
if
(
mMirrorY
){
return
ResizeBottom
;
}
else
{
return
ResizeTop
;
}
}
else
if
(
rotateButtonBounds
().
contains
(
pos
)
&&
mDelegate
&&
mDelegate
->
canRotate
())
return
Rotate
;
else
...
...
@@ -621,3 +713,21 @@ QRectF UBGraphicsDelegateFrame::rotateButtonBounds() const
return
QRectF
(
rect
().
right
()
-
mFrameWidth
,
rect
().
top
(),
mFrameWidth
,
mFrameWidth
);
}
void
UBGraphicsDelegateFrame
::
refreshGeometry
()
{
// Here we want to have the left on the left, the right on the right, the top on the top and the bottom on the bottom!
QRectF
itemRect
=
delegated
()
->
boundingRect
();
QTransform
itemTransform
=
delegated
()
->
sceneTransform
();
QPointF
topLeft
=
itemTransform
.
map
(
itemRect
.
topLeft
());
QPointF
topRight
=
itemTransform
.
map
(
itemRect
.
topRight
());
QPointF
bottomLeft
=
itemTransform
.
map
(
itemRect
.
bottomLeft
());
QPointF
center
=
itemTransform
.
map
(
itemRect
.
center
());
QLineF
topLine
(
topLeft
,
topRight
);
qreal
angle
=
topLine
.
angle
();
qreal
width
=
topLine
.
length
();
QLineF
leftLine
(
topLeft
,
bottomLeft
);
qreal
height
=
leftLine
.
length
();
setRect
(
topRight
.
x
()
-
mFrameWidth
,
topLeft
.
y
()
-
mFrameWidth
,
width
+
2
*
mFrameWidth
,
height
+
2
*
mFrameWidth
);
}
src/domain/UBGraphicsDelegateFrame.h
View file @
c29832a5
...
...
@@ -18,6 +18,7 @@
#include <QtGui>
#include "core/UB.h"
#include "domain/UBAngleWidget.h"
class
QGraphicsSceneMouseEvent
;
class
UBGraphicsItemDelegate
;
...
...
@@ -47,6 +48,7 @@ class UBGraphicsDelegateFrame: public QGraphicsRectItem, public QObject
enum
OperationMode
{
Scaling
,
Resizing
};
void
setOperationMode
(
OperationMode
pMode
)
{
mOperationMode
=
pMode
;}
bool
isResizing
(){
return
mResizing
;}
private
:
QRectF
bottomRightResizeGripRect
()
const
;
...
...
@@ -69,8 +71,8 @@ class UBGraphicsDelegateFrame: public QGraphicsRectItem, public QObject
void
initializeTransform
();
enum
FrameTool
{
None
,
Move
,
Rotate
,
ResizeBottomRight
,
ResizeTop
,
ResizeRight
,
ResizeBottom
,
ResizeLeft
};
FrameTool
toolFromPos
(
QPointF
pos
);
void
refreshGeometry
();
FrameTool
mCurrentTool
;
UBGraphicsItemDelegate
*
mDelegate
;
...
...
@@ -90,7 +92,8 @@ class UBGraphicsDelegateFrame: public QGraphicsRectItem, public QObject
qreal
mTranslateY
;
qreal
mTotalTranslateX
;
qreal
mTotalTranslateY
;
static
const
qreal
mAngleTolerance
;
qreal
mAngleTolerance
;
QRect
mAngleRect
;
QPointF
mStartingPoint
;
QTransform
mInitialTransform
;
...
...
@@ -111,5 +114,13 @@ class UBGraphicsDelegateFrame: public QGraphicsRectItem, public QObject
OperationMode
mOperationMode
;
QGraphicsItem
*
delegated
();
bool
mMirrorX
;
bool
mMirrorY
;
bool
mResizing
;
bool
mMirroredXAtStart
;
bool
mMirroredYAtStart
;
UBAngleWidget
*
angleWidget
;
};
#endif
/* UBGRAPHICSDELEGATEFRAME_H_ */
src/domain/UBGraphicsItemDelegate.cpp
View file @
c29832a5
...
...
@@ -249,7 +249,9 @@ void UBGraphicsItemDelegate::positionHandles()
mDelegated
->
scene
()
->
addItem
(
mDeleteButton
);
}
if
(
!
mFrame
->
isResizing
()){
mDeleteButton
->
show
();
}
bool
shownOnDisplay
=
mDelegated
->
data
(
UBGraphicsItemData
::
ItemLayerType
).
toInt
()
!=
UBItemLayerType
::
Control
;
showHide
(
shownOnDisplay
);
...
...
@@ -274,9 +276,11 @@ void UBGraphicsItemDelegate::positionHandles()
if
(
mDelegated
->
scene
())
mDelegated
->
scene
()
->
addItem
(
button
);
}
if
(
!
mFrame
->
isResizing
()){
button
->
show
();
button
->
setZValue
(
delegated
()
->
zValue
());
}
}
}
else
{
foreach
(
DelegateButton
*
button
,
mButtons
)
button
->
hide
();
...
...
@@ -484,3 +488,10 @@ bool UBGraphicsItemDelegate::isFlippable()
{
return
mFlippable
;
}
void
UBGraphicsItemDelegate
::
setButtonsVisible
(
bool
visible
)
{
foreach
(
DelegateButton
*
pButton
,
mButtons
){
pButton
->
setVisible
(
visible
);
}
}
src/domain/UBGraphicsItemDelegate.h
View file @
c29832a5
...
...
@@ -139,6 +139,8 @@ class UBGraphicsItemDelegate : public QObject
void
setFlippable
(
bool
flippable
);
bool
isFlippable
();
void
setButtonsVisible
(
bool
visible
);
signals
:
void
showOnDisplayChanged
(
bool
shown
);
void
lockChanged
(
bool
locked
);
...
...
src/domain/UBGraphicsPixmapItem.cpp
View file @
c29832a5
...
...
@@ -32,7 +32,7 @@ UBGraphicsPixmapItem::UBGraphicsPixmapItem(QGraphicsItem* parent)
mDelegate
->
init
();
// NOTE: Do not remove this code, I'm just doing a backup of my changes! thx..
//
mDelegate->setFlippable(true);
mDelegate
->
setFlippable
(
true
);
setData
(
UBGraphicsItemData
::
ItemLayerType
,
UBItemLayerType
::
Object
);
setTransformationMode
(
Qt
::
SmoothTransformation
);
...
...
src/domain/domain.pri
View file @
c29832a5
...
...
@@ -22,7 +22,8 @@ HEADERS += src/domain/UBGraphicsScene.h \
src/domain/UBGraphicsMediaItem.h \
src/domain/UBGraphicsAudioItem.h \
src/domain/UBGraphicsAudioItemDelegate.h \
src/domain/UBAbstractUndoCommand.h
src/domain/UBAbstractUndoCommand.h\
src/domain/UBAngleWidget.h
HEADERS += src/domain/UBGraphicsItemDelegate.h \
src/domain/UBGraphicsVideoItemDelegate.h \
...
...
@@ -54,7 +55,8 @@ SOURCES += src/domain/UBGraphicsScene.cpp \
src/domain/UBGraphicsMediaItem.cpp \
src/domain/UBGraphicsAudioItem.cpp \
src/domain/UBGraphicsAudioItemDelegate.cpp \
src/domain/UBAbstractUndoCommand.cpp
src/domain/UBAbstractUndoCommand.cpp \
src/domain/UBAngleWidget.cpp
SOURCES += src/domain/UBGraphicsItemDelegate.cpp \
src/domain/UBGraphicsVideoItemDelegate.cpp \
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment