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)

A small pomodoro GUI for Windows/Linux created in Python with PyQt5.

Pomodoro A small pomodoro GUI for Windows/Linux created with PyQt5. Features The "Timer" tab allows you to set your desired work and rest times aswell

Burak Martin 81 Dec 28, 2022
🧮A simple calculator written in python allows you to make simple calculations, write charts, calculate the dates, and exchange currency.

Calculator 🖩 A simple calculator written in python allows you to make simple calculations, write charts, calculate the dates, and exchange currency.

Jan Kupczyk 1 Jan 15, 2022
A simple alarm-clock created using Python and Kivy.

Alarm-Clock made with Python and Kivy. A simple alarm-clock created using Python and Kivy. See the time. Set a maximum of 5 alarms. Cancel alarms. Not

Caio 2 Jul 31, 2022
Bank-Project - A bank ATM simulator recreated in python

Bank-Project A bank ATM simulator recreated in python. NOTE: this repo is a translation of Rasphy2009/Proyecto-Banco Requirements (.py only) 🐍 Python

Rasphy 2 Jan 02, 2022
PyQt Custom Frameless Main Window (Enable to move and resize)

pyqt-custom-frameless-mainwindow PyQt Custom Frameless Main Window (Enable to move and resize) Requirements PyQt5 = 5.8 Setup pip3 install git+https:

Jung Gyu Yoon 1 Jan 13, 2022
Function-Plotter - GUI Application to plot math Functions

Function Plotter GUI Application to plot a user given function How to run instal

1 May 05, 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
Create shortcuts on Windows to your Python, EXE, Batch files or any other file using a GUI made with PySimpleGUI

shor Windows Shortcut Creation Create Windows Shortcuts to your python programs and any other file easily using this application created using PySimpl

PySimpleGUI 7 Nov 16, 2021
EZ Presence - A GUI-Python app which makes it easy to set a custom Discord Rich Presence. (BETA)

EZ Presence EZ Presence is a GUI-Python app which makes it easy to set any custom Discord Rich Presence. Using the App How to Run Since the app is in

notsniped 2 Mar 01, 2022
Create custom desktop notificatons using python

Create custom desktop notificatons using python In this video i am going to use a module called plyer

Niranjan 2 Dec 15, 2021
Edifice: a declarative GUI library for Python

Edifice is a Python library for building reactive UI, inspired by modern Javascript libraries such as React.

David Ding 193 Dec 11, 2022
Rich.tui is a TUI (Text User Interface) framework for Python using Rich as a renderer.

rich.tui Rich.tui is a TUI (Text User Interface) framework for Python using Rich as a renderer. The end goal is to be able to rapidly create rich term

Will McGugan 17.1k Jan 04, 2023
This is the new and improved Plex Automatic Pre-roll script with a GUI

Plex-Automatic-Pre-roll-GUI This is the new and improved Plex Automatic Pre-roll script with a GUI! It should be stable but if you find a bug please l

164 Nov 04, 2022
Tukaan is the new framework that aims to replace Tkinter

Tukaan is the new, pythonic and colorful (like a keel-billed toucan) framework that aims to replace Tkinter. It has everything (on my computer, not at GitHub) that you need to develop cross-platform

Tukaan 101 Jan 08, 2023
Python Screen Recorder

Python Screen Recorder a simple customizable screen recorder made in python 🐍 Requirements Operation system: Windows Python Version: 3.9.x Required M

Arsh 3 May 25, 2022
Function-Plotter - GUI Python program that plots functions that are entered by the user

FunctionPlotter GUI Python program that plots functions that are entered by the user. The program takes minimum and maximum value for x and plot it as

Mohamed Magdy 2 Jan 20, 2022
Small Python scripts to take screenshot from a KaiOS/FFOS device and to mirror the screen of your phone.

This version of kaiscr is written by tkinter and can run in windows(use kailive-tk.py). "kailive-tk-speed.py" is speed optimization version. The sourc

openGiraffes Group 2 Mar 02, 2022
LCD GUI for P4wnP1 ALOA

GUI for P4wnP1 Colorful UI interface for P4wnP1 ALOA Don't pwn just as a USB client. Use also the USB host capabilities! UPS Lite support Scalability

John 7 Dec 13, 2022
MATE Layouts is a small panel layout switching application for the MATE Desktop.

a small panel layout switching application for the MATE Desktop

Wilbur Wetterquarz 6 Oct 14, 2022
Declarative User Interfaces for Python

Welcome to Enaml Enaml is a programming language and framework for creating professional-quality user interfaces with minimal effort. What you get A d

1.4k Jan 07, 2023