[vlmc-devel] [PATCH 07/14] Core: Mark WITH_GUI on Widget-related code

Hugo Beauzée-Luyssen hugo at beauzee.fr
Tue Apr 12 14:09:02 CEST 2016


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 :)


More information about the Vlmc-devel mailing list