[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-kimageshop
Subject:    Re: Resource loading
From:       Sven Langkamp <longamp () reallygood ! de>
Date:       2004-08-24 9:51:02
Message-ID: 412B0F86.8040200 () reallygood ! de
[Download RAW message or body]

Boudewijn Rempt wrote:

>>Maybe I should make a patch to make clear what I mean.
>>    
>>
>
>I've just checked in something I hacked up while on the train -- just missed 
>your mail. If you have an idea about how to make this saner, please proceed. 
>Maybe, because this touches on the central design philosophy of Krita, it'd 
>be a good idea to first post a patch in this case.
>
Here it is.

["resouceserver.diff" (text/x-patch)]

Index: krita/core/kis_factory.cc
===================================================================
RCS file: /home/kde/koffice/krita/core/kis_factory.cc,v
retrieving revision 1.34
diff -u -r1.34 kis_factory.cc
--- krita/core/kis_factory.cc	23 Aug 2004 15:55:04 -0000	1.34
+++ krita/core/kis_factory.cc	24 Aug 2004 09:41:22 -0000
@@ -26,6 +26,7 @@
 
 #include "kis_factory.h"
 #include "kis_aboutdata.h"
+#include "kis_resourceserver.h"
 #include "kis_doc.h"
 
 extern "C" 
@@ -38,6 +39,7 @@
 
 KAboutData* KisFactory::s_aboutData = 0;
 KInstance* KisFactory::s_global = 0;
+KisResourceServer* KisFactory::s_rserver = 0;
 
 KisFactory::KisFactory( QObject* parent, const char* name )
 	: KoFactory( parent, name )
@@ -45,10 +47,13 @@
 	s_aboutData = newKritaAboutData();
 
 	(void)global();
+	s_rserver = new KisResourceServer;
 }
 
 KisFactory::~KisFactory()
 {
+	delete s_rserver;
+	s_rserver = 0L;
 	delete s_aboutData;
 	s_aboutData = 0L;
 	delete s_global;
@@ -112,4 +117,9 @@
 	return s_aboutData;
 }
 
+KisResourceServer* KisFactory::rServer()
+{
+	return s_rserver;
+}
+
 #include "kis_factory.moc"
Index: krita/core/kis_factory.h
===================================================================
RCS file: /home/kde/koffice/krita/core/kis_factory.h,v
retrieving revision 1.16
diff -u -r1.16 kis_factory.h
--- krita/core/kis_factory.h	23 Aug 2004 15:55:04 -0000	1.16
+++ krita/core/kis_factory.h	24 Aug 2004 09:41:22 -0000
@@ -24,6 +24,7 @@
 #include <koFactory.h>
 
 class KInstance;
+class KisResourceServer;
 class KAboutData;
 
 class KisFactory : public KoFactory
@@ -43,10 +44,12 @@
 
 	static KAboutData        *aboutData();
 	static KInstance         *global();
+	static KisResourceServer *rServer();
 
 private:
 	static KInstance           *s_global;
 	static KAboutData          *s_aboutData;
+	static KisResourceServer   *s_rserver;
 };
 
 #endif
Index: krita/core/kis_resource_mediator.cc
===================================================================
RCS file: /home/kde/koffice/krita/core/kis_resource_mediator.cc,v
retrieving revision 1.12
diff -u -r1.12 kis_resource_mediator.cc
--- krita/core/kis_resource_mediator.cc	12 Aug 2004 21:08:54 -0000	1.12
+++ krita/core/kis_resource_mediator.cc	24 Aug 2004 09:41:23 -0000
@@ -15,6 +15,8 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  */
+#include <qptrlist.h>
+ 
 #include <koIconChooser.h>
 
 #include "kdebug.h"
@@ -42,32 +44,34 @@
 	Q_ASSERT(rserver);
 	m_activeItem = 0;
 
+	QPtrList<KisResource> resouceslist;
+	KisResource *resource;
+
 	if (mediateOn & MEDIATE_BRUSHES) {
 		m_chooser = new KisBrushChooser(chooserParent, chooserName);
-		connect(rserver,
-                        SIGNAL(loadedBrush(KisResource*)),
-                        this,
-                        SLOT(resourceServerLoadedResource(KisResource*)));
-
-		connect(rserver,
-                        SIGNAL(loadedpipeBrush(KisResource*)),
-                        this,
-                        SLOT(resourceServerLoadedResource(KisResource*)));
 
+		resouceslist = rserver -> brushes();
+		for ( resource = resouceslist.first(); resource; resource = resouceslist.next() )
+			resourceServerLoadedResource(resource);
+
+		resouceslist = rserver -> pipebrushes();
+		for ( resource = resouceslist.first(); resource; resource = resouceslist.next() )
+			resourceServerLoadedResource(resource);
 	}
 	if (mediateOn & MEDIATE_PATTERNS) {
 		m_chooser = new KisPatternChooser(chooserParent, chooserName);
-		connect(rserver,
-                        SIGNAL(loadedPattern(KisResource*)),
-                        this,
-                        SLOT(resourceServerLoadedResource(KisResource*)));
+
+		resouceslist = rserver -> patterns();
+		for ( resource = resouceslist.first(); resource; resource = resouceslist.next() )
+			resourceServerLoadedResource(resource);
+			
 	}
 	if (mediateOn & MEDIATE_GRADIENTS) {
 		m_chooser = new KisGradientChooser(chooserParent, chooserName);
-		connect(rserver,
-			SIGNAL(loadedGradient(KisResource*)),
-			this,
-			SLOT(resourceServerLoadedResource(KisResource*)));
+
+		resouceslist = rserver -> gradients();
+		for ( resource = resouceslist.first(); resource; resource = resouceslist.next() )
+			resourceServerLoadedResource(resource);
 	}
 
 	connect(m_chooser, SIGNAL(selected(KoIconItem*)), \
                SLOT(setActiveItem(KoIconItem*)));
