Initial work on new workspace view

FossilOrigin-Name: 64386745ebf2d2fa921a51383bd76241947b879c
This commit is contained in:
kostas 2015-05-01 19:04:02 +00:00
parent b796cde81b
commit 2bf3de6c2b
6 changed files with 225 additions and 80 deletions

View File

@ -1,5 +1,5 @@
C Merged\srefactor\nAdded\smissing\sstatus\sUPDATED_BY_MERGE\s\nFixed\sparsing\sof\sfile\sstatus
D 2015-04-30T17:43:40.786
C Initial\swork\son\snew\sworkspace\sview\n
D 2015-05-01T19:04:02.737
F .travis.yml 77966888a81c4ceee1fcc79bce842c9667ad8a35
F debian/changelog eb4304dfcb6bb66850ec740838090eb50ce1249b
F debian/compat b6abd567fa79cbe0196d093a067271361dc6ca8b
@ -200,13 +200,13 @@ F src/Fossil.cpp b54d136f05764535636da04bcc5f60b2eb97e5b6
F src/Fossil.h e46ec6cdb5c23a34176050fbd90e561ac87c07f9
F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c
F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261
F src/MainWindow.cpp b8d87316df5ca82d6ac9bb0960304ab39489a91f
F src/MainWindow.h d8d376f2efbf47c7a0241bb574994dbcf92300fb
F src/MainWindow.cpp 7f3b06953194c1aa46511b49906edab8c194930d
F src/MainWindow.h 5e0b71e6b795c32ae4207ffb44aa056b52674a10
F src/SettingsDialog.cpp a46cff5e5dd425e3dbdd15632abfd5829f5562b4
F src/SettingsDialog.h 4e2790f581e991c744ae9f86580f1972b8c7ff43
F src/Utils.cpp f78728e0817b1db23007ba0d2c5c26980ee7ebca
F src/Utils.h 8ad68bd227bd999eb6ea92a70bb4be2d6788d912
F src/Workspace.cpp 199ec5f5aee9e8d9997617aa879cb9a14dafcb1b
F src/Workspace.cpp 114daa2d44228ac253056fdf74a45e977d181475
F src/Workspace.h 9f1d34320abb378ae5a6e3360f8c8a5949029b88
F src/main.cpp 2ac8badc2a63fa123ceae53382ce24cfe1b5a54b
F tools/git-push.sh 62cc58434cae5b7bcd6bd9d4cce8b08739f31cd7 x
@ -215,9 +215,9 @@ F ui/BrowserWidget.ui 5ad98b13773afadb20a1a2c22148aaebe5dbd95d
F ui/CloneDialog.ui 4886e7d4f258ea8b852b5eefc860396e35145712
F ui/CommitDialog.ui 6200f6cabdcf40a20812e811be28e0793f82516f
F ui/FileActionDialog.ui 89bb4dc2d0b8adcd41adcb11ec65f2028a09a12d
F ui/MainWindow.ui c02f609b7f3a33c9be5f420591466ae5e398a988
F ui/MainWindow.ui ef46a06e46eb465703a8b7353b079c2e538104d7
F ui/SettingsDialog.ui 2b7c2870e0054b0f4106f495d85d02c0b814df8b
P e54f1cacad13f429891d89053a208cd340386a3b 54059126aee6bb232373c1f134cc07ea0a6f4cca
R c8caf9794c01c2e9f28e7aab2d817e71
P f82fab41453e6ccf28c60e89ce567635ffab25a3
R eb515f213709887707816d20f04a41de
U kostas
Z 2db0b96e08403561e015298ad9ef24fd
Z 79fc4cbaace7ceb95ba923e30451b76b

View File

@ -1 +1 @@
f82fab41453e6ccf28c60e89ce567635ffab25a3
64386745ebf2d2fa921a51383bd76241947b879c

View File

