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();