மாடலிங் மொழிகள்

பதிப்பு 2.0 முதல், கஃபர் மாடலிங் மொழிகளின் கருத்தை ஆதரிக்கிறது. இது காஃபர் கோர் பயன்பாட்டிலிருந்து தனித்தனியாக தனி மாடலிங் மொழிகளை உருவாக்க அனுமதிக்கிறது.

முக்கிய மொழி, மற்றும் யுஎம்எல் இருக்கும். காஃபர் இப்போது SYSML, RAAML மற்றும் C4 மாடலின் துணைக்குழுவையும் ஆதரிக்கிறது.

Kaphor இல் ஒரு மாடலிங் மொழி kaphor.abc.modelinglanguage சுருக்க அடிப்படை வகுப்பை செயல்படுத்தும் ஒரு வகுப்பால் வரையறுக்கப்படுகிறது. மாடலிங் மொழி gaphor.modelinglanguages நுழைவு புள்ளியாக பதிவு செய்யப்பட வேண்டும்.

மாடலிங் லாங்குவேச் இடைமுகம் மிகவும் மிகக் குறைவு. இது மற்ற சேவைகளை கூறுகள் மற்றும் வரைபட உருப்படிகள், அத்துடன் ஒரு கருவிப்பெட்டி மற்றும் வரைபட வகைகளைப் பார்க்க அனுமதிக்கிறது. இருப்பினும், ஒரு மாடலிங் மொழியின் பொறுப்புகள் அங்கு நிற்காது. பொதுவான செயல்பாடுகளின் தொகுப்பிற்கு கையாளுபவர்களை பதிவு செய்வதன் மூலம் செயல்பாட்டின் பகுதிகள் செயல்படுத்தப்படும்.

ஆனால் நம்மை விட முன்னேற வேண்டாம். ஒரு மாடலிங் மொழி செயல்படுத்தல் வழங்கக்கூடிய செயல்பாடு என்ன?

மூன்று செயல்பாடுகள் ஒரு ModelingLanguage நிகழ்வு மூலம் அம்பலப்படுத்தப்படுகின்றன:

  • தரவு மாதிரி (கூறுகள்) மற்றும் வரைபட உருப்படிகள்

  • வரைபடம் வகைகள்

  • ஒரு கருவிப்பெட்டி வரையறை

அந்தந்த பொதுவான செயல்பாடுகளில் கையாளுபவர்களைச் சேர்ப்பதன் மூலம் பிற செயல்பாடுகளை நீட்டிக்க முடியும்:

  • இணைப்பிகள், வரைபட உருப்படிகளை இணைக்க அனுமதிக்கவும்

  • Format/parse மாதிரியுரு elements பெறுநர் and இருந்து a textual representation

  • நகல்/ஒட்டுதல் நடத்தை உறுப்பு நகலெடுப்பது அற்பமானதாக இல்லாதபோது, எடுத்துக்காட்டாக ஒன்றுக்கு மேற்பட்ட உறுப்புகளுடன் தொடர்புடையது

  • குழுமம், கூறுகளை ஒருவருக்கொருவர் கூடு கட்ட அனுமதிக்கவும்

  • கைவிடுதல், மரக் காட்சியில் இருந்து ஒரு வரைபடத்தில் கூறுகளை இழுக்க அனுமதிக்கவும்

  • தானியங்கி தூய்மைப்படுத்தும் விதிகள் மாதிரியை சீராக வைத்திருக்க

மாடலிங் மொழிகள் புதிய இடைமுகம் கூறுகளையும் வழங்க முடியும். நீங்கள் ஒரு மாடலிங் மொழி தொகுப்பை இறக்குமதி செய்யும் போது அந்த கூறுகள் நேரடியாக ஏற்றப்படாது. அதற்கு பதிலாக, அவை gaphor.modules entrypoint வழியாக இறக்குமதி செய்யப்பட வேண்டும்.

மாடலிங் மொழி

class gaphor.abc.ModelingLanguage[source]

ஒரு மாதிரி வழங்குநர் என்பது ஒரு சிறப்பு சேவையாகும், இது யுஎம்எல், சிச்எம்எல், ராம்ல் போன்ற மாதிரி செயலாக்கத்திற்கு நுழைவு புள்ளியை வழங்குகிறது.

