mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-23 18:50:52 +01:00
Amelioration de la reactivite lors de la selection dans les schemas
Ameliorations mineures dans l'interface git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@195 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
4
qet.cpp
4
qet.cpp
@@ -135,8 +135,8 @@ QString QET::ElementsAndConductorsSentence(int elements_count, int conductors_co
|
|||||||
if (elements_count) {
|
if (elements_count) {
|
||||||
text += QString::number(elements_count) + " ";
|
text += QString::number(elements_count) + " ";
|
||||||
text += elements_count > 1 ? QObject::tr("\351l\351ments") : QObject::tr("\351l\351ment");
|
text += elements_count > 1 ? QObject::tr("\351l\351ments") : QObject::tr("\351l\351ment");
|
||||||
if (conductors_count ^ texts_count) text += QObject::tr(" et ");
|
if (conductors_count && texts_count) text += QObject::tr(", ");
|
||||||
else if (conductors_count && texts_count) text += QObject::tr(", ");
|
else if (conductors_count || texts_count) text += QObject::tr(" et ");
|
||||||
}
|
}
|
||||||
if (conductors_count) {
|
if (conductors_count) {
|
||||||
text += QString::number(conductors_count) + " ";
|
text += QString::number(conductors_count) + " ";
|
||||||
|
|||||||
@@ -73,8 +73,9 @@ QETDiagramEditor::QETDiagramEditor(const QStringList &files, QWidget *parent) :
|
|||||||
setWindowState(Qt::WindowMaximized);
|
setWindowState(Qt::WindowMaximized);
|
||||||
|
|
||||||
// connexions signaux / slots pour une interface sensee
|
// connexions signaux / slots pour une interface sensee
|
||||||
|
connect(&workspace, SIGNAL(windowActivated(QWidget *)), this, SLOT(slot_updateWindowsMenu()));
|
||||||
connect(&workspace, SIGNAL(windowActivated(QWidget *)), this, SLOT(slot_updateActions()));
|
connect(&workspace, SIGNAL(windowActivated(QWidget *)), this, SLOT(slot_updateActions()));
|
||||||
connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(slot_updateActions()));
|
connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(slot_updatePasteAction()));
|
||||||
|
|
||||||
// ajout de tous les DiagramView necessaires
|
// ajout de tous les DiagramView necessaires
|
||||||
foreach (DiagramView *sv, diagram_views) addDiagramView(sv);
|
foreach (DiagramView *sv, diagram_views) addDiagramView(sv);
|
||||||
@@ -285,7 +286,7 @@ void QETDiagramEditor::actions() {
|
|||||||
mode_visualise -> setCheckable(true);
|
mode_visualise -> setCheckable(true);
|
||||||
mode_selection -> setChecked(true);
|
mode_selection -> setChecked(true);
|
||||||
|
|
||||||
QActionGroup *grp_visu_sel = new QActionGroup(this);
|
grp_visu_sel = new QActionGroup(this);
|
||||||
grp_visu_sel -> addAction(mode_selection);
|
grp_visu_sel -> addAction(mode_selection);
|
||||||
grp_visu_sel -> addAction(mode_visualise);
|
grp_visu_sel -> addAction(mode_visualise);
|
||||||
grp_visu_sel -> setExclusive(true);
|
grp_visu_sel -> setExclusive(true);
|
||||||
@@ -684,15 +685,12 @@ void QETDiagramEditor::slot_setVisualisationMode() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
gere les actions ayant besoin d'un document ouvert
|
gere les actions
|
||||||
*/
|
*/
|
||||||
void QETDiagramEditor::slot_updateActions() {
|
void QETDiagramEditor::slot_updateActions() {
|
||||||
DiagramView *sv = currentDiagram();
|
DiagramView *sv = currentDiagram();
|
||||||
bool opened_document = (sv != 0);
|
bool opened_document = (sv != 0);
|
||||||
|
|
||||||
// nombre de conducteurs selectionnes
|
|
||||||
int selected_conductors_count = opened_document ? sv -> diagram() -> selectedConductors().count() : 0;
|
|
||||||
|
|
||||||
// actions ayant juste besoin d'un document ouvert
|
// actions ayant juste besoin d'un document ouvert
|
||||||
close_file -> setEnabled(opened_document);
|
close_file -> setEnabled(opened_document);
|
||||||
save_file -> setEnabled(opened_document);
|
save_file -> setEnabled(opened_document);
|
||||||
@@ -707,8 +705,6 @@ void QETDiagramEditor::slot_updateActions() {
|
|||||||
zoom_out -> setEnabled(opened_document);
|
zoom_out -> setEnabled(opened_document);
|
||||||
zoom_fit -> setEnabled(opened_document);
|
zoom_fit -> setEnabled(opened_document);
|
||||||
zoom_reset -> setEnabled(opened_document);
|
zoom_reset -> setEnabled(opened_document);
|
||||||
conductor_prop -> setEnabled(opened_document && selected_conductors_count == 1);
|
|
||||||
conductor_reset -> setEnabled(opened_document && selected_conductors_count);
|
|
||||||
conductor_default-> setEnabled(opened_document);
|
conductor_default-> setEnabled(opened_document);
|
||||||
infos_diagram -> setEnabled(opened_document);
|
infos_diagram -> setEnabled(opened_document);
|
||||||
add_text -> setEnabled(opened_document);
|
add_text -> setEnabled(opened_document);
|
||||||
@@ -724,43 +720,69 @@ void QETDiagramEditor::slot_updateActions() {
|
|||||||
redo -> setEnabled(false);
|
redo -> setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
slot_updateModeActions();
|
||||||
|
slot_updatePasteAction();
|
||||||
|
slot_updateComplexActions();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
gere les actions ayant des besoins precis pour etre active ou non
|
||||||
|
Cette methode ne fait rien si aucun document n'est ouvert
|
||||||
|
*/
|
||||||
|
void QETDiagramEditor::slot_updateComplexActions() {
|
||||||
|
DiagramView *dv = currentDiagram();
|
||||||
|
bool opened_document = (dv != 0);
|
||||||
|
|
||||||
|
// nombre de conducteurs selectionnes
|
||||||
|
int selected_conductors_count = opened_document ? dv -> diagram() -> selectedConductors().count() : 0;
|
||||||
|
conductor_prop -> setEnabled(opened_document && selected_conductors_count == 1);
|
||||||
|
conductor_reset -> setEnabled(opened_document && selected_conductors_count);
|
||||||
|
|
||||||
// actions ayant aussi besoin d'elements selectionnes
|
// actions ayant aussi besoin d'elements selectionnes
|
||||||
bool selected_elements = opened_document ? (sv -> hasSelectedItems()) : false;
|
bool selected_elements = opened_document ? (dv -> hasSelectedItems()) : false;
|
||||||
cut -> setEnabled(selected_elements);
|
cut -> setEnabled(selected_elements);
|
||||||
copy -> setEnabled(selected_elements);
|
copy -> setEnabled(selected_elements);
|
||||||
delete_selection -> setEnabled(selected_elements);
|
delete_selection -> setEnabled(selected_elements);
|
||||||
rotate_selection -> setEnabled(selected_elements);
|
rotate_selection -> setEnabled(selected_elements);
|
||||||
|
}
|
||||||
|
|
||||||
// action ayant aussi besoin d'un presse-papier plein
|
/**
|
||||||
bool can_paste = QApplication::clipboard() -> text() != QString();
|
Gere les actions realtives au mode du schema
|
||||||
paste -> setEnabled(opened_document && can_paste);
|
*/
|
||||||
|
void QETDiagramEditor::slot_updateModeActions() {
|
||||||
|
DiagramView *dv = currentDiagram();
|
||||||
|
|
||||||
// actions ayant aussi besoin d'un document ouvert et de la connaissance de son mode
|
// actions ayant aussi besoin d'un document ouvert et de la connaissance de son mode
|
||||||
if (!opened_document) {
|
if (!dv) {
|
||||||
mode_selection -> setEnabled(false);
|
grp_visu_sel -> setEnabled(false);
|
||||||
mode_visualise -> setEnabled(false);
|
|
||||||
} else {
|
} else {
|
||||||
switch((int)(sv -> dragMode())) {
|
switch((int)(dv -> dragMode())) {
|
||||||
case QGraphicsView::NoDrag:
|
case QGraphicsView::NoDrag:
|
||||||
mode_selection -> setEnabled(false);
|
grp_visu_sel -> setEnabled(false);
|
||||||
mode_visualise -> setEnabled(false);
|
|
||||||
break;
|
break;
|
||||||
case QGraphicsView::ScrollHandDrag:
|
case QGraphicsView::ScrollHandDrag:
|
||||||
mode_selection -> setEnabled(true);
|
grp_visu_sel -> setEnabled(true);
|
||||||
mode_visualise -> setEnabled(true);
|
|
||||||
mode_selection -> setChecked(false);
|
|
||||||
mode_visualise -> setChecked(true);
|
mode_visualise -> setChecked(true);
|
||||||
break;
|
break;
|
||||||
case QGraphicsView::RubberBandDrag:
|
case QGraphicsView::RubberBandDrag:
|
||||||
mode_selection -> setEnabled(true);
|
grp_visu_sel -> setEnabled(true);
|
||||||
mode_visualise -> setEnabled(true);
|
|
||||||
mode_selection -> setChecked(true);
|
mode_selection -> setChecked(true);
|
||||||
mode_visualise -> setChecked(false);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
slot_updateWindowsMenu();
|
/**
|
||||||
|
Gere les actions ayant besoin du presse-papier
|
||||||
|
*/
|
||||||
|
void QETDiagramEditor::slot_updatePasteAction() {
|
||||||
|
if (!currentDiagram()) {
|
||||||
|
paste -> setEnabled(false);
|
||||||
|
} else {
|
||||||
|
QString clipboard_text = QApplication::clipboard() -> text();
|
||||||
|
bool can_paste = clipboard_text.startsWith("<diagram") && clipboard_text.endsWith("</diagram>\n");
|
||||||
|
paste -> setEnabled(can_paste);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -777,8 +799,8 @@ void QETDiagramEditor::addDiagramView(DiagramView *dv) {
|
|||||||
|
|
||||||
// ajoute la fenetre
|
// ajoute la fenetre
|
||||||
QWidget *p = workspace.addWindow(dv);
|
QWidget *p = workspace.addWindow(dv);
|
||||||
connect(dv -> diagram(), SIGNAL(selectionChanged()), this, SLOT(slot_updateActions()));
|
connect(dv -> diagram(), SIGNAL(selectionChanged()), this, SLOT(slot_updateComplexActions()));
|
||||||
connect(dv, SIGNAL(modeChanged()), this, SLOT(slot_updateActions()));
|
connect(dv, SIGNAL(modeChanged()), this, SLOT(slot_updateModeActions()));
|
||||||
connect(dv, SIGNAL(textAdded(bool)), add_text, SLOT(setChecked(bool)));
|
connect(dv, SIGNAL(textAdded(bool)), add_text, SLOT(setChecked(bool)));
|
||||||
|
|
||||||
// affiche la fenetre
|
// affiche la fenetre
|
||||||
@@ -803,7 +825,7 @@ void QETDiagramEditor::slot_updateWindowsMenu() {
|
|||||||
windows_menu -> addAction(cascade_window);
|
windows_menu -> addAction(cascade_window);
|
||||||
windows_menu -> addAction(arrange_window);
|
windows_menu -> addAction(arrange_window);
|
||||||
|
|
||||||
// actiosn de deplacement entre les fenetres
|
// actions de deplacement entre les fenetres
|
||||||
windows_menu -> addSeparator();
|
windows_menu -> addSeparator();
|
||||||
windows_menu -> addAction(next_window);
|
windows_menu -> addAction(next_window);
|
||||||
windows_menu -> addAction(prev_window);
|
windows_menu -> addAction(prev_window);
|
||||||
@@ -814,8 +836,8 @@ void QETDiagramEditor::slot_updateWindowsMenu() {
|
|||||||
tile_window -> setEnabled(!windows.isEmpty());
|
tile_window -> setEnabled(!windows.isEmpty());
|
||||||
cascade_window -> setEnabled(!windows.isEmpty());
|
cascade_window -> setEnabled(!windows.isEmpty());
|
||||||
arrange_window -> setEnabled(!windows.isEmpty());
|
arrange_window -> setEnabled(!windows.isEmpty());
|
||||||
next_window -> setEnabled(!windows.isEmpty());
|
next_window -> setEnabled(windows.count() > 1);
|
||||||
prev_window -> setEnabled(!windows.isEmpty());
|
prev_window -> setEnabled(windows.count() > 1);
|
||||||
|
|
||||||
if (!windows.isEmpty()) windows_menu -> addSeparator();
|
if (!windows.isEmpty()) windows_menu -> addSeparator();
|
||||||
for (int i = 0 ; i < windows.size() ; ++ i) {
|
for (int i = 0 ; i < windows.size() ; ++ i) {
|
||||||
|
|||||||
@@ -60,6 +60,9 @@ class QETDiagramEditor : public QMainWindow {
|
|||||||
void slot_setSelectionMode();
|
void slot_setSelectionMode();
|
||||||
void slot_setVisualisationMode();
|
void slot_setVisualisationMode();
|
||||||
void slot_updateActions();
|
void slot_updateActions();
|
||||||
|
void slot_updateModeActions();
|
||||||
|
void slot_updateComplexActions();
|
||||||
|
void slot_updatePasteAction();
|
||||||
void slot_updateWindowsMenu();
|
void slot_updateWindowsMenu();
|
||||||
void slot_addColumn();
|
void slot_addColumn();
|
||||||
void slot_removeColumn();
|
void slot_removeColumn();
|
||||||
@@ -73,6 +76,7 @@ class QETDiagramEditor : public QMainWindow {
|
|||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
// Actions faisables au travers de menus dans l'application QElectroTech
|
// Actions faisables au travers de menus dans l'application QElectroTech
|
||||||
|
QActionGroup *grp_visu_sel;
|
||||||
QAction *mode_selection;
|
QAction *mode_selection;
|
||||||
QAction *mode_visualise;
|
QAction *mode_visualise;
|
||||||
QAction *new_file;
|
QAction *new_file;
|
||||||
|
|||||||
Reference in New Issue
Block a user