html弹窗代码y\/n,Nodejs扩展,实现消息弹窗(示例代码)
模塊的C++代碼 node_gtknotify.cc
#include
#include
#include
#include
#include
using namespace v8;
class GtkNotify : node::ObjectWrap{
public:
GtkNotify(){}
~GtkNotify(){}
std::string title;
std::string icon;
static Persistent persistent_function_template;
static void Init(Handle target){
HandleScope scope;
Local local_function_template = FunctionTemplate::New(New);
GtkNotify::persistent_function_template = Persistent::New(local_function_template);
GtkNotify::persistent_function_template->InstanceTemplate()->SetInternalFieldCount(1);
GtkNotify::persistent_function_template->SetClassName(String::NewSymbol("Notification"));
GtkNotify::persistent_function_template->InstanceTemplate()->SetAccessor(String::New("title"), GetTitle, SetTitle);
GtkNotify::persistent_function_template->InstanceTemplate()->SetAccessor(String::New("icon"), GetIcon, SetIcon);
NODE_SET_PROTOTYPE_METHOD(GtkNotify::persistent_function_template, "send", Send);
target->Set(String::NewSymbol("notification"), GtkNotify::persistent_function_template->GetFunction());
}
static Handle New(const Arguments& args){
HandleScope scope;
GtkNotify* instance = new GtkNotify();
instance->title = "Node.js";
instance->icon = "terminal";
instance->Wrap(args.This());
return args.This();
}
static Handle Send(const Arguments& args){
HandleScope scope;
GtkNotify* instance = node::ObjectWrap::Unwrap(args.This());
String::Utf8Value v8str(args[0]);
//彈出消息框
Notify::init("Basic");
Notify::Notification n(instance->title.c_str(), *v8str, instance->icon.c_str());
n.show();
return Boolean::New(true);
}
static Handle GetTitle(Local property, const AccessorInfo& info){
GtkNotify* instance = node::ObjectWrap::Unwrap(info.Holder());
return String::New(instance->title.c_str());
}
static Handle GetIcon(Local property, const AccessorInfo& info){
GtkNotify* instance = node::ObjectWrap::Unwrap(info.Holder());
return String::New(instance->icon.c_str());
}
static void SetTitle(Local property, Local value, const AccessorInfo& info) {
GtkNotify* instance = node::ObjectWrap::Unwrap(info.Holder());
String::Utf8Value v8str(value);
instance->title = *v8str;
}
static void SetIcon(Local property, Local value, const AccessorInfo& info) {
GtkNotify* instance = node::ObjectWrap::Unwrap(info.Holder());
String::Utf8Value v8str(value);
instance->icon = *v8str;
}
};
Persistent GtkNotify::persistent_function_template;
extern "C"{
static void init(Handle target){
GtkNotify::Init(target);
}
NODE_MODULE(node_gtknotify, init);
}
node-gyp配置文件 binding.gyp
{
"targets": [
{
"target_name": "node_gtknotify",
"sources": [ "src/node_gtknotify.cc" ]
}
]
}
文件夾結(jié)構(gòu)
執(zhí)行命令
node-gyp configure
node-gyp build
假設(shè)沒(méi)有安裝對(duì)應(yīng)的庫(kù)/路徑找不到。中間會(huì)出現(xiàn)頭文件找不到的錯(cuò)誤;
笨拙的解決方法。在build以下的Makefile中加入
CXXFLAGS += -I/usr/include/glibmm-2.4 -I/usr/lib/x86_64-linux-gnu/glibmm-2.4/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include
-I/usr/include/giomm-2.4 -I/usr/include/gdkmm-3.0 -I/usr/lib/x86_64-linux-gnu/gdkmm-3.0/include -I/usr/include/pangomm-1.4 -I/usr/lib/x86_64-linux-gnu/pangomm-1.4/include -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0
-I/usr/include/cairomm-1.0 -I/usr/include/freetype2 -I/usr/include/gtkmm-3.0 -I/usr/lib/x86_64-linux-gnu/gtkmm-3.0/include -I/usr/include/atkmm-1.6 -I/usr/include/atk-1.0 -I/usr/include/libnotifymm-1.0
上述的庫(kù)是依據(jù)錯(cuò)誤提示進(jìn)行安裝的
Javascript測(cè)試代碼
var notify = require("./build/Release/node_gtknotify");
var notification = new notify.notification();
notification.title = "Notification title";
notification.icon = "emblem-default"; // see /usr/share/icons/gnome/16x16
notification.send("hello,world");
注意,執(zhí)行時(shí)可能有錯(cuò)誤提示:**符號(hào)找不到,這是由于沒(méi)有加入對(duì)應(yīng)的共享鏈接庫(kù)
解決方法:在build/node_gtknotify.target.mk中加入
LIBS := -lglibmm-2.4 -lnotify -lnotifymm-1.0
執(zhí)行效果
總結(jié)
以上是生活随笔為你收集整理的html弹窗代码y\/n,Nodejs扩展,实现消息弹窗(示例代码)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 带符号的情侣网名159个
- 下一篇: 马云最牛的一句话 马云说过最精辟的话16