summaryrefslogtreecommitdiffstats
path: root/gui
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2013-08-28 04:38:29 +0200
committerPetr Mrázek <peterix@gmail.com>2013-08-28 04:38:29 +0200
commit5ff6fbf4648d286ff0f07a4dbf37c0b72651f66b (patch)
tree09f3f739d22370b8ce96144057d2cec2d74febb5 /gui
parentaa8766581ebad668194fcab87f53af4270e9679a (diff)
downloadMultiMC-5ff6fbf4648d286ff0f07a4dbf37c0b72651f66b.tar
MultiMC-5ff6fbf4648d286ff0f07a4dbf37c0b72651f66b.tar.gz
MultiMC-5ff6fbf4648d286ff0f07a4dbf37c0b72651f66b.tar.lz
MultiMC-5ff6fbf4648d286ff0f07a4dbf37c0b72651f66b.tar.xz
MultiMC-5ff6fbf4648d286ff0f07a4dbf37c0b72651f66b.zip
Basic 1.6 mod management (no jar mods)
Diffstat (limited to 'gui')
-rw-r--r--gui/LegacyModEditDialog.cpp32
-rw-r--r--gui/LegacyModEditDialog.ui4
-rw-r--r--gui/ModEditDialogCommon.cpp17
-rw-r--r--gui/ModEditDialogCommon.h4
-rw-r--r--gui/OneSixModEditDialog.cpp165
-rw-r--r--gui/OneSixModEditDialog.h (renamed from gui/modeditdialog.h)28
-rw-r--r--gui/OneSixModEditDialog.ui (renamed from gui/modeditdialog.ui)36
-rw-r--r--gui/modeditdialog.cpp35
-rw-r--r--gui/modeditwindow.cpp37
-rw-r--r--gui/modeditwindow.h0
-rw-r--r--gui/modeditwindow.ui241
11 files changed, 239 insertions, 360 deletions
diff --git a/gui/LegacyModEditDialog.cpp b/gui/LegacyModEditDialog.cpp
index 27856bb5..3181e7ee 100644
--- a/gui/LegacyModEditDialog.cpp
+++ b/gui/LegacyModEditDialog.cpp
@@ -14,6 +14,7 @@
*/
#include "LegacyModEditDialog.h"
+#include "ModEditDialogCommon.h"
#include "ui_LegacyModEditDialog.h"
#include <logic/ModList.h>
#include <pathutils.h>
@@ -57,12 +58,13 @@ LegacyModEditDialog::LegacyModEditDialog( LegacyInstance* inst, QWidget* parent
{
ensureFolderPathExists(m_inst->loaderModsDir());
m_mods = m_inst->loaderModList();
- ui->mlModTreeView->setModel(m_mods.data());
- ui->mlModTreeView->installEventFilter( this );
+ ui->loaderModTreeView->setModel(m_mods.data());
+ ui->loaderModTreeView->installEventFilter( this );
m_mods->startWatching();
}
// texture packs
{
+ ensureFolderPathExists(m_inst->texturePacksDir());
m_texturepacks = m_inst->texturePackList();
ui->texPackTreeView->setModel(m_texturepacks.data());
ui->texPackTreeView->installEventFilter( this );
@@ -142,7 +144,7 @@ bool LegacyModEditDialog::loaderListFilter ( QKeyEvent* keyEvent )
default:
break;
}
- return QDialog::eventFilter( ui->mlModTreeView, keyEvent );
+ return QDialog::eventFilter( ui->loaderModTreeView, keyEvent );
}
bool LegacyModEditDialog::texturePackListFilter ( QKeyEvent* keyEvent )
@@ -173,10 +175,10 @@ bool LegacyModEditDialog::eventFilter ( QObject* obj, QEvent* ev )
return jarListFilter(keyEvent);
if(obj == ui->coreModsTreeView)
return coreListFilter(keyEvent);
- if(obj == ui->mlModTreeView)
+ if(obj == ui->loaderModTreeView)
return loaderListFilter(keyEvent);
if(obj == ui->texPackTreeView)
- return loaderListFilter(keyEvent);
+ return texturePackListFilter(keyEvent);
return QDialog::eventFilter( obj, ev );
}
@@ -226,22 +228,6 @@ void LegacyModEditDialog::on_addTexPackBtn_clicked()
}
}
-bool lastfirst (QModelIndexList & list, int & first, int & last)
-{
- if(!list.size())
- return false;
- first = last = list[0].row();
- for(auto item: list)
- {
- int row = item.row();
- if(row < first)
- first = row;
- if(row > last)
- last = row;
- }
- return true;
-}
-
void LegacyModEditDialog::on_moveJarDownBtn_clicked()
{
int first, last;
@@ -286,7 +272,7 @@ void LegacyModEditDialog::on_rmJarBtn_clicked()
void LegacyModEditDialog::on_rmModBtn_clicked()
{
int first, last;
- auto list = ui->mlModTreeView->selectionModel()->selectedRows();
+ auto list = ui->loaderModTreeView->selectionModel()->selectedRows();
if(!lastfirst(list, first, last))
return;
@@ -315,7 +301,7 @@ void LegacyModEditDialog::on_viewModBtn_clicked()
}
void LegacyModEditDialog::on_viewTexPackBtn_clicked()
{
- openDirInDefaultProgram(m_inst->texturePackDir(), true);
+ openDirInDefaultProgram(m_inst->texturePacksDir(), true);
}
diff --git a/gui/LegacyModEditDialog.ui b/gui/LegacyModEditDialog.ui
index 49ddbb19..bd147c85 100644
--- a/gui/LegacyModEditDialog.ui
+++ b/gui/LegacyModEditDialog.ui
@@ -145,11 +145,11 @@
</widget>
<widget class="QWidget" name="modTab">
<attribute name="title">
- <string>Mods</string>
+ <string>Loader Mods</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
- <widget class="ModListView" name="mlModTreeView">
+ <widget class="ModListView" name="loaderModTreeView">
<property name="acceptDrops">
<bool>true</bool>
</property>
diff --git a/gui/ModEditDialogCommon.cpp b/gui/ModEditDialogCommon.cpp
new file mode 100644
index 00000000..5da0a039
--- /dev/null
+++ b/gui/ModEditDialogCommon.cpp
@@ -0,0 +1,17 @@
+#include "ModEditDialogCommon.h"
+
+bool lastfirst (QModelIndexList & list, int & first, int & last)
+{
+ if(!list.size())
+ return false;
+ first = last = list[0].row();
+ for(auto item: list)
+ {
+ int row = item.row();
+ if(row < first)
+ first = row;
+ if(row > last)
+ last = row;
+ }
+ return true;
+} \ No newline at end of file
diff --git a/gui/ModEditDialogCommon.h b/gui/ModEditDialogCommon.h
new file mode 100644
index 00000000..a27a8a82
--- /dev/null
+++ b/gui/ModEditDialogCommon.h
@@ -0,0 +1,4 @@
+#pragma once
+#include <QAbstractItemModel>
+
+bool lastfirst (QModelIndexList & list, int & first, int & last); \ No newline at end of file
diff --git a/gui/OneSixModEditDialog.cpp b/gui/OneSixModEditDialog.cpp
new file mode 100644
index 00000000..8e738fa1
--- /dev/null
+++ b/gui/OneSixModEditDialog.cpp
@@ -0,0 +1,165 @@
+/* Copyright 2013 MultiMC Contributors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "OneSixModEditDialog.h"
+#include "ModEditDialogCommon.h"
+#include "ui_OneSixModEditDialog.h"
+#include <logic/ModList.h>
+#include <pathutils.h>
+#include <QFileDialog>
+#include <QDebug>
+#include <QEvent>
+#include <QKeyEvent>
+
+OneSixModEditDialog::OneSixModEditDialog(OneSixInstance * inst, QWidget *parent):
+ m_inst(inst),
+ QDialog(parent),
+ ui(new Ui::OneSixModEditDialog)
+{
+ ui->setupUi(this);
+ //TODO: libraries!
+ {
+ // yeah... here be the real dragons.
+ }
+ // Loader mods
+ {
+ ensureFolderPathExists(m_inst->loaderModsDir());
+ m_mods = m_inst->loaderModList();
+ ui->loaderModTreeView->setModel(m_mods.data());
+ ui->loaderModTreeView->installEventFilter( this );
+ m_mods->startWatching();
+ }
+ // resource packs
+ {
+ ensureFolderPathExists(m_inst->resourcePacksDir());
+ m_resourcepacks = m_inst->resourcePackList();
+ ui->resPackTreeView->setModel(m_resourcepacks.data());
+ ui->resPackTreeView->installEventFilter( this );
+ m_resourcepacks->startWatching();
+ }
+}
+
+OneSixModEditDialog::~OneSixModEditDialog()
+{
+ m_mods->stopWatching();
+ m_resourcepacks->stopWatching();
+ delete ui;
+}
+
+bool OneSixModEditDialog::loaderListFilter ( QKeyEvent* keyEvent )
+{
+ switch(keyEvent->key())
+ {
+ case Qt::Key_Delete:
+ on_rmModBtn_clicked();
+ return true;
+ case Qt::Key_Plus:
+ on_addModBtn_clicked();
+ return true;
+ default:
+ break;
+ }
+ return QDialog::eventFilter( ui->loaderModTreeView, keyEvent );
+}
+
+bool OneSixModEditDialog::resourcePackListFilter ( QKeyEvent* keyEvent )
+{
+ switch(keyEvent->key())
+ {
+ case Qt::Key_Delete:
+ on_rmResPackBtn_clicked();
+ return true;
+ case Qt::Key_Plus:
+ on_addResPackBtn_clicked();
+ return true;
+ default:
+ break;
+ }
+ return QDialog::eventFilter( ui->resPackTreeView, keyEvent );
+}
+
+
+bool OneSixModEditDialog::eventFilter ( QObject* obj, QEvent* ev )
+{
+ if (ev->type() != QEvent::KeyPress)
+ {
+ return QDialog::eventFilter( obj, ev );
+ }
+ QKeyEvent *keyEvent = static_cast<QKeyEvent*>(ev);
+ if(obj == ui->loaderModTreeView)
+ return loaderListFilter(keyEvent);
+ if(obj == ui->resPackTreeView)
+ return resourcePackListFilter(keyEvent);
+ return QDialog::eventFilter( obj, ev );
+}
+
+void OneSixModEditDialog::on_buttonBox_rejected()
+{
+ close();
+}
+
+void OneSixModEditDialog::on_addModBtn_clicked()
+{
+ QStringList fileNames = QFileDialog::getOpenFileNames(this, "Select Loader Mods");
+ for(auto filename:fileNames)
+ {
+ m_mods->stopWatching();
+ m_mods->installMod(QFileInfo(filename));
+ m_mods->startWatching();
+ }
+}
+void OneSixModEditDialog::on_rmModBtn_clicked()
+{
+ int first, last;
+ auto list = ui->loaderModTreeView->selectionModel()->selectedRows();
+
+ if(!lastfirst(list, first, last))
+ return;
+ m_mods->stopWatching();
+ m_mods->deleteMods(first, last);
+ m_mods->startWatching();
+}
+void OneSixModEditDialog::on_viewModBtn_clicked()
+{
+ openDirInDefaultProgram(m_inst->loaderModsDir(), true);
+}
+
+
+void OneSixModEditDialog::on_addResPackBtn_clicked()
+{
+ QStringList fileNames = QFileDialog::getOpenFileNames(this, "Select Resource Packs");
+ for(auto filename:fileNames)
+ {
+ m_resourcepacks->stopWatching();
+ m_resourcepacks->installMod(QFileInfo(filename));
+ m_resourcepacks->startWatching();
+ }
+}
+void OneSixModEditDialog::on_rmResPackBtn_clicked()
+{
+ int first, last;
+ auto list = ui->resPackTreeView->selectionModel()->selectedRows();
+
+ if(!lastfirst(list, first, last))
+ return;
+ m_resourcepacks->stopWatching();
+ m_resourcepacks->deleteMods(first, last);
+ m_resourcepacks->startWatching();
+}
+void OneSixModEditDialog::on_viewResPackBtn_clicked()
+{
+ openDirInDefaultProgram(m_inst->resourcePacksDir(), true);
+}
+
diff --git a/gui/modeditdialog.h b/gui/OneSixModEditDialog.h
index 94272a32..3430bd26 100644
--- a/gui/modeditdialog.h
+++ b/gui/OneSixModEditDialog.h
@@ -13,27 +13,24 @@
* limitations under the License.
*/
-#ifndef MODEDITDIALOG_H
-#define MODEDITDIALOG_H
-
+#pragma once
#include <QDialog>
-#include "logic/BaseInstance.h"
+#include <logic/OneSixInstance.h>
namespace Ui {
- class ModEditDialog;
+ class OneSixModEditDialog;
}
-class ModEditDialog : public QDialog
+class OneSixModEditDialog : public QDialog
{
Q_OBJECT
public:
- explicit ModEditDialog(QWidget *parent = 0, BaseInstance* m_inst = 0);
- ~ModEditDialog();
+ explicit OneSixModEditDialog(OneSixInstance* inst, QWidget *parent = 0);
+ virtual ~OneSixModEditDialog();
private slots:
- /* Mapped for implementation
void on_addModBtn_clicked();
void on_rmModBtn_clicked();
void on_viewModBtn_clicked();
@@ -41,12 +38,15 @@ private slots:
void on_addResPackBtn_clicked();
void on_rmResPackBtn_clicked();
void on_viewResPackBtn_clicked();
- */
// Questionable: SettingsDialog doesn't need this for some reason?
void on_buttonBox_rejected();
-
+protected:
+ bool eventFilter(QObject *obj, QEvent *ev);
+ bool loaderListFilter( QKeyEvent* ev );
+ bool resourcePackListFilter( QKeyEvent* ev );
private:
- Ui::ModEditDialog *ui;
+ Ui::OneSixModEditDialog *ui;
+ QSharedPointer<ModList> m_mods;
+ QSharedPointer<ModList> m_resourcepacks;
+ OneSixInstance * m_inst;
};
-
-#endif // MODEDITDIALOG_H \ No newline at end of file
diff --git a/gui/modeditdialog.ui b/gui/OneSixModEditDialog.ui
index dfc59d21..3feca726 100644
--- a/gui/modeditdialog.ui
+++ b/gui/OneSixModEditDialog.ui
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
- <class>ModEditDialog</class>
- <widget class="QDialog" name="ModEditDialog">
+ <class>OneSixModEditDialog</class>
+ <widget class="QDialog" name="OneSixModEditDialog">
<property name="geometry">
<rect>
<x>0</x>
@@ -40,20 +40,30 @@
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
- <widget class="QTreeView" name="treeView"/>
+ <widget class="ModListView" name="jarModsTreeView">
+ <property name="verticalScrollBarPolicy">
+ <enum>Qt::ScrollBarAlwaysOn</enum>
+ </property>
+ <property name="horizontalScrollBarPolicy">
+ <enum>Qt::ScrollBarAlwaysOff</enum>
+ </property>
+ </widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="modTab">
<attribute name="title">
- <string>Mods</string>
+ <string>Loader Mods</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
- <widget class="QListView" name="listView">
+ <widget class="ModListView" name="loaderModTreeView">
<property name="acceptDrops">
<bool>true</bool>
</property>
+ <property name="dragDropMode">
+ <enum>QAbstractItemView::DropOnly</enum>
+ </property>
</widget>
</item>
<item>
@@ -98,14 +108,17 @@
</widget>
<widget class="QWidget" name="resPackTab">
<attribute name="title">
- <string>Resource Pack</string>
+ <string>Resource Packs</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
- <widget class="QListView" name="listView_2">
+ <widget class="ModListView" name="resPackTreeView">
<property name="acceptDrops">
<bool>true</bool>
</property>
+ <property name="dragDropMode">
+ <enum>QAbstractItemView::DropOnly</enum>
+ </property>
</widget>
</item>
<item>
@@ -118,7 +131,7 @@
</widget>
</item>
<item>
- <widget class="QPushButton" name="rmRedPackBtn">
+ <widget class="QPushButton" name="rmResPackBtn">
<property name="text">
<string>&amp;Remove</string>
</property>
@@ -162,6 +175,13 @@
</item>
</layout>
</widget>
+ <customwidgets>
+ <customwidget>
+ <class>ModListView</class>
+ <extends>QTreeView</extends>
+ <header>gui/ModListView.h</header>
+ </customwidget>
+ </customwidgets>
<resources/>
<connections/>
</ui>
diff --git a/gui/modeditdialog.cpp b/gui/modeditdialog.cpp
deleted file mode 100644
index 011de53d..00000000
--- a/gui/modeditdialog.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2013 MultiMC Contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "modeditdialog.h"
-#include "ui_modeditdialog.h"
-#include "logic/BaseInstance.h"
-
-ModEditDialog::ModEditDialog(QWidget *parent, BaseInstance* m_inst) :
-QDialog(parent),
-ui(new Ui::ModEditDialog)
-{
- ui->setupUi(this);
-}
-
-ModEditDialog::~ModEditDialog()
-{
- delete ui;
-}
-
-void ModEditDialog::on_buttonBox_rejected()
-{
- close();
-} \ No newline at end of file
diff --git a/gui/modeditwindow.cpp b/gui/modeditwindow.cpp
deleted file mode 100644
index a7d4fbbb..00000000
--- a/gui/modeditwindow.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright 2013 MultiMC Contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "modeditwindow.h"
-#include "ui_modeditwindow.h"
-#include "BaseInstance.h"
-
-#include <QDebug>
-
-ModEditWindow::ModEditWindow(QWidget *parent, BaseInstance* m_inst) :
- QDialog(parent),
- ui(new Ui::ModEditWindow)
-{
- ui->setupUi(this);
-}
-
-ModEditWindow::~ModEditWindow()
-{
- delete ui;
-}
-
-void ModEditWindow::on_buttonBox_rejected()
-{
- close();
-} \ No newline at end of file
diff --git a/gui/modeditwindow.h b/gui/modeditwindow.h
deleted file mode 100644
index e69de29b..00000000
--- a/gui/modeditwindow.h
+++ /dev/null
diff --git a/gui/modeditwindow.ui b/gui/modeditwindow.ui
deleted file mode 100644
index 9305d553..00000000
--- a/gui/modeditwindow.ui
+++ /dev/null
@@ -1,241 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>ModEditWindow</class>
- <widget class="QDialog" name="ModEditWindow">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>540</width>
- <height>420</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Dialog</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <widget class="QTabWidget" name="tabWidget">
- <property name="currentIndex">
- <number>3</number>
- </property>
- <widget class="QWidget" name="jarModsTab">
- <attribute name="title">
- <string>Jar Mods</string>
- </attribute>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
- <widget class="QListView" name="jarModsListView"/>
- </item>
- <item>
- <layout class="QVBoxLayout" name="jarModsButtonBox">
- <item>
- <widget class="QPushButton" name="addJarModButton">
- <property name="text">
- <string>&amp;Add</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="delJarModButton">
- <property name="text">
- <string>&amp;Remove</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="mcforgeButton">
- <property name="text">
- <string>MCForge</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="jarModsButtonSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QPushButton" name="jarModMoveUpButton">
- <property name="text">
- <string>Move &amp;Up</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="jarModMoveDownButton">
- <property name="text">
- <string>Move &amp;Down</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- <widget class="QWidget" name="coreModsTab">
- <attribute name="title">
- <string>Core Mods</string>
- </attribute>
- <layout class="QHBoxLayout" name="horizontalLayout_3">
- <item>
- <widget class="QListView" name="coreModsListView"/>
- </item>
- <item>
- <layout class="QVBoxLayout" name="coreModsButtonBox">
- <item>
- <widget class="QPushButton" name="addCoreModButton">
- <property name="text">
- <string>&amp;Add</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="delCoreModButton">
- <property name="text">
- <string>&amp;Remove</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="coreModsButtonSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QPushButton" name="viewCoreModFolderButton">
- <property name="text">
- <string>&amp;View Folder</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- <widget class="QWidget" name="mlModsTab">
- <attribute name="title">
- <string>Mods</string>
- </attribute>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <item>
- <widget class="QListView" name="mlModListView"/>
- </item>
- <item>
- <layout class="QVBoxLayout" name="mlModsButtonBox">
- <item>
- <widget class="QPushButton" name="addMlModButton">
- <property name="text">
- <string>&amp;Add</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="delMlModButton">
- <property name="text">
- <string>&amp;Remove</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="mlModsButtonSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QPushButton" name="viewMlModFolderButton">
- <property name="text">
- <string>&amp;View Folder</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- <widget class="QWidget" name="texturePacksTab">
- <attribute name="title">
- <string>Texture Packs</string>
- </attribute>
- <layout class="QHBoxLayout" name="horizontalLayout_4">
- <item>
- <widget class="QListView" name="texturePackListView"/>
- </item>
- <item>
- <layout class="QVBoxLayout" name="texturePacksButtonBox">
- <item>
- <widget class="QPushButton" name="addTPackButton">
- <property name="text">
- <string>&amp;Add</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="delTPackButton">
- <property name="text">
- <string>&amp;Remove</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="texturePacksButtonSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QPushButton" name="viewTPackFolderButton">
- <property name="text">
- <string>&amp;View Folder</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- </widget>
- </item>
- <item>
- <widget class="QDialogButtonBox" name="buttonBox">
- <property name="standardButtons">
- <set>QDialogButtonBox::Close</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>