mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-09-30 01:07:24 +13:00
78614e9344
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
68 lines
1.9 KiB
Python
68 lines
1.9 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import gi
|
|
|
|
gi.require_version("Gtk", "3.0")
|
|
from gi.repository import Gtk
|
|
|
|
from manuskript.data import Template, TemplateLevel
|
|
from manuskript.util import validInt, validString
|
|
|
|
|
|
class TemplateEntry:
|
|
|
|
def __init__(self, window):
|
|
self.template = None
|
|
self.level = None
|
|
|
|
builder = Gtk.Builder()
|
|
builder.add_from_file("ui/startup/template-entry.glade")
|
|
|
|
self.window = window
|
|
self.widget = builder.get_object("template_entry")
|
|
|
|
self.valueAdjustment = builder.get_object("value_adjustment")
|
|
self.nameBuffer = builder.get_object("name_buffer")
|
|
|
|
self.entryStack = builder.get_object("entry_stack")
|
|
self.deleteButton = builder.get_object("delete_button")
|
|
|
|
self.deleteButton.connect("clicked", self._deleteClicked)
|
|
|
|
def bindTemplate(self, template: Template, level: TemplateLevel = None):
|
|
self.template = template
|
|
|
|
if self.template is None:
|
|
self.level = None
|
|
return
|
|
|
|
self.level = level if level in self.template.levels else None
|
|
|
|
if self.level is None:
|
|
self.valueAdjustment.set_value(0 if self.template.goal is None else validInt(self.template.goal.value))
|
|
|
|
self.entryStack.set_visible_child_name("page_label")
|
|
else:
|
|
self.valueAdjustment.set_value(validInt(self.level.size))
|
|
self.nameBuffer.set_text(validString(self.level.name), -1)
|
|
|
|
self.entryStack.set_visible_child_name("page_entry")
|
|
|
|
def _deleteClicked(self, button: Gtk.Button):
|
|
if self.template is None:
|
|
return
|
|
|
|
if self.level is None:
|
|
self.template.goal = None
|
|
else:
|
|
self.template.levels.remove(self.level)
|
|
|
|
self.window.loadTemplate(self.template)
|
|
self.window = None
|
|
|
|
self.template = None
|
|
self.level = None
|
|
|
|
def show(self):
|
|
self.widget.show_all()
|