OSDN Git Service

Ver0.17
authorMasayuki Satoh <miyabi.satoh@gmail.com>
Fri, 29 Aug 2014 02:49:20 +0000 (11:49 +0900)
committerMasayuki Satoh <miyabi.satoh@gmail.com>
Fri, 29 Aug 2014 02:49:20 +0000 (11:49 +0900)
19 files changed:
Gefu.pro
README.md
ReadMe.txt
bookmarkdialog.cpp [new file with mode: 0644]
bookmarkdialog.h [new file with mode: 0644]
bookmarkdialog.ui [new file with mode: 0644]
common.h
folderpanel.cpp
folderpanel.h
folderpanel.ui
folderview.cpp
folderview.h
installer-full.nsi
installer.nsi
keybind.txt
mainwindow.cpp
mainwindow.h
mainwindow.ui
version.h

index b6dc477..e9c4f08 100644 (file)
--- a/Gefu.pro
+++ b/Gefu.pro
@@ -42,7 +42,8 @@ SOURCES += main.cpp\
     locationbox.cpp \
     simpleimageview.cpp \
     anyview.cpp \
-    folderpanel.cpp
+    folderpanel.cpp \
+    bookmarkdialog.cpp
 
 HEADERS  += mainwindow.h \
     renamesingledialog.h \
@@ -68,7 +69,8 @@ HEADERS  += mainwindow.h \
     version.h \
     simpleimageview.h \
     anyview.h \
-    folderpanel.h
+    folderpanel.h \
+    bookmarkdialog.h
 
 FORMS    += mainwindow.ui \
     renamesingledialog.ui \
@@ -79,7 +81,8 @@ FORMS    += mainwindow.ui \
     historydialog.ui \
     preferencedialog.ui \
     anyview.ui \
-    folderpanel.ui
+    folderpanel.ui \
+    bookmarkdialog.ui
 
 RESOURCES += \
     resource.qrc
index a07eceb..8fed84a 100644 (file)
--- a/README.md
+++ b/README.md
@@ -11,6 +11,12 @@ Gefu is an Experimental File Utility.
   * 簡易FTPクライアント
   * SNS連携(タイムライン表示とか) ← ファイラーの機能か?
 
+#### 2014/08/29 Ver0.17
+  * コンテキストメニューにファイル操作系アクションを追加。
+  * ブックマーク機能を実装。
+  * 不具合修正
+    * 検索ボックスでのEnterキーイベントが2回処理されていたのを修正。
+
 #### 2014/08/28 Ver0.16
   * 設定ファイルの格納先を変更。
   * アップデート確認先のURLを変更。
index 595c75a..85818f1 100644 (file)
@@ -38,9 +38,8 @@
 \r
 ◇ インストール ◇\r
  Windows\r
-  1. GefuXXX.zip をダウンロード、展開します。\r
-  2. Gefu_QtDLL.zip をダウンロード、展開します。\r
-  3. 展開された Gefu.exe とQtライブラリ(*.dll)を同じフォルダに格納します。\r
+  1. GefuXXX_full_setup.exe をダウンロード、実行します。\r
+  2. インストールウィザードの指示に従ってください。\r
 \r
  Mac\r
   1. GefuXXX.app.zip をダウンロード、展開します。\r
@@ -48,9 +47,8 @@
 \r
 ◇ アップデート ◇\r
  Windows\r
-  1. GefuXXX.zip をダウンロード、展開します。\r
-  2. Gefu.exe が起動している場合は、終了します。\r
-  3. 展開された Gefu.exe を、既存の Gefu.exe に上書きします。\r
+  1. GefuXXX_Setuo.exe をダウンロード、実行します。\r
+  2. インストールウィザードの指示に従ってください。\r
 \r
  Mac\r
   1. GefuXXX.app.zip をダウンロード、展開します。\r
 \r
 ◇ アンインストール ◇\r
  Windows\r
-  1. Gefu.exe と Qtライブラリ(*.dll)を削除します。\r
-  2. 設定ファイルまで削除したい場合は、以下のファイルを削除します。\r
-     %APPDATA%¥miyabi¥Gefu.ini\r
+  1. スタートメニューからGefu → Uninstallをクリックします。\r
+  2. 画面の指示に従ってください。\r
 \r
  Mac\r
   1. Gefu.app を削除します。\r
   2. 設定ファイルまで削除したい場合は、以下のファイルを削除します。\r
-     ~/.config/rakusaba.jp/Gefu.ini\r
+     ~/.config/sourceforge.jp/Gefu.ini\r
 \r
 ◇ 使い方 ◇\r
  基本的には、WindowsのエクスプローラやMacのFinderと同じ感覚で使ってください。\r
@@ -79,6 +76,8 @@
    導入方法などを解説しています。\r
  Wiki ... http://sourceforge.jp/projects/gefu/wiki/FrontPage\r
    各種ドキュメントを閲覧できます。\r
+ Gefuの作業部屋 ... http://masayuki_satoh.b.sourceforge.jp/\r
+   開発ブログです。\r
 \r
 ◇ 免責事項 ◇\r
  - Gefu(げふぅ)はオープンソース・フリーソフトウェアです。\r
 ◇ 連絡先 ◇\r
  Web:     https://sourceforge.jp/projects/gefu/\r
           http://gefu.sourceforge.jp/\r
+          http://masayuki_satoh.b.sourceforge.jp/\r
  Mail:    miyabi.satoh@gmail.com\r
  Twitter: https://twitter.com/miyabi_satoh\r
 \r
 ◇ 履歴 ◇\r
+#### 2014/08/29 Ver0.17\r
+  * コンテキストメニューにファイル操作系アクションを追加。\r
+  * ブックマーク機能を実装。\r
+  * 不具合修正\r
+    * 検索ボックスでのEnterキーイベントが2回処理されていたのを修正。\r
+\r
 #### 2014/08/28 Ver0.16\r
   * 設定ファイルの格納先を変更。\r
   * アップデート確認先のURLを変更。\r
diff --git a/bookmarkdialog.cpp b/bookmarkdialog.cpp
new file mode 100644 (file)
index 0000000..447a3cf
--- /dev/null
@@ -0,0 +1,214 @@
+#include "common.h"
+#include "bookmarkdialog.h"
+#include "ui_bookmarkdialog.h"
+
+#include <QDebug>
+#include <QFileDialog>
+#include <QFileInfo>
+#include <QMessageBox>
+#include <QSettings>
+//#include <QVector>
+
+BookmarkDialog::BookmarkDialog(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::BookmarkDialog),
+    m_isReadOnly(false)
+{
+    ui->setupUi(this);
+    resize(parent->width() * 0.8, height());
+
+    ui->tableWidget->setColumnCount(2);
+}
+
+BookmarkDialog::~BookmarkDialog()
+{
+    delete ui;
+}
+
+void BookmarkDialog::setEditMode(bool edit)
+{
+    ui->buttonAdd->setVisible(edit);
+    ui->buttonDelete->setVisible(edit);
+    ui->buttonDown->setVisible(edit);
+    ui->buttonUp->setVisible(edit);
+
+    m_isReadOnly = !edit;
+    if (m_isReadOnly) {
+        setWindowTitle(tr("ブックマークを開く"));
+    }
+
+    QSettings settings;
+    for (int i = 0; ; i++) {
+        QString name = settings.value(IniKey_BookmarkEntryName(i), "").toString();
+        if (name.isEmpty()) {
+            break;
+        }
+
+        QString path = settings.value(IniKey_BookmarkEntryPath(i)).toString();
+        insertData(i, name, path);
+    }
+    ui->tableWidget->resizeColumnsToContents();
+    ui->tableWidget->resizeRowsToContents();
+}
+
+int BookmarkDialog::selectedIndex() const
+{
+    return ui->tableWidget->currentRow();
+}
+
+void BookmarkDialog::insertData(int row, const QString &name, const QString &path)
+{
+    ui->tableWidget->insertRow(row);
+
+    QTableWidgetItem *iName = new QTableWidgetItem(name);
+    if (m_isReadOnly) {
+        iName->setFlags(iName->flags() ^ Qt::ItemIsEditable);
+    }
+    ui->tableWidget->setItem(row, 0, iName);
+
+    QTableWidgetItem *iPath = new QTableWidgetItem(path);
+    iPath->setFlags(iPath->flags() ^ Qt::ItemIsEditable);
+    ui->tableWidget->setItem(row, 1, iPath);
+}
+
+void BookmarkDialog::moveSelectedRows(bool up)
+{
+    qDebug() << "BookmarkDialog::moveSelectedRows();" << up;
+
+    QList<QTableWidgetItem*> selected = ui->tableWidget->selectedItems();
+    if (selected.isEmpty()) {
+        qDebug() << "Not selected.";
+        return;
+    }
+
+    QVector<QString> before;
+    QVector<QString> after;
+
+    for (int i = 0; i < ui->tableWidget->rowCount(); i++) {
+        QString name = ui->tableWidget->item(i, 0)->data(Qt::DisplayRole).toString();
+        QString path = ui->tableWidget->item(i, 1)->data(Qt::DisplayRole).toString();
+        before << name + "¥t" + path;
+    }
+    qDebug() << "set before" << before;
+
+    after.resize(before.size());
+
+    QVector<int> newRows;
+    foreach (QTableWidgetItem *item, selected) {
+        if (item->column() != 0) {
+            int newRow = (up) ? item->row() - 1 : item->row() + 1;
+            if (newRow < 0) {
+                return;
+            }
+            else if (newRow >= ui->tableWidget->rowCount()) {
+                return;
+            }
+
+            after[newRow] = before[item->row()];
+            before[item->row()] = QString::null;
+            newRows << newRow;
+        }
+    }
+
+    qDebug() << "set after(1)" << after;
+    int n = 0;
+    for (int i = 0; i < ui->tableWidget->rowCount(); i++) {
+        if (!before[i].isEmpty()) {
+            while (!after[n].isEmpty()) {
+                n++;
+            }
+            after[n] = before[i];
+        }
+    }
+    qDebug() << "set after(2)" << after;
+
+    while (ui->tableWidget->rowCount() > 0) {
+        ui->tableWidget->removeRow(0);
+    }
+
+    n = 0;
+    foreach (const QString &val, after) {
+        QStringList list = val.split("¥t");
+        insertData(n, list[0], list[1]);
+        n++;
+    }
+
+    ui->tableWidget->resizeColumnsToContents();
+    ui->tableWidget->resizeRowsToContents();
+
+    foreach (int i, newRows) {
+        for (n = 0; n < 2; n++) {
+            QModelIndex index = ui->tableWidget->model()->index(i, n);
+            ui->tableWidget->selectionModel()->select(index, QItemSelectionModel::Select);
+        }
+    }
+
+}
+
+void BookmarkDialog::accept()
+{
+    QSettings settings;
+    QModelIndex index;
+    int i;
+    for (i = 0; i < ui->tableWidget->rowCount(); i++) {
+        index = ui->tableWidget->model()->index(i, 0);
+        QString name = ui->tableWidget->model()->data(index).toString();
+        if (name.isEmpty()) {
+            ui->tableWidget->setCurrentCell(i, 0);
+            QMessageBox::critical(this, tr("エラー"), tr("名前が未入力です。"));
+            return;
+        }
+
+        index = ui->tableWidget->model()->index(i, 1);
+        QString path = ui->tableWidget->model()->data(index).toString();
+
+        settings.setValue(IniKey_BookmarkEntryName(i), name);
+        settings.setValue(IniKey_BookmarkEntryPath(i), path);
+    }
+    while (!settings.value(IniKey_BookmarkEntryName(i), "").toString().isEmpty()) {
+        settings.remove(IniKey_BookmarkEntryName(i));
+        settings.remove(IniKey_BookmarkEntryPath(i));
+        i++;
+    }
+
+    QDialog::accept();
+}
+
+void BookmarkDialog::on_buttonDelete_clicked()
+{
+    foreach (const QTableWidgetItem *item, ui->tableWidget->selectedItems()) {
+        if (item->column() == 0) {
+            ui->tableWidget->removeRow(item->row());
+        }
+    }
+}
+
+void BookmarkDialog::on_buttonUp_clicked()
+{
+    moveSelectedRows(true);
+}
+
+void BookmarkDialog::on_buttonDown_clicked()
+{
+    moveSelectedRows(false);
+}
+
+void BookmarkDialog::on_buttonAdd_clicked()
+{
+    static QString initPath = QDir::homePath();
+
+    QString path = QFileDialog::getExistingDirectory(
+                this, tr("フォルダを選択"), initPath);
+    if (!path.isEmpty()) {
+        QFileInfo info(path);
+        QString name(info.fileName());
+        if (name.isEmpty()) {
+            name = "root";
+        }
+        insertData(ui->tableWidget->rowCount(), name, path);
+        initPath = path;
+
+        ui->tableWidget->resizeColumnsToContents();
+        ui->tableWidget->resizeRowsToContents();
+    }
+}
diff --git a/bookmarkdialog.h b/bookmarkdialog.h
new file mode 100644 (file)
index 0000000..de2bdb2
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef BOOKMARKDIALOG_H
+#define BOOKMARKDIALOG_H
+
+#include <QDialog>
+
+namespace Ui {
+class BookmarkDialog;
+}
+
+class BookmarkDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit BookmarkDialog(QWidget *parent = 0);
+    ~BookmarkDialog();
+
+    void setEditMode(bool edit);
+    int selectedIndex() const;
+
+private:
+    Ui::BookmarkDialog *ui;
+    bool m_isReadOnly;
+
+    void insertData(int row, const QString &name, const QString &path);
+    void moveSelectedRows(bool up);
+
+    // QDialog interface
+public slots:
+    void accept();
+
+private slots:
+    void on_buttonDelete_clicked();
+    void on_buttonUp_clicked();
+    void on_buttonDown_clicked();
+    void on_buttonAdd_clicked();
+};
+
+#endif // BOOKMARKDIALOG_H
diff --git a/bookmarkdialog.ui b/bookmarkdialog.ui
new file mode 100644 (file)
index 0000000..24f5556
--- /dev/null
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>BookmarkDialog</class>
+ <widget class="QDialog" name="BookmarkDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>360</width>
+    <height>267</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>ブックマークを編集</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_2">
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QTableWidget" name="tableWidget">
+       <property name="autoScroll">
+        <bool>false</bool>
+       </property>
+       <property name="selectionMode">
+        <enum>QAbstractItemView::ExtendedSelection</enum>
+       </property>
+       <property name="selectionBehavior">
+        <enum>QAbstractItemView::SelectRows</enum>
+       </property>
+       <property name="textElideMode">
+        <enum>Qt::ElideMiddle</enum>
+       </property>
+       <attribute name="horizontalHeaderHighlightSections">
+        <bool>false</bool>
+       </attribute>
+       <attribute name="verticalHeaderVisible">
+        <bool>false</bool>
+       </attribute>
+       <column>
+        <property name="text">
+         <string>表示名</string>
+        </property>
+       </column>
+       <column>
+        <property name="text">
+         <string>パス</string>
+        </property>
+       </column>
+      </widget>
+     </item>
+     <item>
+      <layout class="QVBoxLayout" name="buttuns">
+       <item>
+        <widget class="QPushButton" name="buttonUp">
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="text">
+          <string>↑</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="buttonDown">
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="text">
+          <string>↓</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QPushButton" name="buttonAdd">
+         <property name="text">
+          <string>追加</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="buttonDelete">
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="text">
+          <string>削除</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>BookmarkDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>BookmarkDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
index 9829d8f..282d098 100644 (file)
--- a/common.h
+++ b/common.h
@@ -6,8 +6,6 @@ typedef QMap<QString, QString> StringMap;
 \r
 class QObject;\r
 class QKeyEvent;\r
-//class MainWindow;\r
-//extern MainWindow* getMainWnd();\r
 extern QString FilesizeToString(quint64 size);\r
 extern QString ViewerIgnoreExt();\r
 extern QString KeyEventToSequence(const QKeyEvent *event);\r
@@ -23,6 +21,8 @@ extern void Sleep(int msec);
 #define IniKey_MoveAfterCreateFolder    "Common/MoveAfterFolderCreation"\r
 #define IniKey_OpenAfterCreateFile      "Common/OpenAfterFileCreation"\r
 #define IniKey_CheckUpdates             "Common/CheckUpdates"\r
+#define IniKey_BookmarkEntryName(x)     QString("Bookmark/Name%1").arg(x)\r
+#define IniKey_BookmarkEntryPath(x)     QString("Bookmark/Path%1").arg(x)\r
 #define IniKey_BootSizeSpec             "BootAndExit/SizeSpec"\r
 #define IniKey_BootSizeRel              "BootAndExit/SizeRel"\r
 #define IniKey_BootSizeAbs              "BootAndExit/SizeAbs"\r
index 18841de..becb113 100644 (file)
@@ -6,10 +6,13 @@
 #include "ui_folderpanel.h"
 
 #include <QDebug>
+#include <QSettings>
+#include <QStatusBar>
 
 FolderPanel::FolderPanel(QWidget *parent) :
     QWidget(parent),
-    ui(new Ui::FolderPanel)
+    ui(new Ui::FolderPanel),
+    m_mainWnd(NULL)
 {
     ui->setupUi(this);
 }
@@ -22,20 +25,19 @@ FolderPanel::~FolderPanel()
 void FolderPanel::initialize(MainWindow *mainWnd)
 {
     qDebug() << "FolderPanel::initialize();";
+    m_mainWnd = mainWnd;
 
     // シグナル&スロット
-    connect(ui->folderView, SIGNAL(dataChanged()), this, SLOT(dataChange()));
+    connect(ui->searchBox, SIGNAL(textEdited(QString)), this, SLOT(searchItem(QString)));
     connect(ui->folderView, SIGNAL(doubleClicked(QModelIndex)), mainWnd, SLOT(open(QModelIndex)));
     connect(ui->folderView, SIGNAL(dropAccepted(QFileInfoList)), mainWnd, SLOT(dropAccept(QFileInfoList)));
     connect(ui->folderView, SIGNAL(currentChanged(QFileInfo)), mainWnd, SLOT(currentChange(QFileInfo)));
-    connect(ui->folderView, SIGNAL(itemFound()), mainWnd, SLOT(itemFound()));
-    connect(ui->folderView, SIGNAL(itemNotFound()), mainWnd, SLOT(itemNotFound()));
-    connect(ui->folderView, SIGNAL(retrieveFinished()), mainWnd, SLOT(retrieveFinish()));
     connect(ui->folderView, SIGNAL(requestContextMenu(QContextMenuEvent*)), mainWnd, SLOT(showContextMenu(QContextMenuEvent*)));
-    connect(ui->folderView, SIGNAL(retrieveStarted(QString)), mainWnd, SLOT(retrieveStart(QString)));
     connect(ui->folderView, SIGNAL(retrieveStarted(QString)), ui->locationBox, SLOT(setText(QString)));
-    connect(ui->searchBox, SIGNAL(textEdited(QString)), mainWnd, SLOT(searchItem(QString)));
-    connect(ui->searchBox, SIGNAL(returnPressed()), mainWnd, SLOT(returnPressInSearchBox()));
+    connect(ui->folderView, SIGNAL(dataChanged()), this, SLOT(dataChange()));
+    connect(ui->folderView, SIGNAL(itemFound()), this, SLOT(itemFound()));
+    connect(ui->folderView, SIGNAL(itemNotFound()), this, SLOT(itemNotFound()));
+    connect(ui->bookmarkBtn, SIGNAL(clicked()), this, SLOT(addBookmark()));
 
     // 初期状態では検索ボックスは非表示
     ui->searchBox->setVisible(false);
@@ -44,7 +46,7 @@ void FolderPanel::initialize(MainWindow *mainWnd)
     ui->locationBox->initialize();
 
     // フォルダビューを初期化する
-    ui->folderView->initialize();
+    ui->folderView->initialize(mainWnd);
 }
 
 LocationBox *FolderPanel::locationBox() const
@@ -123,6 +125,59 @@ void FolderPanel::dataChange()
     }
 }
 
+void FolderPanel::addBookmark()
+{
+    qDebug() << "FolderPanel::addBookmark();";
+
+    QSettings settings;
+    int i = 0;
+    while (!settings.value(IniKey_BookmarkEntryName(i), "").toString().isEmpty()) {
+        i++;
+    }
+
+    QFileInfo info(ui->folderView->dir());
+    QString name = info.fileName();
+    if (name.isEmpty()) {
+        name = "root";
+    }
+    settings.setValue(IniKey_BookmarkEntryName(i), name);
+    settings.setValue(IniKey_BookmarkEntryPath(i), info.absoluteFilePath());
+
+    m_mainWnd->statusBar()->showMessage(tr("%1をブックマークに追加しました").arg(name));
+}
+
+void FolderPanel::itemFound()
+{
+    qDebug() << "FolderPanel::itemFound";
+
+    QPalette pal = ui->searchBox->palette();
+    pal.setColor(QPalette::Text, QPalette().text().color());
+    ui->searchBox->setPalette(pal);
+}
+
+void FolderPanel::itemNotFound()
+{
+    qDebug() << "FolderPanel::itemNotFound";
+
+    QPalette pal = ui->searchBox->palette();
+    pal.setColor(QPalette::Text, Qt::red);
+    ui->searchBox->setPalette(pal);
+}
+
+void FolderPanel::searchItem(const QString &text)
+{
+    qDebug() << "FolderPanel::searchItem" << text;
+
+    if (text.right(1) == "/") {
+        // '/'が入力されたら、検索終了
+        ui->searchBox->setText(text.left(text.length() - 1));
+        ui->folderView->setFocus();
+    }
+    else {
+        ui->folderView->searchItem(ui->searchBox->text());
+    }
+}
+
 void FolderPanel::focusInEvent(QFocusEvent *)
 {
     qDebug() << "FolderPanel::focusInEvent();";
index d094b3d..cddd1fe 100644 (file)
@@ -33,11 +33,16 @@ public:
 
 private:
     Ui::FolderPanel *ui;
+    MainWindow *m_mainWnd;
 
     void showNameFilters();
 
 public slots:
     void dataChange();
+    void addBookmark();
+    void itemFound();
+    void itemNotFound();
+    void searchItem(const QString& text);
 
     // QWidget interface
 protected:
index a3df706..5009f1a 100644 (file)
     <number>0</number>
    </property>
    <item>
-    <widget class="LocationBox" name="locationBox">
-     <property name="focusPolicy">
-      <enum>Qt::ClickFocus</enum>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <property name="spacing">
+      <number>0</number>
      </property>
-    </widget>
+     <item>
+      <widget class="LocationBox" name="locationBox">
+       <property name="focusPolicy">
+        <enum>Qt::ClickFocus</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="bookmarkBtn">
+       <property name="focusPolicy">
+        <enum>Qt::ClickFocus</enum>
+       </property>
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="resource.qrc">
+         <normaloff>:/images/Favourites.png</normaloff>:/images/Favourites.png</iconset>
+       </property>
+      </widget>
+     </item>
+    </layout>
    </item>
    <item>
     <widget class="FolderView" name="folderView">
    <header>locationbox.h</header>
   </customwidget>
  </customwidgets>
- <resources/>
+ <resources>
+  <include location="resource.qrc"/>
+ </resources>
  <connections/>
 </ui>
index 105331d..394c2ec 100644 (file)
@@ -10,6 +10,7 @@
 #include <QApplication>
 #include <QDrag>
 #include <QMenu>
+#include <QStatusBar>
 
 QString FilesizeToString(quint64 size)
 {
@@ -27,6 +28,7 @@ QString FilesizeToString(quint64 size)
 
 FolderView::FolderView(QWidget *parent) :
     QTableView(parent),
+    m_mainWnd(NULL),
     m_model(),
     m_dragStartPos(),
     m_dragging(false)
@@ -52,10 +54,12 @@ QString FolderView::side() const
     }
 }
 
