mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-03-31 16:45:27 +00:00
implement identity name entry
This commit is contained in:
parent
ea674e64aa
commit
2192160077
1 changed files with 79 additions and 5 deletions
|
|
@ -7,6 +7,7 @@ namespace Yggverse\Yoda\Entity\Browser\Container\Page;
|
|||
use \Exception;
|
||||
use \GtkButtonsType;
|
||||
use \GtkDialogFlags;
|
||||
use \GtkEntry;
|
||||
use \GtkMessageDialog;
|
||||
use \GtkMessageType;
|
||||
use \GtkRadioButton;
|
||||
|
|
@ -24,15 +25,23 @@ class Auth
|
|||
// Dependencies
|
||||
public Page $page;
|
||||
|
||||
// Requirements
|
||||
public GtkEntry $name;
|
||||
|
||||
// Defaults
|
||||
public const DIALOG_DEFAULT_RESPONSE = GtkResponseType::CANCEL;
|
||||
public const DIALOG_FORMAT_SECONDARY_TEXT = 'Select identity';
|
||||
public const DIALOG_MESSAGE_FORMAT = 'Authorization';
|
||||
public const DIALOG_CONTENT_OPTION_LABEL_CREATE = 'Create new for this resource';
|
||||
public const DIALOG_CONTENT_OPTION_LABEL_RECORD = '#%d (no name)';
|
||||
public const DIALOG_CONTENT_OPTION_LABEL_IDENTITY_NAME = '#%d (%s)';
|
||||
public const DIALOG_CONTENT_OPTION_LABEL_IDENTITY_NAME_DEFAULT = '#%d (no name)';
|
||||
public const DIALOG_CONTENT_OPTION_MARGIN = 8;
|
||||
public const DIALOG_CONTENT_SPACING = 1;
|
||||
|
||||
public const DIALOG_CONTENT_OPTION_NAME_ALIGNMENT = 0.5;
|
||||
public const DIALOG_CONTENT_OPTION_NAME_MARGIN = 12;
|
||||
public const DIALOG_CONTENT_OPTION_NAME_PLACEHOLDER = 'Local name (optional)';
|
||||
|
||||
// Extras
|
||||
private array $_options = [];
|
||||
|
||||
|
|
@ -41,6 +50,29 @@ class Auth
|
|||
) {
|
||||
// Init dependencies
|
||||
$this->page = $page;
|
||||
|
||||
// Init requirements
|
||||
$this->name = new GtkEntry;
|
||||
|
||||
$this->name->set_alignment(
|
||||
$this::DIALOG_CONTENT_OPTION_NAME_ALIGNMENT
|
||||
);
|
||||
|
||||
$this->name->set_placeholder_text(
|
||||
_($this::DIALOG_CONTENT_OPTION_NAME_PLACEHOLDER)
|
||||
);
|
||||
|
||||
$this->name->set_margin_start(
|
||||
$this::DIALOG_CONTENT_OPTION_NAME_MARGIN
|
||||
);
|
||||
|
||||
$this->name->set_margin_end(
|
||||
$this::DIALOG_CONTENT_OPTION_NAME_MARGIN
|
||||
);
|
||||
|
||||
$this->name->set_margin_bottom(
|
||||
$this::DIALOG_CONTENT_OPTION_NAME_MARGIN
|
||||
);
|
||||
}
|
||||
|
||||
public function dialog(): bool
|
||||
|
|
@ -90,8 +122,12 @@ class Auth
|
|||
if ($identity = $this->page->container->browser->database->identity->get($auth->identity))
|
||||
{
|
||||
$this->_options[$identity->id] = $this->_option(
|
||||
$identity->name ? $identity->name : sprintf(
|
||||
_($this::DIALOG_CONTENT_OPTION_LABEL_RECORD),
|
||||
$identity->name ? sprintf(
|
||||
_($this::DIALOG_CONTENT_OPTION_LABEL_IDENTITY_NAME),
|
||||
$identity->id,
|
||||
$identity->name
|
||||
) : sprintf(
|
||||
_($this::DIALOG_CONTENT_OPTION_LABEL_IDENTITY_NAME_DEFAULT),
|
||||
$identity->id
|
||||
)
|
||||
);
|
||||
|
|
@ -103,11 +139,23 @@ class Auth
|
|||
}
|
||||
|
||||
// Build options list
|
||||
foreach ($this->_options as $option)
|
||||
foreach ($this->_options as $id => $option)
|
||||
{
|
||||
// Append option
|
||||
$content->add(
|
||||
$option
|
||||
);
|
||||
|
||||
// Append name entry after new identity option
|
||||
if (!$id)
|
||||
{
|
||||
$content->add(
|
||||
$this->name,
|
||||
true,
|
||||
true,
|
||||
0
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Render
|
||||
|
|
@ -145,7 +193,8 @@ class Auth
|
|||
$this->page->container->browser->database->auth->add(
|
||||
$this->page->container->browser->database->identity->add(
|
||||
$identity->crt(),
|
||||
$identity->key()
|
||||
$identity->key(),
|
||||
$this->name->get_text()
|
||||
),
|
||||
$this->page->navbar->request->getValue()
|
||||
);
|
||||
|
|
@ -193,6 +242,31 @@ class Auth
|
|||
$margin
|
||||
);
|
||||
|
||||
$option->connect(
|
||||
'toggled',
|
||||
function (
|
||||
GtkRadioButton $self
|
||||
) {
|
||||
// Detect active option
|
||||
foreach ($this->_options as $id => $option)
|
||||
{
|
||||
// Is new
|
||||
if (!$id)
|
||||
{
|
||||
if ($option->get_active())
|
||||
{
|
||||
$this->name->show();
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
$this->name->hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
return $option;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue