Logging.
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include "rktwebview_types.h"
|
||||
#include "webviewwindow.h"
|
||||
#include "rktutils.h"
|
||||
#include "utils.h"
|
||||
#include <QApplication>
|
||||
#include <QTimer>
|
||||
#include <QSemaphore>
|
||||
@@ -39,13 +40,13 @@ void Rktwebview_qt::processCommand(Command *cmd)
|
||||
bool has_pem = cmd->args[1].toBool();
|
||||
QString optional_server_cert_pem = cmd->args[2].toString();
|
||||
|
||||
fprintf(stderr, "bjs: %s\n", boilerplate_js.toUtf8().constData());
|
||||
fprintf(stderr, "oscp: %s\n", optional_server_cert_pem.toUtf8().constData());
|
||||
DEBUG1("bjs: %s\n", boilerplate_js.toUtf8().constData());
|
||||
DEBUG1("oscp: %s\n", optional_server_cert_pem.toUtf8().constData());
|
||||
|
||||
QWebEngineProfileBuilder b;
|
||||
if (has_pem) {
|
||||
QByteArray scp = optional_server_cert_pem.toUtf8();
|
||||
fprintf(stderr, "Installing cert: %s\n", scp.constData());
|
||||
INFO1("Installing cert: %s\n", scp.constData());
|
||||
QList<QSslCertificate> certs;
|
||||
QSslCertificate cert(scp);
|
||||
certs.append(cert);
|
||||
@@ -238,7 +239,7 @@ void Rktwebview_qt::processCommand(Command *cmd)
|
||||
QString js = cmd->args[1].toString();
|
||||
if (_views.contains(wv)) {
|
||||
WebviewWindow *w = _views[wv];
|
||||
fprintf(stderr, "Running %s\n", js.toUtf8().constData());
|
||||
DEBUG1("Running %s\n", js.toUtf8().constData());
|
||||
w->runJs(js);
|
||||
cmd->result = true;
|
||||
} else {
|
||||
@@ -377,19 +378,12 @@ void Rktwebview_qt::processCommand(Command *cmd)
|
||||
QString title = cmd->args[1].toString();
|
||||
QString base_dir = cmd->args[2].toString();
|
||||
if (_views.contains(wv)) {
|
||||
WebviewWindow *w = _views[wv];
|
||||
QString dir = QFileDialog::getExistingDirectory(w, title, base_dir, QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
|
||||
if (dir == "") {
|
||||
QJsonObject obj;
|
||||
obj["state"] = "canceled";
|
||||
obj["dir"] = base_dir;
|
||||
cmd->result = QString::fromUtf8(QJsonDocument(obj).toJson(QJsonDocument::JsonFormat::Compact));
|
||||
} else {
|
||||
QJsonObject obj;
|
||||
obj["state"] = "choosen";
|
||||
obj["dir"] = dir;
|
||||
cmd->result = QString::fromUtf8(QJsonDocument(obj).toJson(QJsonDocument::JsonFormat::Compact));
|
||||
}
|
||||
result_t r = fileDlg(wv, title, base_dir, "",
|
||||
QFileDialog::Directory, QFileDialog::AcceptOpen,
|
||||
"choose-dir-ok", "choose-dir-cancel"
|
||||
);
|
||||
cmd->js_result_ok = true;
|
||||
cmd->result = (r == result_t::oke);
|
||||
} else {
|
||||
cmd->js_result_ok = false;
|
||||
cmd->result = false;
|
||||
@@ -397,36 +391,57 @@ void Rktwebview_qt::processCommand(Command *cmd)
|
||||
cmd->done = true;
|
||||
}
|
||||
break;
|
||||
case COMMAND_FILE_OPEN:
|
||||
case COMMAND_FILE_OPEN: {
|
||||
int wv = cmd->args[0].toInt();
|
||||
QString title = cmd->args[1].toString();
|
||||
QString base_dir = cmd->args[2].toString();
|
||||
QString exts = cmd->args[3].toString();
|
||||
if (_views.contains(wv)) {
|
||||
result_t r = fileDlg(wv, title, base_dir, exts,
|
||||
QFileDialog::ExistingFile, QFileDialog::AcceptOpen,
|
||||
"file-open-ok", "file-open-cancel"
|
||||
);
|
||||
cmd->js_result_ok = true;
|
||||
cmd->result = (r == result_t::oke);
|
||||
} else {
|
||||
cmd->js_result_ok = true;
|
||||
cmd->result = false;
|
||||
}
|
||||
cmd->done = true;
|
||||
}
|
||||
break;
|
||||
case COMMAND_FILE_SAVE: {
|
||||
int wv = cmd->args[0].toInt();
|
||||
QString title = cmd->args[1].toString();
|
||||
QString base_dir = cmd->args[2].toString();
|
||||
QString exts = cmd->args[3].toString();
|
||||
if (_views.contains(wv)) {
|
||||
WebviewWindow *w = _views[wv];
|
||||
QString file;
|
||||
QString selected_filter;
|
||||
if (cmd->cmd == COMMAND_FILE_OPEN) {
|
||||
file = QFileDialog::getOpenFileName(w, title, base_dir, exts, &selected_filter);
|
||||
} else {
|
||||
file = QFileDialog::getSaveFileName(w, title, base_dir, exts, &selected_filter);
|
||||
}
|
||||
if (file == "") {
|
||||
QJsonObject obj;
|
||||
obj["state"] = "canceled";
|
||||
obj["file"] = "";
|
||||
obj["used-filter"] = selected_filter;
|
||||
cmd->result = QString::fromUtf8(QJsonDocument(obj).toJson(QJsonDocument::JsonFormat::Compact));
|
||||
} else {
|
||||
QJsonObject obj;
|
||||
obj["state"] = "choosen";
|
||||
obj["file"] = file;
|
||||
obj["used-filter"] = selected_filter;
|
||||
cmd->result = QString::fromUtf8(QJsonDocument(obj).toJson(QJsonDocument::JsonFormat::Compact));
|
||||
}
|
||||
result_t r = fileDlg(wv, title, base_dir, exts,
|
||||
QFileDialog::AnyFile, QFileDialog::AcceptSave,
|
||||
"file-open-ok", "file-open-cancel"
|
||||
);
|
||||
cmd->js_result_ok = true;
|
||||
cmd->result = (r == result_t::oke);
|
||||
} else {
|
||||
cmd->js_result_ok = false;
|
||||
cmd->js_result_ok = true;
|
||||
cmd->result = false;
|
||||
}
|
||||
cmd->done = true;
|
||||
}
|
||||
break;
|
||||
case COMMAND_MESSAGE: {
|
||||
int wv = cmd->args[0].toInt();
|
||||
QString title = cmd->args[1].toString();
|
||||
QString msg = cmd->args[2].toString();
|
||||
QString submsg = cmd->args[3].toString();
|
||||
rkt_messagetype_t type = static_cast<rkt_messagetype_t>(cmd->args[4].toInt());
|
||||
|
||||
if (_views.contains(wv)) {
|
||||
msgBox(wv, title, msg, submsg, type);
|
||||
cmd->js_result_ok = true;
|
||||
cmd->result = true;
|
||||
} else {
|
||||
cmd->js_result_ok = true;
|
||||
cmd->result = false;
|
||||
}
|
||||
cmd->done = true;
|
||||
@@ -542,7 +557,7 @@ result_t Rktwebview_qt::rktSetHtml(rktwebview_t wv, const char *html)
|
||||
|
||||
rkt_data_t *Rktwebview_qt::rktCallJs(rktwebview_t wv, const char *js)
|
||||
{
|
||||
fprintf(stderr, "calljs: %s\n", js);
|
||||
DEBUG1("calljs: %s\n", js);
|
||||
|
||||
Command c(COMMAND_CALL_JS);
|
||||
QString _js(js);
|
||||
@@ -555,14 +570,14 @@ rkt_data_t *Rktwebview_qt::rktCallJs(rktwebview_t wv, const char *js)
|
||||
r->kind = js_result;
|
||||
r->data.js_result.result = c.js_result_ok ? result_t::oke : result_t::eval_js_failed;
|
||||
r->data.js_result.value = copyString(c.result.toString().toUtf8());
|
||||
fprintf(stderr, "js-result: %s\n", r->data.js_result.value);
|
||||
DEBUG1("js-result: %s\n", r->data.js_result.value);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
result_t Rktwebview_qt::rktRunJs(rktwebview_t wv, const QString &js)
|
||||
{
|
||||
fprintf(stderr, "rktRunJs: %s\n", js.toUtf8().constData());
|
||||
DEBUG1("rktRunJs: %s\n", js.toUtf8().constData());
|
||||
Command c(COMMAND_RUN_JS);
|
||||
c.args.push_back(wv);
|
||||
c.args.push_back(js);
|
||||
@@ -645,7 +660,14 @@ void Rktwebview_qt::rktQuit()
|
||||
while(!c.done) { doEvents(); }
|
||||
}
|
||||
|
||||
result_t Rktwebview_qt::fileDlg(rktwebview_t w, const char *title, const char *base, const char *filters,QFileDialog::FileMode mode, QFileDialog::AcceptMode am, QString evt_ok, QString evt_cancel)
|
||||
result_t Rktwebview_qt::fileDlg(rktwebview_t w,
|
||||
const QString &title,
|
||||
const QString &base,
|
||||
const QString &filters,
|
||||
QFileDialog::FileMode mode,
|
||||
QFileDialog::AcceptMode am,
|
||||
QString evt_ok,
|
||||
QString evt_cancel)
|
||||
{
|
||||
if (_views.contains(w)) {
|
||||
WebviewWindow *win = _views[w];
|
||||
@@ -700,17 +722,60 @@ result_t Rktwebview_qt::fileDlg(rktwebview_t w, const char *title, const char *b
|
||||
|
||||
result_t Rktwebview_qt::rktChooseDir(rktwebview_t w, const char *title, const char *base_dir)
|
||||
{
|
||||
return fileDlg(w, title, base_dir, "", QFileDialog::Directory, QFileDialog::AcceptOpen, "choose-dir-ok", "choose-dir-cancel");
|
||||
Command c(COMMAND_CHOOSE_DIR);
|
||||
c.args.push_back(w);
|
||||
QString s_title(title);
|
||||
c.args.push_back(s_title);
|
||||
QString s_base_dir(base_dir);
|
||||
c.args.push_back(s_base_dir);
|
||||
|
||||
postCommand(&c);
|
||||
while(!c.done) {
|
||||
doEvents();
|
||||
}
|
||||
|
||||
bool r = c.result.toBool();
|
||||
return r ? result_t::oke : result_t::resize_failed;
|
||||
}
|
||||
|
||||
result_t Rktwebview_qt::rktFileOpen(rktwebview_t w, const char *title, const char *base_dir, const char *permitted_exts)
|
||||
{
|
||||
return fileDlg(w, title, base_dir, permitted_exts, QFileDialog::ExistingFile, QFileDialog::AcceptOpen, "file-open-ok", "file-open-cancel");
|
||||
Command c(COMMAND_FILE_OPEN);
|
||||
c.args.push_back(w);
|
||||
QString s_title(title);
|
||||
c.args.push_back(s_title);
|
||||
QString s_base_dir(base_dir);
|
||||
c.args.push_back(s_base_dir);
|
||||
QString s_pe(permitted_exts);
|
||||
c.args.push_back(s_pe);
|
||||
|
||||
postCommand(&c);
|
||||
while(!c.done) {
|
||||
doEvents();
|
||||
}
|
||||
|
||||
bool r = c.result.toBool();
|
||||
return r ? result_t::oke : result_t::resize_failed;
|
||||
}
|
||||
|
||||
result_t Rktwebview_qt::rktFileSave(rktwebview_t w, const char *title, const char *base_dir, const char *permitted_exts)
|
||||
{
|
||||
return fileDlg(w, title, base_dir, permitted_exts, QFileDialog::AnyFile, QFileDialog::AcceptSave, "file-save-ok", "file-save-cancel");
|
||||
Command c(COMMAND_FILE_SAVE);
|
||||
c.args.push_back(w);
|
||||
QString s_title(title);
|
||||
c.args.push_back(s_title);
|
||||
QString s_base_dir(base_dir);
|
||||
c.args.push_back(s_base_dir);
|
||||
QString s_pe(permitted_exts);
|
||||
c.args.push_back(s_pe);
|
||||
|
||||
postCommand(&c);
|
||||
while(!c.done) {
|
||||
doEvents();
|
||||
}
|
||||
|
||||
bool r = c.result.toBool();
|
||||
return r ? result_t::oke : result_t::resize_failed;
|
||||
}
|
||||
|
||||
result_t Rktwebview_qt::rktWindowSetTitle(rktwebview_t wv, const char *title)
|
||||
@@ -724,65 +789,82 @@ result_t Rktwebview_qt::rktWindowSetTitle(rktwebview_t wv, const char *title)
|
||||
return r ? result_t::oke : result_t::failed;
|
||||
}
|
||||
|
||||
result_t Rktwebview_qt::rktMessageBox(rktwebview_t w, const char *title, const char *message, const char *submessage, rkt_messagetype_t type)
|
||||
void Rktwebview_qt::msgBox(rktwebview_t w, const QString &title, const QString &message, const QString &submessage, rkt_messagetype_t type)
|
||||
{
|
||||
if (_views.contains(w)) {
|
||||
|
||||
WebviewWindow *win = _views[w];
|
||||
QMessageBox *msg = new QMessageBox(win);
|
||||
WebviewWindow *win = _views[w];
|
||||
QMessageBox *msg = new QMessageBox(win);
|
||||
|
||||
auto prepButton = [msg, w, this](QMessageBox::StandardButton b, QString event) {
|
||||
msg->addButton(b);
|
||||
QAbstractButton *btn = msg->button(b);
|
||||
QVariant v = QVariant::fromValue(msg);
|
||||
btn->setProperty("messagebox", v);
|
||||
btn->setProperty("event", event);
|
||||
btn->setProperty("rktwebview", w);
|
||||
connect(btn, &QAbstractButton::clicked, this, [this]() {
|
||||
QAbstractButton *btn = static_cast<QAbstractButton *>(sender());
|
||||
QMessageBox *mb = btn->property("messagebox").value<QMessageBox *>();
|
||||
rktwebview_t w = btn->property("rktwebview").toInt();
|
||||
auto prepButton = [msg, w, this](QMessageBox::StandardButton b, QString event) {
|
||||
msg->addButton(b);
|
||||
QAbstractButton *btn = msg->button(b);
|
||||
QVariant v = QVariant::fromValue(msg);
|
||||
btn->setProperty("messagebox", v);
|
||||
btn->setProperty("event", event);
|
||||
btn->setProperty("rktwebview", w);
|
||||
connect(btn, &QAbstractButton::clicked, this, [this]() {
|
||||
QAbstractButton *btn = static_cast<QAbstractButton *>(sender());
|
||||
QMessageBox *mb = btn->property("messagebox").value<QMessageBox *>();
|
||||
rktwebview_t w = btn->property("rktwebview").toInt();
|
||||
|
||||
EventContainer e(btn->property("event").toString());
|
||||
this->triggerEvent(w, e);
|
||||
EventContainer e(btn->property("event").toString());
|
||||
this->triggerEvent(w, e);
|
||||
|
||||
mb->close();
|
||||
});
|
||||
};
|
||||
mb->close();
|
||||
});
|
||||
};
|
||||
|
||||
msg->setWindowTitle(title);
|
||||
msg->setWindowTitle(title);
|
||||
|
||||
QString m = QString("<p>") + message + "</p>";
|
||||
m += QString::asprintf("<p><small>%s</small></p>", submessage);
|
||||
msg->setInformativeText(m);
|
||||
QString m = QString("<p>") + message + "</p>";
|
||||
m += QString::asprintf("<p><small>%s</small></p>", submessage.toUtf8().constData());
|
||||
msg->setInformativeText(m);
|
||||
|
||||
QMessageBox::Icon icn;
|
||||
QMessageBox::Icon icn;
|
||||
|
||||
if (type == rkt_messagetype_t::error) {
|
||||
icn = QMessageBox::Icon::Critical;
|
||||
prepButton(QMessageBox::StandardButton::Ok, "msgbox-ok");
|
||||
} else if (type == rkt_messagetype_t::warning) {
|
||||
icn = QMessageBox::Icon::Warning;
|
||||
prepButton(QMessageBox::StandardButton::Ok, "msgbox-ok");
|
||||
} else if (type == rkt_messagetype_t::yes_no || type == rkt_messagetype_t::oke_cancel) {
|
||||
icn = QMessageBox::Icon::Question;
|
||||
if (type == rkt_messagetype_t::yes_no) {
|
||||
prepButton(QMessageBox::StandardButton::No, "msgbox-no");
|
||||
prepButton(QMessageBox::StandardButton::Yes, "msgbox-yes");
|
||||
} else {
|
||||
prepButton(QMessageBox::StandardButton::Cancel, "msgbox-cancel");
|
||||
prepButton(QMessageBox::StandardButton::Ok, "msgbox-ok");
|
||||
}
|
||||
} else { // informatio
|
||||
icn = QMessageBox::Icon::Information;
|
||||
if (type == rkt_messagetype_t::error) {
|
||||
icn = QMessageBox::Icon::Critical;
|
||||
prepButton(QMessageBox::StandardButton::Ok, "msgbox-ok");
|
||||
} else if (type == rkt_messagetype_t::warning) {
|
||||
icn = QMessageBox::Icon::Warning;
|
||||
prepButton(QMessageBox::StandardButton::Ok, "msgbox-ok");
|
||||
} else if (type == rkt_messagetype_t::yes_no || type == rkt_messagetype_t::oke_cancel) {
|
||||
icn = QMessageBox::Icon::Question;
|
||||
if (type == rkt_messagetype_t::yes_no) {
|
||||
prepButton(QMessageBox::StandardButton::No, "msgbox-no");
|
||||
prepButton(QMessageBox::StandardButton::Yes, "msgbox-yes");
|
||||
} else {
|
||||
prepButton(QMessageBox::StandardButton::Cancel, "msgbox-cancel");
|
||||
prepButton(QMessageBox::StandardButton::Ok, "msgbox-ok");
|
||||
}
|
||||
msg->setIcon(icn);
|
||||
msg->show();
|
||||
return result_t::oke;
|
||||
} else {
|
||||
return result_t::failed;
|
||||
} else { // informatio
|
||||
icn = QMessageBox::Icon::Information;
|
||||
prepButton(QMessageBox::StandardButton::Ok, "msgbox-ok");
|
||||
}
|
||||
msg->setIcon(icn);
|
||||
msg->show();
|
||||
}
|
||||
|
||||
result_t Rktwebview_qt::rktMessageBox(rktwebview_t w, const char *title, const char *message, const char *submessage, rkt_messagetype_t type)
|
||||
{
|
||||
Command c(COMMAND_MESSAGE);
|
||||
c.args.push_back(w);
|
||||
QString s_title(title);
|
||||
c.args.push_back(s_title);
|
||||
QString s_msg(message);
|
||||
c.args.push_back(s_msg);
|
||||
QString s_submsg(submessage);
|
||||
c.args.push_back(s_submsg);
|
||||
c.args.push_back(static_cast<int>(type));
|
||||
|
||||
postCommand(&c);
|
||||
|
||||
while(!c.done) {
|
||||
doEvents();
|
||||
}
|
||||
|
||||
bool r = c.result.toBool();
|
||||
return r ? result_t::oke : result_t::failed;
|
||||
}
|
||||
|
||||
result_t Rktwebview_qt::doWindow(rktwebview_t w, int cmd, result_t on_error)
|
||||
|
||||
Reference in New Issue
Block a user