Skip to content

Commit c324daf

Browse files
author
Michael Whapples
committed
Automatically set the output file name based on the input BRF value.
1 parent 2746892 commit c324daf

2 files changed

Lines changed: 23 additions & 8 deletions

File tree

src/convert2ebrl/brf_to_ebrf.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,22 @@
1212

1313
from PySide6.QtCore import QObject, Slot, Signal, QThreadPool, QSettings, QCoreApplication
1414
from PySide6.QtGui import QAction
15-
from PySide6.QtWidgets import QWidget, QDialog, QDialogButtonBox, QVBoxLayout, \
15+
from PySide6.QtWidgets import QWidget, QDialogButtonBox, QVBoxLayout, \
1616
QProgressDialog, QMessageBox, QTabWidget, QFileDialog, QComboBox, QHBoxLayout, QMenu, QPushButton, QLabel, \
1717
QInputDialog
1818
from brf2ebrl.common import PageLayout
1919
from brf2ebrl.parser import EBrailleParserOptions
20-
from brf2ebrl.plugin import find_plugins
20+
from brf2ebrl.plugin import find_plugins
2121

2222
from convert2ebrl.convert_task import ConvertTask, Notification
2323
from convert2ebrl.settings import SettingsProfile
2424
from convert2ebrl.settings.defaults import DEFAULT_SETTINGS_PROFILES_LIST
25-
from convert2ebrl.tabs.general_tab import ConversionGeneralSettingsWidget
25+
from convert2ebrl.tabs.general_tab import ConversionGeneralSettingsWidget, expand_input_brfs
2626
from convert2ebrl.tabs.metadata_tab import MetadataWidget
2727
from convert2ebrl.tabs.page_settings_tab import ConversionPageSettingsWidget
2828
from convert2ebrl.utils import RunnableAdapter, load_settings_profiles, save_settings_profiles, load_settings_profile, \
2929
save_settings_profile
3030

31-
3231
DISCOVERED_PARSER_PLUGINS = find_plugins()
3332

3433
class SettingsProfilesWidget(QWidget):
@@ -210,9 +209,7 @@ def _update_validity(self):
210209
@Slot()
211210
def on_apply(self):
212211
number_of_steps = 1000
213-
brf_list = [brf for f in self._brf2ebrf_form.input_brfs for brf in
214-
([os.path.join(f, b) for b in os.listdir(f) if
215-
os.path.splitext(b)[1].lower() == ".brf"] if os.path.isdir(f) else [f])]
212+
brf_list = expand_input_brfs(self._brf2ebrf_form.input_brfs)
216213
num_of_inputs = len(brf_list)
217214
output_ebrf = self._brf2ebrf_form.output_ebrf
218215
if os.path.exists(output_ebrf):

src/convert2ebrl/tabs/general_tab.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import os
99

10-
from PySide6.QtCore import Signal, QObject, QSettings, Slot
10+
from PySide6.QtCore import Signal, QObject, QSettings, Slot, QStandardPaths
1111
from PySide6.QtWidgets import QWidget, QFormLayout, QComboBox, QCheckBox, QFileDialog
1212

1313
from convert2ebrl.settings.defaults import CONVERSION_LAST_DIR as DEFAULT_LAST_DIR
@@ -68,9 +68,21 @@ def on_input_type_changed(index):
6868
self._include_images_checkbox.toggled.connect(self._update_include_images_state)
6969
self._input_type_combo.currentIndexChanged.connect(self._clear_input_brf)
7070
self._input_brf_edit.fileChanged.connect(self.inputBrfChanged.emit)
71+
self._input_brf_edit.fileChanged.connect(self._update_output_based_on_input)
7172
self._image_dir_edit.fileChanged.connect(self.imagesDirectoryChanged.emit)
7273
self._output_ebrf_edit.fileChanged.connect(self.outputEbrfChanged.emit)
7374

75+
def _update_output_based_on_input(self):
76+
brf_list = [os.path.splitext(os.path.basename(x))[0] for x in expand_input_brfs(self.input_brfs)]
77+
if brf_list:
78+
output_prefix = os.path.commonprefix(brf_list)
79+
output_file = (output_prefix if output_prefix else brf_list[0]) + ".ebrl"
80+
output_dir = os.path.join(QStandardPaths.writableLocation(QStandardPaths.StandardLocation.DocumentsLocation) if QStandardPaths.writableLocation(QStandardPaths.StandardLocation.DocumentsLocation) else os.path.expanduser("~"), "ebraille")
81+
os.makedirs(output_dir, exist_ok=True)
82+
self.output_ebrf = os.path.join(output_dir, output_file)
83+
else:
84+
self.output_ebrf = ""
85+
7486
@Slot(bool)
7587
def _update_include_images_state(self, checked: bool):
7688
self._image_dir_edit.setEnabled(checked)
@@ -126,3 +138,9 @@ def output_ebrf(self) -> str:
126138
@output_ebrf.setter
127139
def output_ebrf(self, value: str):
128140
self._output_ebrf_edit.file_name = value
141+
142+
143+
def expand_input_brfs(input_brfs: list[str]) -> list[str]:
144+
return [brf for f in input_brfs for brf in
145+
([os.path.join(f, b) for b in os.listdir(f) if
146+
os.path.splitext(b)[1].lower() == ".brf"] if os.path.isdir(f) else [f])]

0 commit comments

Comments
 (0)