SCRATCH no more gui includes in logic

This commit is contained in:
Petr Mrázek 2015-02-07 10:43:09 +01:00
parent 141e0a02a0
commit 4e94de413b
7 changed files with 72 additions and 44 deletions

View File

@ -284,6 +284,9 @@ SET(MULTIMC_SOURCES
gui/ConsoleWindow.h
gui/ConsoleWindow.cpp
gui/InstancePageProvider.h
gui/InstancePageProvider.cpp
# GUI - page dialog pages
gui/pages/BasePage.h
gui/pages/VersionPage.cpp

View File

@ -29,6 +29,7 @@
#include <gui/dialogs/ProgressDialog.h>
#include "widgets/PageContainer.h"
#include "pages/LogPage.h"
#include "InstancePageProvider.h"
#include "logic/icons/IconList.h"
@ -71,8 +72,9 @@ ConsoleWindow::ConsoleWindow(BaseProcess *process, QWidget *parent)
// Add page container
{
auto mainLayout = new QVBoxLayout;
auto provider = std::dynamic_pointer_cast<BasePageProvider>(m_proc->instance());
auto proxy_provider = std::make_shared<LogPageProvider>(provider, new LogPage(m_proc));
auto provider = std::make_shared<InstancePageProvider>(m_proc->instance());
auto baseprovider = std::dynamic_pointer_cast<BasePageProvider>(provider);
auto proxy_provider = std::make_shared<LogPageProvider>(baseprovider, new LogPage(m_proc));
m_container = new PageContainer(proxy_provider, "console", this);
mainLayout->addWidget(m_container);
mainLayout->setSpacing(0);

View File

View File

@ -0,0 +1,52 @@
#pragma once
#include "logic/minecraft/OneSixInstance.h"
#include "pages/BasePage.h"
#include "pages/VersionPage.h"
#include "pages/ModFolderPage.h"
#include "pages/ResourcePackPage.h"
#include "pages/TexturePackPage.h"
#include "pages/NotesPage.h"
#include "pages/ScreenshotsPage.h"
#include "pages/InstanceSettingsPage.h"
#include "pages/OtherLogsPage.h"
#include "pages/BasePageProvider.h"
#include <pathutils.h>
class InstancePageProvider : public QObject, public BasePageProvider
{
Q_OBJECT
public:
explicit InstancePageProvider(InstancePtr parent)
{
inst = parent;
}
virtual ~InstancePageProvider() {};
virtual QList<BasePage *> getPages() override
{
QList<BasePage *> values;
std::shared_ptr<OneSixInstance> onesix = std::dynamic_pointer_cast<OneSixInstance>(inst);
if(onesix)
{
values.append(new VersionPage(onesix.get()));
values.append(new ModFolderPage(onesix.get(), onesix->loaderModList(), "mods", "loadermods",
tr("Loader mods"), "Loader-mods"));
values.append(new CoreModFolderPage(onesix.get(), onesix->coreModList(), "coremods", "coremods",
tr("Core mods"), "Core-mods"));
values.append(new ResourcePackPage(onesix.get()));
values.append(new TexturePackPage(onesix.get()));
values.append(new NotesPage(onesix.get()));
values.append(new ScreenshotsPage(PathCombine(onesix->minecraftRoot(), "screenshots")));
values.append(new InstanceSettingsPage(onesix.get()));
values.append(new OtherLogsPage(onesix->minecraftRoot()));
}
return values;
}
virtual QString dialogTitle() override
{
return tr("Edit Instance (%1)").arg(inst->name());
}
protected:
InstancePtr inst;
};

View File

@ -381,6 +381,7 @@ namespace Ui {
#include "logic/BaseProcess.h"
#include "logic/java/JavaUtils.h"
#include "gui/NagUtils.h"
#include "InstancePageProvider.h"
#include "logic/minecraft/SkinUtils.h"
//#include "logic/minecraft/LegacyInstance.h"
@ -1366,6 +1367,12 @@ void ShowPageDialog(T raw_provider, QWidget * parent, QString open_page = QStrin
dlg.exec();
}
void ShowInstancePageDialog(InstancePtr instance, QWidget * parent, QString open_page = QString())
{
auto provider = std::make_shared<InstancePageProvider>(instance);
ShowPageDialog(provider, parent, open_page);
}
void MainWindow::on_actionSettings_triggered()
{
ShowPageDialog(m_globalSettingsProvider, this, "global-settings");
@ -1378,22 +1385,22 @@ void MainWindow::on_actionSettings_triggered()
void MainWindow::on_actionInstanceSettings_triggered()
{
ShowPageDialog(m_selectedInstance, this, "settings");
ShowInstancePageDialog(m_selectedInstance, this, "settings");
}
void MainWindow::on_actionEditInstNotes_triggered()
{
ShowPageDialog(m_selectedInstance, this, "notes");
ShowInstancePageDialog(m_selectedInstance, this, "notes");
}
void MainWindow::on_actionEditInstance_triggered()
{
ShowPageDialog(m_selectedInstance, this);
ShowInstancePageDialog(m_selectedInstance, this);
}
void MainWindow::on_actionScreenshots_triggered()
{
ShowPageDialog(m_selectedInstance, this, "screenshots");
ShowInstancePageDialog(m_selectedInstance, this, "screenshots");
}

View File

@ -28,15 +28,7 @@
#include "logic/minecraft/AssetsUtils.h"
#include "logic/icons/IconList.h"
#include "gui/pagedialog/PageDialog.h"
#include "gui/pages/VersionPage.h"
#include "gui/pages/ModFolderPage.h"
#include "gui/pages/ResourcePackPage.h"
#include "gui/pages/TexturePackPage.h"
#include "gui/pages/InstanceSettingsPage.h"
#include "gui/pages/NotesPage.h"
#include "gui/pages/ScreenshotsPage.h"
#include "gui/pages/OtherLogsPage.h"
OneSixInstance::OneSixInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr settings, const QString &rootDir)
: MinecraftInstance(globalSettings, settings, rootDir)
{
@ -53,29 +45,6 @@ void OneSixInstance::createProfile()
m_version.reset(new MinecraftProfile(new OneSixProfileStrategy(this)));
}
QList<BasePage *> OneSixInstance::getPages()
{
QList<BasePage *> values;
values.append(new VersionPage(this));
values.append(new ModFolderPage(this, loaderModList(), "mods", "loadermods",
tr("Loader mods"), "Loader-mods"));
values.append(new CoreModFolderPage(this, coreModList(), "coremods", "coremods",
tr("Core mods"), "Core-mods"));
values.append(new ResourcePackPage(this));
values.append(new TexturePackPage(this));
values.append(new NotesPage(this));
values.append(new ScreenshotsPage(PathCombine(minecraftRoot(), "screenshots")));
values.append(new InstanceSettingsPage(this));
values.append(new OtherLogsPage(minecraftRoot()));
return values;
}
QString OneSixInstance::dialogTitle()
{
return tr("Edit Instance (%1)").arg(name());
}
QSet<QString> OneSixInstance::traits()
{
auto version = getMinecraftProfile();

View File

@ -19,9 +19,8 @@
#include "logic/minecraft/MinecraftProfile.h"
#include "logic/minecraft/ModList.h"
#include "gui/pages/BasePageProvider.h"
class OneSixInstance : public MinecraftInstance, public BasePageProvider
class OneSixInstance : public MinecraftInstance
{
Q_OBJECT
public:
@ -30,10 +29,6 @@ public:
virtual void init();
////// Edit Instance Dialog stuff //////
virtual QList<BasePage *> getPages();
virtual QString dialogTitle();
////// Mod Lists //////
std::shared_ptr<ModList> loaderModList() const;
std::shared_ptr<ModList> coreModList() const;