-void FolderView::initialize()
+void FolderView::initialize(MainWindow *mainWnd)
 {
     qDebug() << side() << "initialize";
 
+    m_mainWnd = mainWnd;
+
     setColumnWidth(0, 30);
 
     // ソート順を初期化する
@@ -306,6 +310,7 @@ void FolderView::setPath(const QString &path, bool addHistory)
 
     Q_ASSERT(QFileInfo(path).isDir());
 
+    m_mainWnd->statusBar()->showMessage(tr("ファイルリストを取得しています..."));
     emit retrieveStarted(path);
 
     setUpdatesEnabled(false);
@@ -317,7 +322,7 @@ void FolderView::setPath(const QString &path, bool addHistory)
         m_history.add(path);
     }
 
-    emit retrieveFinished();
+    m_mainWnd->statusBar()->showMessage(tr("レディ"));
 }
 
 void FolderView::setFilter(QDir::Filters filter, bool enable)
index 5775739..cc22009 100644 (file)
@@ -5,6 +5,7 @@
 #include "history.h"
 
 #include <QTableView>
+class MainWindow;
 
 class FolderView : public QTableView
 {
@@ -15,7 +16,7 @@ public:
     QString side() const;
 
     // actions
-    void initialize();
+    void initialize(MainWindow *mainWnd);
     void updateAppearance();
     void refresh();
 
@@ -31,7 +32,6 @@ public:
     bool historyBack();
     bool historyForward();
 
-
     // getter
     QFileInfo currentItem() const;
     QString dir() const { return m_model.absolutePath(); }
@@ -48,6 +48,7 @@ public:
     void setSorting();
 
 private:
+    MainWindow *m_mainWnd;
     FileTableModel m_model;
     History m_history;
     QPoint m_dragStartPos;
@@ -60,7 +61,6 @@ signals:
     void itemFound();
     void itemNotFound();
     void retrieveStarted(const QString &path);
-    void retrieveFinished();
     void requestContextMenu(QContextMenuEvent *event);
 //    void keyPressed(QKeyEvent *event);
 
index c4ba791..49de10f 100644 (file)
@@ -2,7 +2,7 @@
 \r
 ; HM NIS Edit Wizard helper defines\r
 !define PRODUCT_NAME "Gefu"\r
-!define PRODUCT_VERSION "0.16"\r
+!define PRODUCT_VERSION "0.17"\r
 !define PRODUCT_PUBLISHER "@miyabi_satoh"\r
 !define PRODUCT_WEB_SITE "http://gefu.sourceforge.jp/"\r
 !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Gefu.exe"\r
@@ -51,7 +51,7 @@ var ICONS_GROUP
 ; MUI end ------\r
 \r
 Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"\r
-OutFile "Gefu016_full_setup.exe"\r
+OutFile "Gefu017_full_setup.exe"\r
 InstallDir "$PROGRAMFILES\Gefu"\r
 InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""\r
 ShowInstDetails show\r
index ac94a2d..e6aa11f 100644 (file)
@@ -2,7 +2,7 @@
 \r
 ; HM NIS Edit Wizard helper defines\r
 !define PRODUCT_NAME "Gefu"\r
-!define PRODUCT_VERSION "0.16"\r
+!define PRODUCT_VERSION "0.17"\r
 !define PRODUCT_PUBLISHER "@miyabi_satoh"\r
 !define PRODUCT_WEB_SITE "http://gefu.sourceforge.jp/"\r
 !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Gefu.exe"\r
@@ -51,7 +51,7 @@ var ICONS_GROUP
 ; MUI end ------\r
 \r
 Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"\r
-OutFile "Gefu016_Setup.exe"\r
+OutFile "Gefu017_Setup.exe"\r
 InstallDir "$PROGRAMFILES\Gefu"\r
 InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""\r
 ShowInstDetails show\r
index 07a0744..07aa33d 100644 (file)
@@ -2,6 +2,7 @@
 = フォルダビュー
 ||キー      ||装飾なし                           ||Shift                            ||Alt                            ||Ctrl(Command)                ||覚え方                         ||
 ||A         ||すべてのファイルをマーク           ||すべてマーク                     ||                               ||                             ||All                            ||
+||B         ||ブックマークを表示                 ||ブックマークを編集               ||                               ||                             ||Bookmark                       ||
 ||C         ||ファイル名をクリップボードにコピー ||フルパスをクリップボードにコピー ||                               ||隣のペインにアイテムをコピー ||Copy                           ||
 ||D         ||                                   ||                                 ||                               ||選択アイテムを削除           ||Delete                         ||
 ||E         ||外部エディタで開く                 ||                                 ||                               ||ファイルを作成               ||Edit, newの「E」               ||
 ||/         ||ファイル検索開始/終了              ||                                 ||                               ||                             ||                               ||
 ||+         ||フォントサイズを大きく             ||                                 ||                               ||                             ||                               ||
 ||-         ||フォントサイズを小さく             ||                                 ||                               ||                             ||                               ||
-||↑        ||カーソルを上に移動                 ||隣ペインのカーソルを上に移動     ||隣ペインのカーソルを先頭に移動 ||
-||↓        ||カーソルを下に移動                 ||隣ペインのカーソルを下に移動     ||隣ペインのカーソルを末尾に移動 ||
-||←        ||親フォルダに移動/隣のペインに移動  ||
-||→        ||親フォルダに移動/隣のペインに移動  ||
+||↑        ||カーソルを上に移動                 ||隣ペインのカーソルを上に移動     ||隣ペインのカーソルを先頭に移動 ||                             ||                               ||
+||↓        ||カーソルを下に移動                 ||隣ペインのカーソルを下に移動     ||隣ペインのカーソルを末尾に移動 ||                             ||                               ||
+||←        ||親フォルダに移動/隣のペインに移動  ||                                 ||                               ||                             ||                               ||
+||→        ||親フォルダに移動/隣のペインに移動  ||                                 ||                               ||                             ||                               ||
 = テキストビュー
 ||キー      ||装飾なし                           ||Shift                            ||Alt                            ||Ctrl(Command)                    ||覚え方                ||
 ||C         ||ファイル名をクリップボードにコピー ||フルパスをクリップボードにコピー ||                               ||選択範囲をクリップボードにコピー ||Copy                  ||
@@ -55,7 +56,7 @@
 ||BACKSPACE ||フォルダビューに戻る               ||                                 ||                               ||                                 ||                      ||
 ||+         ||フォントサイズを大きく             ||                                 ||                               ||                                 ||                      ||
 ||-         ||フォントサイズを小さく             ||                                 ||                               ||                                 ||                      ||
-||↑        ||カーソルを上に移動                 ||隣ペインのカーソルを上に移動     ||隣ペインのカーソルを先頭に移動 ||
-||↓        ||カーソルを下に移動                 ||隣ペインのカーソルを下に移動     ||隣ペインのカーソルを末尾に移動 ||
-||←        ||PageUp                             ||
-||→        ||PageDown                           ||
+||↑        ||カーソルを上に移動                 ||隣ペインのカーソルを上に移動     ||隣ペインのカーソルを先頭に移動 ||                                 ||                      ||
+||↓        ||カーソルを下に移動                 ||隣ペインのカーソルを下に移動     ||隣ペインのカーソルを末尾に移動 ||                                 ||                      ||
+||←        ||PageUp                             ||                                 ||                               ||                                 ||                      ||
+||→        ||PageDown                           ||                                 ||                               ||                                 ||                      ||
index 4deb1c0..6955335 100644 (file)
@@ -17,6 +17,7 @@
 #include "simpleimageview.h"\r
 #include "mainwindow.h"\r
 #include "ui_mainwindow.h"\r
+#include "bookmarkdialog.h"\r
 \r
 #include <QCheckBox>\r
 #include <QCloseEvent>\r
@@ -81,6 +82,9 @@ MainWindow::MainWindow(QWidget *parent) :
     }\r
 \r
     QSettings settings;\r
