Skip to content

Commit

Permalink
osc.lua: remove code repetition for mouse bindings
Browse files Browse the repository at this point in the history
  • Loading branch information
guidocella authored and kasper93 committed Oct 28, 2024
1 parent 4b97e72 commit dc85266
Showing 1 changed file with 34 additions and 67 deletions.
101 changes: 34 additions & 67 deletions player/lua/osc.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1691,10 +1691,30 @@ layouts["topbar"] = function()
end


local function command_callback(command)
if command ~= "" then
return function ()
mp.command(command)
local function bind_mouse_buttons(element_name)
for _, button in pairs({"mbtn_left", "mbtn_mid", "mbtn_right"}) do
local command = user_opts[element_name .. "_" .. button .. "_command"]

if command ~= "" then
if button == "mbtn_mid" then
button = "shift+mbtn_left"
end

elements[element_name].eventresponder[button .. "_up"] = function ()
mp.command(command)
end
end
end

if user_opts.scrollcontrols then
for _, button in pairs({"wheel_down", "wheel_up"}) do
local command = user_opts[element_name .. "_" .. button .. "_command"]

if command and command ~= "" then
elements[element_name].eventresponder[button .. "_press"] = function ()
mp.command(command)
end
end
end
end
end
Expand Down Expand Up @@ -1756,10 +1776,7 @@ local function osc_init()
title = title:gsub("\n", " ")
return title ~= "" and mp.command_native({"escape-ass", title}) or "mpv"
end

ne.eventresponder["mbtn_left_up"] = command_callback(user_opts.title_mbtn_left_command)
ne.eventresponder["shift+mbtn_left_up"] = command_callback(user_opts.title_mbtn_mid_command)
ne.eventresponder["mbtn_right_up"] = command_callback(user_opts.title_mbtn_right_command)
bind_mouse_buttons("title")

-- playlist buttons

Expand All @@ -1768,24 +1785,14 @@ local function osc_init()

ne.content = "\238\132\144"
ne.enabled = (pl_pos > 1) or (loop ~= "no")
ne.eventresponder["mbtn_left_up"] = command_callback(
user_opts.playlist_prev_mbtn_left_command)
ne.eventresponder["shift+mbtn_left_up"] = command_callback(
user_opts.playlist_prev_mbtn_mid_command)
ne.eventresponder["mbtn_right_up"] = command_callback(
user_opts.playlist_prev_mbtn_right_command)
bind_mouse_buttons("playlist_prev")

--next
ne = new_element("playlist_next", "button")

ne.content = "\238\132\129"
ne.enabled = (have_pl and (pl_pos < pl_count)) or (loop ~= "no")
ne.eventresponder["mbtn_left_up"] = command_callback(
user_opts.playlist_next_mbtn_left_command)
ne.eventresponder["shift+mbtn_left_up"] = command_callback(
user_opts.playlist_next_mbtn_mid_command)
ne.eventresponder["mbtn_right_up"] = command_callback(
user_opts.playlist_next_mbtn_right_command)
bind_mouse_buttons("playlist_next")


-- big buttons
Expand All @@ -1804,11 +1811,7 @@ local function osc_init()
return ("\238\128\130")
end
end
ne.eventresponder["mbtn_left_up"] = command_callback(user_opts.play_pause_mbtn_left_command)
ne.eventresponder["shift+mbtn_left_up"] = command_callback(
user_opts.play_pause_mbtn_mid_command)
ne.eventresponder["mbtn_right_up"] = command_callback(
user_opts.play_pause_mbtn_right_command)
bind_mouse_buttons("play_pause")

--skip_backward
ne = new_element("skip_backward", "button")
Expand Down Expand Up @@ -1839,21 +1842,14 @@ local function osc_init()

ne.enabled = have_ch
ne.content = "\238\132\132"
ne.eventresponder["mbtn_left_up"] = command_callback(user_opts.chapter_prev_mbtn_left_command)
ne.eventresponder["shift+mbtn_left_up"] = command_callback(
user_opts.chapter_prev_mbtn_mid_command)
ne.eventresponder["mbtn_right_up"] = command_callback(
user_opts.chapter_prev_mbtn_right_command)
bind_mouse_buttons("chapter_prev")

--chapter_next
ne = new_element("chapter_next", "button")

ne.enabled = have_ch
ne.content = "\238\132\133"
ne.eventresponder["mbtn_left_up"] = command_callback(user_opts.chapter_next_mbtn_left_command)
ne.eventresponder["shift+mbtn_left_up"] = command_callback(
user_opts.chapter_next_mbtn_mid_command)
ne.eventresponder["mbtn_right_up"] = command_callback(user_opts.chapter_next_mbtn_right_command)
bind_mouse_buttons("chapter_next")

--
update_tracklist()
Expand All @@ -1871,17 +1867,7 @@ local function osc_init()
return ("\238\132\134" .. osc_styles.smallButtonsLlabel .. " " ..
aid .. "/" .. audio_track_count)
end
ne.eventresponder["mbtn_left_up"] = command_callback(user_opts.audio_track_mbtn_left_command)
ne.eventresponder["shift+mbtn_left_up"] = command_callback(
user_opts.audio_track_mbtn_mid_command)
ne.eventresponder["mbtn_right_up"] = command_callback(user_opts.audio_track_mbtn_right_command)

if user_opts.scrollcontrols then
ne.eventresponder["wheel_down_press"] = command_callback(
user_opts.audio_track_wheel_down_command)
ne.eventresponder["wheel_up_press"] = command_callback(
user_opts.audio_track_wheel_up_command)
end
bind_mouse_buttons("audio_track")

--sub_track
ne = new_element("sub_track", "button")
Expand All @@ -1896,15 +1882,7 @@ local function osc_init()
return ("\238\132\135" .. osc_styles.smallButtonsLlabel .. " " ..
sid .. "/" .. sub_track_count)
end
ne.eventresponder["mbtn_left_up"] = command_callback(user_opts.sub_track_mbtn_left_command)
ne.eventresponder["shift+mbtn_left_up"] = command_callback(user_opts.sub_track_mbtn_mid_command)
ne.eventresponder["mbtn_right_up"] = command_callback(user_opts.sub_track_mbtn_right_command)

if user_opts.scrollcontrols then
ne.eventresponder["wheel_down_press"] = command_callback(
user_opts.sub_track_wheel_down_command)
ne.eventresponder["wheel_up_press"] = command_callback(user_opts.sub_track_wheel_up_command)
end
bind_mouse_buttons("sub_track")

--fullscreen
ne = new_element("fullscreen", "button")
Expand All @@ -1915,10 +1893,7 @@ local function osc_init()
return ("\238\132\136")
end
end
ne.eventresponder["mbtn_left_up"] = command_callback(user_opts.fullscreen_mbtn_left_command)
ne.eventresponder["shift+mbtn_left_up"] = command_callback(
user_opts.fullscreen_mbtn_mid_command)
ne.eventresponder["mbtn_right_up"] = command_callback(user_opts.fullscreen_mbtn_right_command)
bind_mouse_buttons("fullscreen")

--seekbar
ne = new_element("seekbar", "slider")
Expand Down Expand Up @@ -2107,15 +2082,7 @@ local function osc_init()
return volicon[math.min(4,math.ceil(volume / (100/3)))]
end
end
ne.eventresponder["mbtn_left_up"] = command_callback(user_opts.volume_mbtn_left_command)
ne.eventresponder["shift+mbtn_left_up"] = command_callback(user_opts.volume_mbtn_mid_command)
ne.eventresponder["mbtn_right_up"] = command_callback(user_opts.volume_mbtn_right_command)

if user_opts.scrollcontrols then
ne.eventresponder["wheel_down_press"] = command_callback(
user_opts.volume_wheel_down_command)
ne.eventresponder["wheel_up_press"] = command_callback(user_opts.volume_wheel_up_command)
end
bind_mouse_buttons("volume")


-- load layout
Expand Down

0 comments on commit dc85266

Please sign in to comment.