Browse Source

init config model

PHP-GTK3
yggverse 5 months ago
parent
commit
789db97319
  1. 355
      config.json
  2. 5
      src/Entity/App.php
  3. 4
      src/Entity/Tab/History.php
  4. 4
      src/Entity/Tab/Page.php
  5. 45
      src/Model/Config.php
  6. 24
      src/Model/File.php

355
config.json

@ -1,229 +1,226 @@
{ {
"app": "name":"Yoda",
"theme":"Default",
"database":
{ {
"name":"Yoda", "name":"database.sqlite",
"theme":"Default", "username":null,
"database": "password":null
},
"header":
{
"enabled":true,
"button":
{ {
"name":"database.sqlite", "close":true
"username":null, }
"password":null },
}, "width":640,
"header": "height":480,
"tab":
{
"page":
{ {
"enabled":true, "title":
"button":
{ {
"close":true "default":"New page",
} "width":
}, {
"width":640, "chars":32
"height":480, },
"tab": "ellipsize":
{ {
"page": "mode":3
},
"postfix":
{
"hostname":true
}
},
"redirect":
{ {
"title": "follow":
{ {
"default":"New page", "enabled":true,
"width": "max":5,
{ "code":
"chars":32 [
}, 30,
"ellipsize": 31
{ ]
"mode":3 }
}, },
"postfix": "resolver":
{ {
"hostname":true "enabled":true,
} "request":
{
"timeout":1,
"host":
[
"1.1.1.1",
"8.8.8.8"
],
"record":
[
"A",
"AAAA"
]
}, },
"redirect": "result":
{ {
"follow": "shuffle":false,
"cache":
{ {
"enabled":true, "timeout":3600
"max":5,
"code":
[
30,
31
]
} }
}
},
"history":
{
"memory":
{
"enabled":true
}, },
"resolver": "database":
{ {
"enabled":true, "enabled":true,
"request": "mode":
{ {
"timeout":1, "renew":true
"host":
[
"1.1.1.1",
"8.8.8.8"
],
"record":
[
"A",
"AAAA"
]
},
"result":
{
"shuffle":false,
"cache":
{
"timeout":3600
}
} }
}, }
"history": },
"progressbar":
{
"visible":true
},
"header":
{
"margin":8,
"button":
{ {
"memory": "home":
{ {
"enabled":true "visible":true,
"label":"Home",
"url":"yoda://welcome"
}, },
"database": "back":
{ {
"enabled":true, "visible":true,
"mode": "label":"Back"
{ },
"renew":true "forward":
} {
"visible":true,
"label":"Forward"
},
"base":
{
"visible":true,
"label":"Base"
},
"go":
{
"visible":true,
"label":"Go"
} }
}, },
"progressbar": "entry":
{ {
"visible":true "request":
},
"header":
{
"margin":8,
"button":
{ {
"home": "placeholder":"URL or any search term...",
{ "length":
"visible":true,
"label":"Home",
"url":"yoda://welcome"
},
"back":
{
"visible":true,
"label":"Back"
},
"forward":
{ {
"visible":true, "max":1024
"label":"Forward"
}, },
"base": "autocomplete":
{
"visible":true,
"label":"Base"
},
"go":
{
"visible":true,
"label":"Go"
}
},
"entry":
{
"request":
{ {
"placeholder":"URL or any search term...", "enabled":true,
"length": "inline":
{ {
"max":1024 "completion":true,
"selection":true
}, },
"autocomplete": "key":
{ {
"enabled":true, "length":1
"inline": },
{ "ignore":
"completion":true, {
"selection":true "keycode":
}, [
"key": 111,
{ 116
"length":1 ]
}, },
"ignore": "result":
{ {
"keycode": "limit":15
[
111,
116
]
},
"result":
{
"limit":15
}
} }
} }
} }
}, }
"body": },
{ "body":
"margin":8 {
}, "margin":8
"footer": },
"footer":
{
"margin":8,
"status":
{ {
"margin":8, "open":
"status":
{ {
"open": "complete":"{REQUEST_BASE_URL} | {TIME_C} | {RESPONSE_META} | {RESPONSE_LENGTH} bytes | {RESPONSE_SECONDS} seconds"
{
"complete":"{REQUEST_BASE_URL} | {TIME_C} | {RESPONSE_META} | {RESPONSE_LENGTH} bytes | {RESPONSE_SECONDS} seconds"
}
} }
} }
}
},
"history":
{
"enabled":true,
"label":"History",
"clean":
{
"timeout":null
}, },
"history": "time":
{ {
"enabled":true, "format":"c"
"label":"History", },
"clean": "header":
{ {
"timeout":null "margin":8,
}, "button":
"time":
{
"format":"c"
},
"header":
{ {
"margin":8, "open":
"button":
{ {
"open": "visible":true,
{ "label":"Open"
"visible":true, },
"label":"Open" "delete":
}, {
"delete": "visible":true,
{ "label":"Delete"
"visible":true,
"label":"Delete"
},
"search":
{
"visible":true,
"label":"Search"
}
}, },
"filter": "search":
{ {
"placeholder":"Search in history..." "visible":true,
"label":"Search"
} }
}, },
"body": "filter":
{ {
"margin":8 "placeholder":"Search in history..."
} }
},
"body":
{
"margin":8
} }
} }
} }

5
src/Entity/App.php

@ -6,6 +6,7 @@ namespace Yggverse\Yoda\Entity;
class App class App
{ {
public \Yggverse\Yoda\Model\Config $config;
public \Yggverse\Yoda\Model\Database $database; public \Yggverse\Yoda\Model\Database $database;
public \Yggverse\Yoda\Entity\Tab\History $history; public \Yggverse\Yoda\Entity\Tab\History $history;
@ -14,12 +15,10 @@ class App
public \GtkHeaderBar $header; public \GtkHeaderBar $header;
public \GtkNotebook $tabs; public \GtkNotebook $tabs;
public object $config;
public function __construct() public function __construct()
{ {
// Init config // Init config
$this->config = \Yggverse\Yoda\Model\File::getConfig()->app; // @TODO $this->config = new \Yggverse\Yoda\Model\Config;
// Init database // Init database
$this->database = new \Yggverse\Yoda\Model\Database( $this->database = new \Yggverse\Yoda\Model\Database(

4
src/Entity/Tab/History.php

@ -30,8 +30,8 @@ class History
// Init app // Init app
$this->app = $app; $this->app = $app;
// Init config // Init config namespace
$this->config = \Yggverse\Yoda\Model\File::getConfig()->app->tab->history; $this->config = $app->config->tab->history;
// Cleanup expired history // Cleanup expired history
if ($this->config->clean->timeout) if ($this->config->clean->timeout)

4
src/Entity/Tab/Page.php

@ -43,8 +43,8 @@ class Page
// Init app // Init app
$this->app = $app; $this->app = $app;
// Init config // Init config namespace
$this->config = \Yggverse\Yoda\Model\File::getConfig()->app->tab->page; $this->config = $app->config->tab->page;
// Init DNS memory // Init DNS memory
$this->dns = new \Yggverse\Yoda\Model\Memory; $this->dns = new \Yggverse\Yoda\Model\Memory;

45
src/Model/Config.php

@ -0,0 +1,45 @@
<?php
declare(strict_types=1);
namespace Yggverse\Yoda\Model;
class Config
{
public function __construct(
?string $filename = null
) {
if (empty($filename))
{
$filename = __DIR__ .
DIRECTORY_SEPARATOR . '..' .
DIRECTORY_SEPARATOR . '..' .
DIRECTORY_SEPARATOR . 'config.json';
}
if (!file_exists($filename))
{
throw new \Exception; // @TODO
}
if (!is_readable($filename))
{
throw new \Exception; // @TODO
}
if (!$data = file_get_contents($filename))
{
throw new \Exception; // @TODO
}
if (!$config = @json_decode($data))
{
throw new \Exception; // @TODO
}
foreach ($config as $key => $value)
{
$this->{$key} = $value; // @TODO
}
}
}

24
src/Model/File.php

@ -6,30 +6,6 @@ namespace Yggverse\Yoda\Model;
class File class File
{ {
public static function getConfig(): object
{
$filename = __DIR__ .
DIRECTORY_SEPARATOR . '..' .
DIRECTORY_SEPARATOR . '..' .
DIRECTORY_SEPARATOR . 'config.json';
if (file_exists($filename) && is_readable($filename))
{
$result = json_decode(
file_get_contents(
$filename
)
);
}
if (empty($result))
{
throw new \Exception(); // @TODO
}
return $result;
}
public static function getTheme(string $name): string public static function getTheme(string $name): string
{ {
$filename = __DIR__ . $filename = __DIR__ .

Loading…
Cancel
Save