HDLG is a modern cross-platform GUI for hdl-dump with Batch installation capabilities.

Overview

HDLG

GPLv3 license PyPI version Python versions PyPI status Contributors GitHub issues Build

HDLG is a modern cross-platform GUI for hdl-dump with Batch installation capabilities.

Looking for Artwork

This project is looking for an Icon and Text Logo as well as a Banner artwork. If you have some free time and would like to contribute artwork to the project, let me know!

Installation

pip install --user hdlg

To run hdlg, type hdlg into any terminal, command prompt, app launcher, or the start menu.

If you wish to manually install from the source, take a look at Building.

To-do

  • Craft initial GUI with Qt.
  • Push to PyPI and add relevant Badges.
  • Add PyInstaller make file.
  • Add local PS2 HDD connection option.
  • List installed games of selected HDD.
  • Show HDD information like Disk Size, Space Used, and such.
  • Add Inno Setup script.
  • Add ability to install a new game to selected HDD.
  • Create a file based settings system.
  • Add remote PS2 HDD (samba) connection option.

Building

This project requires Poetry, so feel free to take advantage and use it for its various conveniences like building sdist/wheel packages, creating and managing dependencies, virtual environments, and more.

Note:

  • Source Code may have changes that may be old, not yet tested or stable, or may have regressions.
  • Only run or install from Source Code if you have a good reason. Examples would be to test for regressions, test changes (either your own or other contributors), or to research the code (agreeing to the LICENSE).
  • Poetry is required as it's used as the PEP 517 build system, virtual environment manager, dependency manager, and more.

Install from Source Code

git clone https://github.com/rlaphoenix/hdlg.git
cd hdlg
pip install --user .

Building source and wheel distributions

poetry build

You can specify -f to build sdist or wheel only. Built files can be found in the /dist directory.

Packing with PyInstaller

poetry run python pyinstaller.py

The build is now available at ./dist.

Comments
  • Bump setuptools from 59.6.0 to 65.5.1

    Bump setuptools from 59.6.0 to 65.5.1

    Bumps setuptools from 59.6.0 to 65.5.1.

    Release notes

    Sourced from setuptools's releases.

    v65.5.1

    No release notes provided.

    v65.5.0

    No release notes provided.

    v65.4.1

    No release notes provided.

    v65.4.0

    No release notes provided.

    v65.3.0

    No release notes provided.

    v65.2.0

    No release notes provided.

    v65.1.1

    No release notes provided.

    v65.1.0

    No release notes provided.

    v65.0.2

    No release notes provided.

    v65.0.1

    No release notes provided.

    v65.0.0

    No release notes provided.

    v64.0.3

    No release notes provided.

    v64.0.2

    No release notes provided.

    v64.0.1

    No release notes provided.

    v64.0.0

    No release notes provided.

    v63.4.3

    No release notes provided.

    v63.4.2

    No release notes provided.

    ... (truncated)

    Changelog

    Sourced from setuptools's changelog.

    v65.5.1

    Misc ^^^^

    • #3638: Drop a test dependency on the mock package, always use :external+python:py:mod:unittest.mock -- by :user:hroncok
    • #3659: Fixed REDoS vector in package_index.

    v65.5.0

    Changes ^^^^^^^

    • #3624: Fixed editable install for multi-module/no-package src-layout projects.
    • #3626: Minor refactorings to support distutils using stdlib logging module.

    Documentation changes ^^^^^^^^^^^^^^^^^^^^^

    • #3419: Updated the example version numbers to be compliant with PEP-440 on the "Specifying Your Project’s Version" page of the user guide.

    Misc ^^^^

    • #3569: Improved information about conflicting entries in the current working directory and editable install (in documentation and as an informational warning).
    • #3576: Updated version of validate_pyproject.

    v65.4.1

    Misc ^^^^

    v65.4.0

    Changes ^^^^^^^

    v65.3.0

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Frozen PyInstaller builds open subprocesses in new windows, slower calls

    Frozen PyInstaller builds open subprocesses in new windows, slower calls

    The windows are always foreground as well. Quite annoying. I've also noticed that when this happens, the subprocess calls are very noticeably slower. By like a good 10 seconds, compared to almost immediate otherwise.

    opened by rlaphoenix 0
  • Batch Installations incorrectly set the disabled state on buttons, hdd list, e.t.c

    Batch Installations incorrectly set the disabled state on buttons, hdd list, e.t.c

    It seems when the first install finishes, and it refreshes the game list, it incorrectly has everything else enabled like the install button except briefly everytime an installation fails.

    bug 
    opened by rlaphoenix 0
  • Continue batch installation if ISO or Game File failed verification

    Continue batch installation if ISO or Game File failed verification

    Currently it shows a message and prevents the installation loop from continuing until its closed.
    Instead, it should show the message and still continue.

    enhancement 
    opened by rlaphoenix 0
  • Refresh Button runs on UI thread

    Refresh Button runs on UI thread

    The Refresh button runs the worker on the main thread somehow. If you let the HDD sleep then refresh, so it takes time to scan, the UI will freeze until done.

    opened by rlaphoenix 0
  • Installation should auto-delete the info.sys file created by hdl-dump

    Installation should auto-delete the info.sys file created by hdl-dump

    When you run an inject_dvd or inject_cd command, an info.sys file is created (seemingly in the working directory, or possibly next to the hdl-dump binary).

    This info.sys file seems relatively pointless, so we might as well just delete it.

    Example info.sys file,

    title = Demon Stone
    title_id = SLUS_208.04
    title_sub_id = 0
    release_date = 20000101
    developer_id =
    publisher_id = OPL Launcher
    note =
    content_web =
    image_topviewflag = 0
    image_type = 0
    image_count = 1
    image_viewsec = 600
    copyright_viewflag = 1
    copyright_imgcount = 1
    genre =
    parental_lock = 1
    effective_date = 0
    expire_date = 0
    violence_flag = 0
    content_type = 255
    content_subtype = 0
    
    enhancement 
    opened by rlaphoenix 0
