Review: Needs Fixing

I've added some inline comments for some things I think need to be fixed up. 
Mostly small stuff.

Diff comments:

> 
> === added file 'openlp/core/ui/lib/filedialogpatches.py'
> --- openlp/core/ui/lib/filedialogpatches.py   1970-01-01 00:00:00 +0000
> +++ openlp/core/ui/lib/filedialogpatches.py   2017-08-04 22:00:43 +0000
> @@ -0,0 +1,118 @@
> +# -*- coding: utf-8 -*-
> +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 
> softtabstop=4
> +
> +###############################################################################
> +# OpenLP - Open Source Lyrics Projection                                     
>  #
> +# 
> --------------------------------------------------------------------------- #
> +# Copyright (c) 2008-2017 OpenLP Developers                                  
>  #
> +# 
> --------------------------------------------------------------------------- #
> +# This program is free software; you can redistribute it and/or modify it    
>  #
> +# under the terms of the GNU General Public License as published by the Free 
>  #
> +# Software Foundation; version 2 of the License.                             
>  #
> +#                                                                            
>  #
> +# This program is distributed in the hope that it will be useful, but 
> WITHOUT #
> +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or      
>  #
> +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for   
>  #
> +# more details.                                                              
>  #
> +#                                                                            
>  #
> +# You should have received a copy of the GNU General Public License along    
>  #
> +# with this program; if not, write to the Free Software Foundation, Inc., 59 
>  #
> +# Temple Place, Suite 330, Boston, MA 02111-1307 USA                         
>  #
> +###############################################################################
> +""" Patch the QFileDialog so it accepts and returns Path objects"""
> +from functools import wraps
> +from pathlib import Path
> +
> +from PyQt5 import QtWidgets
> +
> +from openlp.core.common.path import path_to_str, str_to_path
> +from openlp.core.lib import replace_params
> +
> +
> +class PQFileDialog(QtWidgets.QFileDialog):

Can we just call this, "FileDialog"? You said you're replacing the other 
dialog, let's leave off the PQ, we don't need those prefixes in our code.

> +    @classmethod
> +    @wraps(QtWidgets.QFileDialog.getExistingDirectory)
> +    def getExistingDirectory(cls, *args, **kwargs):
> +        """
> +        Reimplement `getExistingDirectory` so that it can be called with, 
> and return Path objects
> +
> +        :type parent: QtWidgets.QWidget or None
> +        :type caption: str
> +        :type directory: pathlib.Path
> +        :type options: QtWidgets.QFileDialog.Options
> +        :rtype: tuple[Path, str]
> +        """
> +
> +        args, kwargs = replace_params(args, kwargs, ((2, 'directory', 
> path_to_str),))
> +
> +        return_value = super().getExistingDirectory(*args, **kwargs)
> +
> +        # getExistingDirectory returns a str that represents the path. The 
> string is empty if the user cancels the
> +        # dialog.
> +        return str_to_path(return_value)
> +
> +    @classmethod
> +    @wraps(QtWidgets.QFileDialog.getOpenFileName)
> +    def getOpenFileName(cls, *args, **kwargs):
> +        """
> +        Reimplement `getOpenFileName` so that it can be called with, and 
> return Path objects
> +
> +        :type parent: QtWidgets.QWidget or None
> +        :type caption: str
> +        :type directory: pathlib.Path
> +        :type filter: str
> +        :type initialFilter: str
> +        :type options: QtWidgets.QFileDialog.Options
> +        :rtype: tuple[Path, str]
> +        """
> +
> +        args, kwargs = replace_params(args, kwargs, ((2, 'directory', 
> path_to_str),))
> +
> +        return_value = super().getOpenFileName(*args, **kwargs)

filename, is_ok = super().getOpenFileName(*args, **kwargs)

> +
> +        # getOpenFileName returns a tuple. The first item is a of str's that 
> represents the path. The string is empty if
> +        # the user cancels the dialog.
> +        return str_to_path(return_value[0]), return_value[1]

return str_to_path(filename), is_ok

> +
> +    @classmethod
> +    def getOpenFileNames(cls, *args, **kwargs):
> +        """
> +        Reimplement `getOpenFileNames` so that it can be called with, and 
> return Path objects
> +
> +        :type parent: QtWidgets.QWidget or None
> +        :type caption: str
> +        :type directory: pathlib.Path
> +        :type filter: str
> +        :type initialFilter: str
> +        :type options: QtWidgets.QFileDialog.Options
> +        :rtype: tuple[list[Path], str]
> +        """
> +        args, kwargs = replace_params(args, kwargs, ((2, 'directory', 
> path_to_str),))
> +
> +        return_value = super().getOpenFileNames(*args, **kwargs)

paths, is_ok = super().getOpenFileName(*args, **kwargs)

> +
> +        # getSaveFileName returns a tuple. The first item is a list of str's 
> that represents the path. The list is
> +        # empty if the user cancels the dialog.
> +        paths = [str_to_path(path) for path in return_value[0]]

paths = [str_to_path(path) for path in paths]

> +        return paths, return_value[1]
> +
> +    @classmethod
> +    def getSaveFileName(cls, *args, **kwargs):
> +        """
> +        Reimplement `getSaveFileName` so that it can be called with, and 
> return Path objects
> +
> +        :type parent: QtWidgets.QWidget or None
> +        :type caption: str
> +        :type directory: pathlib.Path
> +        :type filter: str
> +        :type initialFilter: str
> +        :type options: QtWidgets.QFileDialog.Options
> +        :rtype: tuple[Path or None, str]
> +        """
> +        args, kwargs = replace_params(args, kwargs, ((2, 'directory', 
> path_to_str),))
> +
> +        return_value = super().getSaveFileName(*args, **kwargs)

filename, is_ok = super().getSaveFileName(*args, **kwargs)

> +
> +        # getSaveFileName returns a tuple. The first item represents the 
> path as a str. The string is empty if the user
> +        # cancels the dialog.
> +        return str_to_path(return_value[0]), return_value[1]

return str_to_path(filename), is_ok

> 
> === modified file 'openlp/core/ui/lib/pathedit.py' (properties changed: +x to 
> -x)
> --- openlp/core/ui/lib/pathedit.py    2017-07-04 23:13:51 +0000
> +++ openlp/core/ui/lib/pathedit.py    2017-08-04 22:00:43 +0000
> @@ -38,11 +40,12 @@
>      The :class:`~openlp.core.ui.lib.pathedit.PathEdit` class subclasses 
> QWidget to create a custom widget for use when
>      a file or directory needs to be selected.
>      """
> -    pathChanged = QtCore.pyqtSignal(str)
> +

Don't need this open line.

> +    pathChanged = QtCore.pyqtSignal(Path)
>  
>      def __init__(self, parent=None, path_type=PathType.Files, 
> default_path=None, dialog_caption=None, show_revert=True):
>          """
> -        Initalise the PathEdit widget
> +        Initialise the PathEdit widget
>  
>          :param parent: The parent of the widget. This is just passed to the 
> super method.
>          :type parent: QWidget or None
> 
> === modified file 'openlp/core/ui/themeform.py'
> --- openlp/core/ui/themeform.py       2017-05-30 18:50:39 +0000
> +++ openlp/core/ui/themeform.py       2017-08-04 22:00:43 +0000
> @@ -28,12 +28,14 @@
>  from PyQt5 import QtCore, QtGui, QtWidgets
>  
>  from openlp.core.common import Registry, RegistryProperties, UiStrings, 
> translate, get_images_filter, is_not_image_file
> +from openlp.core.common.path import path_to_str, str_to_path
>  from openlp.core.lib.theme import BackgroundType, BackgroundGradientType
>  from openlp.core.lib.ui import critical_error_message_box
>  from openlp.core.ui import ThemeLayoutForm
>  from openlp.core.ui.media.webkitplayer import VIDEO_EXT
>  from .themewizard import Ui_ThemeWizard
>  
> +

Don't need this open line.

>  log = logging.getLogger(__name__)
>  
>  
> 
> === modified file 'openlp/core/ui/themewizard.py'
> --- openlp/core/ui/themewizard.py     2017-05-22 18:22:43 +0000
> +++ openlp/core/ui/themewizard.py     2017-08-04 22:00:43 +0000
> @@ -30,6 +30,8 @@
>  from openlp.core.lib.ui import add_welcome_page, 
> create_valign_selection_widgets
>  from openlp.core.ui.lib import ColorButton, PathEdit
>  
> +from pathlib import Path

Isn't pathlib part of the Python standard library? If it is, its import belongs 
at the top, not the bottom. 
https://wiki.openlp.org/Development:Coding_Standards#Import_Order

> +
>  
>  class Ui_ThemeWizard(object):
>      """


-- 
https://code.launchpad.net/~phill-ridout/openlp/pathlib2/+merge/328616
Your team OpenLP Core is subscribed to branch lp:openlp.

_______________________________________________
Mailing list: https://launchpad.net/~openlp-core
Post to     : openlp-core@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openlp-core
More help   : https://help.launchpad.net/ListHelp

Reply via email to