abstract property diagram_types: Iterable[DiagramType]

வரைபட வகைகளை மீண்டும் செயல்படுத்தவும்.

abstract property element_types: Iterable[ElementCreateInfo]

உறுப்பு வகைகள்.

abstractmethod lookup_element(name: str, ns: str | None = None) type[Base] | None[source]

(வகுப்பு) பெயரால் ஒரு மாதிரி உறுப்பு வகையைப் பாருங்கள்.

ஒரு பெயர்வெளி வழங்கப்படலாம். இது அந்த குறிப்பிட்ட மாடலிங் மொழியிலிருந்து மட்டுமே மாதிரியை ஏற்ற அனுமதிக்கும்.

abstract property model_browser_model: type[TreeModel]

மாதிரி உலாவியில் பயன்படுத்த ஒரு மாதிரி.

abstract property name: str

மாடலிங் மொழியின் மனிதனால் படிக்கக்கூடிய பெயர்.

abstract property toolbox_definition: ToolboxDefinition

கருவிப்பெட்டிக்கான கட்டமைப்பைப் பெறுங்கள்.

ஒரு மாநாடாக, மாடலிங் மொழியைக் கொண்ட தொகுப்பில் __modeling_language__ என்ற பண்புக்கூறு இருக்க வேண்டும், இது நுழைவு புள்ளியில் மாடலிங் மொழி பெயரின் அதே மதிப்பைக் கொண்டுள்ளது.

விளக்க:

MyTool/mylang/__ init __. Py ஒரு நுழைவு:

__modeling_language__ = "MyLang"

pyproject.toml ஒரு நுழைவு புள்ளியைக் கொண்டுள்ளது:

[project.entry-points."gaphor.modelinglanguages"]
"MyLang" = "mytool.mylang.modelinglanguage:MyLangModelingLanguage"

இணைப்பிகள்

ஒரு உறுப்பை இன்னொரு உறுப்பை இணைக்க இணைப்பிகள் பயன்படுத்தப்படுகின்றன.

இணைப்பிகள் ConnectorProtocol ஐ கடைபிடிக்க வேண்டும். பொதுவாக நீங்கள் பேச் கோனெக்டர் இலிருந்து பெறுவீர்கள்.

class gaphor.diagram.connectors.BaseConnector(element: Presentation[Base], line: Presentation[Base])[source]

கஃபர் வரைபட உருப்படிகளுக்கான இணைப்பு அடாப்டர்.

வரி உருப்படி line இணைக்கக்கூடிய உருப்படி element உடன் கைப்பிடியுடன் இணைக்கிறது.

அளவுருக்கள்:
  • line -- உருப்படியை இணைக்கிறது

  • element -- இணைக்கக்கூடிய உருப்படி

மாநாட்டின் மூலம் அடாப்டர்கள் (உறுப்பு, வரி) மூலம் பதிவு செய்யப்படுகின்றன - அந்த வரிசையில்.

allow(handle: Handle, port: Port) bool[source]

உருப்படிகளை இணைக்க முடியுமா என்பதை தீர்மானிக்கவும்.

இணைப்பு அனுமதிக்கப்படுகிறதா (எடுத்துக்காட்டாக சுட்டி இயக்கத்தின் போது)?

இணைப்பு அனுமதிக்கப்பட்டால் உண்மை தருகிறது.

connect(handle: Handle, port: Port) bool[source]

ஒரு உறுப்புடன் இணைக்கவும்.

உறுப்பு மற்றும் வரிக்கு இடையில் ஒரு இணைப்பை நிறுவுங்கள். தேவைப்பட்டால் துண்டிக்கப்படுவதையும் கவனித்துக்கொள்கிறது (எ.கா. 1: 1 உறவுகள்).

இந்த கட்டத்தில் வரி வேறு சில அல்லது அதே உறுப்புடன் இணைக்கப்படலாம் என்பதை நினைவில் கொள்க. மாதிரி மட்டத்தில் இணைப்பும் இன்னும் உள்ளது.

ஒரு இணைப்பு நிறுவப்பட்டால் உண்மை தருகிறது.

