manuskript/manuskript/ui/views/summaryView.py
TheJackiMonster 78614e9344
Enforce consistent naming of functions
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
2023-02-03 02:00:18 +01:00

128 lines
4.7 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 Summary
from manuskript.util import WordCounter, PageCounter, validString, invalidString
class SummaryView:
def __init__(self, summary: Summary):
self.summary = summary
builder = Gtk.Builder()
builder.add_from_file("ui/summary.glade")
self.widget = builder.get_object("summary_view")
self.stack = builder.get_object("stack")
self.stackCombo = builder.get_object("stack_combo")
self.stackCombo.connect("changed", self._summaryStackChanged)
self.situationBuffer = builder.get_object("situation")
self.situationBuffer.connect("deleted-text", self._situationDeletedText)
self.situationBuffer.connect("inserted-text", self._situationInsertedText)
self.situationBuffer.set_text(validString(self.summary.situation), -1)
self.oneSentenceLabel = builder.get_object("one_sentence_label")
self.oneSentenceBuffer = builder.get_object("summary_one_sentence")
self.oneSentenceBuffer.connect("changed", self._summaryOneSentenceChanged)
self.oneSentenceBuffer.set_text(validString(self.summary.sentence), -1)
self.oneParagraphLabel = builder.get_object("one_paragraph_label")
self.oneParagraphBuffer = builder.get_object("summary_one_paragraph")
self.oneParagraphBuffer.connect("changed", self._summaryOneParagraphChanged)
self.oneParagraphBuffer.set_text(validString(self.summary.paragraph), -1)
self.onePageLabel = builder.get_object("one_page_label")
self.onePageBuffer = builder.get_object("summary_one_page")
self.onePageBuffer.connect("changed", self._summaryOnePageChanged)
self.onePageBuffer.set_text(validString(self.summary.page), -1)
self.fullLabel = builder.get_object("full_label")
self.fullBuffer = builder.get_object("summary_full")
self.fullBuffer.connect("changed", self._summaryFullChanged)
self.fullBuffer.set_text(validString(self.summary.full), -1)
self.nextButton = builder.get_object("next_button")
self.nextButton.connect("clicked", self._nextClicked)
def show(self):
self.widget.show_all()
def _summaryStackChanged(self, combo: Gtk.ComboBox):
tree_iter = combo.get_active_iter()
if tree_iter is None:
return
model = combo.get_model()
page = model[tree_iter][1]
self.nextButton.set_visible(not (model.iter_next(tree_iter) is None))
self.stack.set_visible_child_name(page)
def __situationChanged(self, buffer: Gtk.EntryBuffer):
self.summary.situation = invalidString(buffer.get_text())
def _situationDeletedText(self, buffer: Gtk.EntryBuffer, position, count):
self.__situationChanged(buffer)
def _situationInsertedText(self, buffer: Gtk.EntryBuffer, position, value, count):
self.__situationChanged(buffer)
def _summaryOneSentenceChanged(self, buffer: Gtk.TextBuffer):
start_iter = buffer.get_start_iter()
end_iter = buffer.get_end_iter()
text = buffer.get_text(start_iter, end_iter, False)
self.oneSentenceLabel.set_text("Words: {}".format(WordCounter.count(text)))
self.summary.sentence = invalidString(text)
def _summaryOneParagraphChanged(self, buffer: Gtk.TextBuffer):
start_iter = buffer.get_start_iter()
end_iter = buffer.get_end_iter()
text = buffer.get_text(start_iter, end_iter, False)
self.oneParagraphLabel.set_text("Words: {}".format(WordCounter.count(text)))
self.summary.paragraph = invalidString(text)
def _summaryOnePageChanged(self, buffer: Gtk.TextBuffer):
start_iter = buffer.get_start_iter()
end_iter = buffer.get_end_iter()
text = buffer.get_text(start_iter, end_iter, False)
self.onePageLabel.set_text("Words: {} (~{} pages)".format(WordCounter.count(text), PageCounter.count(text)))
self.summary.page = invalidString(text)
def _summaryFullChanged(self, buffer: Gtk.TextBuffer):
start_iter = buffer.get_start_iter()
end_iter = buffer.get_end_iter()
text = buffer.get_text(start_iter, end_iter, False)
self.fullLabel.set_text("Words: {} (~{} pages)".format(WordCounter.count(text), PageCounter.count(text)))
self.summary.full = invalidString(text)
def _nextClicked(self, button: Gtk.Button):
tree_iter = self.stackCombo.get_active_iter()
if tree_iter is None:
return
model = self.stackCombo.get_model()
tree_iter = model.iter_next(tree_iter)
if tree_iter is None:
return
else:
self.stackCombo.set_active_iter(tree_iter)