[vlmc-devel] [PATCH 07/14] Core: Mark WITH_GUI on Widget-related code
yikei lu
luyikei.qmltu at gmail.com
Tue Apr 12 14:11:53 CEST 2016
I think we can have a code like QUndoStack version of
Core::instance()
{
static Core core;
return &core;
}
2016-04-12 21:09 GMT+09:00 Hugo Beauzée-Luyssen <hugo at beauzee.fr>:
> On 04/12/2016 02:04 PM, yikei lu wrote:
>>
>> How about singleton in Command:: ?
>>
>> 2016-04-12 20:55 GMT+09:00 Hugo Beauzée-Luyssen <hugo at beauzee.fr>:
>>>
>>> On 04/11/2016 08:09 AM, Yikai Lu wrote:
>>>>
>>>>
>>>> ---
>>>> src/Main/Core.cpp | 10 ++++++++--
>>>> src/Main/Core.h | 8 ++++++--
>>>> 2 files changed, 14 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/src/Main/Core.cpp b/src/Main/Core.cpp
>>>> index 2d496e1..6e20128 100644
>>>> --- a/src/Main/Core.cpp
>>>> +++ b/src/Main/Core.cpp
>>>> @@ -25,7 +25,9 @@
>>>> #include <QCoreApplication>
>>>> #include <QDir>
>>>> #include <QtGlobal>
>>>> +#ifdef WITH_GUI
>>>> #include <QUndoStack>
>>>> +#endif
>>>> #include <QStandardPaths>
>>>>
>>>>
>>>> @@ -52,10 +54,12 @@ Core::Core()
>>>> m_workspace = new Workspace( m_settings );
>>>> m_workflow = new MainWorkflow( m_currentProject->settings() );
>>>> m_workflowRenderer = new WorkflowRenderer( Backend::getBackend(),
>>>> m_workflow );
>>>> +#ifdef WITH_GUI
>>>> m_undoStack = new QUndoStack;
>>>>
>>>> connect( m_undoStack, &QUndoStack::cleanChanged,
>>>> m_currentProject,
>>>> &Project::cleanChanged );
>>>> connect( m_currentProject, &Project::projectSaved, m_undoStack,
>>>> &QUndoStack::setClean );
>>>> +#endif
>>>> connect( m_library, &Library::cleanStateChanged,
>>>> m_currentProject,
>>>> &Project::libraryCleanChanged );
>>>> connect( m_currentProject, SIGNAL( projectLoaded( QString,
>>>> QString )
>>>> ),
>>>> m_recentProjects, SLOT( projectLoaded( QString, QString
>>>> ) )
>>>> );
>>>> @@ -69,7 +73,9 @@ Core::~Core()
>>>> {
>>>> m_settings->save();
>>>> delete m_library;
>>>> +#ifdef WITH_GUI
>>>> delete m_undoStack;
>>>> +#endif
>>>> delete m_workflowRenderer;
>>>> delete m_workflow;
>>>> delete m_currentProject;
>>>> @@ -165,13 +171,13 @@ Core::workflow()
>>>> {
>>>> return m_workflow;
>>>> }
>>>> -
>>>> +#ifdef WITH_GUI
>>>> QUndoStack*
>>>> Core::undoStack()
>>>> {
>>>> return m_undoStack;
>>>> }
>>>> -
>>>> +#endif
>>>> Library*
>>>> Core::library()
>>>> {
>>>> diff --git a/src/Main/Core.h b/src/Main/Core.h
>>>> index 72a36db..1ce1993 100644
>>>> --- a/src/Main/Core.h
>>>> +++ b/src/Main/Core.h
>>>> @@ -34,9 +34,9 @@ class Settings;
>>>> class VlmcLogger;
>>>> class Workspace;
>>>> class WorkflowRenderer;
>>>> -
>>>> +#ifdef WITH_GUI
>>>> class QUndoStack;
>>>> -
>>>> +#endif
>>>> namespace Backend
>>>> {
>>>> class IBackend;
>>>> @@ -59,7 +59,9 @@ class Core : public QObject
>>>> Project* project();
>>>> WorkflowRenderer* workflowRenderer();
>>>> MainWorkflow* workflow();
>>>> +#ifdef WITH_GUI
>>>> QUndoStack* undoStack();
>>>> +#endif
>>>> Library* library();
>>>> /**
>>>> * @brief runtime returns the application runtime
>>>> @@ -88,7 +90,9 @@ class Core : public QObject
>>>> Project* m_currentProject;
>>>> MainWorkflow* m_workflow;
>>>> WorkflowRenderer* m_workflowRenderer;
>>>> +#ifdef WITH_GUI
>>>> QUndoStack* m_undoStack;
>>>> +#endif
>>>> Library* m_library;
>>>> QElapsedTimer m_timer;
>>>> };
>>>>
>>>
>>> No, this should simply be moved out of the Core class. Where to is
>>> another
>>> question, but it this is a GUI component, it should be moved out of Core.
>>> The thing is, we will probably need something similar for the remote
>>> view,
>>> which needs to be built without UI (as in, without QtGui) support. I'm
>>> afraid we need to abstract the QUndoStack behind an interface, that will
>>> either be implemented by a plain QUndoStack, or our own implementation.
>>> We could also simply use our own implementation, but I'm not sure how
>>> this
>>> flies with QUndoView.
>>>
>>> Regards,
>>>
>>> _______________________________________________
>>> Vlmc-devel mailing list
>>> Vlmc-devel at videolan.org
>>> https://mailman.videolan.org/listinfo/vlmc-devel
>>
>> _______________________________________________
>> Vlmc-devel mailing list
>> Vlmc-devel at videolan.org
>> https://mailman.videolan.org/listinfo/vlmc-devel
>>
> I'll need you to elaborate :)
>
> _______________________________________________
> Vlmc-devel mailing list
> Vlmc-devel at videolan.org
> https://mailman.videolan.org/listinfo/vlmc-devel
More information about the Vlmc-devel
mailing list