disconnect(handle: Handle) None[source]

மாதிரி நிலை இணைப்புகளைத் துண்டிக்கவும்.

ஒரு கைப்பிடியை இணைக்க முடியாத ஒரு கட்டத்தில் கைவிடும்போது அழைக்கப்படும் இணைப்பு.

get_connected(handle: Handle) Presentation[Base] | None[source]

ஒரு கைப்பிடியுடன் இணைக்கப்பட்ட உருப்படியைப் பெறுங்கள்.

வடிவம் மற்றும் பாகுபடுத்தல்

மாதிரி கூறுகளை எளிய உரை பிரதிநிதித்துவத்திற்கு வடிவமைக்க முடியும். எடுத்துக்காட்டாக, இது மாதிரி உலாவியில் பயன்படுத்தப்படுகிறது. இது மாதிரி உறுப்பின் முழு வரிசைப்படுத்தல் அல்ல.

சில சந்தர்ப்பங்களில் ஒரு உரையை மீண்டும் ஒரு பொருளில் அலசுவது பயனுள்ளதாக இருக்கும். ஒரு வகுப்பில் பண்புகளையும் செயல்பாடுகளையும் நீங்கள் திருத்தும்போது இது செய்யப்படுகிறது.

ஒவ்வொரு format() சமமான parse() செயல்பாடு தேவையில்லை.

gaphor.core.format.format(element: Element) str

மாதிரி உறுப்பின் மனித படிக்கக்கூடிய பிரதிநிதித்துவத்தை வழங்குகிறது. பெரும்பாலான சந்தர்ப்பங்களில் இது பெயர் மட்டுமே, இருப்பினும், பண்புகள் (பண்புக்கூறுகள்) மற்றும் செயல்பாடுகள் மிகவும் விரிவாக வடிவமைக்கப்பட்டுள்ளன:

+ attr: str
+ format(element: Element): string
gaphor.core.format.parse(element: Element, text: str) None

text ஐ பாகுபடுத்தி, element. உறுப்பு உரையின் உறுப்புகளுடன் உள்ளது. பார்சே செயல்முறையின் ஒரு பகுதியாக புதிய மாதிரி கூறுகள் உருவாக்கப்படுகின்றன என்று இது குறிக்கலாம்.

நகலெடுத்து ஒட்டவும்

எளிய உருப்படிகளுக்கான பெட்டியிலிருந்து நகலெடுத்து ஒட்டவும்: ஒரு மாதிரி உறுப்புடன் ஒரு வரைபட உருப்படி (பொருள்). இது தொடர்புடைய அனைத்து தரவும் நகலெடுக்கப்படுவதை உறுதிசெய்ய உறுப்புகளின் சுமை () மற்றும் சேமி () முறைகளை மேம்படுத்துகிறது.

சில நேரங்களில் உருப்படிகளுக்கு வேலை செய்ய ஒன்றுக்கு மேற்பட்ட மாதிரி கூறுகள் தேவை. எடுத்துக்காட்டாக ஒரு சங்கம்: இது இரண்டு சங்க முடிவுகளைக் கொண்டுள்ளது.

அந்த குறிப்பிட்ட சந்தர்ப்பங்களில் நீங்கள் உங்கள் சொந்த நகலை செயல்படுத்த வேண்டும் மற்றும் செயல்பாடுகளை ஒட்ட வேண்டும். அத்தகைய ஒரு விசயத்தை உருவாக்க நீங்கள் இரண்டு செயல்பாடுகளை உருவாக்க வேண்டும்: ஒன்று நகலெடுப்பதற்கும் ஒன்று ஒட்டுவதற்கு.

gaphor.diagram.copypaste.copy(obj: Base | Iterable) Iterator[tuple[Id, Opaque]]

ஒரு உறுப்பின் நகலை உருவாக்கவும் (அல்லது உறுப்புகளின் பட்டியல்). திரும்பிய வகை வேறுபட்டதாக இருக்க வேண்டும், எனவே பேச்ட் () செயல்பாடு சரியாக அனுப்பலாம். ஒரு நகல் செயல்பாடு பொதுவாக உறுப்பு மற்றும் கட்டாய தொடர்பான கூறுகளை மட்டுமே நகலெடுக்கிறது. எ.கா. ஒரு சங்கத்திற்கு இரண்டு சங்க முடிவுகள் தேவை.

