Warning, file /graphics/krita/sdk/tests/ui_manager_test.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 * SPDX-FileCopyrightText: 2012 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef __UI_MANAGER_TEST_H 0008 #define __UI_MANAGER_TEST_H 0009 0010 #include <testutil.h> 0011 #include "qimage_based_test.h" 0012 #include "ksharedconfig.h" 0013 #include <kis_filter_configuration.h> 0014 #include <resources/KoPattern.h> 0015 #include "KisResourceServerProvider.h" 0016 #include "kis_canvas_resource_provider.h" 0017 #include "kis_filter_strategy.h" 0018 #include "kis_selection_manager.h" 0019 #include "kis_node_manager.h" 0020 #include "KisViewManager.h" 0021 #include "KisView.h" 0022 #include "KisPart.h" 0023 #include <KisDocument.h> 0024 #include <kis_action_manager.h> 0025 #include "KisMainWindow.h" 0026 #include "kis_selection_mask.h" 0027 #include <KisGlobalResourcesInterface.h> 0028 0029 namespace TestUtil 0030 { 0031 0032 class UiManagerTest : public TestUtil::QImageBasedTest 0033 { 0034 public: 0035 UiManagerTest(bool useSelection, bool useShapeLayer, const QString &testName) 0036 : QImageBasedTest(testName) // "selection_manager_test" 0037 { 0038 undoStore = new KisSurrogateUndoStore(); 0039 image = createImage(undoStore); 0040 0041 part = KisPart::instance(); 0042 doc = qobject_cast<KisDocument*>(part->createDocument()); 0043 doc->setCurrentImage(image); 0044 0045 if(useSelection) addGlobalSelection(image); 0046 if(useShapeLayer) addShapeLayer(doc, image); 0047 image->initialRefreshGraph(); 0048 0049 mainWindow = new KisMainWindow(); 0050 imageView = new KisView(doc, mainWindow->viewManager(), mainWindow); 0051 view = new KisViewManager(mainWindow, mainWindow->actionCollection()); 0052 0053 KoPatternSP newPattern(new KoPattern(fetchDataFileLazy("HR_SketchPaper_01.pat"))); 0054 newPattern->load(KisGlobalResourcesInterface::instance()); 0055 Q_ASSERT(newPattern->valid()); 0056 view->canvasResourceProvider()->slotPatternActivated(newPattern); 0057 0058 KoColor fgColor(Qt::black, image->colorSpace()); 0059 KoColor bgColor(Qt::white, image->colorSpace()); 0060 view->canvasResourceProvider()->blockSignals(true); 0061 view->canvasResourceProvider()->setBGColor(bgColor); 0062 view->canvasResourceProvider()->setFGColor(fgColor); 0063 view->canvasResourceProvider()->setOpacity(1.0); 0064 0065 KisNodeSP paint1 = findNode(image->root(), "paint1"); 0066 Q_ASSERT(paint1); 0067 0068 imageView->setViewManager(view); 0069 view->setCurrentView(imageView); 0070 0071 view->nodeManager()->slotUiActivatedNode(paint1); 0072 0073 selectionManager = view->selectionManager(); 0074 Q_ASSERT(selectionManager); 0075 actionManager = view->actionManager(); 0076 Q_ASSERT(actionManager); 0077 0078 QVERIFY(checkLayersInitial()); 0079 0080 } 0081 0082 ~UiManagerTest() { 0083 /** 0084 * Here is a weird way of precessing pending events. 0085 * This is needed for the dummies facade could process 0086 * all the queued events telling it some nodes were 0087 * added/deleted 0088 */ 0089 QApplication::processEvents(); 0090 QTest::qSleep(500); 0091 QApplication::processEvents(); 0092 0093 delete mainWindow; 0094 delete doc; 0095 0096 /** 0097 * The event queue may have up to 200k events 0098 * by the time all the tests are finished. Removing 0099 * all of them may last forever, so clear them after 0100 * every single test is finished 0101 */ 0102 QApplication::removePostedEvents(0); 0103 } 0104 0105 void checkUndo() { 0106 undoStore->undo(); 0107 image->waitForDone(); 0108 QVERIFY(checkLayersInitial()); 0109 } 0110 0111 void checkDoubleUndo() { 0112 undoStore->undo(); 0113 undoStore->undo(); 0114 image->waitForDone(); 0115 QVERIFY(checkLayersInitial()); 0116 } 0117 0118 void startConcurrentTask() { 0119 KisFilterStrategy * filter = new KisBoxFilterStrategy(); 0120 QSize initialSize = image->size(); 0121 0122 image->scaleImage(2 * initialSize, image->xRes(), image->yRes(), filter); 0123 image->waitForDone(); 0124 0125 image->scaleImage(initialSize, image->xRes(), image->yRes(), filter); 0126 } 0127 0128 using QImageBasedTest::checkLayers; 0129 0130 bool checkLayers(const QString &name) { 0131 return checkLayers(image, name); 0132 } 0133 0134 using QImageBasedTest::checkLayersInitial; 0135 0136 bool checkLayersInitial() { 0137 return checkLayersInitial(image); 0138 } 0139 0140 bool checkLayersFuzzy(const QString &name) { 0141 return checkLayers(image, name, 1); 0142 } 0143 0144 bool checkSelectionOnly(const QString &name) { 0145 KisNodeSP mask = dynamic_cast<const KisLayer*>(image->root().data())->selectionMask(); 0146 return checkOneLayer(image, mask, name); 0147 } 0148 0149 bool checkNoSelection() { 0150 KisNodeSP mask = dynamic_cast<const KisLayer*>(image->root().data())->selectionMask(); 0151 return !mask && !image->globalSelection(); 0152 } 0153 0154 KisImageSP image; 0155 KisSelectionManager *selectionManager; 0156 KisActionManager *actionManager; 0157 KisSurrogateUndoStore *undoStore; 0158 0159 protected: 0160 KisView *imageView; 0161 KisViewManager *view; 0162 KisDocument *doc; 0163 KisPart *part; 0164 KisMainWindow *mainWindow; 0165 }; 0166 0167 } 0168 0169 #endif /* __UI_MANAGER_TEST_H */