Skip to content

Commit 1c9d85c

Browse files
authored
Merge pull request #171 from FrancescoCaracciolo/master
2 parents d25aa5a + 7732035 commit 1c9d85c

File tree

4 files changed

+58
-39
lines changed

4 files changed

+58
-39
lines changed

po/zh_TW.po

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ msgstr ""
1313
"Language-Team: l10n-tw\n"
1414
"Language: zh_TW\n"
1515
"MIME-Version: 1.0\n"
16-
"Content-Type: text/plain; charset=ASCII\n"
16+
"Content-Type: text/plain; charset=UTF-8\n"
1717
"Content-Transfer-Encoding: 8bit\n"
1818
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
1919

src/controller.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ def init_paths(self) -> None:
110110
self.models_dir = os.path.join(self.config_dir, "models")
111111
self.extension_path = os.path.join(self.config_dir, "extensions")
112112
self.extensions_cache = os.path.join(self.cache_dir, "extensions_cache")
113+
self.newelle_dir = os.path.join(self.config_dir, DIR_NAME)
113114
print(self.pip_path, self.models_dir)
114115

115116

@@ -139,6 +140,8 @@ def check_path_integrity(self):
139140
os.makedirs(self.extensions_cache)
140141
if not os.path.exists(self.models_dir):
141142
os.makedirs(self.models_dir)
143+
if not os.path.exists(self.newelle_dir):
144+
os.makedirs(self.newelle_dir, exist_ok=True)
142145
# Fix Pip environment
143146
if os.path.isdir(self.pip_path):
144147
self.python_path.append(self.pip_path)
@@ -393,6 +396,10 @@ def fix_handlers_integrity(self, newelle_settings: NewelleSettings):
393396
newelle_settings.memory_model = list(AVAILABLE_MEMORIES.keys())[0]
394397
if newelle_settings.rag_model not in AVAILABLE_RAGS:
395398
newelle_settings.rag_model = list(AVAILABLE_RAGS.keys())[0]
399+
if newelle_settings.tts_program not in AVAILABLE_TTS:
400+
newelle_settings.tts_program = list(AVAILABLE_TTS.keys())[0]
401+
if newelle_settings.stt_engine not in AVAILABLE_STT:
402+
newelle_settings.stt_engine = list(AVAILABLE_STT.keys())[0]
396403