gaphor.diagram.copypaste.paste(copy_data: Opaque, diagram: Diagram, lookup: Callable[[str], Base | None]) Iterator[Base]

முன்னர் நகலெடுத்த தரவை ஒட்டவும். copy() செயல்பாட்டில் உருவாக்கப்பட்ட தரவு வகையின் அடிப்படையில், நகலெடுக்கப்பட்ட கூறுகளை நகலெடுக்க முயற்சிக்கவும். புதிதாக உருவாக்கப்பட்ட உருப்படி அல்லது உறுப்பை வழங்குகிறது.

கஃபர் சில வசதியான செயல்பாடுகளை வழங்குகிறது:

gaphor.diagram.copypaste.copy_full(items: Collection[Base], lookup: Callable[[Id], Base | None] | None = None) CopyData:

items நகலெடுக்கவும். lookup செயல்பாடு சொந்தமான கூறுகளைக் காணப் பயன்படுகிறது (மாதிரி உலாவியில் குழந்தை முனைகளாக காட்டப்பட்டுள்ளது).

விளக்கக்காட்சி உறுப்பின் நகலை வரைபடத்திற்கு ஒட்டவும், ஆனால் அடிப்படை மாதிரி உறுப்பை இணைக்க முயற்சிக்கவும். ஒரு ஆழமற்ற நகல்.

gaphor.diagram.copypaste.paste_full(copy_data: CopyData, diagram: Diagram) set[~gaphor.core.modeling.Presentation]:

விளக்கக்காட்சி மற்றும் மாதிரி உறுப்பு இரண்டின் நகலை ஒட்டவும். ஒரு ஆழமான நகல்.

தொகுத்தல்

ஒரு உருப்படியை மற்றொன்றின் மேல், ஒரு வரைபடத்தில் அல்லது மரத்தின் பார்வையில் இழுப்பதன் மூலம் குழுமம் செய்யப்படுகிறது.

gaphor.diagram.group.owner(element: Base) Base | RootType | None

உறுப்பு உரிமையாளரைத் திருப்பித் தரவும். உரிமையாளர் ரூட் ஆக இருக்கலாம், உறுப்பைக் குறிக்கும் உரிமையாளர் வரிசைக்கு வேரில் வைக்கப்பட வேண்டும். `எதுவுமில்லை 'திரும்பப் பெறவில்லை என்றால், உரிமையாளர் இல்லை.

gaphor.diagram.group.owns(element: Base) list[Base]

`உறுப்புக்கு சொந்தமான அனைத்து கூறுகளையும் வழங்குகிறது

gaphor.diagram.group.group(parent: Base, element: Base) bool

பெற்றோர் உறுப்பில் ஒரு உறுப்பு குழு. தொகுத்தல் உரிமையை அடிப்படையாகக் கொண்டது, ஆனால் பிற வகை குழுக்களும் சாத்தியமாகும்.

gaphor.diagram.group.ungroup(parent: Base, element: Base) bool

ஒரு உறுப்பிலிருந்து குழுவை அகற்றவும். வழங்கப்பட்ட பெற்றோர் முனை சரியானதா என்பதை செயல்பாடு சரிபார்க்க வேண்டும்.

gaphor.diagram.group.can_group(parent_type: type[Base], element_or_type: type[Base] | Base) bool

இந்த செயல்பாடு உண்மையில் ஒரு குழு செயல்பாட்டைச் செய்யாமல், குழுமம் சாத்தியமா என்பதை தீர்மானிக்க முயற்சிக்கிறது. இது 100% துல்லியமாக இல்லை.

கைவிடுதல்

மரக் காட்சியில் இருந்து ஒரு உறுப்பை இழுத்து ஒரு வரைபடத்தில் கைவிடுவதன் மூலம் கைவிடப்படுகிறது. ஏற்கனவே இருக்கும் மாதிரி கூறுகளுடன் வரைபடத்தை நீட்டிக்க இது ஒரு எளிதான வழியாகும்.

