mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-06-10 06:54:32 +12:00
Improve status and label usage
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
This commit is contained in:
parent
d2f5290069
commit
6f83293e29
|
@ -32,7 +32,7 @@ class LabelHost:
|
||||||
self.file = MmdFile(os.path.join(path, "labels.txt"), 21)
|
self.file = MmdFile(os.path.join(path, "labels.txt"), 21)
|
||||||
self.labels = collections.OrderedDict()
|
self.labels = collections.OrderedDict()
|
||||||
|
|
||||||
def addLabel(self, name: str = None, color: Color = None):
|
def addLabel(self, name: str = None, color: Color = None) -> Label:
|
||||||
if name is None:
|
if name is None:
|
||||||
name = "New Label"
|
name = "New Label"
|
||||||
|
|
||||||
|
@ -40,18 +40,44 @@ class LabelHost:
|
||||||
self.labels[name] = label
|
self.labels[name] = label
|
||||||
return label
|
return label
|
||||||
|
|
||||||
def removeLabel(self, name: str):
|
def removeLabel(self, name: str) -> Label:
|
||||||
self.labels.pop(name)
|
return self.labels.pop(name)
|
||||||
|
|
||||||
def renameLabel(self, oldName: str, newName: str):
|
def renameLabel(self, oldName: str, newName: str):
|
||||||
label = self.labels.get(oldName)
|
match = False
|
||||||
label.name = newName
|
drop = [oldName]
|
||||||
self.labels[newName] = label
|
|
||||||
self.labels.pop(oldName)
|
|
||||||
|
|
||||||
def getLabel(self, name: str):
|
for name, label in self.labels.items():
|
||||||
|
if match:
|
||||||
|
drop.append(name)
|
||||||
|
elif name == oldName:
|
||||||
|
label.name = newName
|
||||||
|
match = True
|
||||||
|
|
||||||
|
if not match:
|
||||||
|
return
|
||||||
|
|
||||||
|
labels = list()
|
||||||
|
for name in drop:
|
||||||
|
labels.append(self.labels.pop(name))
|
||||||
|
|
||||||
|
for label in labels:
|
||||||
|
self.labels[label.name] = label
|
||||||
|
|
||||||
|
def getLabel(self, name: str) -> Label:
|
||||||
return self.labels.get(name)
|
return self.labels.get(name)
|
||||||
|
|
||||||
|
def getLabelByID(self, id: int) -> Label | None:
|
||||||
|
index = 0
|
||||||
|
|
||||||
|
for label in self.labels.values():
|
||||||
|
if index == id:
|
||||||
|
return label
|
||||||
|
|
||||||
|
index += 1
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
return self.labels.values().__iter__()
|
return self.labels.values().__iter__()
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ class StatusHost:
|
||||||
self.file = TextFile(os.path.join(path, "status.txt"))
|
self.file = TextFile(os.path.join(path, "status.txt"))
|
||||||
self.statuses = collections.OrderedDict()
|
self.statuses = collections.OrderedDict()
|
||||||
|
|
||||||
def addStatus(self, name: str = None):
|
def addStatus(self, name: str = None) -> Status:
|
||||||
if name is None:
|
if name is None:
|
||||||
name = "New Status"
|
name = "New Status"
|
||||||
|
|
||||||
|
@ -38,18 +38,44 @@ class StatusHost:
|
||||||
self.statuses[name] = status
|
self.statuses[name] = status
|
||||||
return status
|
return status
|
||||||
|
|
||||||
def removeStatus(self, name: str):
|
def removeStatus(self, name: str) -> Status:
|
||||||
self.statuses.pop(name)
|
return self.statuses.pop(name)
|
||||||
|
|
||||||
def renameStatus(self, oldName: str, newName: str):
|
def renameStatus(self, oldName: str, newName: str):
|
||||||
status = self.statuses.get(oldName)
|
match = False
|
||||||
status.name = newName
|
drop = [oldName]
|
||||||
self.statuses[newName] = status
|
|
||||||
self.statuses.pop(oldName)
|
|
||||||
|
|
||||||
def getStatus(self, name: str):
|
for name, status in self.statuses.items():
|
||||||
|
if match:
|
||||||
|
drop.append(name)
|
||||||
|
elif name == oldName:
|
||||||
|
status.name = newName
|
||||||
|
match = True
|
||||||
|
|
||||||
|
if not match:
|
||||||
|
return
|
||||||
|
|
||||||
|
statuses = list()
|
||||||
|
for name in drop:
|
||||||
|
statuses.append(self.statuses.pop(name))
|
||||||
|
|
||||||
|
for status in statuses:
|
||||||
|
self.statuses[status.name] = status
|
||||||
|
|
||||||
|
def getStatus(self, name: str) -> Status:
|
||||||
return self.statuses.get(name)
|
return self.statuses.get(name)
|
||||||
|
|
||||||
|
def getStatusByID(self, id: int) -> Status | None:
|
||||||
|
index = 0
|
||||||
|
|
||||||
|
for status in self.statuses.values():
|
||||||
|
if index == id:
|
||||||
|
return status
|
||||||
|
|
||||||
|
index += 1
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
return self.statuses.values().__iter__()
|
return self.statuses.values().__iter__()
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,9 @@ class LabelsPage:
|
||||||
self.colorButton = builder.get_object("color")
|
self.colorButton = builder.get_object("color")
|
||||||
self.colorButton.connect("color-set", self.colorSet)
|
self.colorButton.connect("color-set", self.colorSet)
|
||||||
|
|
||||||
|
self.labelNameRenderer = builder.get_object("label_name")
|
||||||
|
self.labelNameRenderer.connect("edited", self.labelNameEdited)
|
||||||
|
|
||||||
self.unloadLabelData()
|
self.unloadLabelData()
|
||||||
|
|
||||||
def refreshLabelStore(self):
|
def refreshLabelStore(self):
|
||||||
|
@ -129,3 +132,17 @@ class LabelsPage:
|
||||||
if row[0] == character_name:
|
if row[0] == character_name:
|
||||||
row[1] = pixbufFromColor(color)
|
row[1] = pixbufFromColor(color)
|
||||||
break
|
break
|
||||||
|
|
||||||
|
def labelNameEdited(self, renderer: Gtk.CellRendererText, path: str, text: str):
|
||||||
|
if self.label is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
model, tree_iter = self.labelSelection.get_selected()
|
||||||
|
|
||||||
|
if (model is None) or (tree_iter is None):
|
||||||
|
return
|
||||||
|
|
||||||
|
name = model.get_value(tree_iter, 0)
|
||||||
|
model.set_value(tree_iter, 0, text)
|
||||||
|
|
||||||
|
self.labels.renameLabel(name, text)
|
||||||
|
|
|
@ -35,6 +35,9 @@ class StatusPage:
|
||||||
self.addButton.connect("clicked", self.addClicked)
|
self.addButton.connect("clicked", self.addClicked)
|
||||||
self.removeButton.connect("clicked", self.removeClicked)
|
self.removeButton.connect("clicked", self.removeClicked)
|
||||||
|
|
||||||
|
self.statusNameRenderer = builder.get_object("status_name")
|
||||||
|
self.statusNameRenderer.connect("edited", self.statusNameEdited)
|
||||||
|
|
||||||
self.unloadStatusData()
|
self.unloadStatusData()
|
||||||
|
|
||||||
def refreshStatusStore(self):
|
def refreshStatusStore(self):
|
||||||
|
@ -94,3 +97,18 @@ class StatusPage:
|
||||||
model.remove(tree_iter)
|
model.remove(tree_iter)
|
||||||
|
|
||||||
self.statuses.removeStatus(name)
|
self.statuses.removeStatus(name)
|
||||||
|
|
||||||
|
def statusNameEdited(self, renderer: Gtk.CellRendererText, path: str, text: str):
|
||||||
|
if self.status is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
model, tree_iter = self.statusSelection.get_selected()
|
||||||
|
|
||||||
|
if (model is None) or (tree_iter is None):
|
||||||
|
return
|
||||||
|
|
||||||
|
name = model.get_value(tree_iter, 0)
|
||||||
|
model.set_value(tree_iter, 0, text)
|
||||||
|
|
||||||
|
self.statuses.renameStatus(name, text)
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,9 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
|
||||||
</attributes>
|
</attributes>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCellRendererText"/>
|
<object class="GtkCellRendererText" id="label_name">
|
||||||
|
<property name="editable">True</property>
|
||||||
|
</object>
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="text">0</attribute>
|
<attribute name="text">0</attribute>
|
||||||
</attributes>
|
</attributes>
|
||||||
|
|
|
@ -80,7 +80,9 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkTreeViewColumn">
|
<object class="GtkTreeViewColumn">
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCellRendererText"/>
|
<object class="GtkCellRendererText" id="status_name">
|
||||||
|
<property name="editable">True</property>
|
||||||
|
</object>
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="text">0</attribute>
|
<attribute name="text">0</attribute>
|
||||||
</attributes>
|
</attributes>
|
||||||
|
|
Loading…
Reference in a new issue