diff --git a/Module.cs b/Module.cs index 1618fa38cc439ad351d3150f959974142ac930b2..ca8de8fe12136fdd3a02082c11bf5dda3ae63595 100644 --- a/Module.cs +++ b/Module.cs @@ -102,7 +102,7 @@ class GlobalModuleResource interface Module { IEnumerable<Element> Get(); - void Init(StatusBar _bar, ConfigSection section); + void Init(ModuleParent _bar, ConfigSection section); } @@ -111,7 +111,7 @@ class ModuleConstant: Module { string text; Color color; - public void Init(StatusBar _bar, ConfigSection section) + public void Init(ModuleParent _bar, ConfigSection section) { text = section.Mandatory("text"); color = section?["color"]?.AsColor() ?? System.Drawing.ColorTranslator.FromHtml("white"); @@ -130,7 +130,7 @@ class ModuleFile: Module InnerStatusBar ifNotFound; InnerStatusBar ifReadError; Parser parser; - public void Init(StatusBar _bar, ConfigSection section) + public void Init(ModuleParent _bar, ConfigSection section) { path = section.Mandatory("path").AsPath(); ifNotFound = new InnerStatusBar(_bar, section.Optional("not_found_handler")?.AsConfig() ?? @@ -173,7 +173,7 @@ text = ERR abstract class ModuleSourceThreadAndParser: Module { - protected StatusBar bar; + protected ModuleParent bar; protected string data; protected long dataTick; Thread inputThread; @@ -183,7 +183,7 @@ abstract class ModuleSourceThreadAndParser: Module int? maxOld_ms; int? showOld_ms; protected abstract void inputThreadFunc(); - public virtual void Init(StatusBar _bar, ConfigSection section) + public virtual void Init(ModuleParent _bar, ConfigSection section) { bar = _bar; ifNoData = new InnerStatusBar(_bar, section.Optional("no_data_handler")?.AsConfig() ?? @@ -235,7 +235,7 @@ abstract class ModuleSourceThreadAndParser: Module abstract class ModuleAbstractPipe: ModuleSourceThreadAndParser { int msgSeparator; - public override void Init(StatusBar _bar, ConfigSection section) + public override void Init(ModuleParent _bar, ConfigSection section) { msgSeparator = section.Optional("separator")?.AsInt() ?? 0; base.Init(_bar, section); @@ -279,7 +279,7 @@ abstract class ModuleAbstractPipe: ModuleSourceThreadAndParser class ModulePipe: ModuleAbstractPipe { string path; - public override void Init(StatusBar _bar, ConfigSection section) + public override void Init(ModuleParent _bar, ConfigSection section) { path = section.Mandatory("path").AsPath(); base.Init(_bar, section); @@ -314,7 +314,7 @@ class ModuleExec: ModuleAbstractPipe string arguments; Process process; string stdinString; - public override void Init(StatusBar _bar, ConfigSection section) + public override void Init(ModuleParent _bar, ConfigSection section) { programName = section.Mandatory("program").AsPath(); stdinString = section.Optional("stdin")?.AsString() ?? ""; @@ -346,7 +346,7 @@ class ModuleHttp: ModuleSourceThreadAndParser InnerStatusBar ifReadError; int period_ms; int timeout_ms; - public override void Init(StatusBar _bar, ConfigSection section) + public override void Init(ModuleParent _bar, ConfigSection section) { url = section.Mandatory("url").AsString(); ifReadError = new InnerStatusBar(_bar, section.Optional("error_handler")?.AsConfig() ?? @@ -493,7 +493,7 @@ class ModuleI3Status: Module } } } - public void Init(StatusBar _bar, ConfigSection section) + public void Init(ModuleParent _bar, ConfigSection section) { name = section["name"]; configuration = section.Optional("config")?.AsString(); @@ -517,12 +517,12 @@ class ModuleI3Status: Module [ModuleName("time")] class ModuleTime: Module { - StatusBar bar; + ModuleParent bar; string format; string shortFormat; bool refresh; int round_ms; - public void Init(StatusBar _bar, ConfigSection section) + public void Init(ModuleParent _bar, ConfigSection section) { bar = _bar; format = section.Optional("format")?.AsString() ?? "yyyy-MM-dd HH:mm:ss"; @@ -559,7 +559,7 @@ class ModuleBattery: Module int energy ); Queue<HistoryElement> history = new(); - public void Init(StatusBar _bar, ConfigSection section) + public void Init(ModuleParent _bar, ConfigSection section) { string instance = section.Optional("instance")?.AsString() ?? "BAT1"; path = section.Optional("path")?.AsPath() ?? $"/sys/class/power_supply/{instance}/uevent"; diff --git a/Parsers.cs b/Parsers.cs index e8eebbaf168be091a8437bd8772064db432120cc..7f674c47f949f0f20cdeeefd4fa4e708c761543d 100644 --- a/Parsers.cs +++ b/Parsers.cs @@ -96,7 +96,7 @@ class ParserGetter: GlobalModuleResource interface Parser { IEnumerable<Element> Parse(string s); - void Init(StatusBar _bar, Module _module, ConfigSection section); + void Init(ModuleParent _bar, Module _module, ConfigSection section); } #nullable disable @@ -105,7 +105,7 @@ interface Parser class ParserText: Parser { Color color; - public void Init(StatusBar _bar, Module _module, ConfigSection section) + public void Init(ModuleParent _bar, Module _module, ConfigSection section) { color = section.Optional("color")?.AsColor() ?? System.Drawing.ColorTranslator.FromHtml("white"); } @@ -119,7 +119,7 @@ class ParserText: Parser [ParserName("osdd_last")] class ParserOsddLast: Parser { - public void Init(StatusBar _bar, Module _module, ConfigSection section) + public void Init(ModuleParent _bar, Module _module, ConfigSection section) { } public IEnumerable<Element> Parse(string data) @@ -148,8 +148,8 @@ class ParserOsddLast: Parser [ParserName("checkmail_status")] class ParserCheckmailLog: Parser { - StatusBar bar; - public void Init(StatusBar _bar, Module _module, ConfigSection section) + ModuleParent bar; + public void Init(ModuleParent _bar, Module _module, ConfigSection section) { bar = _bar; } @@ -192,7 +192,7 @@ class ParserCheckmailLog: Parser [ParserName("offlineimap_status")] class ParserOfflineimapLog: Parser { - public void Init(StatusBar _bar, Module _module, ConfigSection section) + public void Init(ModuleParent _bar, Module _module, ConfigSection section) { } public IEnumerable<Element> Parse(string data) @@ -217,7 +217,7 @@ class ParserOfflineimapLog: Parser [ParserName("i3")] class ParserI3: Parser { - public void Init(StatusBar _bar, Module _module, ConfigSection section){} + public void Init(ModuleParent _bar, Module _module, ConfigSection section){} static Element parseElement(JsonNode _json) { var json = _json.AsObject(); @@ -268,7 +268,7 @@ class ParserI3: Parser class ParserICESpeed: Parser { #pragma warning disable 8602 - public void Init(StatusBar _bar, Module _module, ConfigSection section) + public void Init(ModuleParent _bar, Module _module, ConfigSection section) { } public IEnumerable<Element> Parse(string data) @@ -291,7 +291,7 @@ class ParserICESpeed: Parser class ParserICENextStop: Parser { #pragma warning disable 8602 - public void Init(StatusBar _bar, Module _module, ConfigSection section) + public void Init(ModuleParent _bar, Module _module, ConfigSection section) { } public IEnumerable<Element> Parse(string data) diff --git a/Program.cs b/Program.cs index 0ae3803ad8618850ee7ac03a60a5ad01c121395b..dbf0c2788807476328557c791bf53f3d8f9848db 100644 --- a/Program.cs +++ b/Program.cs @@ -118,7 +118,13 @@ record Element( ); -abstract class StatusBar +interface ModuleParent +{ + public abstract void Schedule(int in_ms); + public abstract T GetGlobal<T>() where T: GlobalModuleResource, new(); +} + +abstract class StatusBar: ModuleParent { List<Module> modules = new(); protected void parseConfigFile(FileInfo configFile) @@ -171,8 +177,8 @@ abstract class StatusBar class InnerStatusBar: StatusBar { - StatusBar parrent; - public InnerStatusBar(StatusBar _parrent, ConfigParser p) + ModuleParent parrent; + public InnerStatusBar(ModuleParent _parrent, ConfigParser p) { parrent = _parrent; parseConfig(p);