mirror of https://github.com/YGGverse/Yoda.git
yggverse
4 months ago
3 changed files with 182 additions and 91 deletions
@ -0,0 +1,96 @@
@@ -0,0 +1,96 @@
|
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
namespace Yggverse\Yoda\Entity\Browser\Container\Page\Auth\Option; |
||||
|
||||
use \GtkRadioButton; |
||||
|
||||
use \Yggverse\Yoda\Entity\Browser\Container\Page\Auth; |
||||
|
||||
use \Yggverse\Yoda\Model\Identity\Gemini; |
||||
|
||||
class Identity |
||||
{ |
||||
// GTK |
||||
public GtkRadioButton $gtk; |
||||
|
||||
// Dependencies |
||||
public Auth $auth; |
||||
|
||||
// Requirements |
||||
public ?Identity\Name $name = null; |
||||
|
||||
// Defaults |
||||
public const MARGIN = 12; |
||||
public const LABEL_DEFAULT = '#%d (%s)'; |
||||
public const LABEL_NO_NAME = '#%d (no name)'; |
||||
|
||||
public function __construct( |
||||
Auth $auth |
||||
) { |
||||
// Init dependencies |
||||
$this->auth = $auth; |
||||
|
||||
// Init GTK |
||||
$this->gtk = new GtkRadioButton; |
||||
|
||||
$this->gtk->set_margin_top( |
||||
$this::MARGIN |
||||
); |
||||
|
||||
$this->gtk->set_margin_start( |
||||
$this::MARGIN |
||||
); |
||||
|
||||
$this->gtk->set_margin_end( |
||||
$this::MARGIN |
||||
); |
||||
|
||||
$this->gtk->show(); |
||||
|
||||
// Connect events |
||||
$this->gtk->connect( |
||||
'toggled', |
||||
function(): void |
||||
{ |
||||
$this->auth->refresh(); |
||||
} |
||||
); |
||||
} |
||||
|
||||
public function setGroup( |
||||
Identity $identity |
||||
): void |
||||
{ |
||||
$this->gtk->join_group( |
||||
$identity->gtk |
||||
); |
||||
} |
||||
|
||||
public function setLabel( |
||||
int $id, |
||||
?string $label = null |
||||
): void |
||||
{ |
||||
$this->gtk->set_label( |
||||
$label ? sprintf( |
||||
$this::LABEL_DEFAULT, |
||||
$id, |
||||
$label |
||||
) : sprintf( |
||||
$this::LABEL_NO_NAME, |
||||
$id |
||||
) |
||||
); |
||||
} |
||||
|
||||
public function setName( |
||||
string $label |
||||
): void |
||||
{ |
||||
$this->name = new Identity\Name( |
||||
$this |
||||
); |
||||
} |
||||
} |
@ -0,0 +1,53 @@
@@ -0,0 +1,53 @@
|
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
namespace Yggverse\Yoda\Entity\Browser\Container\Page\Auth\Option\Identity; |
||||
|
||||
use \GtkEntry; |
||||
|
||||
class Name |
||||
{ |
||||
// GTK |
||||
public GtkEntry $gtk; |
||||
|
||||
// Dependencies |
||||
public Identity $identity; |
||||
|
||||
// Defaults |
||||
public const ALIGNMENT = 0.5; |
||||
public const MARGIN = 8; |
||||
public const PLACEHOLDER = 'Local name (optional)'; |
||||
|
||||
public function __construct( |
||||
Identity $identity |
||||
) { |
||||
// Init dependencies |
||||
$this->identity = $identity; |
||||
|
||||
// Init GTK |
||||
$this->gtk = new GtkEntry; |
||||
|
||||
$this->_name->set_alignment( |
||||
$this::ALIGNMENT |
||||
); |
||||
|
||||
$this->_name->set_placeholder_text( |
||||
_($this::PLACEHOLDER) |
||||
); |
||||
|
||||
$this->_name->set_margin_start( |
||||
$this::MARGIN |
||||
); |
||||
|
||||
$this->_name->set_margin_end( |
||||
$this::MARGIN |
||||
); |
||||
|
||||
$this->_name->set_margin_bottom( |
||||
$this::MARGIN |
||||
); |
||||
|
||||
$this->gtk->show(); |
||||
} |
||||
} |
Loading…
Reference in new issue