Skip to content
Merged

Dev #31

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
97e149a
Got rid of extra footer space in online mode
Mythical-Github May 23, 2025
90b0141
added research
Mythical-Github May 23, 2025
8ffd954
Removed test print out
Mythical-Github May 23, 2025
a6f5b27
Update to_do_list.txt
Mythical-Github May 23, 2025
5b60abf
bump: version 2.0.0-dev.15201360401 → 2.0.0-dev.15217455808
github-actions[bot] May 23, 2025
9b9e6dd
Removed babel
Mythical-Github Jun 2, 2025
39a2c43
Reworked default theme, and made the grey theme, the new default
Mythical-Github Jun 2, 2025
61a6978
Update launch.json
Mythical-Github Jun 2, 2025
49e4fea
Update .gitignore
Mythical-Github Jun 2, 2025
07ba0f9
Delete requirements-dev.txt
Mythical-Github Jun 2, 2025
d54b913
settings access cleanup
Mythical-Github Jun 2, 2025
7668086
added centralized font file
Mythical-Github Jun 2, 2025
b254e5e
added centralized grid container
Mythical-Github Jun 2, 2025
d13f156
added centralized auto alignment code
Mythical-Github Jun 2, 2025
724dc30
Added saving and loading window position and size preferences
Mythical-Github Jun 2, 2025
95c0874
added get contents of file and save contents of file functions
Mythical-Github Jun 2, 2025
e54f660
centralized get_settings usage
Mythical-Github Jun 2, 2025
a6f7696
added basic screen example, for easy templating later
Mythical-Github Jun 2, 2025
dacbc66
added wip ue4ss settings configurator
Mythical-Github Jun 2, 2025
7014ed7
switched to new screen system
Mythical-Github Jun 2, 2025
8cb9ea8
Added more settings options
Mythical-Github Jun 2, 2025
f0a14f7
centralized game scanning more
Mythical-Github Jun 2, 2025
45b2531
made generic text editor screen
Mythical-Github Jun 2, 2025
0db6841
switch to new centered text system/grid system
Mythical-Github Jun 2, 2025
efa3b88
cleanup
Mythical-Github Jun 2, 2025
b426865
Update to_do_list.txt
Mythical-Github Jun 2, 2025
99eef2d
feat(All): All previous commits
Mythical-Github Jun 2, 2025
d6b76b0
Update pyproject.toml
Mythical-Github Jun 2, 2025
6a2e87d
bump: version 2.1.0-dev.15217455808 → 3.0.0-dev.15400327220
github-actions[bot] Jun 2, 2025
be1a520
Merge branch 'main' into dev
Mythical-Github Jun 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -160,3 +160,4 @@ cython_debug/
#.idea/
src/ue4ss_installer_gui/settings.toml
/Mods
requirements/requirements-dev.txt
3 changes: 2 additions & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,8 @@
"module": "ue4ss_installer_gui",
"name": "ue4ss_installer_gui",
"request": "launch",
"type": "debugpy"
"type": "debugpy",
"justMyCode": false
}
],
"version": "0.2.0"
Expand Down
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
## 3.0.0-dev.15400327220 (2025-06-02)

### Feat

- **All**: All previous commits

## 2.0.0-dev.15217455808 (2025-05-23)

## 2.0.0 (2025-05-23)

## 2.0.0-dev.15201360401 (2025-05-23)
Expand Down
2 changes: 2 additions & 0 deletions assets/research/load_order.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
; You only have to include BP mods where load order matters, mods not included here will be loaded in any random order after loading the prioritized mods.
; Add your BP mods below by their name without .pak at the end, they will be loaded in top to bottom order.
34 changes: 34 additions & 0 deletions assets/research/mods.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[
{
"mod_name": "CheatManagerEnablerMod",
"mod_enabled": true
},
{
"mod_name": "ConsoleCommandsMod",
"mod_enabled": true
},
{
"mod_name": "ConsoleEnablerMod",
"mod_enabled": true
},
{
"mod_name": "SplitScreenMod",
"mod_enabled": false
},
{
"mod_name": "LineTraceMod",
"mod_enabled": true
},
{
"mod_name": "BPML_GenericFunctions",
"mod_enabled": true
},
{
"mod_name": "BPModLoaderMod",
"mod_enabled": true
},
{
"mod_name": "Keybinds",
"mod_enabled": true
}
]
13 changes: 13 additions & 0 deletions assets/research/mods.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
CheatManagerEnablerMod : 1
ConsoleCommandsMod : 1
ConsoleEnablerMod : 1
SplitScreenMod : 0
LineTraceMod : 1
BPML_GenericFunctions : 1
BPModLoaderMod : 1