மாற்றாக, விளக்கக்காட்சி உருப்படியை மற்றொரு உறுப்புக்கு மேல் கைவிடலாம்.

gaphor.diagram.drop.drop(element: Base | Presentation, diagram: Diagram | Presentation, x: float, y: float) Presentation | None

உறுப்பு இன்னும் விளக்கக்காட்சியாக இல்லாவிட்டால், வரைபடத்தில் ஒரு உறுப்புக்கான புதிய விளக்கக்காட்சியை துளி செயல்பாடு உருவாக்குகிறது. உறவுகளுக்கு, இணைக்கப்பட்ட இரண்டு கூறுகளும் ஒரே வரைபடத்தில் இருந்தால் மட்டுமே ஒரு துளி செயல்படும்.

மாதிரி கூறுகளை இணைப்பதைக் கையாளும் போது, விளக்கக்காட்சி கூறுகளை ஒரு வரைபடத்தில் சரியான உருப்படியில் உருவாக்குதல் மற்றும் வைப்பது ஆகியவற்றுடன் ஒப்பந்தங்களை கைவிடுதல்.

தானியங்கு மாதிரி தூய்மைப்படுத்துதல்

வரைபடங்களுடன் ஒத்திசைவாக மாதிரியை வைத்திருக்க காஃபர் விரும்புகிறார்.

ஒரு மாதிரி உறுப்பை அகற்ற முடியுமா என்பதை தீர்மானிக்க ஒரு சிறிய அனுப்புதல் செயல்பாடு பயன்படுத்தப்படுகிறது.

gaphor.diagram.deletable.deletable(element: Base) bool

ஒரு மாதிரி உறுப்பை பாதுகாப்பாக அகற்ற முடியுமா என்பதை தீர்மானிக்கவும்.

சொத்து எடிட்டர் பக்கங்கள்

ஆசிரியர் பக்கம் துணுக்குகளிலிருந்து கட்டப்பட்டுள்ளது. எடுத்துக்காட்டாக: கிட்டத்தட்ட ஒவ்வொரு உறுப்புக்கும் ஒரு பெயர் உள்ளது, எனவே ஒரு பெயரைத் திருத்த அனுமதிக்கும் இடைமுகம் துணுக்கை உள்ளது.

ஒவ்வொரு சொத்து பக்கமும் (துணுக்கை) propertyPageBase இலிருந்து பெற வேண்டும்.

class gaphor.diagram.propertypages.PropertyPageBase[source]

ஒரு நோட்புக்கில் தன்னைக் காண்பிக்கக்கூடிய ஒரு சொத்து பக்கம்.

close() None[source]

Called when a property page is removed.

This allows us to clean up.

abstractmethod construct() Gtk.Widget | None[source]

சொத்து பக்கத்திற்கு சொந்தமான பக்கத்தை (gtk.widget) உருவாக்கவும்.

பக்கத்தின் டோப்ல்வெல் விட்செட்டை (gtk.widget) வழங்குகிறது.

உடனடி (வரைபடம்) எடிட்டர் பாப்அப்கள்

ஒரு வரைபடத்தில் உள்ள ஒரு உருப்படியை நீங்கள் இருமுறை சொடுக்கு செய்யும்போது, ஒரு பாப்அப் காண்பிக்க முடியும், எனவே நீங்கள் பெயரை எளிதாக மாற்றலாம்.

இயல்பாக, இது பெயரிடப்பட்ட எந்த உறுப்புக்கும் வேலை செய்கிறது. உங்களுக்குத் தேவைப்பட்டால் உங்கள் சொந்த இன்லைன் எடிட்டர் செயல்பாட்டை பதிவு செய்யலாம்.

gaphor.diagram.instanteditors.instant_editor(item: Item, view, event_manager: EventManager, pos: tuple[int, int] | None = None) bool

வரைபடத்தில் ஒரு சிறிய எடிட்டர் பாப்அப்பைக் காட்டு. உறுப்பு எடிட்டரை நாடாமல் எளிதாக திருத்துதல் செய்ய உதவுகிறது.

சுட்டி செய்தித் தாள் நிகழ்வின் போது, சுட்டி நிலையும் (உறுப்புடன் தொடர்புடையது) வழங்கப்படுகிறது.