Add reset settings to default (#178)

This commit is contained in:
Chidi Williams 2022-11-21 19:12:13 +00:00 committed by GitHub
parent 1869c71c9d
commit 60e586b20e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 43 additions and 11 deletions

View file

@ -8,4 +8,4 @@ omit =
directory = coverage/html directory = coverage/html
[report] [report]
fail_under = 75 fail_under = 78

View file

@ -1,4 +1,5 @@
version := $$(poetry version -s) version := $$(poetry version -s)
version_escaped := $$(echo ${version} | sed -e 's/\./\\./g')
mac_app_path := ./dist/Buzz.app mac_app_path := ./dist/Buzz.app
mac_zip_path := ./dist/Buzz-${version}-mac.zip mac_zip_path := ./dist/Buzz-${version}-mac.zip
@ -54,6 +55,7 @@ dist/Buzz dist/Buzz.app: whisper_cpp.py
version: version:
poetry version ${version} poetry version ${version}
echo "VERSION = \"${version}\"" > __version__.py echo "VERSION = \"${version}\"" > __version__.py
sed -i "s/version=.*,/version=\'${version_escaped}\',/" Buzz.spec
CMAKE_FLAGS= CMAKE_FLAGS=
ifeq ($(UNAME_S),Darwin) ifeq ($(UNAME_S),Darwin)

34
gui.py
View file

@ -1,9 +1,10 @@
import enum import enum
import logging
import os import os
import platform import platform
import sys import sys
from datetime import datetime from datetime import datetime
from typing import Dict, List, Optional, Tuple from typing import Any, Dict, List, Optional, Tuple
import humanize import humanize
import sounddevice import sounddevice
@ -469,7 +470,7 @@ class FileTranscriberWidget(QWidget):
if output_file == '': if output_file == '':
return return
use_whisper_cpp = self.settings.enable_ggml_inference( use_whisper_cpp = self.settings.get_enable_ggml_inference(
) and self.selected_language is not None ) and self.selected_language is not None
self.run_button.setDisabled(True) self.run_button.setDisabled(True)
@ -547,15 +548,30 @@ class FileTranscriberWidget(QWidget):
class Settings(QSettings): class Settings(QSettings):
ENABLE_GGML_INFERENCE = 'enable_ggml_inference' _ENABLE_GGML_INFERENCE = 'enable_ggml_inference'
def __init__(self, parent: Optional[QWidget], *args): def __init__(self, parent: Optional[QWidget] = None, *args):
super().__init__('Buzz', 'Buzz', parent, *args) super().__init__('Buzz', 'Buzz', parent, *args)
logging.debug('Loaded settings from path = %s', self.fileName())
def enable_ggml_inference(self): def get_enable_ggml_inference(self) -> bool:
if LOADED_WHISPER_DLL is False: if LOADED_WHISPER_DLL is False:
return False return False
return self.value(self.ENABLE_GGML_INFERENCE, False) return self._value_to_bool(self.value(self._ENABLE_GGML_INFERENCE, False))
def set_enable_ggml_inference(self, value: bool) -> None:
self.setValue(self._ENABLE_GGML_INFERENCE, value)
# Convert QSettings value to boolean: https://forum.qt.io/topic/108622/how-to-get-a-boolean-value-from-qsettings-correctly
@staticmethod
def _value_to_bool(value: Any) -> bool:
if isinstance(value, bool):
return value
if isinstance(value, str):
return value.lower() == 'true'
return bool(value)
class RecordingTranscriberWidget(QWidget): class RecordingTranscriberWidget(QWidget):
@ -642,7 +658,7 @@ class RecordingTranscriberWidget(QWidget):
def start_recording(self): def start_recording(self):
self.record_button.setDisabled(True) self.record_button.setDisabled(True)
use_whisper_cpp = self.settings.enable_ggml_inference( use_whisper_cpp = self.settings.get_enable_ggml_inference(
) and self.selected_language is not None ) and self.selected_language is not None
model_name = get_model_name(self.selected_quality) model_name = get_model_name(self.selected_quality)
@ -803,7 +819,7 @@ class MainWindow(QMainWindow):
'&Enable GGML Inference', self) '&Enable GGML Inference', self)
enable_ggml_inference_action.setCheckable(True) enable_ggml_inference_action.setCheckable(True)
enable_ggml_inference_action.setChecked( enable_ggml_inference_action.setChecked(
bool(self.settings.enable_ggml_inference())) bool(self.settings.get_enable_ggml_inference()))
enable_ggml_inference_action.triggered.connect( enable_ggml_inference_action.triggered.connect(
self.on_toggle_enable_ggml_inference) self.on_toggle_enable_ggml_inference)
enable_ggml_inference_action.setDisabled(LOADED_WHISPER_DLL is False) enable_ggml_inference_action.setDisabled(LOADED_WHISPER_DLL is False)
@ -822,7 +838,7 @@ class MainWindow(QMainWindow):
self.new_import_window_triggered.emit((file_path, self.geometry())) self.new_import_window_triggered.emit((file_path, self.geometry()))
def on_toggle_enable_ggml_inference(self, state: bool): def on_toggle_enable_ggml_inference(self, state: bool):
self.settings.setValue(Settings.ENABLE_GGML_INFERENCE, state) self.settings.set_enable_ggml_inference(state)
def on_trigger_about_action(self): def on_trigger_about_action(self):
about_dialog = AboutDialog(self) about_dialog = AboutDialog(self)

View file

@ -7,7 +7,7 @@ from PyQt6.QtCore import Qt
from gui import (Application, AudioDevicesComboBox, from gui import (Application, AudioDevicesComboBox,
DownloadModelProgressDialog, FileTranscriberWidget, DownloadModelProgressDialog, FileTranscriberWidget,
LanguagesComboBox, MainWindow, OutputFormatsComboBox, Quality, LanguagesComboBox, MainWindow, OutputFormatsComboBox, Quality, Settings,
QualityComboBox, TranscriberProgressDialog) QualityComboBox, TranscriberProgressDialog)
from transcriber import OutputFormat from transcriber import OutputFormat
@ -190,3 +190,17 @@ class TestFileTranscriberWidget:
output_file = open(output_file_path, 'r', encoding='utf-8') output_file = open(output_file_path, 'r', encoding='utf-8')
assert 'Bienvenue dans Passe-Relle, un podcast' in output_file.read() assert 'Bienvenue dans Passe-Relle, un podcast' in output_file.read()
class TestSettings:
def test_should_enable_ggml_inference(self):
settings = Settings()
settings.clear()
assert settings.get_enable_ggml_inference() is False
settings.set_enable_ggml_inference(True)
assert settings.get_enable_ggml_inference() is True
settings.set_enable_ggml_inference(False)
assert settings.get_enable_ggml_inference() is False