; Built-in keybinds, do not move up!
Keybinds : 1
51 changes: 30 additions & 21 deletions assets/to_do_list.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,39 @@ To Do List:


Next:
# make text button with no bacjground then does not change on press, just to have centered text
# get rid of extra space in footer in online mode
# global settings files, accessible via the settings menu, add things like custom font path, lang select, etc... here
# global font scale settings option
#
# bottom buttons are not aligned at the center in online mode
# when uninstalling ue4ss from a game install dir where the game is already gone, it needs to refresh the game button list
# install from url option/other options
#
# edit_settings_file_callback
# close button within ue4ss settings configurator someteimes breaks afyer using other stuff inthe same screen, maybe screen info is getting messed up
#
# improve ue4ss install detection, when it hasn't been installed from this app
# clear untranslated fallback
# remember window height, width, and position preferences
#
# occasionally double entries happen, it seems paths are being messed up c:/ versus C:/ for example

Later:
#
# configure lua/C++ menu
# configure bp mods menu
# configure ue4ss settings menu
# configure lua/C++ menu, for when installed
# configure bp mods menu, for when installedw
# developer section
#
# configure ue4ss settings menu, for when installed
#
# only show settings configurator button if ue4ss is installed
#
# install from url option/install from specified dir, install from specified zip
#
# settings function to get if ue4ss is installed for a game if this does not already exist
# ue4ss settinge configurator edit settings button in app text editor fails if you cancel then try again
#
#
#
# fix language override not being respected/not setting default as system when it's valid lang
# clear untranslated fallback
# clean up double translator code
#
# setting font/toggling back to default with 0, etc... is often buggy (this seems to be a bug with dpg, wait on response from them)
#

Later:
# create preset, install from preset options, for specific games/situations
Maybes:
# basic/advanced mode
# better theming

# optional list of downloads links to extract to various places in the ue4ss install

_
# create preset, install from preset options, for specific games/situations
# app resizing, maximizing, fix ui to look nice with this

5 changes: 3 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "hatchling.build"

