mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-04-15 00:30:33 +03:00
journal_lock: Fix import order & add/expand docstrings
This commit is contained in:
parent
d39c0521da
commit
6be73dc50e
@ -1,9 +1,11 @@
|
|||||||
|
"""Implements locking of Journal directory."""
|
||||||
|
|
||||||
import pathlib
|
import pathlib
|
||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
from os import getpid as os_getpid
|
from os import getpid as os_getpid
|
||||||
from sys import platform
|
from sys import platform
|
||||||
from tkinter import ttk
|
from tkinter import ttk
|
||||||
from typing import Callable, TYPE_CHECKING
|
from typing import TYPE_CHECKING, Callable
|
||||||
|
|
||||||
from config import config
|
from config import config
|
||||||
from EDMCLogging import get_main_logger
|
from EDMCLogging import get_main_logger
|
||||||
@ -31,7 +33,6 @@ class JournalLock:
|
|||||||
|
|
||||||
:return: bool - True if we successfully obtained the lock
|
:return: bool - True if we successfully obtained the lock
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.journal_dir_lockfile_name = self.journal_dir_path / 'edmc-journal-lock.txt'
|
self.journal_dir_lockfile_name = self.journal_dir_path / 'edmc-journal-lock.txt'
|
||||||
logger.trace(f'journal_dir_lockfile_name = {self.journal_dir_lockfile_name!r}')
|
logger.trace(f'journal_dir_lockfile_name = {self.journal_dir_lockfile_name!r}')
|
||||||
try:
|
try:
|
||||||
@ -84,7 +85,8 @@ class JournalLock:
|
|||||||
"""
|
"""
|
||||||
Release lock on journal directory.
|
Release lock on journal directory.
|
||||||
|
|
||||||
:return: bool - Success of unlocking operation."""
|
:return: bool - Success of unlocking operation.
|
||||||
|
"""
|
||||||
unlocked = False
|
unlocked = False
|
||||||
if platform == 'win32':
|
if platform == 'win32':
|
||||||
logger.trace('win32, using msvcrt')
|
logger.trace('win32, using msvcrt')
|
||||||
@ -133,6 +135,12 @@ class JournalLock:
|
|||||||
"""Pop-up for when Journal directory already locked."""
|
"""Pop-up for when Journal directory already locked."""
|
||||||
|
|
||||||
def __init__(self, parent: tk.Tk, callback: Callable):
|
def __init__(self, parent: tk.Tk, callback: Callable):
|
||||||
|
"""
|
||||||
|
Init the user choice popup.
|
||||||
|
|
||||||
|
:param parent: - The tkinter parent window.
|
||||||
|
:param callback: - The function to be called when the user makes their choice.
|
||||||
|
"""
|
||||||
tk.Toplevel.__init__(self, parent)
|
tk.Toplevel.__init__(self, parent)
|
||||||
|
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
@ -165,21 +173,28 @@ class JournalLock:
|
|||||||
self.protocol("WM_DELETE_WINDOW", self._destroy)
|
self.protocol("WM_DELETE_WINDOW", self._destroy)
|
||||||
|
|
||||||
def retry(self):
|
def retry(self):
|
||||||
|
"""Handle user electing to Retry obtaining the lock."""
|
||||||
logger.trace('User selected: Retry')
|
logger.trace('User selected: Retry')
|
||||||
self.destroy()
|
self.destroy()
|
||||||
self.callback(True, self.parent)
|
self.callback(True, self.parent)
|
||||||
|
|
||||||
def ignore(self):
|
def ignore(self):
|
||||||
|
"""Handle user electing to Ignore failure to obtain the lock."""
|
||||||
logger.trace('User selected: Ignore')
|
logger.trace('User selected: Ignore')
|
||||||
self.destroy()
|
self.destroy()
|
||||||
self.callback(False, self.parent)
|
self.callback(False, self.parent)
|
||||||
|
|
||||||
def _destroy(self):
|
def _destroy(self):
|
||||||
|
"""Destroy the Retry/Ignore popup."""
|
||||||
logger.trace('User force-closed popup, treating as Ignore')
|
logger.trace('User force-closed popup, treating as Ignore')
|
||||||
self.ignore()
|
self.ignore()
|
||||||
|
|
||||||
def update_lock(self, parent: tk.Tk):
|
def update_lock(self, parent: tk.Tk):
|
||||||
"""Update journal directory lock to new location if possible."""
|
"""
|
||||||
|
Update journal directory lock to new location if possible.
|
||||||
|
|
||||||
|
:param parent: - The parent tkinter window.
|
||||||
|
"""
|
||||||
current_journaldir = config.get_str('journaldir') or config.default_journal_dir
|
current_journaldir = config.get_str('journaldir') or config.default_journal_dir
|
||||||
|
|
||||||
if current_journaldir == self.journal_dir:
|
if current_journaldir == self.journal_dir:
|
||||||
@ -194,6 +209,12 @@ class JournalLock:
|
|||||||
self.retry_popup = self.JournalAlreadyLocked(parent, self.retry_lock)
|
self.retry_popup = self.JournalAlreadyLocked(parent, self.retry_lock)
|
||||||
|
|
||||||
def retry_lock(self, retry: bool, parent: tk.Tk):
|
def retry_lock(self, retry: bool, parent: tk.Tk):
|
||||||
|
"""
|
||||||
|
Try again to obtain a lock on the Journal Directory.
|
||||||
|
|
||||||
|
:param retry: - does the user want to retry? Comes from the dialogue choice.
|
||||||
|
:param parent: - The parent tkinter window.
|
||||||
|
"""
|
||||||
logger.trace(f'We should retry: {retry}')
|
logger.trace(f'We should retry: {retry}')
|
||||||
|
|
||||||
if not retry:
|
if not retry:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user