397404
def select_handlers(self, newelle_settings: NewelleSettings):
398405
"""Assign the selected handlers

src/ui/widgets/latex.py

Lines changed: 39 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,65 @@
11
from gi.repository import Gtk, Gio, GLib, Gdk
22
import matplotlib.pyplot as plt
3-
import uuid
4-
import os
3+
import os
4+
from matplotlib.figure import Figure
5+
from matplotlib.backends.backend_gtk4agg import FigureCanvasGTK4Agg
6+
7+
8+
from matplotlib.figure import Figure
9+
10+
11+
class LatexCanvas(FigureCanvasGTK4Agg):
12+
def __init__(self, latex: str, size: int, color):
13+
fig = Figure()
14+
fig.patch.set_alpha(0)
15+
ax = fig.add_subplot()
16+
txt = ax.text(0.5, 0.5, r'$' + latex + r'$', fontsize=size, ha='center', va='center', color=(color.red, color.blue, color.green))
17+
ax.axis('off')
18+
fig.tight_layout(pad=0)
19+
fig.canvas.draw()
20+
fig_size = txt.get_window_extent()
21+
h = int(fig_size.height)
22+
w = int(fig_size.width)
23+
super().__init__(fig)
24+
self.set_hexpand(True)
25+
self.set_vexpand(True)
26+
self.set_size_request(w, h + int(h * (0.1)))
27+
self.set_css_classes(['latex_renderer'])
528

629
class DisplayLatex(Gtk.Box):
30+
731
def __init__(self, latex:str, size:int, cache_dir: str) -> None:
832
super().__init__()
933
self.cachedir = cache_dir
10-
self.size = size
34+
self.size = size
35+
1136
overlay = Gtk.Overlay()
12-
color = self.get_style_context().lookup_color("window_fg_color")[1]
13-
id = latex + str(size) + str(color.red) + str(color.green) + str(color.blue)
1437

1538
self.latex = latex
16-
# Create equation image
17-
fig = plt.figure()
18-
fig.patch.set_alpha(0)
19-
plt.text(0.5, 0.5, r'$' + latex + r'$', fontsize=size, ha='center', va='center', color=(color.red, color.blue, color.green))
20-
plt.axis('off')
21-
# Get file name and save it in the cache
22-
fname = os.path.join(self.cachedir, "latex" + '-symbolic.svg')
23-
24-
plt.tight_layout(pad=0)
25-
plt.savefig(fname, transparent=True, bbox_inches='tight', pad_inches=0)
39+
self.color = self.get_style_context().lookup_color("window_fg_color")[1]
2640
# Create Gtk.Picture
27-
self.picture = Gtk.Picture()
28-
self.picture.set_file(Gio.File.new_for_path(fname))
29-
self.picture.set_size_request(-1, size)
30-
self.picture.set_content_fit(Gtk.ContentFit.CONTAIN)
31-
plt.close()
32-
41+
self.scroll = Gtk.ScrolledWindow(vscrollbar_policy=Gtk.PolicyType.NEVER, propagate_natural_height=True, hscrollbar_policy=Gtk.PolicyType.AUTOMATIC, propagate_natural_width=True)
42+
self.picture = LatexCanvas(latex, self.size, self.color)
43+
self.scroll.set_child(self.picture)
3344
self.create_control_box()
3445
self.controller()
35-
overlay.set_child(self.picture)
46+
overlay.set_child(self.scroll)
3647
overlay.add_overlay(self.control_box)
48+
self.overlay = overlay
3749
self.append(overlay)
3850

3951

4052
def zoom_in(self, *_):
4153
self.size += 10
42-
self.picture.set_size_request(-1, self.size)
54+
self.picture = LatexCanvas(self.latex, self.size, self.color)
55+
self.scroll.set_child(self.picture)
4356

4457
def zoom_out(self, *_):
45-
if self.size < 20:
58+
if self.size < 10:
4659
return
4760
self.size -= 10
48-
self.picture.set_size_request(-1, self.size)
61+
self.picture = LatexCanvas(self.latex, self.size, self.color)
62+
self.scroll.set_child(self.picture)
4963

5064
def create_control_box(self):
5165
self.control_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, halign=Gtk.Align.END, css_classes=["flat"], visible=False)

src/window.py

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def __init__(self, *args, **kwargs):
9494
self.chat_block = Gtk.Box(
9595
orientation=Gtk.Orientation.VERTICAL, hexpand=True, css_classes=["view"]
9696
)
97-
self.chat_header = Adw.HeaderBar(css_classes=["flat", "view"])
97+
self.chat_header = Adw.HeaderBar(css_classes=["flat", "view"], show_start_title_buttons=False, show_end_title_buttons=True)
9898
self.chat_header.set_title_widget(
9999
Gtk.Label(label=_("Chat"), css_classes=["title"])
100100
)
@@ -140,7 +140,7 @@ def __init__(self, *args, **kwargs):
140140
orientation=Gtk.Orientation.VERTICAL, hexpand=True
141141
)
142142
self.chat_panel_header = Adw.HeaderBar(
143-
css_classes=["flat"], show_end_title_buttons=False
143+
css_classes=["flat"], show_end_title_buttons=False, show_start_title_buttons=True
144144
)
145145
self.chat_panel_header.set_title_widget(
146146
Gtk.Label(label=_("History"), css_classes=["title"])
@@ -176,7 +176,7 @@ def __init__(self, *args, **kwargs):
176176
orientation=Gtk.Orientation.VERTICAL, css_classes=["background", "view"]
177177
)
178178
self.explorer_panel.set_size_request(420, -1)
179-
self.explorer_panel_header = Adw.HeaderBar(css_classes=["flat"])
179+
self.explorer_panel_header = Adw.HeaderBar(css_classes=["flat"], show_start_title_buttons=False)
180180
self.explorer_panel.append(self.explorer_panel_header)
181181
self.folder_blocks_panel = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
182182
self.explorer_panel.append(self.folder_blocks_panel)
@@ -1426,18 +1426,14 @@ def update_folder(self, *a):
14261426

14271427
flow_box = Gtk.FlowBox(vexpand=True)
14281428
flow_box.set_valign(Gtk.Align.START)
1429-
1430-
if os.path.normpath(self.main_path) == "~":
1429+
if os.path.normpath(self.main_path) == "~" or os.path.normpath(self.main_path) == os.path.expanduser("~"):
14311430
os.chdir(os.path.expanduser("~"))
1432-
path = "./.var/app/io.github.qwersyk.Newelle/Newelle"
1433-
if not os.path.exists(path):
1434-
os.makedirs(path)
1431+
fname = "/".join(self.controller.newelle_dir.split("/")[3:])
14351432
button = Gtk.Button(css_classes=["flat"])
1436-
button.set_name(".var/app/io.github.qwersyk.Newelle/Newelle")
1433+
button.set_name(fname)
14371434
button.connect("clicked", self.open_folder)
1438-
14391435
icon = File(
1440-
self.main_path, ".var/app/io.github.qwersyk.Newelle/Newelle"
1436+
self.main_path, fname
14411437
)
14421438
icon.set_css_classes(["large"])
14431439
icon.set_valign(Gtk.Align.END)
@@ -1547,9 +1543,11 @@ def handle_main_block_change(self, *data):
15471543
not self.main_program_block.get_reveal_flap()
15481544
)
15491545
self.left_panel_back_button.set_visible(True)
1546+
self.chat_header.set_show_start_title_buttons(True)
15501547
else:
15511548
self.chat_panel_header.set_show_end_title_buttons(False)
15521549
self.left_panel_back_button.set_visible(False)
1550+
self.chat_header.set_show_start_title_buttons(False)
15531551

15541552
# Chat management
15551553
def continue_message(self, button):
@@ -2496,7 +2494,7 @@ def apply_sync():
24962494
elif code_language == "latex":
24972495
try:
24982496
box.append(
2499-
DisplayLatex(chunk.text, 100, self.controller.cache_dir)
2497+
DisplayLatex(chunk.text, 16, self.controller.cache_dir)
25002498
)
25012499
except Exception as e:
25022500
print(e)
@@ -2535,7 +2533,7 @@ def apply_sync():
25352533
elif chunk.type == "latex" or chunk.type == "latex_inline":
25362534
try:
25372535
box.append(
2538-
DisplayLatex(chunk.text, 100, self.controller.cache_dir)
2536+
DisplayLatex(chunk.text, 16, self.controller.cache_dir)
25392537
)
25402538
except Exception:
25412539
print(chunk.text)

0 commit comments

Comments
 (0)