+    // ブックマークメニューを初期化する\r
+    initBookmark();\r
+\r
     // メニュー項目の状態を初期化する\r
     ui->view_Hidden->setChecked(settings.value(IniKey_ShowHidden).toBool());\r
     ui->view_System->setChecked(settings.value(IniKey_ShowSystem).toBool());\r
@@ -272,30 +276,6 @@ void MainWindow::historyForward()
     }\r
 }\r
 \r
-void MainWindow::itemFound()\r
-{\r
-    qDebug() << "MainWindow::itemFound";\r
-\r
-    SearchBox *box = sender()->parent()->findChild<SearchBox*>("searchBox");\r
-    Q_CHECK_PTR(box);\r
-\r
-    QPalette pal = box->palette();\r
-    pal.setColor(QPalette::Text, QPalette().text().color());\r
-    box->setPalette(pal);\r
-}\r
-\r
-void MainWindow::itemNotFound()\r
-{\r
-    qDebug() << "MainWindow::itemNotFound";\r
-\r
-    SearchBox *box = sender()->parent()->findChild<SearchBox*>("searchBox");\r
-    Q_CHECK_PTR(box);\r
-\r
-    QPalette pal = box->palette();\r
-    pal.setColor(QPalette::Text, Qt::red);\r
-    box->setPalette(pal);\r
-}\r
-\r
 void MainWindow::markAll()\r
 {\r
     qDebug() << "MainWindow::markAll();";\r
@@ -430,26 +410,12 @@ void MainWindow::rightKeyPress()
     }\r
 }\r
 \r
-void MainWindow::returnPressInSearchBox()\r
-{\r
-    qDebug() << "MainWindow::returnPressInSearchBox";\r
-\r
-    if (QApplication::keyboardModifiers() & Qt::ShiftModifier) {\r
-        emit ui->action_SearchPrev->triggered();\r
-    }\r
-    else {\r
-        emit ui->action_SearchNext->triggered();\r
-    }\r
-}\r
-\r
 void MainWindow::showFileInfo(const QString &str)\r
 {\r
     qDebug() << "MainWindow::showFileInfo();" << str;\r
     QLabel *label = ui->statusBar->findChild<QLabel*>("Right");\r
     Q_CHECK_PTR(label);\r
 \r
-//    label->resize(QFontMetrics(label->font()).boundingRect(str).width(),\r
-//                  label->height());\r
     label->setText(str);\r
 }\r
 \r
