1# -*- coding: utf-8 -*- 2 3# Copyright (c) 2012 - 2021 Detlev Offenbach <detlev@die-offenbachs.de> 4# 5 6""" 7Module implementing the UML diagram builder base class. 8""" 9 10from PyQt5.QtCore import QObject 11 12 13class UMLDiagramBuilder(QObject): 14 """ 15 Class implementing the UML diagram builder base class. 16 """ 17 def __init__(self, dialog, view, project): 18 """ 19 Constructor 20 21 @param dialog reference to the UML dialog 22 @type UMLDialog 23 @param view reference to the view object 24 @type UMLGraphicsView 25 @param project reference to the project object 26 @type Project 27 """ 28 super().__init__(dialog) 29 30 self.umlView = view 31 self.scene = self.umlView.scene() 32 self.project = project 33 34 def initialize(self): 35 """ 36 Public method to initialize the object. 37 """ 38 return 39 40 def buildErrorMessage(self, msg): 41 """ 42 Public method to build an error string to be included in the scene. 43 44 @param msg error message 45 @type str 46 @return prepared error string 47 @rtype str 48 """ 49 return ( 50 "<font color='{0}'>".format( 51 self.umlView.getDrawingColors()[0].name()) + 52 msg + 53 "</font>" 54 ) 55 56 def buildDiagram(self): 57 """ 58 Public method to build the diagram. 59 60 This class must be implemented in subclasses. 61 62 @exception NotImplementedError raised to indicate that this class 63 must be subclassed 64 """ 65 raise NotImplementedError( 66 "Method 'buildDiagram' must be implemented in subclasses.") 67 68 def getPersistenceData(self): 69 """ 70 Public method to get a string for data to be persisted. 71 72 @return persisted data string 73 @rtype str 74 """ 75 return "" 76 77 def parsePersistenceData(self, version, data): 78 """ 79 Public method to parse persisted data. 80 81 @param version version of the data 82 @type str 83 @param data persisted data to be parsed 84 @type str 85 @return flag indicating success 86 @rtype bool 87 """ 88 return True 89 90 def toDict(self): 91 """ 92 Public method to collect data to be persisted. 93 94 @return dictionary containing data to be persisted 95 @rtype dict 96 """ 97 return {} 98 99 def fromDict(self, version, data): 100 """ 101 Public method to populate the class with data persisted by 'toDict()'. 102 103 @param version version of the data 104 @type str 105 @param data dictionary containing the persisted data 106 @type dict 107 @return tuple containing a flag indicating success and an info 108 message in case the diagram belongs to a different project 109 @rtype tuple of (bool, str) 110 """ 111 return True, "" 112