Panel d'elements : ajout d'actions dans le menu contextuel pour changer l'ordre des schemas.

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@864 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavier
2010-02-27 20:35:32 +00:00
parent 16f47a92d2
commit f421387b04
17 changed files with 192 additions and 47 deletions

BIN
ico/16x16/go-down.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 623 B

BIN
ico/16x16/go-up.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 672 B

BIN
ico/22x22/go-down.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 892 B

BIN
ico/22x22/go-up.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 929 B

View File

@@ -44,7 +44,9 @@
<file>ico/16x16/endline-triangle.png</file>
<file>ico/16x16/folder-new.png</file>
<file>ico/16x16/folder.png</file>
<file>ico/16x16/go-down.png</file>
<file>ico/16x16/go-home.png</file>
<file>ico/16x16/go-up.png</file>
<file>ico/16x16/ground.png</file>
<file>ico/16x16/item_cancel.png</file>
<file>ico/16x16/item_copy.png</file>
@@ -118,7 +120,9 @@
<file>ico/22x22/folder-delete.png</file>
<file>ico/22x22/folder-edit.png</file>
<file>ico/22x22/folder-new.png</file>
<file>ico/22x22/go-down.png</file>
<file>ico/22x22/go-home.png</file>
<file>ico/22x22/go-up.png</file>
<file>ico/22x22/hotspot.png</file>
<file>ico/22x22/landscape.png</file>
<file>ico/22x22/line.png</file>

View File

@@ -913,8 +913,12 @@ void ElementsPanel::diagramOrderChanged(QETProject *project, int from, int to) {
if (!moved_qtwi_diagram) return;
// enleve le QTWI et le reinsere au bon endroit
bool was_selected = moved_qtwi_diagram -> isSelected();
qtwi_project -> removeChild(moved_qtwi_diagram);
qtwi_project -> insertChild(to, moved_qtwi_diagram);
if (was_selected) {
setCurrentItem(moved_qtwi_diagram);
}
}
/**

View File

@@ -62,6 +62,8 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) {
prj_prop_diagram = new QAction(QET::Icons::DialogInformation, tr("Propri\351t\351s du sch\351ma"), this);
prj_add_diagram = new QAction(QET::Icons::DiagramAdd, tr("Ajouter un sch\351ma"), this);
prj_del_diagram = new QAction(QET::Icons::DiagramDelete, tr("Supprimer ce sch\351ma"), this);
prj_move_diagram_up = new QAction(QET::Icons::GoUp, tr("Remonter ce sch\351ma"), this);
prj_move_diagram_down = new QAction(QET::Icons::GoDown, tr("Abaisser ce sch\351ma"), this);
move_elements_ = new QAction(QET::Icons::MoveFile, tr("D\351placer dans cette cat\351gorie"), this);
copy_elements_ = new QAction(QET::Icons::CopyFile, tr("Copier dans cette cat\351gorie"), this);
cancel_elements_ = new QAction(QET::Icons::Cancel, tr("Annuler"), this);
@@ -98,6 +100,8 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) {
connect(prj_prop_diagram, SIGNAL(triggered()), this, SLOT(editDiagramProperties()));
connect(prj_add_diagram, SIGNAL(triggered()), this, SLOT(newDiagram()));
connect(prj_del_diagram, SIGNAL(triggered()), this, SLOT(deleteDiagram()));
connect(prj_move_diagram_up, SIGNAL(triggered()), this, SLOT(moveDiagramUp()));
connect(prj_move_diagram_down, SIGNAL(triggered()), this, SLOT(moveDiagramDown()));
connect(move_elements_, SIGNAL(triggered()), this, SLOT(moveElements()));
connect(copy_elements_, SIGNAL(triggered()), this, SLOT(copyElements()));
@@ -212,6 +216,24 @@ void ElementsPanelWidget::deleteDiagram() {
}
}
/**
Emet le signal requestForDiagramMoveUp avec le schema selectionne
*/
void ElementsPanelWidget::moveDiagramUp() {
if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) {
emit(requestForDiagramMoveUp(selected_diagram));
}
}
/**
Emet le signal requestForDiagramMoveDown avec le schema selectionne
*/
void ElementsPanelWidget::moveDiagramDown() {
if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) {
emit(requestForDiagramMoveDown(selected_diagram));
}
}
/**
Appelle l'assistant de creation de nouvel element
*/
@@ -281,10 +303,17 @@ void ElementsPanelWidget::updateButtons() {
bool is_writable = !(elements_panel -> selectedProject() -> isReadOnly());
prj_add_diagram -> setEnabled(is_writable);
} else if (elements_panel -> selectedItemIsADiagram()) {
bool is_writable = !(elements_panel -> selectedDiagram() -> project() -> isReadOnly());
prj_del_diagram -> setEnabled(is_writable);
}
Diagram *selected_diagram = elements_panel -> selectedDiagram();
QETProject *selected_diagram_project = selected_diagram -> project();
bool is_writable = !(selected_diagram_project -> isReadOnly());
int project_diagrams_count = selected_diagram_project -> diagrams().count();
int diagram_position = selected_diagram_project -> diagrams().indexOf(selected_diagram);
prj_del_diagram -> setEnabled(is_writable);
prj_move_diagram_up -> setEnabled(is_writable && diagram_position > 0);
prj_move_diagram_down -> setEnabled(is_writable && diagram_position < project_diagrams_count - 1);
}
}
/**
@@ -321,6 +350,7 @@ void ElementsPanelWidget::handleContextMenu(const QPoint &pos) {
QTreeWidgetItem *item = elements_panel -> itemAt(pos);
if (!item) return;
updateButtons();
context_menu -> clear();
if (elements_panel -> itemHasLocation(item)) {
@@ -351,6 +381,8 @@ void ElementsPanelWidget::handleContextMenu(const QPoint &pos) {
} else if (elements_panel -> itemIsADiagram(item)) {
context_menu -> addAction(prj_prop_diagram);
context_menu -> addAction(prj_del_diagram);
context_menu -> addAction(prj_move_diagram_up);
context_menu -> addAction(prj_move_diagram_down);
}
}

View File

@@ -42,7 +42,7 @@ class ElementsPanelWidget : public QWidget {
QAction *new_category, *edit_category, *delete_category;
QAction *delete_collection;
QAction *new_element, *import_element, *edit_element, *delete_element;
QAction *prj_close, *prj_edit_prop, *prj_prop_diagram, *prj_add_diagram, *prj_del_diagram;
QAction *prj_close, *prj_edit_prop, *prj_prop_diagram, *prj_add_diagram, *prj_del_diagram, *prj_move_diagram_up, *prj_move_diagram_down;
QAction *copy_elements_, *move_elements_, *cancel_elements_;
QMenu *context_menu;
QAction *erase_textfield;
@@ -59,6 +59,8 @@ class ElementsPanelWidget : public QWidget {
void requestForProjectPropertiesEdition(QETProject *);
void requestForDiagramPropertiesEdition(Diagram *);
void requestForDiagramDeletion(Diagram *);
void requestForDiagramMoveUp(Diagram *);
void requestForDiagramMoveDown(Diagram *);
public slots:
void clearFilterTextField();
@@ -68,6 +70,8 @@ class ElementsPanelWidget : public QWidget {
void editDiagramProperties();
void newDiagram();
void deleteDiagram();
void moveDiagramUp();
void moveDiagramDown();
void newCategory();
void newElement();
void importElement();

View File

@@ -490,6 +490,48 @@ void ProjectView::editDiagramProperties(Diagram *diagram) {
editDiagramProperties(findDiagram(diagram));
}
/**
Deplace le schema diagram_view vers le haut / la gauche
*/
void ProjectView::moveDiagramUp(DiagramView *diagram_view) {
if (!diagram_view) return;
int diagram_view_position = diagram_ids_.key(diagram_view);
if (!diagram_view_position) {
// le schema est le premier du projet
return;
}
tabs_ -> tabBar() -> moveTab(diagram_view_position, diagram_view_position - 1);
}
/**
Deplace le schema diagram vers le haut / la gauche
*/
void ProjectView::moveDiagramUp(Diagram *diagram) {
moveDiagramUp(findDiagram(diagram));
}
/**
Deplace le schema diagram_view vers le bas / la droite
*/
void ProjectView::moveDiagramDown(DiagramView *diagram_view) {
if (!diagram_view) return;
int diagram_view_position = diagram_ids_.key(diagram_view);
if (diagram_view_position + 1 == diagram_ids_.count()) {
// le schema est le dernier du projet
return;
}
tabs_ -> tabBar() -> moveTab(diagram_view_position, diagram_view_position + 1);
}
/**
Deplace le schema diagram vers le bas / la droite
*/
void ProjectView::moveDiagramDown(Diagram *diagram) {
moveDiagramDown(findDiagram(diagram));
}
/**
Ce slot demarre un dialogue permettant a l'utilisateur de parametrer et de
lancer l'impression de toute ou partie du projet.

View File

@@ -54,6 +54,10 @@ class ProjectView : public QWidget {
void editCurrentDiagramProperties();
void editDiagramProperties(DiagramView *);
void editDiagramProperties(Diagram *);
void moveDiagramUp(DiagramView *);
void moveDiagramUp(Diagram *);
void moveDiagramDown(DiagramView *);
void moveDiagramDown(Diagram *);
void printProject();
void exportProject();
bool save();

View File

@@ -72,6 +72,8 @@ QETDiagramEditor::QETDiagramEditor(const QStringList &files, QWidget *parent) :
connect(pa, SIGNAL(requestForDiagramPropertiesEdition(Diagram *)), this, SLOT(editDiagramProperties(Diagram *)));
connect(pa, SIGNAL(requestForNewDiagram(QETProject *)), this, SLOT(addDiagramToProject(QETProject *)));
connect(pa, SIGNAL(requestForDiagramDeletion(Diagram *)), this, SLOT(removeDiagram(Diagram *)));
connect(pa, SIGNAL(requestForDiagramMoveUp(Diagram *)), this, SLOT(moveDiagramUp(Diagram *)));
connect(pa, SIGNAL(requestForDiagramMoveDown(Diagram *)), this, SLOT(moveDiagramDown(Diagram *)));
qdw_undo = new QDockWidget(tr("Annulations", "dock title"));
qdw_undo -> setObjectName("diagram_undo");
@@ -1606,6 +1608,44 @@ void QETDiagramEditor::removeDiagram(Diagram *diagram) {
}
}
/**
Change l'ordre des schemas d'un projet, en decalant le schema vers le haut /
la gauche
@param diagram Schema a decaler vers le haut / la gauche
*/
void QETDiagramEditor::moveDiagramUp(Diagram *diagram) {
if (!diagram) return;
// recupere le projet contenant le schema
if (QETProject *diagram_project = diagram -> project()) {
if (diagram_project -> isReadOnly()) return;
// recupere la vue sur ce projet
if (ProjectView *project_view = findProject(diagram_project)) {
project_view -> moveDiagramUp(diagram);
}
}
}
/**
Change l'ordre des schemas d'un projet, en decalant le schema vers le bas /
la droite
@param diagram Schema a decaler vers le bas / la droite
*/
void QETDiagramEditor::moveDiagramDown(Diagram *diagram) {
if (!diagram) return;
// recupere le projet contenant le schema
if (QETProject *diagram_project = diagram -> project()) {
if (diagram_project -> isReadOnly()) return;
// recupere la vue sur ce projet
if (ProjectView *project_view = findProject(diagram_project)) {
project_view -> moveDiagramDown(diagram);
}
}
}
/**
Nettoie le projet courant
*/

View File

@@ -141,6 +141,8 @@ class QETDiagramEditor : public QMainWindow {
void addDiagramToProject(QETProject *);
void removeDiagram(Diagram *);
void removeDiagramFromProject();
void moveDiagramUp(Diagram *);
void moveDiagramDown(Diagram *);
void cleanCurrentProject();
void diagramWasAdded(DiagramView *);
void diagramIsAboutToBeRemoved(DiagramView *);

View File

@@ -80,6 +80,8 @@ namespace QET {
QIcon Forbidden;
QIcon FullScreenEnter;
QIcon FullScreenExit;
QIcon GoDown;
QIcon GoUp;
QIcon Ground;
QIcon Hide;
QIcon Home;
@@ -240,6 +242,10 @@ void QET::Icons::initIcons() {
FullScreenEnter .addFile(":/ico/22x22/view-fullscreen.png");
FullScreenExit .addFile(":/ico/16x16/view-restore.png");
FullScreenExit .addFile(":/ico/22x22/view-restore.png");
GoDown .addFile(":/ico/16x16/go-down.png");
GoDown .addFile(":/ico/22x22/go-down.png");
GoUp .addFile(":/ico/16x16/go-up.png");
GoUp .addFile(":/ico/22x22/go-up.png");
Ground .addFile(":/ico/16x16/ground.png");
Hide .addFile(":/ico/16x16/masquer.png");
Home .addFile(":/ico/16x16/go-home.png");

View File

@@ -88,6 +88,8 @@ namespace QET {
extern QIcon Forbidden;
extern QIcon FullScreenEnter;
extern QIcon FullScreenExit;
extern QIcon GoDown;
extern QIcon GoUp;
extern QIcon Ground;
extern QIcon Hide;
extern QIcon Home;

View File

@@ -45,6 +45,7 @@ class QETTabBar : public QTabBar {
bool isMovable() const;
bool isVertical() const;
bool isHorizontal() const;
void moveTab(int, int);
protected:
virtual void tabInserted(int);
@@ -65,7 +66,6 @@ class QETTabBar : public QTabBar {
private:
bool mustMoveTab(int, int, const QPoint &) const;
void moveTab(int, int);
int tabForPressedPosition(const QPoint &);
int tabForMovedPosition(const QPoint &);
bool posMatchesTabRect(const QRect &, const QPoint &) const;

View File

@@ -66,6 +66,10 @@ bool QETTabWidget::isMovable() const {
#endif
}
QTabBar *QETTabWidget::tabBar() const {
return(QTabWidget::tabBar());
}
/**
Gere les evenements rollette sur cette barre d'onglets
@param event Evenement rollette

View File

@@ -40,6 +40,7 @@ class QETTabWidget : public QTabWidget {
public:
void setMovable(bool);
bool isMovable() const;
QTabBar *tabBar() const;
protected:
void wheelEvent(QWheelEvent *);