Mercurial > hg > dmlib
changeset 378:feaeec4c6c55
Cleanups.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 17 Oct 2012 03:33:19 +0300 |
parents | a41d0db5fa36 |
children | 05e85401480a |
files | eddemoobj.cpp eddemoobj.h edgui.cpp edmain.cpp edmain.h |
diffstat | 5 files changed, 110 insertions(+), 103 deletions(-) [+] |
line wrap: on
line diff
--- a/eddemoobj.cpp Wed Oct 17 02:37:03 2012 +0300 +++ b/eddemoobj.cpp Wed Oct 17 03:33:19 2012 +0300 @@ -8,35 +8,33 @@ ////////////////////////////////////////////////////////////////////////////// -DemoObject::DemoObject() +TimelineObject::TimelineObject() { - lastError = QFile::NoError; + tl = NULL; changed = 0; } // Create a copy of the given mapobject -DemoObject::DemoObject(DemoObject *obj) +TimelineObject::TimelineObject(TimelineObject *obj) { - lastError = QFile::NoError; changed = 0; - filename = obj->filename; } -DemoObject::~DemoObject() +TimelineObject::~TimelineObject() { } -int DemoObject::load(QString mfilename) +int TimelineObject::load(QString mfilename) { QByteArray fnba = mfilename.toUtf8(); DMResource *res; if ((res = dmf_create_stdio(fnba.data(), "rb")) == NULL) return DMERR_FOPEN; - int err = dmLoadTimeline(res, &data.tl); + int err = dmLoadTimeline(res, &tl); dmf_close(res); filename = mfilename; @@ -44,14 +42,14 @@ } -int DemoObject::save(QString mfilename) +int TimelineObject::save(QString mfilename) { QByteArray fnba = mfilename.toUtf8(); DMResource *res; if ((res = dmf_create_stdio(fnba.data(), "wb")) == NULL) return DMERR_FOPEN; - int err = dmSaveTimeline(res, data.tl); + int err = dmSaveTimeline(res, tl); dmf_close(res); return err;
--- a/eddemoobj.h Wed Oct 17 02:37:03 2012 +0300 +++ b/eddemoobj.h Wed Oct 17 03:33:19 2012 +0300 @@ -2,25 +2,23 @@ // Demo Editor -- Demo state object // (C) Copyright 2012 Matti 'ccr' Hämäläinen <ccr@tnsp.org> // -#ifndef DEMOOBJECT_H -#define DEMOOBJECT_H +#ifndef TIMELINEOBJECT_H +#define TIMELINEOBJECT_H #include "dmengine.h" -#include <QFile> +#include <QString> -class DemoObject +class TimelineObject { public: - // Last file I/O status - QFile::FileError lastError; QString state; + QString filename; int changed; - DMEngineData data; - QString filename; + DMTimeline *tl; - DemoObject(); - DemoObject(DemoObject *); - ~DemoObject(); + TimelineObject(); + TimelineObject(TimelineObject *); + ~TimelineObject(); int load(QString filename); int save(QString filename);
--- a/edgui.cpp Wed Oct 17 02:37:03 2012 +0300 +++ b/edgui.cpp Wed Oct 17 03:33:19 2012 +0300 @@ -20,10 +20,10 @@ // Set window title based on document filename and changed status QString name; - if (!demo || demo->filename.isEmpty()) + if (!tl || tl->filename.isEmpty()) name = DOC_DEF_FILENAME; else - name = demo->filename; + name = tl->filename; if (changed) name = "*" + name; @@ -32,9 +32,9 @@ // Enable menu items based on states #if 0 - menuActValidate->setEnabled(demo->get); - menuActSave->setEnabled(demo->changed || changed); - menuActSaveAs->setEnabled(demo->changed || changed); + menuActValidate->setEnabled(tl->get); + menuActSave->setEnabled(tl->changed || changed); + menuActSaveAs->setEnabled(tl->changed || changed); #else menuActSave->setEnabled(false); menuActSaveAs->setEnabled(false); @@ -109,7 +109,7 @@ // // Generic error/warning dialog // -void DemoEditor::showFileErrorDialog(QString operation, int code, QFile::FileError err) +void DemoEditor::showFileErrorDialog(QString operation, int code) { /* QString msg; @@ -140,7 +140,7 @@ { QMessageBox::information(this, "Document saved", - "The document was saved as " + demo->filename); + "The document was saved as " + tl->filename); okToCreate = true; } @@ -176,7 +176,7 @@ { QMessageBox::information(this, "Document saved", - "The document was saved as " + demo->filename); + "The document was saved as " + tl->filename); okToOpen = true; } @@ -204,9 +204,9 @@ void DemoEditor::actionFileSaveAs() { - if (!demo) + if (!tl) { - qDebug() << "DemoEditor::actionFileSaveAs(): demo == null"; + qDebug() << "DemoEditor::actionFileSaveAs(): tl == null"; return; } @@ -218,7 +218,7 @@ fdialog.setDefaultSuffix("demo"); fdialog.setConfirmOverwrite(true); - fdialog.selectFile(demo->filename.isEmpty() ? demo->filename : DOC_DEF_FILENAME); + fdialog.selectFile(tl->filename.isEmpty() ? tl->filename : DOC_DEF_FILENAME); if (fdialog.exec()) saveToFile(fdialog.selectedFiles()[0]); @@ -227,15 +227,15 @@ void DemoEditor::actionFileSave() { - if (!demo) + if (!tl) { - qDebug() << "DemoEditor::actionFileSave(): demo == null"; + qDebug() << "DemoEditor::actionFileSave(): tl == null"; return; } // If filename has been set, save .. otherwise go to save as - if (!demo->filename.isEmpty()) - saveToFile(demo->filename); + if (!tl->filename.isEmpty()) + saveToFile(tl->filename); else actionFileSaveAs(); }
--- a/edmain.cpp Wed Oct 17 02:37:03 2012 +0300 +++ b/edmain.cpp Wed Oct 17 03:33:19 2012 +0300 @@ -96,22 +96,19 @@ DemoEditor::DemoEditor() { int err; - initSDL = FALSE; resize(1024, 768); setWindowTitle(QCoreApplication::applicationName()); + changed = FALSE; + initSDL = FALSE; + tl = NULL; memset(&engine, 0, sizeof(engine)); // Pre-initialization if ((err = demoPreInit(&engine)) != DMERR_OK) goto error_exit; - // Initialize resource subsystem - dmPrint(1, "Initializing resources subsystem.\n"); - if ((err = reopenResources()) != DMERR_OK) - goto error_exit; - // Initialize SDL components dmPrint(1, "Initializing libSDL.\n"); if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER) != 0) @@ -206,40 +203,13 @@ goto error_exit; } - // Load resources - dmPrint(1, "Loading resources, please wait...\n"); - if ((err = loadResources()) != DMERR_OK) - { - dmError("Error loading resources, %d: %s.\n", err, dmErrorStr(err)); - goto error_exit; - } - - dmPrint(1, "Initializing effects, etc.\n"); - - // Final initializations - if ((err = engine.demoInit(&engine)) != DMERR_OK) - { - dmError("Failure in demoInit(), %d: %s\n", - err, dmErrorStr(err)); - goto error_exit; - } - - // Initialize effects - if ((err = engineInitializeEffects(&engine)) != DMERR_OK) - { - dmError("Effects initialization failed, %d: %s\n", - err, dmErrorStr(err)); - goto error_exit; - } error_exit: // Setup GUI elements - demo = NULL; createMainGUI(); createNewFile(); - // Finalize init settingsRestore(); // view->setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers))); @@ -255,7 +225,7 @@ settingsSave(); // delete view; - delete demo; + delete tl; historyReset(); if (engine.screen) @@ -270,6 +240,54 @@ #endif SDL_UnlockAudio(); + shutdownEffectsAndResources(); + + if (initSDL) + SDL_Quit(); +} + + +int DemoEditor::initEffectsAndResources() +{ + int err; + + // Initialize resource subsystem + dmPrint(1, "Initializing resources subsystem.\n"); + if ((err = reopenResources()) != DMERR_OK) + return err; + + // Load resources + dmPrint(1, "Loading resources, please wait...\n"); + if ((err = loadResources()) != DMERR_OK) + { + dmError("Error loading resources, %d: %s.\n", err, dmErrorStr(err)); + return err; + } + + dmPrint(1, "Initializing effects, etc.\n"); + + // Final initializations + if ((err = engine.demoInit(&engine)) != DMERR_OK) + { + dmError("Failure in demoInit(), %d: %s\n", + err, dmErrorStr(err)); + return err; + } + + // Initialize effects + if ((err = engineInitializeEffects(&engine)) != DMERR_OK) + { + dmError("Effects initialization failed, %d: %s\n", + err, dmErrorStr(err)); + return err; + } + + return DMERR_OK; +} + + +void DemoEditor::shutdownEffectsAndResources() +{ dmFreeTimeline(engine.tl); dmFreePreparedTimelineData(engine.ptl); engineShutdownEffects(&engine); @@ -277,18 +295,14 @@ if (engine.demoShutdown != NULL) engine.demoShutdown(&engine); - - if (initSDL) - SDL_Quit(); - - if (engine.demoQuit != NULL) - engine.demoQuit(&engine); } -void DemoEditor::rehashFile() +void DemoEditor::createNewFile() { -// view->setDemoObject(demo); + delete tl; + tl = new TimelineObject(); + update(); historyReset(); changed = false; @@ -296,38 +310,34 @@ } -void DemoEditor::createNewFile() -{ - delete demo; - demo = new DemoObject(); - rehashFile(); -} - - void DemoEditor::readFromFile(QString filename) { - DemoObject *tmp = new DemoObject(); + TimelineObject *tmp = new TimelineObject(); int ret = tmp->load(filename); if (ret != DMERR_OK) { - showFileErrorDialog("Loading demo blob file "+ filename, ret, tmp->lastError); + showFileErrorDialog("Loading demo blob file "+ filename, ret); delete tmp; } else { - delete demo; - demo = tmp; - rehashFile(); + delete tl; + tl = tmp; + + update(); + historyReset(); + changed = false; + updateMenuStates(); } } void DemoEditor::saveToFile(QString filename) { - int ret = demo->save(filename); + int ret = tl->save(filename); if (ret != DMERR_OK) { - showFileErrorDialog("Saving demo blob file "+ filename, ret, demo->lastError); + showFileErrorDialog("Saving demo blob file "+ filename, ret); } updateMenuStates(); @@ -378,7 +388,7 @@ delete undoHistory.takeFirst(); } - DemoObject *copy = new DemoObject(demo); + TimelineObject *copy = new TimelineObject(tl); copy->state = description; undoHistory.append(copy); } @@ -386,7 +396,7 @@ void DemoEditor::historyTop() { - DemoObject *copy = new DemoObject(demo); + TimelineObject *copy = new TimelineObject(tl); copy->state = "-"; undoHistory.append(copy); @@ -411,8 +421,8 @@ if (undoHistoryPos >= 0 && undoHistoryPos < undoHistory.size() - 1) { undoHistoryPos++; - delete demo; - demo = new DemoObject(undoHistory.at(undoHistoryPos)); + delete tl; + tl = new TimelineObject(undoHistory.at(undoHistoryPos)); changed = true; updateMenuStates(); @@ -426,8 +436,8 @@ if (undoHistoryPos > 0 && undoHistory.size() > 1) { undoHistoryPos--; - delete demo; - demo = new DemoObject(undoHistory.at(undoHistoryPos)); + delete tl; + tl = new TimelineObject(undoHistory.at(undoHistoryPos)); changed = true; updateMenuStates();
--- a/edmain.h Wed Oct 17 02:37:03 2012 +0300 +++ b/edmain.h Wed Oct 17 03:33:19 2012 +0300 @@ -53,7 +53,7 @@ private: bool changed, initSDL; - DemoObject *demo; + TimelineObject *tl; DMEngineData engine; @@ -67,25 +67,26 @@ void setActionGroupChecked(QActionGroup *group, QVariant data); - void showFileErrorDialog(QString operation, int code, QFile::FileError err); + void showFileErrorDialog(QString operation, int code); QMessageBox::StandardButton showDocumentModifiedDialog(); void statusMsg(QString message); void closeEvent(QCloseEvent *event); void createMainGUI(); void updateMenuStates(); + int initEffectsAndResources(); + void shutdownEffectsAndResources(); int reopenResources(); int loadResources(); bool initializeVideo(); - void rehashFile(); void createNewFile(); void readFromFile(QString filename); void saveToFile(QString filename); - QList<DemoObject *> undoHistory; + QList<TimelineObject *> undoHistory; int undoHistoryPos, undoHistoryMax; void historyReset();