diff --git a/aegilib/aegilib_2008.vcproj b/aegilib/aegilib_2008.vcproj index 792da64b0..a634080c8 100644 --- a/aegilib/aegilib_2008.vcproj +++ b/aegilib/aegilib_2008.vcproj @@ -20,7 +20,7 @@ Name="Debug|Win32" OutputDirectory="$(SolutionDir)$(ConfigurationName)" IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="4" + ConfigurationType="2" CharacterSet="1" > + @@ -81,6 +85,9 @@ + diff --git a/aegilib/include/athenasub/athenawin.h b/aegilib/include/athenasub/athenawin.h index e0584d2d4..35241d21c 100644 --- a/aegilib/include/athenasub/athenawin.h +++ b/aegilib/include/athenasub/athenawin.h @@ -48,4 +48,8 @@ namespace Athenasub { return LibAthenaSub(CreateLib(hostName)); //return LibAthenaSub(CreateLibAthenasub(hostName)); } + + inline LibAthenaSub Create(const char* hostName) { + return LibAthenaSub(CreateLibAthenasub(hostName)); + } } diff --git a/aegilib/include/athenasub/interfaces.h b/aegilib/include/athenasub/interfaces.h index 259d47eca..02b71799f 100644 --- a/aegilib/include/athenasub/interfaces.h +++ b/aegilib/include/athenasub/interfaces.h @@ -106,7 +106,7 @@ namespace Athenasub { friend class IAction; protected: - virtual void ProcessActionList(ActionList actionList,int type=0) = 0; + virtual void ProcessActionList(CActionList &actionList,int type=0) = 0; virtual String GetUndoMessage(const String owner=L"") const = 0; virtual String GetRedoMessage(const String owner=L"") const = 0; @@ -255,12 +255,12 @@ namespace Athenasub { virtual Entry Clone() const = 0; /* - static PlainTextPtr GetAsPlain(EntryPtr ptr); - static DialoguePtr GetAsDialogue(EntryPtr ptr); - static DialogueConstPtr GetAsDialogue(EntryConstPtr ptr); - static StylePtr GetAsStyle(EntryPtr ptr); - static AttachmentPtr GetAsFile(EntryPtr ptr); - static RawEntryPtr GetAsRaw(EntryPtr ptr); + static PlainText GetAsPlain(Entry ptr); + static Dialogue GetAsDialogue(Entry ptr); + static DialogueConst GetAsDialogue(EntryConst ptr); + static Style GetAsStyle(Entry ptr); + static Attachment GetAsFile(Entry ptr); + static RawEntry GetAsRaw(Entry ptr); */ }; @@ -273,7 +273,6 @@ namespace Athenasub { // Type SectionEntryType GetType() const { return SECTION_ENTRY_DIALOGUE; } - Dialogue GetAsDialogue() { return Dialogue(this); } // Capabilities virtual bool HasText() const { return false; } @@ -319,7 +318,6 @@ namespace Athenasub { // Type SectionEntryType GetType() const { return SECTION_ENTRY_STYLE; } - Style GetAsStyle() { return Style(this); } // Read accessors virtual String GetName() const = 0; diff --git a/aegilib/src/actionlist.cpp b/aegilib/src/actionlist.cpp index e42e1f0f8..b8b187032 100644 --- a/aegilib/src/actionlist.cpp +++ b/aegilib/src/actionlist.cpp @@ -96,7 +96,7 @@ void CActionList::Start(const String name) void CActionList::Finish() { if (valid) { - model->ProcessActionList(ActionList(this)); + model->ProcessActionList(*this); actions.clear(); valid = false; } diff --git a/aegilib/src/model.cpp b/aegilib/src/model.cpp index a954c92a2..7a39383cd 100644 --- a/aegilib/src/model.cpp +++ b/aegilib/src/model.cpp @@ -60,10 +60,11 @@ void CModel::DispatchNotifications(Notification notification) const //////////////////////////// // Processes an action list -void CModel::ProcessActionList(ActionList _actionList,int type) +void CModel::ProcessActionList(CActionList &_actionList,int type) { // Copy the list - shared_ptr actions = shared_ptr(new CActionList(*static_pointer_cast(_actionList))); + //shared_ptr actions = shared_ptr(new CActionList(*static_pointer_cast(_actionList))); + shared_ptr actions = shared_ptr(new CActionList(_actionList)); // Setup undo shared_ptr undo = shared_ptr(new CActionList(actions->model,actions->actionName,actions->owner,actions->undoAble)); @@ -224,7 +225,8 @@ void CModel::ActivateStack(ActionStack stack,bool isUndo,const String &owner) (void) owner; // Process list - ProcessActionList(stack.back(),isUndo?1:2); + //ProcessActionList(stack.back(),isUndo?1:2); + ProcessActionList(*static_pointer_cast(stack.back()),isUndo?1:2); // Pop original stack.pop_back(); diff --git a/aegilib/src/model.h b/aegilib/src/model.h index 4b464247b..51bd7b381 100644 --- a/aegilib/src/model.h +++ b/aegilib/src/model.h @@ -62,7 +62,7 @@ namespace Athenasub { bool readOnly; Format format; - void ProcessActionList(ActionList actionList,int type=0); + void ProcessActionList(CActionList &actionList,int type=0); String GetUndoMessage(const String owner=L"") const; String GetRedoMessage(const String owner=L"") const; diff --git a/aegilib/test/src/main.cpp b/aegilib/test/src/main.cpp index 188203e61..c8beb940d 100644 --- a/aegilib/test/src/main.cpp +++ b/aegilib/test/src/main.cpp @@ -50,15 +50,23 @@ int main() try { // Set up the lib - cout << "Loading library... "; - HMODULE module = LoadLibrary(_T("athenasub.dll")); - if (!module) { - cout << "Failed to load library, aborting.\n"; - system("pause"); - return 1; + if (false) { + cout << "Loading library... "; + #ifdef WXDEBUG + HMODULE module = LoadLibrary(_T("athenasub_d.dll")); + #else + HMODULE module = LoadLibrary(_T("athenasub.dll")); + #endif + if (!module) { + cout << "Failed to load library, aborting.\n"; + system("pause"); + return 1; + } + cout << "Done.\nCreating library..."; } - cout << "Done.\nCreating library..."; - LibAthenaSub lib = Athenasub::Create(module,"Aegilib test program"); + + //LibAthenaSub lib = Athenasub::Create(module,"Aegilib test program"); + LibAthenaSub lib = Athenasub::Create("Aegilib test program"); cout << "Done.\n"; // Subtitles model @@ -133,6 +141,8 @@ int main() control->SaveFile(L"subs_out2.ass",L"UTF-8"); control->Undo(); control->SaveFile(L"subs_out3.ass",L"UTF-8"); + + system("pause"); } catch (std::exception &e) {