[project]
name = "ue4ss_installer_gui"
version = "2.0.0"
version = "3.0.0-dev.15400327220"
description = "GUI installer for UE4SS"
readme = "README.md"
requires-python = ">=3.9.1"
Expand All @@ -16,6 +16,8 @@ authors = [
classifiers = [
"Development Status :: 5 - Production/Stable",
"Programming Language :: Python",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
Expand All @@ -26,7 +28,6 @@ dependencies = [
"dearpygui",
"requests",
"screeninfo",
"babel",
"platformdirs"
]

Expand Down
89 changes: 0 additions & 89 deletions requirements/requirements-dev.txt

This file was deleted.

114 changes: 114 additions & 0 deletions src/ue4ss_installer_gui/auto_align.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# Credit to @Quattro for the original implementation - https://discord.com/channels/736279277242417272/761721971129843712/1005966507114758224
from __future__ import annotations
from typing import Any, Callable
from enum import Enum

import dearpygui.dearpygui as dpg


class AlignmentType(Enum):
HORIZONTAL = 0
VERTICAL = 1
BOTH = 2


def auto_align(
item: int | str,
alignment_type: AlignmentType = AlignmentType.HORIZONTAL,
x_align: float = 0.5,
y_align: float = 0.5
):
def _center_h(_s, _d, data):
parent = dpg.get_item_parent(data[0])
while dpg.get_item_info(parent)['type'] != "mvAppItemType::mvWindowAppItem": # type: ignore
parent = dpg.get_item_parent(parent) # type: ignore
parent_width = dpg.get_item_rect_size(parent)[0] # type: ignore
width = dpg.get_item_rect_size(data[0])[0]
new_x = (parent_width // 2 - width // 2) * data[1] * 2
dpg.set_item_pos(data[0], [new_x, dpg.get_item_pos(data[0])[1]])

def _center_v(_s, _d, data):
parent = dpg.get_item_parent(data[0])
while dpg.get_item_info(parent)['type'] != "mvAppItemType::mvWindowAppItem": # type: ignore
parent = dpg.get_item_parent(parent) # type: ignore
parent_height = dpg.get_item_rect_size(parent)[1] # type: ignore
height = dpg.get_item_rect_size(data[0])[1]
new_y = (parent_height // 2 - height // 2) * data[1] * 2
dpg.set_item_pos(data[0], [dpg.get_item_pos(data[0])[0], new_y])

if alignment_type in AlignmentType:
with dpg.item_handler_registry() as handler:
if alignment_type == AlignmentType.HORIZONTAL:
dpg.add_item_visible_handler(callback=_center_h, user_data=[item, x_align])
elif alignment_type == AlignmentType.VERTICAL:
dpg.add_item_visible_handler(callback=_center_v, user_data=[item, y_align])
elif alignment_type == AlignmentType.BOTH:
dpg.add_item_visible_handler(callback=_center_h, user_data=[item, x_align])
dpg.add_item_visible_handler(callback=_center_v, user_data=[item, y_align])

dpg.bind_item_handler_registry(item, handler)


def add_centered_text(
default_value : str ='',
alignment_type: AlignmentType = AlignmentType.HORIZONTAL,
*,
label: str | None = None,
user_data: Any =None,
use_internal_label: bool =True,
tag: int | str = 0,
indent: int =-1,
parent: int | str = 0,
before: int | str = 0,
source: int | str = 0,
payload_type: str ='$$DPG_PAYLOAD',
drag_callback: Callable | None = None,
drop_callback: Callable | None = None,
show: bool =True,
pos: list[int] | tuple[int, ...] = [],
filter_key: str ='',
tracked: bool =False,
track_offset: float =0.5,
wrap: int =-1,
bullet: bool =False,
color: list[int] | tuple[int, ...] = (-255, 0, 0, 255),
show_label: bool =False,
**kwargs
):
with dpg.group(parent=parent):
dpg.add_text(
default_value,
label=label, # type: ignore
user_data=user_data,
use_internal_label=use_internal_label,
tag=tag,
indent=indent,
before=before,
source=source,
payload_type=payload_type,
drag_callback=drag_callback, # type: ignore
drop_callback=drop_callback, # type: ignore
show=show, pos=pos,
filter_key=filter_key,
tracked=tracked,
track_offset=track_offset,
wrap=wrap,
bullet=bullet,
color=color,
show_label=show_label,
**kwargs
)
auto_align(dpg.last_item(), alignment_type)


def add_multi_line_centered_text(text, parent, wrap=None):
char_width = 7.25
available_width = 498

text_width = len(text) * char_width
center_x = int((available_width - text_width) / 2) - 2
wrap_width = wrap if wrap is not None else available_width

with dpg.group(horizontal=True, parent=parent):
dpg.add_spacer(width=max(center_x, 0))
dpg.add_text(text, wrap=wrap_width)
3 changes: 2 additions & 1 deletion src/ue4ss_installer_gui/constants.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import os
from screeninfo import get_monitors

from ue4ss_installer_gui.checks.online_check import is_online

PRIMARY_MONITOR = get_monitors()[0]

SCREEN_WIDTH = PRIMARY_MONITOR.width
Expand All @@ -14,7 +16,6 @@

HEADER_HEIGHT = 40
SUBHEADER_HEIGHT = 30
FOOTER_HEIGHT = 40
DIVIDER_HEIGHT = 15
MARGIN = 40

Expand Down
Loading
Loading