зеркало из https://github.com/electron/electron.git
Allow showing message dialog as sheet.
This commit is contained in:
Родитель
a897d5b715
Коммит
dfbbaa9efb
|
@ -49,6 +49,15 @@ v8::Handle<v8::Value> ShowMessageBox(const v8::Arguments &args) {
|
||||||
!args[4]->IsString()) // detail
|
!args[4]->IsString()) // detail
|
||||||
return node::ThrowTypeError("Bad argument");
|
return node::ThrowTypeError("Bad argument");
|
||||||
|
|
||||||
|
NativeWindow* native_window = NULL;
|
||||||
|
if (args[5]->IsObject()) {
|
||||||
|
Window* window = Window::Unwrap<Window>(args[5]->ToObject());
|
||||||
|
if (!window || !window->window())
|
||||||
|
return node::ThrowError("Invalid window");
|
||||||
|
|
||||||
|
native_window = window->window();
|
||||||
|
}
|
||||||
|
|
||||||
MessageBoxType type = (MessageBoxType)(args[0]->IntegerValue());
|
MessageBoxType type = (MessageBoxType)(args[0]->IntegerValue());
|
||||||
|
|
||||||
std::vector<std::string> buttons;
|
std::vector<std::string> buttons;
|
||||||
|
@ -60,7 +69,8 @@ v8::Handle<v8::Value> ShowMessageBox(const v8::Arguments &args) {
|
||||||
std::string message(*v8::String::Utf8Value(args[3]));
|
std::string message(*v8::String::Utf8Value(args[3]));
|
||||||
std::string detail(*v8::String::Utf8Value(args[4]));
|
std::string detail(*v8::String::Utf8Value(args[4]));
|
||||||
|
|
||||||
int chosen = atom::ShowMessageBox(type, buttons, title, message, detail);
|
int chosen = atom::ShowMessageBox(
|
||||||
|
native_window, type, buttons, title, message, detail);
|
||||||
return scope.Close(v8::Integer::New(chosen));
|
return scope.Close(v8::Integer::New(chosen));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,11 @@ module.exports =
|
||||||
|
|
||||||
binding.showSaveDialog window, options.title, options.defaultPath
|
binding.showSaveDialog window, options.title, options.defaultPath
|
||||||
|
|
||||||
showMessageBox: (options) ->
|
showMessageBox: (window, options) ->
|
||||||
|
if window?.constructor isnt BrowserWindow
|
||||||
|
options = window
|
||||||
|
window = null
|
||||||
|
|
||||||
options = type: 'none' unless options?
|
options = type: 'none' unless options?
|
||||||
options.type = options.type ? 'none'
|
options.type = options.type ? 'none'
|
||||||
options.type = messageBoxTypes.indexOf options.type
|
options.type = messageBoxTypes.indexOf options.type
|
||||||
|
@ -42,7 +46,9 @@ module.exports =
|
||||||
options.message = options.message ? ''
|
options.message = options.message ? ''
|
||||||
options.detail = options.detail ? ''
|
options.detail = options.detail ? ''
|
||||||
|
|
||||||
binding.showMessageBox options.type, options.buttons,
|
binding.showMessageBox options.type,
|
||||||
|
options.buttons,
|
||||||
String(options.title),
|
String(options.title),
|
||||||
String(options.message),
|
String(options.message),
|
||||||
String(options.detail)
|
String(options.detail),
|
||||||
|
window
|
||||||
|
|
|
@ -10,13 +10,16 @@
|
||||||
|
|
||||||
namespace atom {
|
namespace atom {
|
||||||
|
|
||||||
|
class NativeWindow;
|
||||||
|
|
||||||
enum MessageBoxType {
|
enum MessageBoxType {
|
||||||
MESSAGE_BOX_TYPE_NONE = 0,
|
MESSAGE_BOX_TYPE_NONE = 0,
|
||||||
MESSAGE_BOX_TYPE_INFORMATION,
|
MESSAGE_BOX_TYPE_INFORMATION,
|
||||||
MESSAGE_BOX_TYPE_WARNING
|
MESSAGE_BOX_TYPE_WARNING
|
||||||
};
|
};
|
||||||
|
|
||||||
int ShowMessageBox(MessageBoxType type,
|
int ShowMessageBox(NativeWindow* parent_window,
|
||||||
|
MessageBoxType type,
|
||||||
const std::vector<std::string>& buttons,
|
const std::vector<std::string>& buttons,
|
||||||
const std::string& title,
|
const std::string& title,
|
||||||
const std::string& message,
|
const std::string& message,
|
||||||
|
|
|
@ -7,10 +7,13 @@
|
||||||
#import <Cocoa/Cocoa.h>
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
#include "base/strings/sys_string_conversions.h"
|
#include "base/strings/sys_string_conversions.h"
|
||||||
|
#include "browser/native_window.h"
|
||||||
|
#include "browser/nsalert_synchronous_sheet.h"
|
||||||
|
|
||||||
namespace atom {
|
namespace atom {
|
||||||
|
|
||||||
int ShowMessageBox(MessageBoxType type,
|
int ShowMessageBox(NativeWindow* parent_window,
|
||||||
|
MessageBoxType type,
|
||||||
const std::vector<std::string>& buttons,
|
const std::vector<std::string>& buttons,
|
||||||
const std::string& title,
|
const std::string& title,
|
||||||
const std::string& message,
|
const std::string& message,
|
||||||
|
@ -37,7 +40,10 @@ int ShowMessageBox(MessageBoxType type,
|
||||||
[button setTag:i];
|
[button setTag:i];
|
||||||
}
|
}
|
||||||
|
|
||||||
return [alert runModal];
|
if (parent_window)
|
||||||
|
return [alert runModalSheetForWindow:parent_window->GetNativeWindow()];
|
||||||
|
else
|
||||||
|
return [alert runModal];
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace atom
|
} // namespace atom
|
||||||
|
|
Загрузка…
Ссылка в новой задаче