diff --git a/atom/browser/api/atom_api_button.cc b/atom/browser/api/atom_api_button.cc new file mode 100644 index 0000000000..841fec758b --- /dev/null +++ b/atom/browser/api/atom_api_button.cc @@ -0,0 +1,58 @@ +// Copyright (c) 2018 GitHub, Inc. +// Use of this source code is governed by the MIT license that can be +// found in the LICENSE file. + +#include "atom/browser/api/atom_api_button.h" + +#include "atom/common/api/constructor.h" +#include "native_mate/dictionary.h" + +#include "atom/common/node_includes.h" + +namespace atom { + +namespace api { + +Button::Button(views::Button* button) : View(button) { + view()->set_owned_by_client(); +} + +Button::~Button() {} + +void Button::ButtonPressed(views::Button* sender, const ui::Event& event) { + Emit("click"); +} + +// static +mate::WrappableBase* Button::New(mate::Arguments* args) { + args->ThrowError("Button can not be created directly"); + return nullptr; +} + +// static +void Button::BuildPrototype(v8::Isolate* isolate, + v8::Local prototype) { + prototype->SetClassName(mate::StringToV8(isolate, "Button")); +} + +} // namespace api + +} // namespace atom + +namespace { + +using atom::api::Button; + +void Initialize(v8::Local exports, + v8::Local unused, + v8::Local context, + void* priv) { + v8::Isolate* isolate = context->GetIsolate(); + mate::Dictionary dict(isolate, exports); + dict.Set("Button", + mate::CreateConstructor