[prev in list] [next in list] [prev in thread] [next in thread]
List: koffice-devel
Subject: Patch to run Krita scripts from commandline
From: Sebastian Sauer <mail () dipe ! org>
Date: 2007-02-26 2:11:29
Message-ID: 200702260311.30445.mail () dipe ! org
[Download RAW message or body]
Hi *
attached patch makes it possible to use the kross-app delivered with kdelibs
to run Krita-scripts from the commandline. That's not only useful for
propably automated batch-processing or other things where someone does like
to have things automated rather then to click somewhere, but also for testing
new scripts.
The patch does mainly introduce some if()-checks for the statusbar and the
mainwindow since both are NULL while there exist a KisDoc2+KisView2 if run
from the commandline. Also it was needed to switch
KisDoc2::createViewInstance from protected to public since it's used at the
scripting plugin to create a KisView2-instance from within an empty KisDoc2
instance.
It's not perfect yet since on shutdown (after save is done), it still crashes
at krita/image/tiles/kis_tilemanager.cc:249 but at least it's a start + the
attached sample script actualy produces what it should produce :)
So, ok to commit?
--
Sebastian Sauer aka dipesh[sebsauer]
http://www.dipe.org/public_key.asc
Fingerprint: 8F1E 219B 16E6 4EC7 29CC F408 E193 65E2 9134 2221
Coder in http://www.koffice.org && http://www.kmldonkey.org
["krita.patch" (text/x-diff)]
Index: plugins/viewplugins/scripting/kritacore/krs_module.cpp
===================================================================
--- plugins/viewplugins/scripting/kritacore/krs_module.cpp (Revision 637306)
+++ plugins/viewplugins/scripting/kritacore/krs_module.cpp (Arbeitskopie)
@@ -46,6 +46,25 @@
//#include <kis_image.h>
#include <kis_meta_registry.h>
+extern "C"
+{
+ KROSSKRITACORE_EXPORT QObject* krossmodule()
+ {
+kDebug()<<"===================> krossmodule() 1"<<endl;
+ KisDoc2* doc = new KisDoc2(0, 0, true);
+kDebug()<<"===================> krossmodule() 2"<<endl;
+ KoColorSpace* cs = KoColorSpaceRegistry::instance()->rgb8();
+kDebug()<<"===================> krossmodule() 3"<<endl;
+ doc->newImage("unnamed", 100,100,cs /*,KoColor(QColor(255,255,255),cs)*/);
+//doc->prepareForImport();
+kDebug()<<"===================> krossmodule() 88888888888888888888888888"<<endl;
+ KisView2* view = dynamic_cast< KisView2* >( doc->createViewInstance(0 /*no \
parent widget*/) ); + Q_ASSERT(view);
+kDebug()<<"===================> krossmodule() 99999999999999999999999999"<<endl;
+ return new Scripting::Module(view);
+ }
+}
+
using namespace Scripting;
namespace Scripting {
Index: plugins/viewplugins/scripting/kritacore/CMakeLists.txt
===================================================================
--- plugins/viewplugins/scripting/kritacore/CMakeLists.txt (Revision 637306)
+++ plugins/viewplugins/scripting/kritacore/CMakeLists.txt (Arbeitskopie)
@@ -1,6 +1,6 @@
include_directories(${KOKROSS_INCLUDES})
-set(krosskritacore_LIB_SRCS
+set(krossmodulekrita_LIB_SRCS
krs_module.cpp
krs_progress.cpp
krs_paint_layer.cpp
@@ -14,9 +14,9 @@
krs_wavelet.cpp
)
-kde4_automoc(${krosskritacore_LIB_SRCS})
-qt4_wrap_cpp(krosskritacore_LIB_SRCS krs_iterator.h)
-kde4_add_library(krosskritacore SHARED ${krosskritacore_LIB_SRCS})
-add_definitions(${KDE4_ENABLE_EXCEPTIONS})
-target_link_libraries(krosskritacore kokross kritaui)
-install(TARGETS krosskritacore DESTINATION ${LIB_INSTALL_DIR})
+kde4_automoc(${krossmodulekrita_LIB_SRCS})
+qt4_wrap_cpp(krossmodulekrita_LIB_SRCS krs_iterator.h)
+kde4_add_library(krossmodulekrita SHARED ${krossmodulekrita_LIB_SRCS})
+##add_definitions(${KDE4_ENABLE_EXCEPTIONS})
+target_link_libraries(krossmodulekrita kokross kritaui)
+install(TARGETS krossmodulekrita DESTINATION ${LIB_INSTALL_DIR})
Index: plugins/viewplugins/scripting/CMakeLists.txt
===================================================================
--- plugins/viewplugins/scripting/CMakeLists.txt (Revision 637306)
+++ plugins/viewplugins/scripting/CMakeLists.txt (Arbeitskopie)
@@ -8,7 +8,7 @@
set(kritascripting_PART_SRCS scriptingpart.cpp)
kde4_automoc(${kritascripting_PART_SRCS})
kde4_add_plugin(kritascripting ${kritascripting_PART_SRCS})
-target_link_libraries(kritascripting kritaui ${KDE4_KROSSCORE_LIBS} kokross \
krosskritacore) +target_link_libraries(kritascripting kritaui ${KDE4_KROSSCORE_LIBS} \
kokross krossmodulekrita) install(TARGETS kritascripting DESTINATION \
${PLUGIN_INSTALL_DIR})
########### install files ###############
Index: image/kis_shared_ptr.h
===================================================================
--- image/kis_shared_ptr.h (Revision 637306)
+++ image/kis_shared_ptr.h (Arbeitskopie)
@@ -103,7 +103,7 @@
inline const T& operator*() const { Q_ASSERT(d); return *d; }
inline T& operator*() { Q_ASSERT(d); return *d; }
inline const T* operator->() const { Q_ASSERT(d); return d; }
- inline T* operator->() { Q_ASSERT(d); return d; }
+ inline T* operator->() { /*Q_ASSERT(d);*/ return d; }
/**
* @return true if the pointer is null
Index: ui/kis_doc2.h
===================================================================
--- ui/kis_doc2.h (Revision 637306)
+++ ui/kis_doc2.h (Arbeitskopie)
@@ -165,7 +165,7 @@
*/
void sigCommandExecuted();
-protected:
+public:
// Overide KoDocument
virtual KoView* createViewInstance(QWidget *parent);
Index: ui/kis_view2.cpp
===================================================================
--- ui/kis_view2.cpp (Revision 637306)
+++ ui/kis_view2.cpp (Arbeitskopie)
@@ -165,7 +165,8 @@
else
setXMLFile("krita.rc");
- actionCollection()->addAction(KStandardAction::KeyBindings, "keybindings", \
mainWindow()->guiFactory(), SLOT( configureShortcuts() )); + if( mainWindow() )
+ actionCollection()->addAction(KStandardAction::KeyBindings, "keybindings", \
mainWindow()->guiFactory(), SLOT( configureShortcuts() ));
m_d = new KisView2Private();
@@ -404,7 +405,7 @@
KisLayerBoxFactory layerboxFactory( this );
m_d->layerBox = qobject_cast<KisLayerBox*>( createDockWidget( &layerboxFactory ) \
);
- m_d->statusBar = new KisStatusBar( KoView::statusBar(), this );
+ m_d->statusBar = KoView::statusBar() ? new KisStatusBar( KoView::statusBar(), \
this ) : 0; m_d->controlFrame = new KisControlFrame( mainWindow(), this );
show();
@@ -479,8 +480,10 @@
connect(img.data(), SIGNAL(sigActiveSelectionChanged(KisImageSP)), \
m_d->selectionManager, SLOT(imgSelectionChanged(KisImageSP)));
//connect(img.data(), SIGNAL(sigActiveSelectionChanged(KisImageSP)), this, \
SLOT(updateCanvas()));
- connect(img.data(), SIGNAL(sigColorSpaceChanged(KoColorSpace *)), \
m_d->statusBar, SLOT(updateStatusBarProfileLabel()));
- connect(img.data(), SIGNAL(sigProfileChanged(KoColorProfile * )), \
m_d->statusBar, SLOT(updateStatusBarProfileLabel())); + if( m_d->statusBar ) {
+ connect(img.data(), SIGNAL(sigColorSpaceChanged(KoColorSpace *)), \
m_d->statusBar, SLOT(updateStatusBarProfileLabel())); + \
connect(img.data(), SIGNAL(sigProfileChanged(KoColorProfile * )), m_d->statusBar, \
SLOT(updateStatusBarProfileLabel())); + }
connect(img.data(), SIGNAL(sigLayersChanged(KisGroupLayerSP)), \
m_d->layerManager, SLOT(layersUpdated()));
connect(img.data(), SIGNAL(sigMaskInfoChanged()), m_d->maskManager, \
SLOT(maskUpdated())); @@ -502,8 +505,10 @@
connect( m_d->doc, SIGNAL( sigCommandExecuted() ), img.data(), SLOT( \
slotCommandExecuted() ) ); }
m_d->canvas->connectCurrentImage();
- m_d->layerBox->setImage(img);
- m_d->birdEyeBox->setImage(img);
+ if( m_d->layerBox )
+ m_d->layerBox->setImage(img);
+ if( m_d->birdEyeBox )
+ m_d->birdEyeBox->setImage(img);
}
@@ -517,12 +522,15 @@
img->disconnect( m_d->layerManager );
img->disconnect( m_d->canvas );
img->disconnect( m_d->selectionManager );
- img->disconnect( m_d->statusBar );
+ if( m_d->statusBar )
+ img->disconnect( m_d->statusBar );
disconnect( m_d->doc, SIGNAL( sigCommandExecuted() ), img.data(), SLOT( \
slotCommandExecuted() ) );
- m_d->layerBox->setImage(KisImageSP(0));
- m_d->birdEyeBox->setImage(KisImageSP(0));
+ if( m_d->layerBox )
+ m_d->layerBox->setImage(KisImageSP(0));
+ if( m_d->birdEyeBox )
+ m_d->birdEyeBox->setImage(KisImageSP(0));
m_d->canvas->disconnectCurrentImage();
}
Index: ui/kis_layer_manager.cc
===================================================================
--- ui/kis_layer_manager.cc (Revision 637306)
+++ ui/kis_layer_manager.cc (Arbeitskopie)
@@ -225,8 +225,8 @@
m_imgResizeToLayer->setEnabled(img && img->activeLayer());
- m_view->statusBar()->setProfile(img);
-
+ if( m_view->statusBar() )
+ m_view->statusBar()->setProfile(img);
}
void KisLayerManager::imgResizeToActiveLayer()
["commandline.py" (application/x-python)]
_______________________________________________
koffice-devel mailing list
koffice-devel@kde.org
https://mail.kde.org/mailman/listinfo/koffice-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic