$result = $gtk->alert(" !"); var_dump($result);
SOURCES = $(wildcard src/*.cpp)
class GtkPhpPreviewWindow { private: Gtk::Window *mainWindow = nullptr; // protected: int statusUpload = 0; // upload int statusCancel = 0; // cancel public: std::string preview(char *fileSrc); // void uploadClick(); // callback void cancelClick(); std::string getStatusUpload(); // };
/** * run preview window */ std::string GtkPhpPreviewWindow::preview(char *fileSrc) { int argc = 0; char **argv = NULL; auto app = Gtk::Application::create(argc, argv, "org.gtkmm.gtkphp7"); auto refBuilder = Gtk::Builder::create(); try { refBuilder->add_from_file("picview.glade"); } catch (const Glib::FileError &ex) { std::cerr << "FileError: " << ex.what() << std::endl; } catch (const Gtk::BuilderError &ex) { std::cerr << "BuilderError: " << ex.what() << std::endl; } refBuilder->get_widget("window1",mainWindow); Gtk::Image *image = nullptr; refBuilder->get_widget("preview", image); Gtk::Button *buttonUpload = nullptr; refBuilder->get_widget("upload", buttonUpload); buttonUpload->signal_clicked().connect( sigc::mem_fun(*this, &GtkPhpPreviewWindow::uploadClick) ); Gtk::Button *buttonCancel = nullptr; refBuilder->get_widget("cancel", buttonCancel); buttonCancel->signal_clicked().connect( sigc::mem_fun(*this, &GtkPhpPreviewWindow::cancelClick) ); image->set(fileSrc); app->run(*mainWindow); return getStatusUpload(); }
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.gtkphp7"); auto refBuilder = Gtk::Builder::create(); refBuilder->add_from_file("picview.glade");
Gtk::Button *buttonCancel = nullptr; refBuilder->get_widget("cancel", buttonCancel); // buttonCancel->signal_clicked().connect( sigc::mem_fun(*this, &GtkPhpPreviewWindow::cancelClick) // );
/** * callback cancel button */ void GtkPhpPreviewWindow::cancelClick() { statusCancel = 1; delete mainWindow; }
app->run(*mainWindow);
/** * get status upload * @return */ std::string GtkPhpPreviewWindow::getStatusUpload() { if (statusUpload == 1) { return "upload"; } else { return "cancel"; } }
COMPILER = g++ -g
$ gdb php $ /.. gdb ../ (gdb) run ./test.php # $ .... coredump (gdb) bt # backtrace
#!/usr/bin/php <?php require_once('classis/autoload.php'); class screenShoter { protected $_nameScreenshot = null; protected $_config = null; protected $_gtk = null; public function __construct() { $this->_gtk = new GtkPhp(); $request = new Request(); if(isset($argv[1]) && $argv[1] == '--getToken') { echo $request->getOauthLink();die; } $home = $_SERVER['HOME']; $this->_config = include($home . '/.config/scrphp/config.php'); $this->_nameScreenshot = date('Y_m_d_G_i_s_') . 'screen.png'; $this->scrot(); } public function scrot() { $this->_gtk->alert(", Ok , "); system('scrot -s /tmp/'.$this->_nameScreenshot); $resultPrev = $this->_gtk->preview('/tmp/'.$this->_nameScreenshot); if($resultPrev == 'upload') { $this->upload(); } else { $this->scrot(); } } public function upload() { $request = new Request(); $result = $request ->setToken($this->_config['token']) ->setFileNameOnDisk($this->_nameScreenshot) ->setPathToFile('/tmp/'.$this->_nameScreenshot) ->upload() ->publicateFile(); $url = $result['public_url']; $this->_gtk->alert(" :".$url); } } new screenShoter();
1. gtkPHP7
2. srcphp screenshot
1. gtkmm3
2. gtk3
3. glade
Source: https://habr.com/ru/post/311746/
All Articles