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
[report]
fail_under = 75
fail_under = 78

View file

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

34
gui.py
View file

@ -1,9 +1,10 @@
import enum
import logging
import os
import platform
import sys
from datetime import datetime
from typing import Dict, List, Optional, Tuple
from typing import Any, Dict, List, Optional, Tuple
import humanize
import sounddevice
@ -469,7 +470,7 @@ class FileTranscriberWidget(QWidget):
if output_file == '':
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
self.run_button.setDisabled(True)
@ -547,15 +548,30 @@ class FileTranscriberWidget(QWidget):
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)
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:
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):
@ -642,7 +658,7 @@ class RecordingTranscriberWidget(QWidget):
def start_recording(self):
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
model_name = get_model_name(self.selected_quality)
@ -803,7 +819,7 @@ class MainWindow(QMainWindow):
'&Enable GGML Inference', self)
enable_ggml_inference_action.setCheckable(True)
enable_ggml_inference_action.setChecked(
bool(self.settings.enable_ggml_inference()))
bool(self.settings.get_enable_ggml_inference()))
enable_ggml_inference_action.triggered.connect(
self.on_toggle_enable_ggml_inference)
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()))
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):
about_dialog = AboutDialog(self)

View file

@ -7,7 +7,7 @@ from PyQt6.QtCore import Qt
from gui import (Application, AudioDevicesComboBox,
DownloadModelProgressDialog, FileTranscriberWidget,
LanguagesComboBox, MainWindow, OutputFormatsComboBox, Quality,
LanguagesComboBox, MainWindow, OutputFormatsComboBox, Quality, Settings,
QualityComboBox, TranscriberProgressDialog)
from transcriber import OutputFormat
@ -190,3 +190,17 @@ class TestFileTranscriberWidget:
output_file = open(output_file_path, 'r', encoding='utf-8')
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