diff --git a/src/canvas.cpp b/src/canvas.cpp
index 5ceec50..5eec4fe 100644
--- a/src/canvas.cpp
+++ b/src/canvas.cpp
@@ -242,5 +242,18 @@ void Canvas::drawBackground(QPainter *painter, const QRectF &rect)
}
}
+void Canvas::Zoom(int val)
+{
+ qreal sf = 0.0;
+ if(val<6){
+ sf = 1.0 / val;
+ }
+ else{
+ sf = val - 5;
+ }
+ d->view->matrix().reset();
+ d->view->scale(sf,sf);
+}
+
} // namespace Logicsim
diff --git a/src/canvas.h b/src/canvas.h
index ac88b30..9a98fb4 100644
--- a/src/canvas.h
+++ b/src/canvas.h
@@ -48,6 +48,9 @@ class Canvas : public QGraphicsScene
void drawBackground(QPainter *painter, const QRectF &rect);
+public Q_SLOTS:
+ void Zoom(int val);
+
private:
class Private;
Private* const d;
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 4a07fc4..cc17c20 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -61,6 +61,11 @@ MainWindow::MainWindow(QWidget *parent)
ui->frameGridLayout->addWidget(d->tabWidget);
d->tabWidget->setTabsClosable(true);
+ ui->horizontalSlider->setRange(1,11);
+ //ui->horizontalSlider->setSingleStep(1);
+ ui->horizontalSlider->setFocusPolicy(Qt::StrongFocus);
+ ui->horizontalSlider->setTickPosition(QSlider::TicksBothSides);
+
// Connection
connect(ui->actionNew, SIGNAL(triggered(bool)),
this, SLOT(newFile()));
@@ -132,6 +137,7 @@ Canvas* MainWindow::newFile()
connect(this, SIGNAL(notLastTabClosed(int)),
d->workspaceTab, SLOT(updateComponents()));
+
}
d->tabsCount++;
int tabIndex = d->tabWidget->addTab(c->view(), "New Circuit");
@@ -184,6 +190,8 @@ void MainWindow::changeManager(int index)
void MainWindow::tabChanged(int index)
{
d->activeTabIndex = index;
+ connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),
+ d->canvases[d->activeTabIndex],SLOT(Zoom(int)));
}
void MainWindow::tabAboutToBeClosed(int index)
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
index 59da5d4..736e40c 100644
--- a/src/mainwindow.ui
+++ b/src/mainwindow.ui
@@ -86,6 +86,13 @@
+ -
+
+
+ Zoom
+
+
+
-
@@ -103,7 +110,7 @@
0
0
1280
- 28
+ 25