bindings: initial support for running external commands
This commit is contained in:
@@ -95,6 +95,9 @@
|
|||||||
## selected_items_adder, server_info, song_info,
|
## selected_items_adder, server_info, song_info,
|
||||||
## sort_playlist_dialog, tiny_tag_editor.
|
## sort_playlist_dialog, tiny_tag_editor.
|
||||||
##
|
##
|
||||||
|
## - run_external_command "command" - runs given command using
|
||||||
|
## system() function.
|
||||||
|
##
|
||||||
## 5) In addition to binding to a key, you can also bind actions
|
## 5) In addition to binding to a key, you can also bind actions
|
||||||
## or chains of actions to a command. If it comes to commands,
|
## or chains of actions to a command. If it comes to commands,
|
||||||
## syntax is very similar to defining keys. Here goes example
|
## syntax is very similar to defining keys. Here goes example
|
||||||
|
|||||||
@@ -147,6 +147,14 @@ Action *parseActionLine(const std::string &line, F error)
|
|||||||
else
|
else
|
||||||
error() << "unknown action passed to require_runnable: '" << arg << "'\n";
|
error() << "unknown action passed to require_runnable: '" << arg << "'\n";
|
||||||
}
|
}
|
||||||
|
else if (action_name == "run_external_command")
|
||||||
|
{
|
||||||
|
std::string command = getEnclosedString(line, '"', '"', 0);
|
||||||
|
if (!command.empty())
|
||||||
|
result = new RunExternalCommand(std::move(command));
|
||||||
|
else
|
||||||
|
error() << "empty command passed to run_external_command\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,3 +36,9 @@ bool RequireScreen::canBeRun() const
|
|||||||
{
|
{
|
||||||
return Global::myScreen->type() == m_screen_type;
|
return Global::myScreen->type() == m_screen_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RunExternalCommand::Run()
|
||||||
|
{
|
||||||
|
GNUC_UNUSED int res;
|
||||||
|
res = std::system(m_command.c_str());
|
||||||
|
}
|
||||||
|
|||||||
@@ -64,4 +64,16 @@ private:
|
|||||||
ScreenType m_screen_type;
|
ScreenType m_screen_type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct RunExternalCommand : public Action
|
||||||
|
{
|
||||||
|
RunExternalCommand(std::string command)
|
||||||
|
: Action(aMacroUtility, ""), m_command(command) { }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void Run();
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string m_command;
|
||||||
|
};
|
||||||
|
|
||||||
#endif // NCMPCPP_MACRO_UTILITIES_H
|
#endif // NCMPCPP_MACRO_UTILITIES_H
|
||||||
|
|||||||
Reference in New Issue
Block a user