@@ -742,8 +708,6 @@ void MainWindow::open(const QModelIndex &index)
         ui->splitter->setVisible(false);\r
 \r
         setViewMode(ModeFullView);\r
-        // focusChangeでupdateActionsされるので不要\r
-//        updateActions();\r
     }\r
     else {\r
         ui->pane3->setVisible(false);\r
@@ -823,6 +787,21 @@ void MainWindow::openTerminal()
     }\r
 }\r
 \r
+void MainWindow::openBookmark()\r
+{\r
+    qDebug() << "MainWindow::openBookmark();";\r
+\r
+    FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+    Q_CHECK_PTR(view);\r
+\r
+    QAction *action = qobject_cast<QAction*>(sender());\r
+    Q_CHECK_PTR(action);\r
+\r
+    QSettings settings;\r
+    int i = action->data().toInt();\r
+    view->setPath(settings.value(IniKey_BookmarkEntryPath(i)).toString(), true);\r
+}\r
+\r
 void MainWindow::refresh()\r
 {\r
     qDebug() << "MainWindow::refresh();";\r
@@ -885,30 +864,43 @@ void MainWindow::renameItems()
     settings.setValue(IniKey_AutoCloseRename, opDlg.autoClose());\r
 }\r
 \r
-void MainWindow::retrieveFinish()\r
+void MainWindow::shellExecute()\r
 {\r
-    qDebug() << "MainWindow::retrieveFinish();";\r
+    qDebug() << "MainWindow::shellExecute";\r
 \r
-    ui->statusBar->showMessage(tr("レディ"), 5000);\r
+    FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+    Q_CHECK_PTR(view);\r
+\r
+    foreach (const QFileInfo &info, view->selectedItems()) {\r
+        QString path = QDir::toNativeSeparators(info.absoluteFilePath());\r
+        QDesktopServices::openUrl(QUrl("file:///" + path));\r
+    }\r
 }\r
 \r
-void MainWindow::retrieveStart(const QString &path)\r
+void MainWindow::showBookmarkDialog()\r
 {\r
-    qDebug() << "MainWindow::retrieveStart();" << path;\r
+    FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+    Q_CHECK_PTR(view);\r
 \r
-    ui->statusBar->showMessage(tr("ファイルリストを取得しています..."));\r
+    BookmarkDialog dlg(this);\r
+    dlg.setEditMode(false);\r
+    if (dlg.exec() == QDialog::Accepted) {\r
+        int n = dlg.selectedIndex();\r
+\r
+        QSettings settings;\r
+        view->setPath(settings.value(IniKey_BookmarkEntryPath(n)).toString(), true);\r
+    }\r
 }\r
 \r
-void MainWindow::shellExecute()\r
+void MainWindow::editBookmark()\r
 {\r
-    qDebug() << "MainWindow::shellExecute";\r
+    qDebug() << "MainWindow::showBookmarkDialog();";\r
 \r
-    FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
-    Q_CHECK_PTR(view);\r
+    BookmarkDialog dlg(this);\r
+    dlg.setEditMode(true);\r
 \r
-    foreach (const QFileInfo &info, view->selectedItems()) {\r
-        QString path = QDir::toNativeSeparators(info.absoluteFilePath());\r
-        QDesktopServices::openUrl(QUrl("file:///" + path));\r
+    if (dlg.exec() == QDialog::Accepted) {\r
+        initBookmark();\r
     }\r
 }\r
 \r
@@ -1025,25 +1017,25 @@ void MainWindow::switchHalfMode(bool checked)
     updateActions();\r
 }\r
 \r
-void MainWindow::searchItem(const QString &text)\r
-{\r
-    qDebug() << "MainWindow::searchItem" << text;\r
+//void MainWindow::searchItem(const QString &text)\r
+//{\r
+//    qDebug() << "MainWindow::searchItem" << text;\r
 \r
-    SearchBox *box = qobject_cast<SearchBox*>(qApp->focusWidget());\r
-    Q_CHECK_PTR(box);\r
+//    SearchBox *box = qobject_cast<SearchBox*>(qApp->focusWidget());\r
+//    Q_CHECK_PTR(box);\r
 \r
-    if (text.right(1) == "/") {\r
-        // '/'が入力されたら、検索終了\r
-        box->setText(text.left(text.length() - 1));\r
-        ui->action_Search->setChecked(false);\r
-    }\r
-    else {\r
-        FolderPanel *fp = qobject_cast<FolderPanel*>(box->parent());\r
-        Q_CHECK_PTR(fp);\r
+//    if (text.right(1) == "/") {\r
+//        // '/'が入力されたら、検索終了\r
+//        box->setText(text.left(text.length() - 1));\r
+//        ui->action_Search->setChecked(false);\r
+//    }\r
+//    else {\r
+//        FolderPanel *fp = qobject_cast<FolderPanel*>(box->parent());\r
+//        Q_CHECK_PTR(fp);\r
 \r
-        fp->folderView()->searchItem(box->text());\r
-    }\r
-}\r
+//        fp->folderView()->searchItem(box->text());\r
+//    }\r
+//}\r
 \r
 void MainWindow::searchNext()\r
 {\r
@@ -1149,6 +1141,27 @@ void MainWindow::changeFontSize(int diff)
     }\r
 }\r
 \r
