diff --git a/main_window.cpp b/main_window.cpp
index 7cd1ac8..b4bae31 100644
--- a/main_window.cpp
+++ b/main_window.cpp
@@ -1,5 +1,6 @@
 #include "main_window.h"
 #include "ui_main_window.h"
+#include "sim_application.h"

 static MainWindow *gbl_cur_main_window = NULL;

@@ -9,18 +10,22 @@ MainWindow::MainWindow(QWidget *parent) :
     gbl_cur_main_window = this;
     main_ui_->setupUi(this);

+    setFileMenu();
+
+}
+
+void MainWindow::setFileMenu(void) {
     connect(main_ui_->actionNewEmptySession, SIGNAL(triggered()), this, SLOT(newEmptySession()));
     connect(main_ui_->actionNewSessionFromScript, SIGNAL(triggered()), this, SLOT(newSessionFromScript()));
     connect(main_ui_->actionOpenCheckpoint, SIGNAL(triggered()), this, SLOT(openCheckpoint()));
     connect(main_ui_->actionAppendFromScript, SIGNAL(triggered()), this, SLOT(appendFromScript()));
     connect(main_ui_->actionAppendFromCheckpoint, SIGNAL(triggered()), this, SLOT(appendFromCheckpoint()));
     connect(main_ui_->actionRunPythonFile, SIGNAL(triggered()), this, SLOT(runPythonFile()));
+    connect(main_ui_->actionExit, SIGNAL(triggered()), simApp, SLOT(closeAllWindows()));
 }

