Add paragraphs stat

github/fork/yochananmarqos/patch-1
Gonçalo Silva 2019-04-19 11:20:47 +01:00
parent c19f57f64b
commit dccc645430
3 changed files with 23 additions and 20 deletions

View File

@ -1,14 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<schemalist>
<enum id='de.wolfvollprecht.UberWriter.Stat'>
<value nick='characters' value='0' />
<value nick='words' value='1' />
<value nick='sentences' value='2' />
<value nick='read_time' value='3' />
<value nick='paragraphs' value='3' />
<value nick='read_time' value='4' />
</enum>
<schema path="/de/wolfvollprecht/UberWriter/" id="de.wolfvollprecht.UberWriter">
<key name='dark-mode-auto' type='b'>

View File

@ -22,6 +22,9 @@ class StatsCounter:
# exclamation mark, paragraph, and variants.
SENTENCES = re.compile(r"[^\n][.。।෴۔።?՞;⸮؟?፧꘏⳺⳻⁇﹖⁈⁉‽!﹗!՜߹႟᥄\n]+")
# Regexp that matches paragraphs, ie. anything separated by newlines.
PARAGRAPHS = re.compile(r".+\n?")
def __init__(self):
super().__init__()
@ -61,8 +64,12 @@ class StatsCounter:
sentence_count = len(re.findall(self.SENTENCES, text))
paragraph_count = len(re.findall(self.PARAGRAPHS, text))
read_m, read_s = divmod(word_count / 200 * 60, 60)
read_h, read_m = divmod(read_m, 60)
read_time = (int(read_h), int(read_m), int(read_s))
GLib.idle_add(callback, (character_count, word_count, sentence_count, read_time))
GLib.idle_add(
callback,
(character_count, word_count, sentence_count, paragraph_count, read_time))

View File

@ -30,6 +30,7 @@ class StatsHandler:
self.characters = 0
self.words = 0
self.sentences = 0
self.paragraphs = 0
self.read_time = (0, 0, 0)
self.settings = Settings.new()
@ -43,22 +44,11 @@ class StatsHandler:
self.stats_button.set_state_flags(Gtk.StateFlags.CHECKED, False)
menu = Gio.Menu()
characters_menu_item = Gio.MenuItem.new(self.get_text_for_stat(0), None)
characters_menu_item.set_action_and_target_value(
"app.stat_default", GLib.Variant.new_string("characters"))
menu.append_item(characters_menu_item)
words_menu_item = Gio.MenuItem.new(self.get_text_for_stat(1), None)
words_menu_item.set_action_and_target_value(
"app.stat_default", GLib.Variant.new_string("words"))
menu.append_item(words_menu_item)
sentences_menu_item = Gio.MenuItem.new(self.get_text_for_stat(2), None)
sentences_menu_item.set_action_and_target_value(
"app.stat_default", GLib.Variant.new_string("sentences"))
menu.append_item(sentences_menu_item)
read_time_menu_item = Gio.MenuItem.new(self.get_text_for_stat(3), None)
read_time_menu_item.set_action_and_target_value(
"app.stat_default", GLib.Variant.new_string("read_time"))
menu.append_item(read_time_menu_item)
stats = self.settings.props.settings_schema.get_key("stat-default").get_range()[1]
for i, stat in enumerate(stats):
menu_item = Gio.MenuItem.new(self.get_text_for_stat(i), None)
menu_item.set_action_and_target_value("app.stat_default", GLib.Variant.new_string(stat))
menu.append_item(menu_item)
self.popover = Gtk.Popover.new_from_model(self.stats_button, menu)
self.popover.connect('closed', self.on_popover_closed)
self.popover.popup()
@ -82,13 +72,18 @@ class StatsHandler:
elif stat == 2:
return _("{:n} Sentences".format(self.sentences))
elif stat == 3:
return _("{:n} Paragraphs".format(self.paragraphs))
elif stat == 4:
return _("{:d}:{:02d}:{:02d} Read Time".format(*self.read_time))
else:
raise ValueError("Unknown stat {}".format(stat))
def update_stats(self, stats):
(characters, words, sentences, read_time) = stats
(characters, words, sentences, paragraphs, read_time) = stats
self.characters = characters
self.words = words
self.sentences = sentences
self.paragraphs = paragraphs
self.read_time = read_time
self.update_default_stat(False)