Releases(v0.2.1)
  • v0.2.1(Dec 3, 2022)

    Added

    • Added new Open File Dialog filter that shows ALL supported game files by default.
    • Added ZSO files to the Open File Dialog filter, even though hdl-dump doesn't yet seem to properly support ZSO.

    Fixed

    • Fixed support for Dual-layer DVD games (any game above 4GB in size).
    • Properly request Admin Rights on PyInstaller builds, fixing a startup crash.
    • Now handles errors with cdvd_info2 calls more efficiently and safely.
    Source code(tar.gz)
    Source code(zip)
    hdlg-0.2.1-py3-none-any.whl(30.69 KB)
    HDLG-Setup-Manifest.txt(22.75 KB)
    HDLG-Setup.exe(31.73 MB)
  • v0.2.0(Oct 29, 2022)

    Note: This release does not check or notify the user if the hdl_dump.exe binary was not found, nor is it included in the Windows Installer. Please download it yourself and place it in the root of the installation folder. Make sure it is named exactly hdl_dump.exe.

    Added

    • Added support for Python 3.10.
    • The CI/CD GitHub Actions workflows were updated and improved. Windows Installers are now created automatically.
    • Added ability to install any file-based PS2 game file to a PS2 HDD with the 'Install' button. Batch installation is supported by selecting multiple game files in the Open File Dialogue.
    • Added is_admin(), is_frozen(), and require_admin() utilities.
    • Added hdl_dump() utility for executing hdl_dump and returning the stdout.
    • The about menu now shows if you are running under a Frozen Python environment.
    • HDD now has a hdl_target property structured for use with hdl_dump. E.g., hdd4: instead of \\.\E:.
    • HDD now has a cached disk_map property that returns the Total Slice Size, Used Space, and Available Space.
    • Disk Space is now shown in the HDD Information Panel using the HDD disk_map property.
    • HDD buttons now display a 2-pixel border on the left when clicked to indicate which one was loaded.
    • UI now uses a status_message string signal from the Worker class to update the status bar's message.
    • Added a reset_state() method to the UI class to reset the state of the program as if it just opened. It's now also being run on start up to remove dummy state data from the Qt Creator .ui file.
    • The Installation Button now has File Type filters for all supported file-based PS2 game extensions.
    • Banner Artwork PNG and PSD, as well as a GitHub Social Banner PSD.
    • Recommended hdl-dump and LaunchELF programs are now linked in the README.
    • A UI preview image has been added to the README.
    • Added an Inno Setup script file to create a Setup binary to install a Frozen Python build. It expects a Frozen Python build directory and not a single packed binary.
    • Created a Changelog with all previous releases' missing changes.

    Changed

    • Administrator Rights are now required when starting due to some low-level calls requiring Administrator permissions. This may change over time if alternative methods are found, but for now it is simply required.
    • Worker class has been moved to worker.py.
    • Games are now sorted alphabetically by Game Name in HDDs get_games_list().
    • HDDs are now listed in ascending order based on HDD index.
    • Unexpected Errors now open an error dialog with extended error information instead of printing to stdout.
    • Replaced manual calls to hdl_dump with the hdl_dump() utility across the codebase.
    • HDDs hdl_target property is now used across the codebase instead of manual efforts to calculate the target.
    • Worker Class's finished signal is now valueless.
    • Various QSS changes were made to improve the UI color scheme.
    • Project Development Status changed to Stage 3 - Alpha.

    Removed

    • Dropped support for Python 3.6.
    • Dropped notion of 'Cross-Platform' across the project as it is not yet cross-platform. Only Windows is currently supported and all code that ran only under specific IF trees have been removed and Windows is now expected. Support for other Operating Systems will be added in the future.
    • 'Looking for Artwork' section in the README has been removed. I'm not specifically looking for any artwork anymore.
    • The clear_hdd_list() function has been removed. The new reset_state() function should be used instead as it clears more related state information in similar scenarios.

    Fixed

    • Unexpected Errors are now caught and handled in the UI thread.
    • Unknown Command errors on hdl-dump calls are now explicitly handled telling the user their binary may be outdated.
    • Cancelling the Open PS2 Game File Dialogue no longer causes a runtime error.
    • HDDs get_games_list() now supports listing improperly installed games where either the game name or id is missing. A [!] will be shown in place of the missing value to indicate a bad installation.
    Source code(tar.gz)
    Source code(zip)
    hdlg-0.2.0-py3-none-any.whl(30.47 KB)
    HDLG-Setup-Manifest.txt(24.73 KB)
    HDLG-Setup.exe(31.72 MB)
  • v0.1.0(Oct 16, 2021)

    Added

    • Added two Windows-only dependencies, WMI and pywin32. These are required for scanning HDDs.
    • Created initial Worker class.
    • Created HDD class for working with the scanned HDDs.
    • Created a Size Unit helper utility for listing file sizes in a more human-readable format.
    • Added ability to scan and list HDDs with find_hdds() method in the Worker and add_hdd_button() in the UI class.
    • Added ability to clear the list of scanned HDDs with clear_hdd_list() method in the UI class.
    • Added ability to clear and re-scan the list of HDDs by clicking the refresh icon.
    • Added ability to load a scanned HDD to list HDD information and more with get_hdd_info() method in the Worker and use_hdd_info() in the UI class.
    • Added ability to list games within an HDD with get_game_list() method in the HDD class.

    Changed

    • The HDD list will now automatically be scanned and populated on program launch.

    Fixed

    • The dummy state from the Qt Creator .ui file is now reset on program launch, before it's shown.
    Source code(tar.gz)
    Source code(zip)
    hdlg-0.1.0-py3-none-any.whl(27.11 KB)
  • v0.0.1(Oct 14, 2021)

