OSDN Git Service

Ver0.19
[gefu/Gefu.git] / mainwindow.cpp
index 2f05cc5..b7160cc 100644 (file)
@@ -88,8 +88,8 @@ MainWindow::MainWindow(QWidget *parent) :
     // メニュー項目の状態を初期化する\r
     ui->view_Hidden->setChecked(settings.value(IniKey_ShowHidden).toBool());\r
     ui->view_System->setChecked(settings.value(IniKey_ShowSystem).toBool());\r
-    ui->action_OpenEditor->setEnabled(!settings.value(IniKey_EditorPath).toString().isEmpty());\r
-    ui->action_OpenTerminal->setEnabled(!settings.value(IniKey_TerminalPath).toString().isEmpty());\r
+//    ui->action_OpenEditor->setEnabled(!settings.value(IniKey_PathEditor).toString().isEmpty());\r
+//    ui->action_OpenTerminal->setEnabled(!settings.value(IniKey_PathTerminal).toString().isEmpty());\r
 \r
     // 追加のショートカットキーを設定する\r
     QList<QKeySequence> shortcuts;\r
@@ -252,6 +252,34 @@ void MainWindow::executeCommand()
     }\r
 }\r
 \r
+void MainWindow::expandLeft()\r
+{\r
+    qDebug() << "MainWindow::expandLeft();";\r
+\r
+    QList<int> sizes = ui->splitter->sizes();\r
+    QList<int> newSizes;\r
+\r
+    newSizes << sizes[0] + 30;\r
+    newSizes << sizes[1] - 30;\r
+\r
+    ui->splitter->setSizes(newSizes);\r
+\r
+}\r
+\r
+void MainWindow::expandRight()\r
+{\r
+    qDebug() << "MainWindow::expandLeft();";\r
+\r
+    QList<int> sizes = ui->splitter->sizes();\r
+    QList<int> newSizes;\r
+\r
+    newSizes << sizes[0] - 30;\r
+    newSizes << sizes[1] + 30;\r
+\r
+    ui->splitter->setSizes(newSizes);\r
+\r
+}\r
+\r
 void MainWindow::historyBack()\r
 {\r
     qDebug() << "MainWindow::historyBack();";\r
@@ -724,7 +752,7 @@ void MainWindow::openEditor(const QString &path)
     Q_CHECK_PTR(view);\r
 \r
     QSettings settings;\r
-    QString exe = settings.value(IniKey_EditorPath).toString();\r
+    QString exe = settings.value(IniKey_PathEditor).toString();\r
     if (exe.isEmpty()) {\r
         QMessageBox::critical(\r
                     this, tr("エラー"),\r
@@ -740,18 +768,17 @@ void MainWindow::openEditor(const QString &path)
         list << path;\r
     }\r
 \r
+    QString files;\r
     foreach (const QFileInfo &info, list) {\r
-        QString opt = settings.value(IniKey_EditorOption).toString();\r
-        replaceVars(opt, info);\r
-\r
+        files += " " + QQ(info.absoluteFilePath());\r
+    }\r
 #ifdef Q_OS_MAC\r
-        QString command = "open -a " + exe + " " + opt;\r
+    QString command = "open -a " + exe + files;\r
 #else\r
-        QString command = QQ(exe) + " " + opt;\r
+    QString command = exe + files;\r
 #endif\r
-        if (!startProcess(command, info.absolutePath(), tr("外部エディタの起動に失敗しました。"))) {\r
-            break;\r
-        }\r
+    if (!startProcess(command, view->dir(), tr("外部エディタの起動に失敗しました。"))) {\r
+        qDebug() << command;\r
     }\r
 }\r
 \r
@@ -763,7 +790,7 @@ void MainWindow::openTerminal()
     Q_CHECK_PTR(view);\r
 \r
     QSettings settings;\r
-    QString exe = settings.value(IniKey_TerminalPath).toString();\r
+    QString exe = settings.value(IniKey_PathTerminal).toString();\r
     if (exe.isEmpty()) {\r
         QMessageBox::critical(\r
                     this, tr("エラー"),\r
@@ -771,19 +798,56 @@ void MainWindow::openTerminal()
         return;\r
     }\r
 \r
+    QSet<QString> dirs;\r
     foreach (const QFileInfo &info, view->selectedItems()) {\r
-        QString opt = settings.value(IniKey_TerminalOption).toString();\r
-        replaceVars(opt, info);\r
+        if (info.isDir()) {\r
+            dirs.insert(info.absoluteFilePath());\r
+        }\r
+        else {\r
+            dirs.insert(info.absolutePath());\r
+        }\r
+    }\r
 \r
+    foreach (const QString &dir, dirs) {\r
 #ifdef Q_OS_MAC\r
-        QString command = "open -a " + QQ(exe) + " --args " + opt;\r
+        QString command = "open -n -a " + exe + " " + QQ(dir);\r
 #else\r
-        QString command = QQ(exe) + " " + opt;\r
+        QString command = exe + " " + QQ(dir);\r
 #endif\r
-        if (!startProcess(command, info.absolutePath(), tr("ターミナルの起動に失敗しました。"))) {\r
+        if (!startProcess(command, view->dir(), tr("ターミナルの起動に失敗しました。"))) {\r
+            qDebug() << command;\r
             break;\r
         }\r
-        Sleep(1000);\r
+    }\r
+}\r
+\r
+void MainWindow::openArchiver()\r
+{\r
+    qDebug() << "MainWindow::openArchiver";\r
+\r
+    FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+    Q_CHECK_PTR(view);\r
+\r
+    QSettings settings;\r
+    QString exe = settings.value(IniKey_PathArchiver).toString();\r
+    if (exe.isEmpty()) {\r
+        QMessageBox::critical(\r
+                    this, tr("エラー"),\r
+                    tr("アーカイバのパスが未定義です。"));\r
+        return;\r
+    }\r
+\r
+    QString files;\r
+    foreach (const QFileInfo &info, view->selectedItems()) {\r
+        files += " " + QQ(info.absoluteFilePath());\r
+    }\r
+#ifdef Q_OS_MAC\r
+    QString command = "open -a " + exe + files;\r
+#else\r
+    QString command = exe + files;\r
+#endif\r
+    if (!startProcess(command, view->dir(), tr("アーカイバの起動に失敗しました。"))) {\r
+        qDebug() << command;\r
     }\r
 }\r
 \r
@@ -980,6 +1044,17 @@ void MainWindow::showSortDialog()
     }\r
 }\r
 \r
+void MainWindow::splitCenter()\r
+{\r
+    qDebug() << "MainWindow::splitCenter();";\r
+\r
+    QList<int> sizes = ui->splitter->sizes();\r
+    int sizeTotal = sizes[0] + sizes[1];\r
+    sizes[0] = sizeTotal / 2;\r
+    sizes[1] = sizeTotal - sizes[0];\r
+    ui->splitter->setSizes(sizes);\r
+}\r
+\r
 void MainWindow::swapView()\r
 {\r
     qDebug() << "MainWindow::swapView();";\r
@@ -1408,6 +1483,7 @@ void MainWindow::showContextMenu(QContextMenuEvent *event)
         menu.addAction(ui->action_Exec);\r
         menu.addAction(ui->action_OpenEditor);\r
         menu.addAction(ui->action_OpenTerminal);\r
+        menu.addAction(ui->action_OpenArchiver);\r
         menu.addSeparator();\r
         menu.addAction(ui->cmd_Copy);\r
         menu.addAction(ui->cmd_Move);\r
@@ -1513,6 +1589,7 @@ void MainWindow::initActionConnections()
     connect(ui->action_Open, SIGNAL(triggered()), this, SLOT(open()));\r
     connect(ui->action_OpenEditor, SIGNAL(triggered()), this, SLOT(openEditor()));\r
     connect(ui->action_OpenTerminal, SIGNAL(triggered()), this, SLOT(openTerminal()));\r
+    connect(ui->action_OpenArchiver, SIGNAL(triggered()), this, SLOT(openArchiver()));\r
     connect(ui->action_Quit, SIGNAL(triggered()), this, SLOT(close()));\r
     connect(ui->action_Search, SIGNAL(toggled(bool)), this, SLOT(toggleSearchBox(bool)));\r
     connect(ui->action_SearchNext, SIGNAL(triggered()), this, SLOT(searchNext()));\r
@@ -1561,6 +1638,9 @@ void MainWindow::initActionConnections()
     connect(ui->view_ToOther, SIGNAL(triggered()), this, SLOT(setPathToOther()));\r
     connect(ui->bookmark_Edit, SIGNAL(triggered()), this, SLOT(editBookmark()));\r
     connect(ui->bookmark_Show, SIGNAL(triggered()), this, SLOT(showBookmarkDialog()));\r
+    connect(ui->split_Center, SIGNAL(triggered()), this, SLOT(splitCenter()));\r
+    connect(ui->expand_Left, SIGNAL(triggered()), this, SLOT(expandLeft()));\r
+    connect(ui->expand_Right, SIGNAL(triggered()), this, SLOT(expandRight()));\r
 }\r
 \r
 void MainWindow::replaceVars(QString &str, const QFileInfo info)\r
@@ -1664,8 +1744,8 @@ void MainWindow::updateActions()
             ui->move_Forward->setEnabled(!view->history()->isEnd());\r
 \r
             QSettings settings;\r
-            ui->action_OpenEditor->setEnabled(!settings.value(IniKey_EditorPath).toString().isEmpty());\r
-            ui->action_OpenTerminal->setEnabled(!settings.value(IniKey_TerminalPath).toString().isEmpty());\r
+            ui->action_OpenEditor->setEnabled(!settings.value(IniKey_PathEditor).toString().isEmpty());\r
+            ui->action_OpenTerminal->setEnabled(!settings.value(IniKey_PathTerminal).toString().isEmpty());\r
 \r
         }\r
         else if (!otherSideFolderView(view)->isVisible()) {\r