mirror of https://github.com/YGGverse/Yoda.git
yggverse
5 months ago
2 changed files with 81 additions and 1 deletions
@ -0,0 +1,71 @@
@@ -0,0 +1,71 @@
|
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
namespace Yggverse\Yoda\Entity\Browser\Menu\File; |
||||
|
||||
class Save |
||||
{ |
||||
public \GtkMenuItem $gtk; |
||||
|
||||
// Dependencies |
||||
public \Yggverse\Yoda\Entity\Browser\Menu\File $file; |
||||
|
||||
// Defaults |
||||
private string $_label = 'Save As..'; |
||||
|
||||
public function __construct( |
||||
\Yggverse\Yoda\Entity\Browser\Menu\File $file |
||||
) { |
||||
// Init dependencies |
||||
$this->file = $file; |
||||
|
||||
// Init menu item |
||||
$this->gtk = \GtkMenuItem::new_with_label( |
||||
$this->_label |
||||
); |
||||
|
||||
// Render |
||||
$this->gtk->show(); |
||||
|
||||
// Init events |
||||
$this->gtk->connect( |
||||
'activate', |
||||
function() |
||||
{ |
||||
$dialog = new \GtkFileChooserDialog( |
||||
'Save to file', |
||||
$this->file->menu->browser->gtk, |
||||
\GtkFileChooserAction::SAVE, |
||||
[ |
||||
'Cancel', |
||||
\GtkResponseType::CANCEL, |
||||
'Save', |
||||
\GtkResponseType::APPLY |
||||
] |
||||
); |
||||
|
||||
if ($home = getenv('HOME')) // @TODO keep last path |
||||
{ |
||||
$dialog->set_current_folder( |
||||
$home |
||||
); |
||||
} |
||||
|
||||
$dialog->set_create_folders( |
||||
true |
||||
); |
||||
|
||||
if (\GtkResponseType::APPLY == $dialog->run()) |
||||
{ |
||||
file_put_contents( |
||||
$dialog->get_filename(), |
||||
'' // @TODO get active tab content |
||||
); |
||||
} |
||||
|
||||
$dialog->destroy(); |
||||
} |
||||
); |
||||
} |
||||
} |
Loading…
Reference in new issue