Currency calculator with PyQt5

currency-calculator currency calculator with PyQt5

Vusal Akhundzada 2 Mar 08, 2022
A quick GUI script to pseudo-anonymize patient videos for use in the GRK

grk_patient_sorter A quick GUI script to pseudo-anonymize patient videos for use in the GRK. Source directory — the highest level folder that will be

Peter Somers 1 Dec 09, 2021
All you need to learn Tkinter!

Tkinter This repository contains the codes and resources which I used to learn the standard GUI library of Python, Tkinter! Best Tkinter Resources Vid

Samyak Jain 3 May 02, 2022
Py address book gui - An address book with graphical user interface developed with Python Tkinter

py_address_book_gui An address book with graphical user interface developed with

Milton 4 Feb 01, 2022
Tkinter calculetor - Tkinter calculetor with python

Tkinter_calculetor required to run py file pip install tkinter

Yasir Arafat 0 Feb 07, 2022
Custom Widgets For PyQt5

pyqtCuWi Custom Widgets Icon Button Documentation Rank Widget Documentation PopUp OuterRadius PopUp Documentation OuterRadius Documentation Producer:

.CODE 0 Apr 04, 2022
A system tray application written in python that will assist you with your keyboard endeavors.

A system tray application written in python that will assist you with your keyboard endeavors. It has features such as abbreviation, email autofill, media control, writing from clipboard ,typing curr

