mirror of
https://github.com/aclist/dztui.git
synced 2024-12-27 21:02:36 +01:00
Merge 34b3d3bc8c
into e6b5e40bb2
This commit is contained in:
commit
f1865ef1f0
4 changed files with 87 additions and 2 deletions
|
@ -1,5 +1,9 @@
|
|||
# Changelog
|
||||
|
||||
## [5.6.0-beta.18] 2024-12-14
|
||||
### Added
|
||||
- Open Steam workshop subscriptions
|
||||
|
||||
## [5.6.0-beta.17] 2024-12-14
|
||||
### Added
|
||||
- Additional logging
|
||||
|
|
4
dzgui.sh
4
dzgui.sh
|
@ -578,10 +578,10 @@ fetch_helpers_by_sum(){
|
|||
[[ -f "$config_file" ]] && source "$config_file"
|
||||
declare -A sums
|
||||
sums=(
|
||||
["ui.py"]="be3da1e542d14105f4358dd38901e25a"
|
||||
["ui.py"]="0e3845ef150ee9863f9160c62dbb24f9"
|
||||
["query_v2.py"]="55d339ba02512ac69de288eb3be41067"
|
||||
["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397"
|
||||
["funcs"]="37897aa36bc2fb6286cee02c8bb07258"
|
||||
["funcs"]="4c1480fcfae15c4bc1c02a337d1de488"
|
||||
["lan"]="c62e84ddd1457b71a85ad21da662b9af"
|
||||
)
|
||||
local author="aclist"
|
||||
|
|
|
@ -104,6 +104,7 @@ declare -A funcs=(
|
|||
["Connect by IP"]="validate_and_connect"
|
||||
["Connect by ID"]="validate_and_connect"
|
||||
["Connect from table"]="connect_from_table"
|
||||
["find_id"]="find_id"
|
||||
["toggle"]="toggle"
|
||||
["Open link"]="open_link"
|
||||
["filter"]="dump_servers"
|
||||
|
@ -121,6 +122,7 @@ declare -A funcs=(
|
|||
["is_in_favs"]="is_in_favs"
|
||||
["show_log"]="show_log"
|
||||
["Output system info to log file"]="generate_log"
|
||||
["open_user_workshop"]="open_user_workshop"
|
||||
["open_workshop_page"]="open_workshop_page"
|
||||
["Add to my servers"]="update_favs_from_table"
|
||||
["Remove from my servers"]="update_favs_from_table"
|
||||
|
@ -332,6 +334,19 @@ is_in_favs(){
|
|||
done
|
||||
return 1
|
||||
}
|
||||
find_id(){
|
||||
local file="$default_steam_path/config/loginusers.vdf"
|
||||
[[ ! -f $file ]] && return 1
|
||||
local res=$(python3 $HOME/.local/share/dzgui/helpers/vdf2json.py \
|
||||
-i "$file" | jq -r '.users
|
||||
|to_entries[]
|
||||
|select(.value.MostRecent=="1")
|
||||
|.key'
|
||||
)
|
||||
[[ -z $res ]] && return 1
|
||||
printf "%s" "$res"
|
||||
return 0
|
||||
}
|
||||
list_mods(){
|
||||
local symlink
|
||||
local sep
|
||||
|
@ -1051,6 +1066,12 @@ update_config_val(){
|
|||
show_log(){
|
||||
< "$debug_log" sed 's/Keyword␞/Keyword/'
|
||||
}
|
||||
open_user_workshop(){
|
||||
shift
|
||||
local id="$1"
|
||||
url="https://steamcommunity.com/profiles/$id/myworkshopfiles/?appid=$aid&browsefilter=mysubscriptions"
|
||||
$steam_cmd steam://openurl/$url &
|
||||
}
|
||||
open_workshop_page(){
|
||||
shift
|
||||
local id="$1"
|
||||
|
|
|
@ -215,6 +215,7 @@ class RowType(EnumWithAttrs):
|
|||
"label": "Toggle mod install mode",
|
||||
"tooltip": "Switch between manual and auto mod installation",
|
||||
"default": "manual",
|
||||
"link_label": "Open Steam Workshop",
|
||||
"alt": "auto",
|
||||
"val": "auto_install"
|
||||
}
|
||||
|
@ -756,6 +757,29 @@ def process_tree_option(input, treeview):
|
|||
case RowType.TGL_BRANCH:
|
||||
wait_msg = "Updating DZGUI branch"
|
||||
call_on_thread(False, "toggle", wait_msg, cmd_string)
|
||||
case RowType.TGL_INSTALL:
|
||||
if query_config(None, "auto_install")[0] == "1":
|
||||
proc = call_out(transient_parent, "toggle", cmd_string)
|
||||
grid.update_right_statusbar()
|
||||
tooltip = format_metadata(command.dict["label"])
|
||||
transient_parent.grid.update_statusbar(tooltip)
|
||||
return
|
||||
# manual -> auto mode
|
||||
proc = call_out(transient_parent, "find_id", "")
|
||||
if proc.returncode == 1:
|
||||
link=None
|
||||
uid=None
|
||||
else:
|
||||
link=command.dict["link_label"]
|
||||
uid=proc.stdout
|
||||
manual_sub_msg = """\
|
||||
When switching from MANUAL to AUTO mod install mode,
|
||||
DZGUI will manage mod installation and deletion for you.
|
||||
To prevent conflicts with Steam Workshop subscriptions and old mods from being downloaded
|
||||
when Steam updates, you should unsubscribe from any existing Workshop mods you manually subscribed to.
|
||||
Open your Profile > Workshop Items and select 'Unsubscribe from all'
|
||||
on the right-hand side, then click OK below to enable AUTO mod install mode."""
|
||||
LinkDialog(transient_parent, textwrap.dedent(manual_sub_msg), Popup.NOTIFY, link, command, uid)
|
||||
case _:
|
||||
proc = call_out(transient_parent, "toggle", cmd_string)
|
||||
grid.update_right_statusbar()
|
||||
|
@ -2205,6 +2229,42 @@ class ModDialog(GenericDialog):
|
|||
subprocess.Popen(['/usr/bin/env', 'bash', funcs, "open_workshop_page", mod_id])
|
||||
|
||||
|
||||
class LinkDialog(GenericDialog):
|
||||
def __init__(self, parent, text, mode, link, command, uid=None):
|
||||
super().__init__(parent, text, mode)
|
||||
|
||||
self.dialog = GenericDialog(parent, text, mode)
|
||||
self.dialogBox = self.dialog.get_content_area()
|
||||
self.dialog.set_default_response(Gtk.ResponseType.OK)
|
||||
self.dialog.set_size_request(500, 0)
|
||||
|
||||
if link is not None:
|
||||
button = Gtk.Button(label=link)
|
||||
button.set_margin_start(60)
|
||||
button.set_margin_end(60)
|
||||
button.connect("clicked", self._on_button_clicked, uid)
|
||||
self.dialogBox.pack_end(button, False, False, 0)
|
||||
|
||||
self.dialog.show_all()
|
||||
self.dialog.connect("response", self._on_dialog_response, parent, command)
|
||||
|
||||
def _on_button_clicked(self, button, uid):
|
||||
subprocess.Popen(['/usr/bin/env', 'bash', funcs, "open_user_workshop", uid])
|
||||
|
||||
def _on_dialog_response(self, dialog, resp, parent, command):
|
||||
match resp:
|
||||
case Gtk.ResponseType.DELETE_EVENT:
|
||||
return
|
||||
case Gtk.ResponseType.OK:
|
||||
self.dialog.destroy()
|
||||
proc = call_out(parent, "toggle", command.dict["label"])
|
||||
parent.grid.update_right_statusbar()
|
||||
tooltip = format_metadata(command.dict["label"])
|
||||
parent.grid.update_statusbar(tooltip)
|
||||
|
||||
|
||||
|
||||
|
||||
class EntryDialog(GenericDialog):
|
||||
def __init__(self, parent, text, mode, link):
|
||||
super().__init__(parent, text, mode)
|
||||
|
|
Loading…
Reference in a new issue