-
-
 MainWindow::~MainWindow()
 {
     delete main_ui_;
diff --git a/main_window.h b/main_window.h
index 9f03875..062704c 100644
--- a/main_window.h
+++ b/main_window.h
@@ -13,6 +13,9 @@ class MainWindow : public QMainWindow {
 public:
     explicit MainWindow(QWidget *parent = 0);
     ~MainWindow();
+
+private:
+    void setFileMenu(void);
 signals:
 private slots:
     void newEmptySession(void);
@@ -26,7 +29,6 @@ private slots:
     void runPythonFile(void);
     void createWorkspace(void);
     void changeWorkspace(void);
-    void exit(void);
 private:
     Ui::MainWindow *main_ui_;
 };
diff --git a/main_window_file_slots.cpp b/main_window_file_slots.cpp
index d5692e2..898bd02 100644
--- a/main_window_file_slots.cpp
+++ b/main_window_file_slots.cpp
@@ -63,6 +63,3 @@ void MainWindow::changeWorkspace(void) {

 }

-void MainWindow::exit(void) {
-
-}
diff --git a/create_workspace_dialog.cpp b/create_workspace_dialog.cpp
index e69de29..ea96140 100644
--- a/create_workspace_dialog.cpp
+++ b/create_workspace_dialog.cpp
@@ -0,0 +1,12 @@
+#include "create_workspace_dialog.h"
+#include "ui_create_workspace_dialog.h"
+
+CreateWorkspaceDialog::CreateWorkspaceDialog(QWidget *parent) :
+    QWidget(parent),
+    create_workspace_dialog_ui_(new Ui::CreateWorkspaceDialog) {
+    create_workspace_dialog_ui_->setupUi(this);
+}
+
+CreateWorkspaceDialog::~CreateWorkspaceDialog() {
+    delete create_workspace_dialog_ui_;
+}
diff --git a/create_workspace_dialog.h b/create_workspace_dialog.h
index e69de29..e164a92 100644
--- a/create_workspace_dialog.h
+++ b/create_workspace_dialog.h
@@ -0,0 +1,20 @@
+#ifndef CREATE_WORKSPACE_DIALOG_H
+#define CREATE_WORKSPACE_DIALOG_H
+
+#include <QWidget>
+
+namespace Ui {
+    class CreateWorkspaceDialog;
+}
+
+class CreateWorkspaceDialog : public QWidget {
+    Q_OBJECT
+
+public:
+    explicit CreateWorkspaceDialog(QWidget *parent = 0);
+    ~CreateWorkspaceDialog();
+private:
+    Ui::CreateWorkspaceDialog *create_workspace_dialog_ui_;
+};
+
+#endif
diff --git a/create_workspace_dialog.ui b/create_workspace_dialog.ui
index e69de29..8842948 100644
--- a/create_workspace_dialog.ui
+++ b/create_workspace_dialog.ui
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>CreateWorkspaceDialog</class>
+ <widget class="QWidget" name="CreateWorkspaceDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>414</width>
+    <height>480</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>浏览文件夹</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <widget class="QLabel" name="DialogInfoLabel">
+       <property name="text">
+        <string>Select directory to use as workspace ...</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="separateDialogInfoLabelAndDiiecotoryTreeWidget">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Fixed</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>258</width>
+         <height>38</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QTreeWidget" name="DirectoryTreeWidget">
+       <column>
+        <property name="text">
+         <string notr="true">1</string>
+        </property>
+       </column>
+      </widget>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <item>
+        <widget class="QLabel" name="DirectoryLabel">
+         <property name="text">
+          <string>文件夹:</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="separateDialogLabelAndFilenameLineEdit">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>18</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="FilenameLineEdit"/>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <spacer name="beforeCreateDirectory">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Minimum</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>13</width>
+           <height>18</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QPushButton" name="CreateDirectoryButton">
+         <property name="text">
+          <string>新建文件夹(M)</string>
+         </property>
+         <property name="shortcut">
+          <string>Alt+M</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="separateCreateDirectoryButtonAndSureButton">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QPushButton" name="SureButton">
+         <property name="text">
+          <string>确定</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="CancelButton">
+         <property name="text">
+          <string>取消</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/main_window.cpp b/main_window.cpp
index b4bae31..b2b6c70 100644
--- a/main_window.cpp
+++ b/main_window.cpp
@@ -21,12 +21,12 @@ void MainWindow::setFileMenu(void) {
     connect(main_ui_->actionAppendFromScript, SIGNAL(triggered()), this, SLOT(appendFromScript()));
     connect(main_ui_->actionAppendFromCheckpoint, SIGNAL(triggered()), this, SLOT(appendFromCheckpoint()));
     connect(main_ui_->actionRunPythonFile, SIGNAL(triggered()), this, SLOT(runPythonFile()));
+    connect(main_ui_->actionCreateWorkspace, SIGNAL(triggered()), this, SLOT(createWorkspace()));
     connect(main_ui_->actionExit, SIGNAL(triggered()), simApp, SLOT(closeAllWindows()));
 }

-MainWindow::~MainWindow()
-{
+MainWindow::~MainWindow() {
     delete main_ui_;
 }
diff --git a/main_window.h b/main_window.h
index 062704c..d9a9588 100644
--- a/main_window.h
+++ b/main_window.h
@@ -2,6 +2,7 @@
 #define MAIN_WINDOW_H

 #include <QMainWindow>
+#include "create_workspace_dialog.h"

 namespace Ui {
     class MainWindow;
@@ -31,6 +32,7 @@ private slots:
     void changeWorkspace(void);
 private:
     Ui::MainWindow *main_ui_;
+    CreateWorkspaceDialog create_workspace_dialog;
 };

 #endif
diff --git a/sim-qt.pro b/sim-qt.pro
index e2424a8..f0bc017 100644
--- a/sim-qt.pro
+++ b/sim-qt.pro
@@ -16,9 +16,11 @@ CONFIG  +=  console plugin link_pkgconfig
 SOURCES += main.cpp\
 		   main_window.cpp\
            main_window_file_slots.cpp\
+           create_workspace_dialog.cpp\
            sim_application.cpp

 HEADERS += main_window.h\
            sim_application.h\
+           create_workspace_dialog.h

-FORMS += cli.ui main_window.ui
+FORMS += cli.ui main_window.ui create_workspace_dialog.ui