SAPTeam.CommonTK
1.0.3
Prefix Reserved
See the version list below for details.
dotnet add package SAPTeam.CommonTK --version 1.0.3
NuGet\Install-Package SAPTeam.CommonTK -Version 1.0.3
<PackageReference Include="SAPTeam.CommonTK" Version="1.0.3" />
paket add SAPTeam.CommonTK --version 1.0.3
#r "nuget: SAPTeam.CommonTK, 1.0.3"
// Install SAPTeam.CommonTK as a Cake Addin #addin nuget:?package=SAPTeam.CommonTK&version=1.0.3 // Install SAPTeam.CommonTK as a Cake Tool #tool nuget:?package=SAPTeam.CommonTK&version=1.0.3
CommonTK - All in One and Multi Purpose .NET Library
This library has many Features and also provides Interfaces can be used in CommonTK.Console
library and other .NET Application.
Installation
You can install this library with Package manager console.
SAPTeam.CommonTK
PM> Install-Package SAPTeam.CommonTK
Features
Contexts
Contexts is a key feature in this library. With contexts you can set a global situation and this change is visible across the program using Context.Current.HasContext<IContext>()
.
For using this feature you can implement a new class from IContext
interface and Context
base class, or use Contexts available in CommonTK.Console
library.
JsonWorker
and Config
JsonWorker
is a base class for doing Json-related actions. A best place to use Json file, is Application onfig.
Config
class do it simply Just by getting a file name and a Serializer
class.
This class gives you config data in Config.Prefs
property that you can make changes on it and save changes using Config.Write()
method.
This is the Simplest way to save your Application settings or other type of data!
public class Entries
{
public string UserName { get; set; }
public string Password { get; set; }
}
// Loads config.json, if it is not existing create it.
Config<Entries> config = new("config.json");
// Set new values.
config.Prefs.UserName = "admin";
config.Prefs.Password = "12345";
// Save config.json.
config.Write();
Status Providers
There is a set of Interfaces and methods to work with IStatusProvider
classes.
This feature intended for Interacting with users and must be implemented by Application for work in a specified way.
You can deal with statuses using static methods of Interact
class or directly with StatusProvider.Current
.
First you must Create and Assign a new instance of a class that implements IStatusProvider
using Interact.AssignStatus(IStatusProvider)
or:
StatusProvider.Current = new StatusProvider();
There is a variety types of Status Providers. All of that implements IStatusProvider
as root Interface.
IStatusProvider
This interface has a basic functionality. Just a Write(string)
and Clear()
method for writing and clearing text.
It is suitable for simple uses such as using a single label as Status Provider.
public class UIStatusProvider : IStatusProvider
{
private readonly Label status;
public UIStatusProvider(Label label)
{
status = label;
}
public void Clear()
{
status.Text = "";
}
public void Write(string message)
{
status.Text = message;
}
}
IProgressStatusProvider
This interface is intended to use when you need to show a message with progress bar.
It has two method Write(string, ProgressType)
and Increment(int)
for writing a message with progress bar and incrementing value of progress bar respectively.
also Classes that implement this interface can throw exception Write(string)
is called.
IMultiStatusBar
This interface intended for complicated usages. It is useful when you deal with a Control
that support item collections, such as StatusStrip
.
you must declare a method to manage and control multi item collections.
This is a code from my AndroCtrl project:
public class AppStatusProvider : IProgressStatusProvider, IMultiStatusProvider
{
readonly StatusStrip statusbar;
ToolStripProgressBar progressbar;
bool gc;
readonly Dictionary<string, (ToolStripLabel label, ToolStripProgressBar progressBar)> packets = new();
public AppStatusProvider(StatusStrip statusbar, bool garbageCollection = true)
{
this.statusbar = statusbar;
gc = garbageCollection;
}
public void Clear()
{
if (statusbar.Items.Count > 0)
{
foreach (var packet in packets)
{
if (packet.Value.progressBar != progressbar)
{
Clear(packet.Key);
}
}
if (progressbar != null)
{
throw new InvalidOperationException("Can't remove an unfinished progress bar.");
}
}
}
public void Clear(string message)
{
if (packets[message].progressBar == progressbar)
{
progressbar = null;
}
statusbar.Items.Remove(packets[message].label);
statusbar.Items.Remove(packets[message].progressBar);
packets.Remove(message);
}
public void Write(string message)
{
throw new NotImplementedException();
}
public void Write(string message, ProgressBarType type)
{
if (progressbar != null && type == ProgressBarType.Block)
{
throw new InvalidOperationException("Can't register more than one block progress bar.");
}
if (packets.ContainsKey(message))
{
throw new ArgumentException("Can't use a duplicated status message: ", message);
}
ToolStripLabel label = new(message);
statusbar.Items.Add(label);
switch (type)
{
case ProgressBarType.None:
throw new ArgumentException("type can't be None.");
case ProgressBarType.Wait:
ToolStripProgressBar loadingbar = new();
loadingbar.Style = ProgressBarStyle.Marquee;
statusbar.Items.Add(loadingbar);
packets[message] = (label, loadingbar);
break;
case ProgressBarType.Block:
progressbar = new();
statusbar.Items.Add(progressbar);
packets[message] = (label, progressbar);
break;
}
}
public void Increment(int value)
{
if (value == -1)
{
progressbar.PerformStep();
}
else
{
progressbar.Increment(value);
}
if (gc && progressbar.Value >= 100)
{
Clear(packets.Where((x) => x.Value.progressBar == progressbar).First().Key);
}
}
}
Timer
Starts a simple timer in separate thread and calls the callback
once or several times.
var timer = CommonTK.Timer.Set(5000. () => Environment.Exit(0), repeat: false);
Contribution
Feel free to grab the source, open issues or pull requests.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- Newtonsoft.Json (>= 13.0.3)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on SAPTeam.CommonTK:
Package | Downloads |
---|---|
SAPTeam.CommonTK.Console
All in One and Multi Purpose .NET Library for Professional Console actions. This library contains toolset of classes and methods that can be used by .NET Applications to perform Deep level Controls on Console. Key features of this library are: - Console Form: A way different way to Interact with your users. A Console User Interface! - Creating and Using console windows in Desktop Applications in The easiest way! - Colorize Your console text output! - Global Color Set. and more... For Getting started with this library and See more features you can visit the github page. |
|
SAPTeam.Kryptor.Client
This library has common utilities used by kryptor front-end programs. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
4.0.3 | 219 | 9/4/2024 |
4.0.2 | 136 | 8/29/2024 |
3.0.2 | 691 | 8/10/2024 |
3.0.1 | 432 | 3/18/2024 |
2.4.5 | 678 | 6/10/2023 |
2.4.1 | 312 | 5/1/2023 |
2.3.11 | 395 | 4/23/2023 |
2.3.9 | 240 | 4/23/2023 |
2.3.8 | 251 | 4/23/2023 |
2.3.7 | 251 | 4/23/2023 |
2.3.6 | 161 | 4/23/2023 |
2.3.5 | 167 | 4/23/2023 |
2.3.4 | 189 | 4/23/2023 |
2.3.3 | 643 | 4/14/2023 |
2.3.2 | 268 | 4/13/2023 |
2.2.20 | 174 | 4/13/2023 |
2.2.19 | 168 | 4/13/2023 |
2.2.18 | 158 | 4/13/2023 |
2.2.17 | 182 | 4/12/2023 |
2.2.16 | 167 | 4/12/2023 |
2.2.15 | 162 | 4/12/2023 |
2.2.14 | 172 | 4/11/2023 |
2.2.13 | 188 | 4/11/2023 |
2.2.12 | 175 | 4/11/2023 |
2.2.11 | 180 | 4/11/2023 |
2.2.9 | 194 | 4/11/2023 |
2.2.8 | 163 | 4/10/2023 |
2.2.7 | 167 | 4/10/2023 |
2.2.6 | 190 | 4/10/2023 |
2.2.4 | 194 | 4/10/2023 |
2.2.3 | 176 | 4/9/2023 |
2.2.2 | 201 | 4/9/2023 |
2.1.2 | 187 | 4/9/2023 |
2.1.1 | 206 | 4/6/2023 |
2.0.8 | 361 | 4/5/2023 |
2.0.7-alpha | 134 | 4/5/2023 |
2.0.6-alpha | 143 | 4/5/2023 |
2.0.5-alpha | 141 | 4/4/2023 |
2.0.4-alpha | 135 | 4/4/2023 |
2.0.3-alpha | 117 | 4/4/2023 |
2.0.2-alpha | 133 | 4/4/2023 |
2.0.1-alpha | 117 | 4/4/2023 |
1.3.6 | 219 | 4/3/2023 |
1.3.5 | 198 | 4/3/2023 |
1.3.3 | 190 | 4/3/2023 |
1.3.2 | 199 | 4/3/2023 |
1.2.6 | 291 | 4/3/2023 |
1.2.5 | 416 | 4/1/2023 |
1.2.4 | 372 | 4/1/2023 |
1.2.3 | 572 | 3/31/2023 |
1.2.2 | 197 | 3/31/2023 |
1.2.1 | 187 | 3/31/2023 |
1.2.0 | 730 | 3/30/2023 |
1.1.16 | 206 | 3/30/2023 |
1.1.14 | 211 | 3/29/2023 |
1.1.13 | 208 | 3/29/2023 |
1.1.12 | 186 | 3/29/2023 |
1.1.11 | 194 | 3/29/2023 |
1.1.10 | 202 | 3/29/2023 |
1.1.9 | 219 | 3/29/2023 |
1.1.8 | 488 | 3/28/2023 |
1.1.1 | 315 | 3/28/2023 |
1.0.3 | 273 | 3/26/2023 |