z-index verschiebung der Felder verbessert

git-svn-id: http://svn.lsim.tuxzone.org/trunk@19 4bec179b-ab65-46ed-a5f8-55b8b5c735d0
This commit is contained in:
catdog2
2008-11-17 21:54:18 +00:00
parent ce2c7ac5ec
commit f01d249e27
7 changed files with 60 additions and 8 deletions

View File

@@ -24,11 +24,11 @@
GraphicsView::GraphicsView(): QGraphicsView() { GraphicsView::GraphicsView(): QGraphicsView() {
//setMinimumSize(900,700); //setMinimumSize(900,700);
//setDragMode(QGraphicsView::RubberBandDrag); //setDragMode(QGraphicsView::ScrollHandDrag);
//scale(2.5,2.5); //scale(2,2);

View File

@@ -32,8 +32,8 @@ HomoBFieldItem::HomoBFieldItem(QRectF sizeRect): FieldItem() {
setFlag(ItemIsSelectable); setFlag(ItemIsSelectable);
setFlag(ItemIsFocusable); setFlag(ItemIsFocusable);
setOuterPenWidth (2); setOuterPenWidth (2);
dockWidget = new HomoBFieldWidget(0,0,this);
setIsDirectionIntoPlane(true); setIsDirectionIntoPlane(true);
dockWidget = new HomoBFieldWidget(0,0,this);
setFluxDensity(2e-5); setFluxDensity(2e-5);
} }
@@ -55,7 +55,7 @@ QRectF HomoBFieldItem::getRectF() const
void HomoBFieldItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) { void HomoBFieldItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) {
//Qt::GlobalColor linecolor = Qt::red; //Qt::GlobalColor linecolor = Qt::red;
QColor linecolor(92,105,118); QColor linecolor(0,86,30);
painter->setPen(linecolor); painter->setPen(linecolor);
if (isSelected()) painter->setBrush(Qt::Dense6Pattern); //selection deutlich machen if (isSelected()) painter->setBrush(Qt::Dense6Pattern); //selection deutlich machen
painter->drawRect(sizeRect); painter->drawRect(sizeRect);

View File

@@ -110,6 +110,8 @@ void HomoBFieldWidget::createWidget() {
QRadioButton* intoPlaneButton = new QRadioButton(tr("in die Ebene hinein")); QRadioButton* intoPlaneButton = new QRadioButton(tr("in die Ebene hinein"));
QRadioButton* outOfPlaneButton = new QRadioButton(tr("aus der Ebene heraus")); QRadioButton* outOfPlaneButton = new QRadioButton(tr("aus der Ebene heraus"));
intoPlaneButton->setChecked(homoBField->getIsDirectionIntoPlane());
outOfPlaneButton->setChecked(!homoBField->getIsDirectionIntoPlane());
connect(homoBField ,SIGNAL(directionChanged(bool)),intoPlaneButton, SLOT(setChecked(bool)) ); connect(homoBField ,SIGNAL(directionChanged(bool)),intoPlaneButton, SLOT(setChecked(bool)) );
connect(intoPlaneButton, SIGNAL(toggled(bool)),homoBField ,SLOT(setIsDirectionIntoPlane(bool)) ); connect(intoPlaneButton, SIGNAL(toggled(bool)),homoBField ,SLOT(setIsDirectionIntoPlane(bool)) );

View File

@@ -96,22 +96,33 @@ void lsim::createActions() {
acts.exitAct->setStatusTip (tr ("Die Anwendung beenden")); acts.exitAct->setStatusTip (tr ("Die Anwendung beenden"));
connect (acts.exitAct, SIGNAL (triggered()), qApp, SLOT (quit())); connect (acts.exitAct, SIGNAL (triggered()), qApp, SLOT (quit()));
acts.moveItemDown = new QAction (tr ("runter"), this); //up down actions
acts.moveItemDown = new QAction (QChar(0x2193), this);
acts.moveItemDown->setStatusTip (tr ("runter")); acts.moveItemDown->setStatusTip (tr ("runter"));
acts.moveItemDown->setEnabled(false);
connect (acts.moveItemDown, SIGNAL (triggered()), simulscene, SLOT (moveSelectedFieldItemDown())); connect (acts.moveItemDown, SIGNAL (triggered()), simulscene, SLOT (moveSelectedFieldItemDown()));
connect (acts.moveItemDown, SIGNAL (triggered()), this, SLOT (handleUpDownActionChanges()) );
acts.moveItemUp = new QAction (tr ("rauf"), this); acts.moveItemUp = new QAction (QChar(0x2191), this);
acts.moveItemUp->setStatusTip (tr ("rauf")); acts.moveItemUp->setStatusTip (tr ("rauf"));
acts.moveItemUp->setEnabled(false);
connect (acts.moveItemUp, SIGNAL (triggered()), simulscene, SLOT (moveSelectedFieldItemUp())); connect (acts.moveItemUp, SIGNAL (triggered()), simulscene, SLOT (moveSelectedFieldItemUp()));
connect (acts.moveItemUp, SIGNAL (triggered()), this, SLOT (handleUpDownActionChanges()) );
acts.moveItemOnTop = new QAction (tr ("ganz rauf"), this); acts.moveItemOnTop = new QAction (QChar(0x21C8), this);
acts.moveItemOnTop->setStatusTip (tr ("ganz rauf")); acts.moveItemOnTop->setStatusTip (tr ("ganz rauf"));
acts.moveItemOnTop->setEnabled(false);
connect (acts.moveItemOnTop, SIGNAL (triggered()), simulscene, SLOT (moveSelectedFieldItemOnTop())); connect (acts.moveItemOnTop, SIGNAL (triggered()), simulscene, SLOT (moveSelectedFieldItemOnTop()));
connect (acts.moveItemOnTop, SIGNAL (triggered()), this, SLOT (handleUpDownActionChanges()) );
acts.moveItemOnBottom = new QAction (tr ("ganz runter"), this); acts.moveItemOnBottom = new QAction (QChar(0x21CA), this);
acts.moveItemOnBottom->setStatusTip (tr ("ganz runter")); acts.moveItemOnBottom->setStatusTip (tr ("ganz runter"));
acts.moveItemOnBottom->setEnabled(false);
//acts.moveItemOnBottom->setToolTip( tr ("Nach ganz unten absinken lassen")); //acts.moveItemOnBottom->setToolTip( tr ("Nach ganz unten absinken lassen"));
connect (acts.moveItemOnBottom, SIGNAL (triggered()), simulscene, SLOT (moveSelectedFieldItemOnBottom())); connect (acts.moveItemOnBottom, SIGNAL (triggered()), simulscene, SLOT (moveSelectedFieldItemOnBottom()));
connect (acts.moveItemOnBottom, SIGNAL (triggered()), this, SLOT (handleUpDownActionChanges()) );
connect (simulscene, SIGNAL (selectionChanged ()), this, SLOT (handleUpDownActionChanges()) );
//Edit, insert, Modechange //Edit, insert, Modechange
@@ -370,3 +381,23 @@ void lsim::startTimer() {
void lsim::handleDockLocationChange() { void lsim::handleDockLocationChange() {
} }
void lsim::handleUpDownActionChanges() {
if (simulscene->selectedItems().isEmpty() ||
simulscene->selectedItems().first()->zValue() == simulscene->getHighestZIndexFieldItems() ) {
acts.moveItemUp->setEnabled(false);
acts.moveItemOnTop->setEnabled(false);
} else {
acts.moveItemUp->setEnabled(true);
acts.moveItemOnTop->setEnabled(true);
}
if (simulscene->selectedItems().isEmpty() ||
simulscene->selectedItems().first()->zValue() == simulscene->getLowestZIndexFieldItems() ) {
acts.moveItemDown->setEnabled(false);
acts.moveItemOnBottom->setEnabled(false);
} else {
acts.moveItemDown->setEnabled(true);
acts.moveItemOnBottom->setEnabled(true);
}
}

View File

@@ -57,6 +57,7 @@ class lsim: public QMainWindow {
void startCalculation(); void startCalculation();
void startTimer(); void startTimer();
void handleDockLocationChange(); void handleDockLocationChange();
void handleUpDownActionChanges();
private: private:
void createActions(); void createActions();

View File

@@ -520,6 +520,23 @@ qreal SimulScene::getHighestZIndexFieldItems() {
return highestZValue; return highestZValue;
} }
qreal SimulScene::getLowestZIndexFieldItems() {
bool lowestZValueSet = false;
qreal lowestZValue = FieldDefaultZValue; //default value
for (int i = 0; i < items().count() ; ++i ) {
if (FieldItem::isFieldItem(items().at(i))) {
if (!lowestZValueSet) {
lowestZValue = items().at(i)->zValue();
lowestZValueSet = true;
}
else if (lowestZValue > items().at(i)->zValue()) {
lowestZValue = items().at(i)->zValue();
}
}
}
return lowestZValue;
}
void SimulScene::deleteSelectedFieldItems() { void SimulScene::deleteSelectedFieldItems() {
QList<QGraphicsItem *> currSelectedItems = selectedItems(); QList<QGraphicsItem *> currSelectedItems = selectedItems();
for (int i = 0; i < currSelectedItems.count() ; ++i ) { for (int i = 0; i < currSelectedItems.count() ; ++i ) {

View File

@@ -50,6 +50,7 @@ class SimulScene : public QGraphicsScene {
SimulScene ( QObject* parent = 0); SimulScene ( QObject* parent = 0);
qreal getHighestZIndexVisible(); //hoechsten z-index der sichtbaren items qreal getHighestZIndexVisible(); //hoechsten z-index der sichtbaren items
qreal getHighestZIndexFieldItems(); //hoechsten z-index der Felder ausgeben qreal getHighestZIndexFieldItems(); //hoechsten z-index der Felder ausgeben
qreal getLowestZIndexFieldItems();
~SimulScene(); ~SimulScene();
double getTimePerStep(); double getTimePerStep();