Properly implement OS.alert() from script, and use xmessage on X11

This commit is contained in:
Juan Linietsky 2015-09-21 09:39:46 -03:00
parent 8f07f24318
commit ce6fefced8
4 changed files with 20 additions and 1 deletions

View file

@ -732,6 +732,11 @@ int _OS::find_scancode_from_string(const String& p_code) const {
return find_keycode(p_code); return find_keycode(p_code);
} }
void _OS::alert(const String& p_alert,const String& p_title) {
OS::get_singleton()->alert(p_alert,p_title);
}
_OS *_OS::singleton=NULL; _OS *_OS::singleton=NULL;
void _OS::_bind_methods() { void _OS::_bind_methods() {
@ -859,6 +864,7 @@ void _OS::_bind_methods() {
ObjectTypeDB::bind_method(_MD("set_use_file_access_save_and_swap","enabled"),&_OS::set_use_file_access_save_and_swap); ObjectTypeDB::bind_method(_MD("set_use_file_access_save_and_swap","enabled"),&_OS::set_use_file_access_save_and_swap);
ObjectTypeDB::bind_method(_MD("alert","text","title"),&_OS::alert,DEFVAL("Alert!"));
BIND_CONSTANT( DAY_SUNDAY ); BIND_CONSTANT( DAY_SUNDAY );

View file

@ -256,6 +256,9 @@ public:
String get_data_dir() const; String get_data_dir() const;
void alert(const String& p_alert,const String& p_title="ALERT!");
void set_screen_orientation(ScreenOrientation p_orientation); void set_screen_orientation(ScreenOrientation p_orientation);
ScreenOrientation get_screen_orientation() const; ScreenOrientation get_screen_orientation() const;

View file

@ -1866,6 +1866,16 @@ void OS_X11::swap_buffers() {
context_gl->swap_buffers(); context_gl->swap_buffers();
} }
void OS_X11::alert(const String& p_alert,const String& p_title) {
List<String> args;
args.push_back("-center");
args.push_back("-title");
args.push_back(p_title);
args.push_back(p_alert);
execute("/usr/bin/xmessage",args,true);
}
void OS_X11::set_icon(const Image& p_icon) { void OS_X11::set_icon(const Image& p_icon) {
if (!p_icon.empty()) { if (!p_icon.empty()) {

View file

@ -243,7 +243,7 @@ public:
virtual bool is_window_maximized() const; virtual bool is_window_maximized() const;
virtual void move_window_to_foreground(); virtual void move_window_to_foreground();
virtual void alert(const String& p_alert,const String& p_title="ALERT!");
void run(); void run();
OS_X11(); OS_X11();