From 2d49f65ec4196f0f9275efa6555523c8502657ae Mon Sep 17 00:00:00 2001 From: Joppe Blondel Date: Wed, 22 Jul 2026 18:13:13 +0200 Subject: [PATCH] Fixed some bugs --- BEdit/src/bedit/data/libraries/bondgraph.beb | Bin 0 -> 1210 bytes BEdit/src/bedit/data/libraries/default.beb | Bin 891 -> 994 bytes BEdit/src/bedit/gui/controllers/commands.py | 14 ++++++++++++++ BEdit/src/bedit/gui/controllers/document.py | 19 ++++++++++++++++++- BEdit/src/bedit/gui/models/library_tree.py | 18 +++++++++++++++++- 5 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 BEdit/src/bedit/data/libraries/bondgraph.beb diff --git a/BEdit/src/bedit/data/libraries/bondgraph.beb b/BEdit/src/bedit/data/libraries/bondgraph.beb new file mode 100644 index 0000000000000000000000000000000000000000..b829835640a90180f7e4a453c41b2068b906469d GIT binary patch literal 1210 zcmV;r1V#HoMM3}pc-rllO=}!C7{}wQKgB?NNDGtB`%6vfQYSRI1Y?J`5JIaNJ@Sgo zj;0z-Z1-k2gi=bWd+F5g8DoC^7o?Y)h& z)32_S*WTvYDX)q>&ID5L&#v^Z1DXop1jVq`$ru;;uRqI={;rC;1ttyxhg8P1G2?ZA zX}m5TW}Icf1%-U;n8qw!9%rprrS0fl@)m=5D)4sn|WlRQgJJG~aG>ww}-J$1EvYX+C#^A&)uDl%3rp#;Npa zIqeQjvqE$+YayCepFW6Dk)uS~{UhT*fOEha5E(+Du|f>J5hLF>J?xg==;YEMyq!nB z7<%N!h)23PT}x5&U%8|!CppNHhNUzA|hZ*8>>M~vOogbuIo(-OLY`9(&TYi-( zaXF82gq?E0d**pZ+E!kB+{v3Lg99$zfYP-D+Jq*_{#D|ryBjf%f$v|n4RyB#Y>4(< z^^?=@V7s$Uv1pz(zNuW?Z310uiotUa`pE74RE=77SJAogkLc8vZoOvdRvkRmbEzZe z!3Lx05tfQoIgYbNqYqp{Q&<(7iOeCEP+UHLSz7+|ufFA6aP|NOGwRQ_yhc;1mp9q^ z9qI8G`w5LW;+tDXs%o`}1P6F|LR(oiyE4+-?FTZNBDPf zR)3&a$h z9)Ta}p6mG`L{2!!l9e%fYWJwc3QxUQ?OfQ!>Re#*3k>GUjDmSwQOG}3NKVIK?0J@f zT%_A}XiLFhV;#8!=>VRE!ob14SqX+GtK(bPX>tkS8*PtI3Edcz3)7<5t-8DqJPsG` zx>#FUe$CSI2#+%LW)#RjD78} zUk_1i$RF$=-yoL*8zzpQ05!zmekQv!kmKYQNgJ_&bQP|+x5eba{XQ_Jm4#*s3 zZ<4IYsp6s56*L`T^p}}q$Cy=intlIEZtj`)6*_s*x|ZFe_a#B{jYef?H1p$y?CU!V z3NJ&-fx6nNsCxvEM&zlgq>Q+lbba>abl)_-S=(TXnd|2W>LD Y2W^FDN#Fc%E0!DQo9vf=1L>@&x^Wd-MF0Q* literal 0 HcmV?d00001 diff --git a/BEdit/src/bedit/data/libraries/default.beb b/BEdit/src/bedit/data/libraries/default.beb index 2a3aa794a61a8761e273a9fb0ea589123847f19b..e5011b4861b1e5de5e03f40b0b942c42ef76168c 100644 GIT binary patch literal 994 zcmV<810DQAMM3}pc-rlk-EQMV6vwykzyn0uUhpBK#IX|xgfOBjDj}^ZS}iLf1ml@A z&8W_dnHjeYcP$99D}>mE2S`}wt1YV)ya3u><_Y#Kxa5+t<9xP)Yy)hO7)#NNb7syt zf1mS<^JSL`*+BYn0EB6a2pl(n>)t*{#ROmLH$WqTG&)K+YQU2XpePP?;Z_K#o$5#- zwEF)3kBmH92e<5$-J)mN6v#`jO@)FK4es&=)S`Di!i4j=C~ zhmWTxkrWX~%|IQUF)aAjjJNt_&K&|z#2;&A^(NCSQPV zQ0#L!?i?_p>qGz3k;L6Pu-&?ztoxAH*$?;6u#g<&2Z*p(4gHt$XENt&yn8FJm5_1R z*3A$)N`#DL>kl)BZ~vYAft5gbNOn05+dLfT9^y zI(jy#S?+sMw}+EDoGHmmd`}u>b>HJO7JT1X$@gyyz9~hhSX|ck*2UKCtGYP2Z7Tb` z7qUPi**rQ;Z*9kcmH_9EStA-%QPxq%$)4$&tPZ$SYN{mP_68dMyw@;~tBfnO;hr;NtB>@5QS zk^Q=R{gMCh`Xc|Ej?qTQ2{`kJveBo4>urUqpF?uvpM_*U zh2-9=@sgM{Z~)Eacj*1#aL}J&Xg2N?D;kdWVp?7WVH>DS7uQl*F}~ z>lrY=AWEKJ4@x4N773ughmt!}6*m84l>F{rWY@jRDYdy0rMj3&9Kuq~e;J~(ceNQl z*$Y|ti_v8pmc`R+7xCmzBiy`DH<#k+>FRiTR!I4z;>OGIN9^N*`F~qr1;z`dH`e1% QZm$|*BjCjbBd literal 891 zcmV->1BCoSMM3}pc-qyM-)`GB6vn%E*aHY?F18jLY+1786+<;NKm!ygf+c7R48=x~ zhcOYER7on0dzYZt(4ZIn_X1vJ$7#D_*j`|0F8u_3i(U3|lq}1R6BKFPbu9%LltuD< zhdjSe_T2#$vV-)?2nf?Q5jgDt*ZW%_6%+i6VFxrKNTZ#MqYnIWDV5SZx0cI+eJO-i zkN19KqWqeZ_0p5OR))4 zdEMDeChE%d@=Xt?n_hPB6&f-wI8*{w-d#Y=G@p+5I3HHVuBu|YI^~%IKOuHihKt9Z zq%jx!+Cs7anTt&+LbcjyW3L_uW2oBV_El4%hx;*$B$C~o=lNG_X{05<;Y-#@##L05 z{cg6&I4SCIphPMSrU!5NF4v z>dgX;>@s5fs8NLPV-$~OjDj{?41qgFFI~(iR*&u9I~hfvapMzHZ4_G2bc5#SVPefX zavNx(c5~juo;u%nAJ4`feY!SwzmG*MWMu}WqM{9{;Cjs@Itqii3>R=ZvwOWOHL$@vvKr-tjAB6k|ACcpGClkA}5U~TyB#z-!Ae@A2 z@h+ZW)tSp8oL5&&I4!E@kE0q+6|NjR%@a|5wK%G;t(;YrcD_n~WH&AI@4#Xf<5vCK RrSzw(OV-yH{sm!%c?a+}xSaq1 diff --git a/BEdit/src/bedit/gui/controllers/commands.py b/BEdit/src/bedit/gui/controllers/commands.py index 0273a80..574af28 100644 --- a/BEdit/src/bedit/gui/controllers/commands.py +++ b/BEdit/src/bedit/gui/controllers/commands.py @@ -304,6 +304,20 @@ class RenameConnectionCommand(QUndoCommand): self.controller._rename_connection(self.owner_id, self.connection_id, self.old) +class RenameDocumentCommand(QUndoCommand): + def __init__(self, controller, old: str, new: str) -> None: + super().__init__("Rename document") + self.controller = controller + self.old = old + self.new = new + + def redo(self) -> None: + self.controller._rename_document(self.new) + + def undo(self) -> None: + self.controller._rename_document(self.old) + + class DeleteSelectionCommand(QUndoCommand): def __init__( self, diff --git a/BEdit/src/bedit/gui/controllers/document.py b/BEdit/src/bedit/gui/controllers/document.py index e5c8f19..c8c39d3 100644 --- a/BEdit/src/bedit/gui/controllers/document.py +++ b/BEdit/src/bedit/gui/controllers/document.py @@ -23,6 +23,7 @@ from bedit.gui.controllers.commands import ( MoveInterfacePortCommand, PasteSelectionCommand, RenameConnectionCommand, + RenameDocumentCommand, RenameInterfacePortCommand, ReplaceSourceCommand, RotateComponentsCommand, @@ -50,6 +51,7 @@ from bedit.gui.preferences import application_settings class DocumentController(QObject): documentReset = Signal() documentOpenedChanged = Signal(bool) + documentNameChanged = Signal(str) activeGraphChanged = Signal() componentAdded = Signal(str) componentRemoved = Signal(str) @@ -228,10 +230,19 @@ class DocumentController(QObject): {component_id: component}, connections, [], - [], ) ) + def rename_document(self, name: str) -> None: + if self.document is None: + return + name = name.strip() + if not name: + raise ValueError("The document name cannot be empty") + old = str(self.document.metadata.get("name") or "Current Document") + if name != old: + self.undo_stack.push(RenameDocumentCommand(self, old, name)) + def add_component_copy(self, source: Component, position: QPointF) -> str: if self.active_component is None or self.active_component.implementation_kind != "graph": raise ValueError("Open a graph component before placing components") @@ -1374,6 +1385,12 @@ class DocumentController(QObject): connection.name = name self.documentReset.emit() + def _rename_document(self, name: str) -> None: + if self.document is None: + return + self.document.metadata["name"] = name + self.documentNameChanged.emit(name) + def _replace_source(self, component_id: str, source: dict) -> None: if self.document is None: return diff --git a/BEdit/src/bedit/gui/models/library_tree.py b/BEdit/src/bedit/gui/models/library_tree.py index 1be91c2..9c22a8b 100644 --- a/BEdit/src/bedit/gui/models/library_tree.py +++ b/BEdit/src/bedit/gui/models/library_tree.py @@ -1,6 +1,6 @@ import json -from PySide6.QtCore import QByteArray, QMimeData, QModelIndex, Qt, Signal +from PySide6.QtCore import QByteArray, QMimeData, QModelIndex, QSignalBlocker, Qt, Signal from PySide6.QtGui import QStandardItem, QStandardItemModel from bedit.core.model import Component @@ -80,8 +80,24 @@ class DocumentTreeModel(LibraryTreeModel): controller.componentMoved.connect(lambda _component_id, _position: self.rebuild()) controller.connectionAdded.connect(lambda _connection_id: self.rebuild()) controller.connectionRemoved.connect(lambda _connection_id: self.rebuild()) + controller.documentNameChanged.connect(self._document_name_changed) + self.itemChanged.connect(self._document_item_changed) self.rebuild() + def _document_item_changed(self, item: QStandardItem) -> None: + if item.data(ITEM_KIND_ROLE) != "current-document": + return + try: + self.controller.rename_document(item.text()) + except ValueError: + self.rebuild() + + def _document_name_changed(self, name: str) -> None: + root = self.item(0) + if root is not None: + with QSignalBlocker(self): + root.setText(name) + def rebuild(self) -> None: self.clear() self.setHorizontalHeaderLabels(["Document"])