mirror of https://github.com/YGGverse/Yoda.git
yggverse
4 months ago
2 changed files with 81 additions and 1 deletions
@ -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