+void MainWindow::initBookmark()\r
+{\r
+    QSettings settings;\r
+    QFileIconProvider iconProvider;\r
+\r
+    ui->menu_Bookmark->clear();\r
+    ui->menu_Bookmark->addAction(ui->bookmark_Edit);\r
+    ui->menu_Bookmark->addSeparator();\r
+    int i = 0;\r
+    while (!settings.value(IniKey_BookmarkEntryName(i), "").toString().isEmpty()) {\r
+        QString path = settings.value(IniKey_BookmarkEntryPath(i)).toString();\r
+        QAction *action = new QAction(this);\r
+        action->setText(settings.value(IniKey_BookmarkEntryName(i)).toString());\r
+        action->setData(i);\r
+        action->setIcon(iconProvider.icon(QFileInfo(path)));\r
+        ui->menu_Bookmark->addAction(action);\r
+        connect(action, SIGNAL(triggered()), this, SLOT(openBookmark()));\r
+        i++;\r
+    }\r
+}\r
+\r
 void MainWindow::setPathFromOther()\r
 {\r
     qDebug() << "MainWindow::setPathFromOther();";\r
@@ -1301,8 +1314,15 @@ void MainWindow::showContextMenu(QContextMenuEvent *event)
         menu.addAction(ui->action_OpenEditor);\r
         menu.addAction(ui->action_OpenTerminal);\r
         menu.addSeparator();\r
+        menu.addAction(ui->cmd_Copy);\r
+        menu.addAction(ui->cmd_Move);\r
+        menu.addSeparator();\r
+        menu.addAction(ui->cmd_Delete);\r
+        menu.addSeparator();\r
         menu.addAction(ui->copy_Filename);\r
         menu.addAction(ui->copy_Fullpath);\r
+        menu.addSeparator();\r
+        menu.addAction(ui->cmd_Rename);\r
     }\r
     else {\r
         menu.addAction(ui->move_Back);\r
@@ -1312,6 +1332,9 @@ void MainWindow::showContextMenu(QContextMenuEvent *event)
         menu.addAction(ui->move_Home);\r
         menu.addAction(ui->move_Root);\r
         menu.addAction(ui->move_Jump);\r
+        menu.addSeparator();\r
+        menu.addAction(ui->cmd_NewFile);\r
+        menu.addAction(ui->cmd_NewFolder);\r
     }\r
 \r
     menu.exec(event->globalPos());\r
@@ -1437,6 +1460,8 @@ void MainWindow::initActionConnections()
     connect(ui->view_Swap, SIGNAL(triggered()), this, SLOT(swapView()));\r
     connect(ui->view_System, SIGNAL(toggled(bool)), this, SLOT(toggleShowSystemFiles(bool)));\r
     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
 }\r
 \r
 void MainWindow::replaceVars(QString &str, const QFileInfo info)\r
index 28a4ae1..a620d39 100644 (file)
@@ -39,7 +39,6 @@ public slots:
     void focusChange(QWidget * old, QWidget * now);\r
     void leftKeyPress();\r
     void rightKeyPress();\r
-    void returnPressInSearchBox();\r
     void showFileInfo(const QString &str);\r
 \r
     void about();\r
@@ -55,11 +54,10 @@ public slots:
     void cursorDown();\r
     void cursorUp();\r
     void deleteItems();\r
+    void editBookmark();\r
     void executeCommand();\r
     void historyBack();\r
     void historyForward();\r
-    void itemFound();\r
-    void itemNotFound();\r
     void markAll();\r
     void markAllFiles();\r
     void markAllOff();\r
@@ -69,11 +67,9 @@ public slots:
     void open(const QModelIndex &index = QModelIndex());\r
     void openEditor(const QString &path = QString());\r
     void openTerminal();\r
+    void openBookmark();\r
     void refresh();\r
     void renameItems();\r
-    void retrieveFinish();\r
-    void retrieveStart(const QString &path);\r
-    void searchItem(const QString& text);\r
     void searchNext();\r
     void searchPrev();\r
     void setCursorToBegin();\r
@@ -86,6 +82,7 @@ public slots:
     void setPathToParent();\r
     void setPathToRoot();\r
     void shellExecute();\r
+    void showBookmarkDialog();\r
     void showFilterDialog();\r
     void showHistoryDialog();\r
     void showPreferenceDialog();\r
@@ -123,6 +120,7 @@ private:
     void showNameFilters(FolderView *view);\r
     void copyItems(const QFileInfoList &list, const QString &tgtDir);\r
     void changeFontSize(int diff);\r
+    void initBookmark();\r
 \r
     // getter\r
     FolderView* otherSideFolderView(const FolderView *view) const;\r
index 4df8562..6e3d95a 100644 (file)
     <addaction name="check_Update"/>\r
     <addaction name="help_About"/>\r
    </widget>\r
+   <widget class="QMenu" name="menu_Bookmark">\r
+    <property name="title">\r
+     <string>ブックマーク</string>\r
+    </property>\r
+    <addaction name="bookmark_Edit"/>\r
+    <addaction name="separator"/>\r
+   </widget>\r
    <addaction name="menu_File"/>\r
    <addaction name="menu_Mark"/>\r
    <addaction name="menu_View"/>\r
    <addaction name="menu_Move"/>\r
+   <addaction name="menu_Bookmark"/>\r
    <addaction name="menu_Operate"/>\r
    <addaction name="menu_Help"/>\r
   </widget>\r
     <string>P</string>\r
    </property>\r
   </action>\r
+  <action name="bookmark_Edit">\r
+   <property name="text">\r
+    <string>ブックマークを編集...</string>\r
+   </property>\r
+   <property name="toolTip">\r
+    <string>ブックマークを編集...</string>\r
+   </property>\r
+   <property name="shortcut">\r
+    <string>Shift+B</string>\r
+   </property>\r
+  </action>\r
+  <action name="bookmark_Show">\r
+   <property name="text">\r
+    <string>ブックマークを表示</string>\r
+   </property>\r
+   <property name="shortcut">\r
+    <string>B</string>\r
+   </property>\r
+  </action>\r
  </widget>\r
  <layoutdefault spacing="6" margin="11"/>\r
  <customwidgets>\r
index 284046e..e6f4c91 100644 (file)
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
 #ifndef VERSION_H
 #define VERSION_H
 
-#define VERSION_VALUE   0.16
+#define VERSION_VALUE   0.17
 
 #endif // VERSION_H