@ -38,6 +38,50 @@ enum
REPODIRMODEL_ROLE_PATH = Qt::UserRole+1
};
struct TreeViewItem
{
enum
{
TYPE_UNKNOWN,
TYPE_WORKSPACE,
TYPE_FOLDER,
TYPE_STASHES,
TYPE_STASH,
TYPE_BRANCHES,
TYPE_BRANCH,
TYPE_TAGS,
TYPE_TAG,
TYPE_REMOTES,
TYPE_SETTINGS
};
TreeViewItem()
: Type(TYPE_UNKNOWN)
{
}
TreeViewItem(int type, const QString &value)
: Type(type), Value(value)
{
}
TreeViewItem(const TreeViewItem &other)
{
Type = other.Type;
Value = other.Value;
}
int Type;
QString Value;
operator QVariant() const
{
return QVariant::fromValue(*this);
}
};
Q_DECLARE_METATYPE(TreeViewItem)
//-----------------------------------------------------------------------------
typedef QMap<QString, QString> QStringMap;
static QStringMap MakeKeyValues(QStringList lines)
@ -114,14 +158,16 @@ MainWindow::MainWindow(Settings &_settings, QWidget *parent, QString *workspaceP
SLOT( onWorkspaceTreeViewSelectionChanged(const QItemSelection &, const QItemSelection &) ),
Qt::DirectConnection );
ui->workspaceTreeView->addAction(ui->actionCommit);
ui->workspaceTreeView->addAction(ui->actionOpenFolder);
ui->workspaceTreeView->addAction(ui->actionAdd);
ui->workspaceTreeView->addAction(ui->actionRevert);
ui->workspaceTreeView->addAction(ui->actionDelete);
ui->workspaceTreeView->addAction(separator);
ui->workspaceTreeView->addAction(ui->actionRenameFolder);
ui->workspaceTreeView->addAction(ui->actionOpenFolder);
// Workspace Menus
menuWorkspace = new QMenu(this);
menuWorkspace->addAction(ui->actionCommit);
menuWorkspace->addAction(ui->actionOpenFolder);
menuWorkspace->addAction(ui->actionAdd);
menuWorkspace->addAction(ui->actionRevert);
menuWorkspace->addAction(ui->actionDelete);
menuWorkspace->addAction(separator);
menuWorkspace->addAction(ui->actionRenameFolder);
menuWorkspace->addAction(ui->actionOpenFolder);
// StashView
ui->stashTableView->setModel(&getWorkspace().getStashModel());
@ -130,6 +176,12 @@ MainWindow::MainWindow(Settings &_settings, QWidget *parent, QString *workspaceP
ui->stashTableView->addAction(ui->actionDeleteStash);
ui->stashTableView->horizontalHeader()->setSortIndicatorShown(false);
// StashMenu
menuStashes = new QMenu(this);
menuStashes->addAction(ui->actionApplyStash);
menuStashes->addAction(ui->actionDiffStash);
menuStashes->addAction(ui->actionDeleteStash);
// Recent Workspaces
// Locate a sequence of two separator actions in file menu
QList<QAction*> file_actions = ui->menuFile->actions();
@ -590,7 +642,7 @@ static void addPathToTree(QStandardItem &root, const QString &path)
if(!found) // Generate it
{
QStandardItem *child = new QStandardItem(QIcon(":icons/icons/Folder-01.png"), dir);
child->setData(fullpath); // keep the full path to simplify selection
child->setData(TreeViewItem(TreeViewItem::TYPE_FOLDER, fullpath), REPODIRMODEL_ROLE_PATH);
parent->appendRow(child);
parent = child;
}
@ -605,24 +657,61 @@ void MainWindow::updateDirView()
getWorkspace().getDirModel().clear();
QStringList header;
header << tr("Folders");
header << fossil().getProjectName();
getWorkspace().getDirModel().setHorizontalHeaderLabels(header);
QStandardItem *root = new QStandardItem(QIcon(":icons/icons/My Documents-01.png"), fossil().getProjectName());
root->setData(""); // Empty Path
root->setEditable(false);
QStandardItem *workspace = new QStandardItem(QIcon(":icons/icons/Folder-01.png"), "Workspace");
workspace->setData(TreeViewItem(TreeViewItem::TYPE_WORKSPACE, ""), REPODIRMODEL_ROLE_PATH);
workspace->setEditable(false);
getWorkspace().getDirModel().appendRow(root);
for(stringset_t::iterator it = getWorkspace().getPaths().begin(); it!=getWorkspace().getPaths().end(); ++it)
getWorkspace().getDirModel().appendRow(workspace);
if(viewMode == VIEWMODE_TREE)
{
const QString &dir = *it;
if(dir.isEmpty())
continue;
for(stringset_t::iterator it = getWorkspace().getPaths().begin(); it!=getWorkspace().getPaths().end(); ++it)
{
const QString &dir = *it;
if(dir.isEmpty())
continue;
addPathToTree(*root, dir);
addPathToTree(*workspace, dir);
}
}
QStandardItem *branches = new QStandardItem(QIcon(":icons/icons/Document Organization Chart-01.png"), "Branches");
branches->setData(TreeViewItem(TreeViewItem::TYPE_BRANCHES, ""), REPODIRMODEL_ROLE_PATH);
branches->setEditable(false);
getWorkspace().getDirModel().appendRow(branches);
QStandardItem *stashes = new QStandardItem(QIcon(":icons/icons/My Documents-01.png"), "Stashes");
stashes->setData(TreeViewItem(TreeViewItem::TYPE_STASHES, ""), REPODIRMODEL_ROLE_PATH);
stashes->setEditable(false);
getWorkspace().getDirModel().appendRow(stashes);
for(stashmap_t::const_iterator it= getWorkspace().getStashes().begin(); it!=getWorkspace().getStashes().end(); ++it)
{
QStandardItem *stash = new QStandardItem(QIcon(":icons/icons/Folder-01.png"), it.key());
stash->setData(TreeViewItem(TreeViewItem::TYPE_STASH, it.value()), REPODIRMODEL_ROLE_PATH);
stashes->appendRow(stash);
}
QStandardItem *tags = new QStandardItem(QIcon(":icons/icons/Book-01.png"), "Tags");
tags->setData(TreeViewItem(TreeViewItem::TYPE_TAGS, ""), REPODIRMODEL_ROLE_PATH);
tags->setEditable(false);
getWorkspace().getDirModel().appendRow(tags);
QStandardItem *remotes = new QStandardItem(QIcon(":icons/icons/Network PC-01.png"), "Remotes");
remotes->setData(TreeViewItem(TreeViewItem::TYPE_REMOTES, ""), REPODIRMODEL_ROLE_PATH);
remotes->setEditable(false);
getWorkspace().getDirModel().appendRow(remotes);
QStandardItem *settings = new QStandardItem(QIcon(":icons/icons/Gear-01.png"), "Settings");
settings->setData(TreeViewItem(TreeViewItem::TYPE_SETTINGS, ""), REPODIRMODEL_ROLE_PATH);
settings->setEditable(false);
getWorkspace().getDirModel().appendRow(settings);
ui->workspaceTreeView->expandToDepth(0);
ui->workspaceTreeView->sortByColumn(0, Qt::AscendingOrder);
//ui->workspaceTreeView->sortByColumn(0, Qt::AscendingOrder);
}
//------------------------------------------------------------------------------
@ -817,7 +906,7 @@ void MainWindow::applySettings()
ui->actionViewAsList->setChecked(store->value("ViewAsList").toBool());
viewMode = store->value("ViewAsList").toBool()? VIEWMODE_LIST : VIEWMODE_TREE;
}
ui->workspaceTreeView->setVisible(viewMode == VIEWMODE_TREE);
//ui->workspaceTreeView->setVisible(viewMode == VIEWMODE_TREE);
if(store->contains("ViewStash"))
ui->actionViewStash->setChecked(store->value("ViewStash").toBool());
@ -867,6 +956,7 @@ void MainWindow::updateSettings()
//------------------------------------------------------------------------------
void MainWindow::selectRootDir()
{
// FIXME: KKK
if(viewMode==VIEWMODE_TREE)
{
QModelIndex root_index = ui->workspaceTreeView->model()->index(0, 0);
@ -906,11 +996,15 @@ void MainWindow::getSelectionPaths(stringset_t &paths)
{
// Determine the directories selected
QModelIndexList selection = ui->workspaceTreeView->selectionModel()->selectedIndexes();
for(QModelIndexList::iterator mi_it = selection.begin(); mi_it!=selection.end(); ++mi_it)
foreach(const QModelIndex &mi, selection)
{
const QModelIndex &mi = *mi_it;
QVariant data = getWorkspace().getDirModel().data(mi, REPODIRMODEL_ROLE_PATH);
paths.insert(data.toString());
QVariant data = Workspace().getDirModel().data(mi, REPODIRMODEL_ROLE_PATH);
Q_ASSERT(data.isValid());
TreeViewItem tv = data.value<TreeViewItem>();
if(tv.Type != TreeViewItem::TYPE_FOLDER)
continue;
paths.insert(tv.Value);
}
}
//------------------------------------------------------------------------------
@ -1503,7 +1597,10 @@ void MainWindow::on_actionViewIgnored_triggered()
void MainWindow::on_actionViewAsList_triggered()
{
viewMode = ui->actionViewAsList->isChecked() ? VIEWMODE_LIST : VIEWMODE_TREE;
#if 0
ui->workspaceTreeView->setVisible(viewMode == VIEWMODE_TREE);
#endif
updateDirView();
updateFileView();
}
@ -1517,23 +1614,34 @@ QString MainWindow::getFossilHttpAddress()
//------------------------------------------------------------------------------
void MainWindow::onWorkspaceTreeViewSelectionChanged(const QItemSelection &/*selected*/, const QItemSelection &/*deselected*/)
{
QModelIndexList selection = ui->workspaceTreeView->selectionModel()->selectedIndexes();
int num_selected = selection.count();
QModelIndexList indices = ui->workspaceTreeView->selectionModel()->selectedIndexes();
// Do not modify the selection if nothing is selected
if(num_selected==0)
if(indices.empty())
return;
selectedDirs.clear();
stringset_t new_dirs;
for(int i=0; i<num_selected; ++i)
foreach(const QModelIndex &id, indices)
{
QModelIndex index = selection.at(i);
QString dir = getWorkspace().getDirModel().data(index, REPODIRMODEL_ROLE_PATH).toString();
selectedDirs.insert(dir);
Q_ASSERT(ui->workspaceTreeView->model()==&getWorkspace().getDirModel());
//QVariant data = getWorkspace().getDirModel().data(id, REPODIRMODEL_ROLE_PATH);
QVariant data = id.model()->data(id, REPODIRMODEL_ROLE_PATH);
Q_ASSERT(data.isValid());
TreeViewItem tv = data.value<TreeViewItem>();
if(tv.Type != TreeViewItem::TYPE_FOLDER && tv.Type != TreeViewItem::TYPE_WORKSPACE)
continue;
new_dirs.insert(tv.Value);
}
updateFileView();
// Update the selection if we have any new folders
if(!new_dirs.empty() && viewMode == VIEWMODE_TREE)
{
selectedDirs = new_dirs;
updateFileView();
}
}
//------------------------------------------------------------------------------
@ -1551,7 +1659,11 @@ void MainWindow::on_actionOpenFolder_triggered()
//------------------------------------------------------------------------------
void MainWindow::on_workspaceTreeView_doubleClicked(const QModelIndex &index)
{
QString target = getWorkspace().getDirModel().data(index, REPODIRMODEL_ROLE_PATH).toString();
QVariant data = index.model()->data(index, REPODIRMODEL_ROLE_PATH);
Q_ASSERT(data.isValid());
TreeViewItem tv = data.value<TreeViewItem>();
QString target = tv.Value;
target = getCurrentWorkspace() + PATH_SEPARATOR + target;
QUrl url = QUrl::fromLocalFile(target);
@ -1917,6 +2029,34 @@ void MainWindow::on_fileTableView_customContextMenuRequested(const QPoint &pos)
}
//------------------------------------------------------------------------------
void MainWindow::on_workspaceTreeView_customContextMenuRequested(const QPoint &)
{
QModelIndexList indices = ui->workspaceTreeView->selectionModel()->selectedIndexes();
if(indices.empty())
return;
QMenu *menu = 0;
// Get first selected item
const QModelIndex &mi = indices.first();
QVariant data = getWorkspace().getDirModel().data(mi, REPODIRMODEL_ROLE_PATH);
Q_ASSERT(data.isValid());
TreeViewItem tv = data.value<TreeViewItem>();
if(tv.Type == TreeViewItem::TYPE_FOLDER || tv.Type == TreeViewItem::TYPE_WORKSPACE)
menu = menuWorkspace;
else if (tv.Type == TreeViewItem::TYPE_STASH || tv.Type == TreeViewItem::TYPE_STASHES)
menu = menuStashes;
if(menu)
{
QPoint pos = QCursor::pos();
menu->popup(pos);
}
}
//------------------------------------------------------------------------------
void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{

View File

@ -112,6 +112,7 @@ private slots:
void on_actionDiffStash_triggered();
void on_textBrowser_customContextMenuRequested(const QPoint &pos);
void on_fileTableView_customContextMenuRequested(const QPoint &pos);
void on_workspaceTreeView_customContextMenuRequested(const QPoint &pos);
private:
class MainWinUICallback : public UICallback
@ -147,6 +148,9 @@ private:
class QAction *recentWorkspaceActs[MAX_RECENT];
class QProgressBar *progressBar;
class QShortcut *abortShortcut;
QMenu *menuWorkspace;
QMenu *menuStashes;
bool operationAborted;
stringset_t selectedDirs; // The directory selected in the tree

View File

@ -120,7 +120,6 @@ void Workspace::scanWorkspace(bool scanLocal, bool scanIgnored, bool scanModifie
if(space_index==-1)
continue;
//QString status_text = line.left(10).trimmed();
QString status_text = line.left(space_index);
QString fname = line.right(line.length() - space_index).trimmed();
WorkspaceFile::Type type = WorkspaceFile::TYPE_UNKNOWN;

View File

@ -17,7 +17,7 @@
<string>Fuel</string>
</property>
<property name="windowIcon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Battery-01.png</normaloff>:/icons/icons/Battery-01.png</iconset>
</property>
<property name="unifiedTitleAndToolBarOnMac">
@ -66,7 +66,7 @@
</sizepolicy>
</property>
<property name="contextMenuPolicy">
<enum>Qt::ActionsContextMenu</enum>
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
@ -263,7 +263,7 @@
<x>0</x>
<y>0</y>
<width>865</width>
<height>22</height>
<height>23</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
@ -356,7 +356,7 @@
<widget class="QStatusBar" name="statusBar"/>
<action name="actionRefresh">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Button Refresh-01.png</normaloff>:/icons/icons/Button Refresh-01.png</iconset>
</property>
<property name="text">
@ -374,7 +374,7 @@
</action>
<action name="actionCommit">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Save-01.png</normaloff>:/icons/icons/Save-01.png</iconset>
</property>
<property name="text">
@ -392,7 +392,7 @@
</action>
<action name="actionDiff">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Document Copy-01.png</normaloff>:/icons/icons/Document Copy-01.png</iconset>
</property>
<property name="text">
@ -410,7 +410,7 @@
</action>
<action name="actionAdd">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/File New-01.png</normaloff>:/icons/icons/File New-01.png</iconset>
</property>
<property name="text">
@ -428,7 +428,7 @@
</action>
<action name="actionDelete">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/File Delete-01.png</normaloff>:/icons/icons/File Delete-01.png</iconset>
</property>
<property name="text">
@ -446,7 +446,7 @@
</action>
<action name="actionNewRepository">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Document Blank-01.png</normaloff>:/icons/icons/Document Blank-01.png</iconset>
</property>
<property name="text">
@ -464,7 +464,7 @@
</action>
<action name="actionOpenRepository">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/My Documents-01.png</normaloff>:/icons/icons/My Documents-01.png</iconset>
</property>
<property name="text">
@ -496,11 +496,11 @@
</action>
<action name="actionCloneRepository">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/My Websites-01.png</normaloff>:/icons/icons/My Websites-01.png</iconset>
</property>
<property name="text">
<string>Clone...</string>
<string>C&amp;lone...</string>
</property>
<property name="statusTip">
<string>Clone a remote repository</string>
@ -508,7 +508,7 @@
</action>
<action name="actionPush">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Button Upload-01.png</normaloff>:/icons/icons/Button Upload-01.png</iconset>
</property>
<property name="text">
@ -526,7 +526,7 @@
</action>
<action name="actionPull">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Button Download-01.png</normaloff>:/icons/icons/Button Download-01.png</iconset>
</property>
<property name="text">
@ -544,7 +544,7 @@
</action>
<action name="actionRename">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/File Open-01.png</normaloff>:/icons/icons/File Open-01.png</iconset>
</property>
<property name="text">
@ -562,7 +562,7 @@
</action>
<action name="actionQuit">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Button Turn Off-01.png</normaloff>:/icons/icons/Button Turn Off-01.png</iconset>
</property>
<property name="text">
@ -583,7 +583,7 @@
</action>
<action name="actionHistory">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/File History-01.png</normaloff>:/icons/icons/File History-01.png</iconset>
</property>
<property name="text">
@ -604,7 +604,7 @@
<bool>true</bool>
</property>
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Network MAC-01.png</normaloff>:/icons/icons/Network MAC-01.png</iconset>
</property>
<property name="text">
@ -619,7 +619,7 @@
</action>
<action name="actionRevert">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Document-Revert-icon.png</normaloff>:/icons/icons/Document-Revert-icon.png</iconset>
</property>
<property name="text">
@ -634,7 +634,7 @@
</action>
<action name="actionClearLog">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Text Edit.png</normaloff>:/icons/icons/Text Edit.png</iconset>
</property>
<property name="text">
@ -649,7 +649,7 @@
</action>
<action name="actionTimeline">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Clock-01.png</normaloff>:/icons/icons/Clock-01.png</iconset>
</property>
<property name="text">
@ -664,7 +664,7 @@
</action>
<action name="actionOpenFile">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Document-01.png</normaloff>:/icons/icons/Document-01.png</iconset>
</property>
<property name="text">
@ -682,7 +682,7 @@
</action>
<action name="actionOpenContaining">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Folder-01.png</normaloff>:/icons/icons/Folder-01.png</iconset>
</property>
<property name="text">
@ -700,7 +700,7 @@
</action>
<action name="actionUndo">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Button Reload-01.png</normaloff>:/icons/icons/Button Reload-01.png</iconset>
</property>
<property name="text">
@ -718,7 +718,7 @@
</action>
<action name="actionAbout">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Battery-01.png</normaloff>:/icons/icons/Battery-01.png</iconset>
</property>
<property name="text">
@ -733,7 +733,7 @@
</action>
<action name="actionUpdate">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Button Play-01.png</normaloff>:/icons/icons/Button Play-01.png</iconset>
</property>
<property name="text">
@ -751,7 +751,7 @@
</action>
<action name="actionSettings">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Gear-01.png</normaloff>:/icons/icons/Gear-01.png</iconset>
</property>
<property name="text">
@ -839,7 +839,7 @@
</action>
<action name="actionOpenFolder">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Folder-01.png</normaloff>:/icons/icons/Folder-01.png</iconset>
</property>
<property name="text">
@ -854,7 +854,7 @@
</action>
<action name="actionRenameFolder">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Folder Open-01.png</normaloff>:/icons/icons/Folder Open-01.png</iconset>
</property>
<property name="text">
@ -869,7 +869,7 @@
</action>
<action name="actionNewStash">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Folder Add-01.png</normaloff>:/icons/icons/Folder Add-01.png</iconset>
</property>
<property name="text">
@ -881,7 +881,7 @@
</action>
<action name="actionApplyStash">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Folder Open-01.png</normaloff>:/icons/icons/Folder Open-01.png</iconset>
</property>
<property name="text">
@ -913,7 +913,7 @@
</action>
<action name="actionDeleteStash">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Folder Delete-01.png</normaloff>:/icons/icons/Folder Delete-01.png</iconset>
</property>
<property name="text">
@ -922,7 +922,7 @@
</action>
<action name="actionDiffStash">
<property name="icon">
<iconset>
<iconset resource="../rsrc/resources.qrc">
<normaloff>:/icons/icons/Folder Explorer-01.png</normaloff>:/icons/icons/Folder Explorer-01.png</iconset>
</property>
<property name="text">
@ -944,6 +944,8 @@
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<resources>
<include location="../rsrc/resources.qrc"/>
</resources>
<connections/>
</ui>