Tool for laying out displays on Linux
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

64 lines
1.2 KiB

<?php
namespace App;
use Symfony\Component\Yaml\Yaml;
class Configuration
{
protected $_screens;
protected $_layouts;
public function __construct()
{
$this->_screens = [];
$this->_layouts = [];
}
public function load(string $file): void
{
$config = Yaml::parseFile($file);
foreach ($config['screens'] as $screen_name=>$screen)
{
$this->_screens[$screen_name] = app()->make(\App\Screen::class, [
'outputs'=>is_array($screen['output']) ? $screen['output'] : [$screen['output']]
]);
}
foreach ($config['layouts'] as $layout=>$data)
{
$this->_layouts[$layout] = app()->make(\App\Layout::class, ['screens'=>$data['screens'], 'links'=>$data['links']]);
}
}
public function getScreen(string $screen): Screen
{
return $this->_screens[$screen];
}
public function getPrimaryScreen(): Screen
{
return $this->getScreen($this->getPrimaryScreenName());
}
public function getPrimaryScreenName(): string
{
foreach ($this->_screens as $name=>$screen)
{
if ($screen->isPrimary())
return $name;
}
}
public function getLayout(string $layout): Layout
{
return $this->_layouts[$layout];
}
public function getLayouts(): array
{
return $this->_layouts;
}
}