Mach50 1 Dec 15, 2021
Project made in Qt Designer + Python, for evaluation in the subject Introduction to Programming in IFPE - Paulista campus.

Project made in Qt Designer + Python, for evaluation in the subject Introduction to Programming in IFPE - Paulista campus.

Paola Rodrigues 2 Apr 13, 2022
Mini is a web browser application based on the Python PyQt web engine, made in 290 lines of code.

Mini Mini is a web browser application based on the Python PyQt web engine, made in 290 lines of code. The code is written and published as is, so the

Dmitry Karpenko 6 Nov 07, 2022
Create highly interactive web pages purely in Python

A package for building highly interactive user interfaces in pure Python inspired by ReactJS.

701 Jan 03, 2023
Python code examples on how to create several applications using Dear PyGui.

Python code examples on how to create several applications using Dear PyGui. Includes building and editing a table, as well as visualizing sorting algorithms in a plot.

Alexander H. 7 Sep 15, 2022
Management Gui for OpenVR FSR PlugIn

OpenVR FSR App Small GUI to install/uninstall, tweak settings of the Modified OpenVR DLL with AMD FidelityFX SuperResolution Upscaler with a single cl

Stefan Tapper 234 Dec 20, 2022
Kivy is an open source Python framework for creating cross-platform multi-touch mobile applications with Natural User Interface.

Kivy is an open source Python framework for creating cross-platform multi-touch mobile applications with Natural User Interface.

Grace Ugochi Nneji 3 Feb 15, 2022
Custom GUI for your Blender add-ons using Dear ImGui

Dear Imgui for Blender Use the infamous Dear ImGui library directly in your Blender scripts! This means custom GUI drawing in your operators: Normally

Elie Michel 83 Dec 25, 2022
MediaPlayer-with-PyQt5 - The Multimedia Player with Python and PyQt5

MediaPlayer-with-PyQt5 I made this Multimedia Player with Python and PyQt5, I re

4 Oct 06, 2022
UI to save and load gnome-shell extension templates.

Gnome Extensions Loader GUI to save and load gnome shell extensions and extension settings. This app makes it easier to share your gnome extensions se

EMRECAN ALTINSOY 2 Nov 25, 2022
A html canvas based screencasting server with occasional ground-truth updates via screenshots and very fast input drawing

rm2canvas A html canvas based screencasting server for the reMarkable 1/2 digital paper systems. It draws live on the canvas from the remarkables touc

45 Sep 08, 2022
UberGui is a lightweight multi-threaded, webRender UI module for TouchDesigner

UberGui V4 UberGui is a lightweight multi-threaded, webRender UI module for TouchDesigner projects. The aim is to solve the trifecta of challenges bui

LUCAS M MORGAN 48 Nov 20, 2022
Advanced GUI Calculator with Beautiful UI and Clear Code.

Advanced GUI Calculator with Beautiful UI and Clear Code.

Mohammad Dori 3 Jul 15, 2022