Aquí está un video de la demo de mi trabajo hasta ahora.
Está escrito en PyQt5 y consta de 30 archivos hasta ahora. He de Látex de apoyo escrito ya, pero no ven que en esta demo.
Se estaba preguntando si te parece interesante, tiene alguna idea de las características, o incluso considerar su uso.
He aquí un segundo video en el que muestra la componen flechas característica.
He aquí una pregunta. Si yo apoyo flechas entre los functors y rellenar automáticamente de la codominio con connaturalidad diagramas, entonces debo admitir esta función de forma recursiva? Las flechas entre los mapas y todo eso...?
Un tercer video que muestra la nueva función de deshacer / rehacer característica implementada por petición popular.
Un cuarto de vídeo demostrando mágico reflejo de las posiciones de los objetos / flechas a través de un functor. Este proyecto se está comenzando a tomar un nuevo y muy interesante se vuelve.
Un quinto video Ahora lo que puede cambiar es de color amarillo y de lo que no es de color magenta oscuro.
Un sexto video que muestra cómo puedo hacer que ciertos conceptos como los de op integrados y cómodo de usar.
Después de haber codificado todo el código base. Esta compacta es la OpFunctor aplicación se pone!:
from functor import Functor
from category_diagram import CategoryDiagram
from category_arrow import CategoryArrow
class OpFunctor(Functor):
def __init__(self, new=True):
super().__init__(new)
self.setLabelText(0, "op")
self.label(0).setEditable(False)
self.setContravariant(True)
def setDomain(self, dom, undoable=False):
if dom is not self.domain():
super().setDomain(dom, undoable)
cod = self.codomain()
if cod and dom:
cod.setSymbol(self.imageString(dom))
cod.categoryLabel().addConstraint(lambda: cod.category() == self.imageString(dom))
def setCodomain(self, cod, undoable=False):
prev_cod = self.codomain()
if cod is not prev_cod:
if prev_cod: prev_cod.symbolLabel().setEditable(True)
super().setCodomain(cod, undoable)
dom = self.domain()
if dom and cod:
cod.categoryLabel().setEditable(False)
cod.setCategory(self.imageString(dom))
cod.symbolLabel().addConstraint(lambda: cod.category() == self.imageString(dom))
def canConnectTo(self, item, at_tail):
if super().canConnectTo(item, at_tail) == False:
return False
if at_tail == False:
if isinstance(item, CategoryDiagram) and not item.categoryLabel().isConstrained():
return True
return True
def takeImage(self, dom=None, cod=None, contra=False):
super().takeImage(dom, cod, not contra) # This is flag to invert the arrows in the image
def imageString(self, x):
if isinstance(x, (CategoryDiagram, CategoryArrow)):
return str(x) + "^op"
return str(x)