Index: krita/core/kis_resourceserver.cc
===================================================================
RCS file: /home/kde/koffice/krita/core/kis_resourceserver.cc,v
retrieving revision 1.20
diff -u -r1.20 kis_resourceserver.cc
--- krita/core/kis_resourceserver.cc	23 Aug 2004 15:55:04 -0000	1.20
+++ krita/core/kis_resourceserver.cc	24 Aug 2004 09:41:23 -0000
@@ -37,6 +37,10 @@
 	m_patterns.setAutoDelete(true);
 	m_gradients.setAutoDelete(true);
 
+	loadBrushes();
+	loadpipeBrushes();
+	loadPatterns();
+	loadGradients();
 }
 
 KisResourceServer::~KisResourceServer()
Index: krita/core/kis_view.cc
===================================================================
RCS file: /home/kde/koffice/krita/core/kis_view.cc,v
retrieving revision 1.318
diff -u -r1.318 kis_view.cc
--- krita/core/kis_view.cc	23 Aug 2004 15:55:04 -0000	1.318
+++ krita/core/kis_view.cc	24 Aug 2004 09:41:29 -0000
@@ -250,7 +250,7 @@
 void KisView::setupDockers()
 {
 
-        m_resourceServer = new KisResourceServer();
+         KisResourceServer *rserver = KisFactory::rServer();
 
         m_layerchanneldocker = new DockFrameDocker(this);
         m_layerchanneldocker -> setCaption(i18n("Layers/Channels/Paths"));
@@ -284,7 +284,7 @@
 
 
 	// Setup all brushes
-        m_brushMediator = new KisResourceMediator(MEDIATE_BRUSHES, m_resourceServer, \
i18n("Brushes"), +        m_brushMediator = new KisResourceMediator(MEDIATE_BRUSHES, \
                rserver, i18n("Brushes"),
                                                   m_resourcedocker, "brush_chooser", \
                this);
         m_brush = dynamic_cast<KisBrush*>(m_brushMediator -> currentResource());
         m_resourcedocker -> plug(m_brushMediator -> chooserWidget());
@@ -292,7 +292,7 @@
 
 
 	// Setup patterns
-        m_patternMediator = new KisResourceMediator(MEDIATE_PATTERNS, \
m_resourceServer, i18n("Patterns"), +        m_patternMediator = new \
                KisResourceMediator(MEDIATE_PATTERNS, rserver, i18n("Patterns"),
                                                     m_resourcedocker, "pattern \
                chooser", this);
         m_pattern = dynamic_cast<KisPattern*>(m_patternMediator -> \
currentResource());  m_resourcedocker -> plug(m_patternMediator -> chooserWidget());
@@ -300,17 +300,12 @@
 
 
 	// Setup gradients
-	m_gradientMediator = new KisResourceMediator(MEDIATE_GRADIENTS, m_resourceServer, \
i18n("Gradients"), +	m_gradientMediator = new KisResourceMediator(MEDIATE_GRADIENTS, \
rserver, i18n("Gradients"),  m_resourcedocker, "gradient chooser", this);
 	m_gradient = dynamic_cast<KisGradient*>(m_gradientMediator -> currentResource());
 	m_resourcedocker -> plug(m_gradientMediator -> chooserWidget());
 	connect(m_gradientMediator, SIGNAL(activatedResource(KisResource*)), this, \
SLOT(gradientActivated(KisResource*)));  
-	m_resourceServer -> loadBrushes();
-        m_resourceServer -> loadpipeBrushes();
-        m_resourceServer -> loadPatterns();
-        m_resourceServer -> loadGradients();
-
 	// Autocrush
 	m_autobrush = new KisAutobrush(m_resourcedocker, "autobrush", i18n("Autobrush"));
 	m_resourcedocker -> plug(m_autobrush);
Index: krita/core/kis_view.h
===================================================================
RCS file: /home/kde/koffice/krita/core/kis_view.h,v
retrieving revision 1.153
diff -u -r1.153 kis_view.h
--- krita/core/kis_view.h	23 Aug 2004 15:55:04 -0000	1.153
+++ krita/core/kis_view.h	24 Aug 2004 09:41:30 -0000
@@ -61,7 +61,6 @@
 class KisPattern;
 class KisResource;
 class KisResourceMediator;
-class KisResourceServer;
 class KisAutobrush;
 class DockFrameDocker;
 class ColorDocker;
@@ -416,7 +415,6 @@
 	KisBuilderMonitor *m_imgBuilderMgr;
 	KisLabelProgress *m_progress;
 
-	KisResourceServer *m_resourceServer;
 	KisResourceMediator *m_brushMediator;
 	KisResourceMediator *m_patternMediator;
 	KisResourceMediator *m_gradientMediator;



_______________________________________________
kimageshop mailing list
kimageshop@kde.org
https://mail.kde.org/mailman/listinfo/kimageshop


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic