Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions CustomRules.ruleset
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="New Rule Set" Description=" " ToolsVersion="16.0">
<Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
<Rule Id="CA1801" Action="Warning" />
<Rule Id="CA1804" Action="Warning" />
<Rule Id="CA1811" Action="Warning" />
<Rule Id="CA1812" Action="Warning" />
<Rule Id="CA1823" Action="Warning" />
</Rules>
<Rules AnalyzerId="Microsoft.CodeAnalysis.CSharp.Features" RuleNamespace="Microsoft.CodeAnalysis.CSharp.Features">
<Rule Id="IDE0011" Action="Info" />
<Rule Id="IDE0011WithoutSuggestion" Action="Info" />
<Rule Id="IDE0047" Action="None" />
<Rule Id="IDE0048" Action="Info" />
<Rule Id="IDE0048WithoutSuggestion" Action="Info" />
</Rules>
</RuleSet>
1 change: 1 addition & 0 deletions Installer/Setup.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ Name "${APPNAME} (${FILE_ARCHITECTURE})"

!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "Russian"
!insertmacro MUI_LANGUAGE "German"

Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
Expand Down
10 changes: 7 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
# WTManager
[![Build status](https://ci.appveyor.com/api/projects/status/g4fn787xjdqvokpw?svg=true)](https://ci.appveyor.com/project/segrived/wtmanager)
[![Build status](https://ci.appveyor.com/api/projects/status/8r2tta8r797rxf87?svg=true)](https://ci.appveyor.com/project/gschafra/wtmanager)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/2c77caeef89d4d84816fa320732c4ba5)](https://www.codacy.com/manual/gschafra/WTManager?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=gschafra/WTManager&amp;utm_campaign=Badge_Grade)

**This is an active fork of the great work of [@segrived](https://github.com/segrived)'s [WTManager](https://github.com/segrived/wtmanager) with some private modifiations/enhancements**

Windows tray manager. Manage your windows services with tray!

**NOTE: EARLY ALPHA VERSION**
**NOTE: ACCORDING TO [@segrived](https://github.com/segrived) STILL EARLY ALPHA VERSION, BUT I'VE GOT THIS RUNNING STABLE FOR YEARS NOW :wink:**

![Screenshot](http://i.imgur.com/3HA2DBB.png)

## Installation
You can get latest build [here](https://ci.appveyor.com/project/segrived/wtmanager/build/artifacts)
You can get latest build [here](https://ci.appveyor.com/project/gschafra/wtmanager/build/artifacts)

## License
Copyright (c) segrived 2015
Expand All @@ -21,6 +24,7 @@ The above copyright notice and this permission notice shall be included in all c
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

## Credits
- [@segrived](https://github.com/segrived) - of course :wink:
- [@conradoqg](https://github.com/conradoqg) - some useful improvements
- Menu icons from "[Elysium Icons Pack (by HazelDev)](https://www.iconfinder.com/iconsets/elysium-icons)"
- Tray and executable icon from "[One bit Pack (by Icojam)](https://www.iconfinder.com/iconsets/onebit)"
Expand Down
Binary file added WTManager.Resources/Images/dialog/apply.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
55 changes: 55 additions & 0 deletions WTManager.Resources/Locales/english.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
[Meta]
Code=en
Language=English
Author=Babaev Evgeniy

[Localization]
TrayMenu.ServiceEdit=Edit {serviceName}
TrayMenu.ServiceOpenDataDirectory=Open data directory…
TrayMenu.ServiceOpenInBrower=Open in browser…
TrayMenu.ServiceEditConfiguration=Edit configuration
TrayMenu.ServiceStart=Start service
TrayMenu.ServiceStop=Stop service
TrayMenu.ServiceRestart=Restart service
TrayMenu.ServiceGroup.Ungrouped=Ungrouped
TrayMenu.ServiceGroupStart=Start service group
TrayMenu.ServiceGroupStop=Stop service group
TrayMenu.ServiceGroupRestart=Restart service group
TrayMenu.ServiceGroupLogFiles=Log files
TrayMenu.ServiceGroupConfigFiles=Config files
TrayMenu.ServiceScheduler=Service scheduler
TrayMenu.SystemServiceManager=System service manager
TrayMenu.ProgramConfiguration=Program configuration
TrayMenu.AppExit=Exit
VisualItem.Configuration.ConfigEditorPath=Config editor path
VisualItem.Configuration.UseInternalLogViewer=Use internal log viewer
VisualItem.Configuration.LogViewerPath=Log viewer path
VisualItem.Configuration.Language=Language
VisualItem.Configuration.RunOnStart=Run WTManager on start
VisualItem.Configuration.MenuFont=Tray menu font
VisualItem.Configuration.MenuTitleFont=Tray menu title font
VisualItem.Configuration.ThemeName=Theme name
VisualItem.Configuration.ShowPopup=Show tray menu popups
VisualItem.Configuration.ShowMenuBeyoundTaskbar=Show menu beyound taskbar
VisualItem.Configuration.OpenTrayMenuOnLeftClick=Open tray menu on left click
VisualItem.Configuration.UseNestedServiceGroups=Use nested service groups in menu
VisualItem.Configuration.ShowServiceGroupOperations=Show service group operations in nested menu (experimental)
VisualItem.Configuration.Services=Services
VisualItem.Configuration.Tasks=Scheduled tasks
VisualItem.ServiceTask.TaskName=Task name
VisualItem.ServiceTask.ServiceName=Service name
VisualItem.ServiceTask.OperationType=Operation type
VisualItem.ServiceTask.ExecuteTime=Trigger execute time
VisualItem.Service.ServiceName=Service name
VisualItem.Service.DisplayName=Display name
VisualItem.Service.Group=Service group (optional)
VisualItem.Service.ConfigFiles=Config files
VisualItem.Service.LogFiles=Log files
VisualItem.Service.DataDirectory=Data directory
VisualItem.Service.BrowserUrl=Browser URL
DialogButtons.Ok=Ok
DialogButtons.Apply=Apply
DialogButtons.Cancel=Cancel
Enums.ServiceGroupOperationType.Start=Start
Enums.ServiceGroupOperationType.Stop=Stop
Enums.ServiceGroupOperationType.Restart=Restart
55 changes: 55 additions & 0 deletions WTManager.Resources/Locales/german.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
[Meta]
Code=de
Language=German
Author=G�nter Schafranek

[Localization]
TrayMenu.ServiceEdit={serviceName} bearbeiten
TrayMenu.ServiceOpenDataDirectory=Datenverzeichnis �ffnen�
TrayMenu.ServiceOpenInBrower=Im Browser �ffnen�
TrayMenu.ServiceEditConfiguration=Konfiguration bearbeiten
TrayMenu.ServiceStart=Dienst starten
TrayMenu.ServiceStop=Dienst beenden
TrayMenu.ServiceRestart=Dienst neu starten
TrayMenu.ServiceGroup.Ungrouped=Nicht gruppiert
TrayMenu.ServiceGroupStart=Dienste in Gruppe starten
TrayMenu.ServiceGroupStop=Dienste in Gruppe beeenden
TrayMenu.ServiceGroupRestart=Dienste in Gruppe neu starten
TrayMenu.ServiceGroupLogFiles=Log-Dateien
TrayMenu.ServiceGroupConfigFiles=Konfigurations-Dateien
TrayMenu.ServiceScheduler=Service scheduler
TrayMenu.SystemServiceManager=Verwaltung lokaler Dienste
TrayMenu.ProgramConfiguration=Programm-Konfiguration
TrayMenu.AppExit=Beenden
VisualItem.Configuration.ConfigEditorPath=Pfad zum Konfigurations-Editor
VisualItem.Configuration.UseInternalLogViewer=Internen Log-Viewer verwenden
VisualItem.Configuration.LogViewerPath=Pfad zum Log-Viewer
VisualItem.Configuration.Language=Sprache
VisualItem.Configuration.RunOnStart=WTManager automatisch starten
VisualItem.Configuration.MenuFont=Schriftart des Tray-Men�s
VisualItem.Configuration.MenuTitleFont=Schriftart des Tray-Men�-Titels
VisualItem.Configuration.ThemeName=Theme-Name
VisualItem.Configuration.ShowPopup=Tray-Men�-Popups anzeigen
VisualItem.Configuration.ShowMenuBeyoundTaskbar=Men� �ber die Taskleiste anzeigen
VisualItem.Configuration.OpenTrayMenuOnLeftClick=�ffnen Sie das Tray-Men� mit einem Linksklick
VisualItem.Configuration.UseNestedServiceGroups=Verschachtelte Dienstgruppen im Men� verwenden
VisualItem.Configuration.ShowServiceGroupOperations=Anzeigen von Servicegruppenoperationen im verschachtelten Men� (experimentell)
VisualItem.Configuration.Services=Dienste
VisualItem.Configuration.Tasks=Geplante Aufgaben
VisualItem.ServiceTask.TaskName=Aufgabenname
VisualItem.ServiceTask.ServiceName=Name des Dienstes
VisualItem.ServiceTask.OperationType=Betriebsart
VisualItem.ServiceTask.ExecuteTime=Ausf�hrungszeit
VisualItem.Service.ServiceName=Name des Dienstes
VisualItem.Service.DisplayName=Anzeigename
VisualItem.Service.Group=Dienst-Gruppe (optional)
VisualItem.Service.ConfigFiles=Konfigurationsdateien
VisualItem.Service.LogFiles=Log-Dateien
VisualItem.Service.DataDirectory=Datenverzeichnis
VisualItem.Service.BrowserUrl=Browser URL
DialogButtons.Ok=Ok
DialogButtons.Apply=Anwenden
DialogButtons.Cancel=Abbrechen
Enums.ServiceGroupOperationType.Start=Starten
Enums.ServiceGroupOperationType.Stop=Beenden
Enums.ServiceGroupOperationType.Restart=Neu starte
55 changes: 55 additions & 0 deletions WTManager.Resources/Locales/russian.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
[Meta]
Code=ru_RU
Language=Russian
Author=Babaev Evgeniy

[Localization]
TrayMenu.ServiceEdit=Edit {serviceName}
TrayMenu.ServiceOpenDataDirectory=Открыть папку с данными…
TrayMenu.ServiceOpenInBrower=Открыть в браузере…
TrayMenu.ServiceEditConfiguration=Редактировать конфигурацию
TrayMenu.ServiceStart=Запустить сервис
TrayMenu.ServiceStop=Остановить сервис
TrayMenu.ServiceRestart=Перезапустить сервис
TrayMenu.ServiceGroup.Ungrouped=Без группы
TrayMenu.ServiceGroupStart=Запустить группу сервисов
TrayMenu.ServiceGroupStop=Остановить группу сервисов
TrayMenu.ServiceGroupRestart=Перезапустить группу сервисов
TrayMenu.ServiceGroupLogFiles=Лог файлы
TrayMenu.ServiceGroupConfigFiles=Конфигурационные файлы
TrayMenu.ServiceScheduler=Планировщик сервисов
TrayMenu.SystemServiceManager=Системный менеджер сервисов
TrayMenu.ProgramConfiguration=Настройки программы
TrayMenu.AppExit=Выход
VisualItem.Configuration.ConfigEditorPath=Пусть к редактору конфигов
VisualItem.Configuration.UseInternalLogViewer=Использовать встроенный просмотрщик логов
VisualItem.Configuration.LogViewerPath=Пусть к просмотрщику логов
VisualItem.Configuration.Language=Язык
VisualItem.Configuration.RunOnStart=Запускать WTManager при запуске системы
VisualItem.Configuration.MenuFont=Шрифт меню трея
VisualItem.Configuration.MenuTitleFont=Шрифт заголовков меню трея
VisualItem.Configuration.ThemeName=Тема
VisualItem.Configuration.ShowPopup=Покащывать сообщения около трея
VisualItem.Configuration.ShowMenuBeyoundTaskbar=Показывать меню над панелью задач
VisualItem.Configuration.OpenTrayMenuOnLeftClick=Открывать меню по левому клику
VisualItem.Configuration.UseNestedServiceGroups=Использовать вложенные меню для групп
VisualItem.Configuration.ShowServiceGroupOperations=Показывать групповые операции во вложенных меню
VisualItem.Configuration.Services=Сервисы
VisualItem.Configuration.Tasks=Запланированные задачи
VisualItem.ServiceTask.TaskName=Название задачи
VisualItem.ServiceTask.ServiceName=Имя сервиса
VisualItem.ServiceTask.OperationType=Тип операции
VisualItem.ServiceTask.ExecuteTime=Время исполнения
VisualItem.Service.ServiceName=Сервис
VisualItem.Service.DisplayName=Оторбажаемое имя
VisualItem.Service.Group=Груупа сервиса (опционально)
VisualItem.Service.ConfigFiles=Конфиги
VisualItem.Service.LogFiles=Логи
VisualItem.Service.DataDirectory=Директория с данными
VisualItem.Service.BrowserUrl=URL браузера
DialogButtons.Ok=Ok
DialogButtons.Apply=Применить
DialogButtons.Cancel=Отменить
Enums.ServiceGroupOperationType.Start=Запуск
Enums.ServiceGroupOperationType.Stop=Остановка
Enums.ServiceGroupOperationType.Restart=Перезапуск
52 changes: 52 additions & 0 deletions WTManager.Resources/LocalizationManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
using System.Collections.Generic;
using IniParser.Model;
using IniParser.Parser;

namespace WtManager.Resources
{
public static class LocalizationManager
{
private static LocalizationItem _item;

public static readonly List<string> LocalesList = new List<string> { "english", "russian", "german" };

static LocalizationManager()
{
UpdateLocale("english");
}

public static void UpdateLocale(string locale)
{
var localization = ResourcesProcessor.GetLocalizationFile(locale);
_item = new LocalizationItem(localization);
}

public static string Get(string key, params string[] parameters)
{
try
{
return _item.GetValue(key) ?? key;
}
catch
{
return key;
}
}
}

public class LocalizationItem
{
private IniData _localizationData;

public LocalizationItem(string inputStream)
{
var parser = new IniDataParser();
this._localizationData = parser.Parse(inputStream);
}

public string GetValue(string key)
{
return this._localizationData["Localization"][key];
}
}
}
7 changes: 7 additions & 0 deletions WTManager.Resources/ResourcesHelper.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace WtManager.Resources
{
class ResourcesHelper
{

}
}
20 changes: 12 additions & 8 deletions WTManager.Resources/ResourcesProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
using System.IO;
using System.Reflection;

namespace WTManager.Resources
namespace WtManager.Resources
{
public static class ResourcesProcessor
{
private const string THEMES_DIRECTORY = "themes";

private static readonly Dictionary<string, object> ResourcesCache;

public static event Action ThemeChanged;
Expand Down Expand Up @@ -41,11 +43,8 @@ private static Stream GetResourceStream(string baseCategory, string resourceName
if (ThemeName != null)
resourceStream = GetThemeFileStream(baseCategory, resourceName);

if (resourceStream != null)
return resourceStream;

// fallback to default embedded resource
return GetEmbeddedFileStream(baseCategory, resourceName);
// fallback to default embedded resource if theme file is not exist
return resourceStream ?? GetEmbeddedFileStream(baseCategory, resourceName);
}

public static string GetThemesRootDirectory()
Expand All @@ -57,7 +56,7 @@ public static string GetThemesRootDirectory()
if (assemblyFolder == null)
return null;

return Path.Combine(assemblyFolder, "themes");
return Path.Combine(assemblyFolder, THEMES_DIRECTORY);
}

private static Stream GetThemeFileStream(string baseCategory, string resourceName)
Expand Down Expand Up @@ -86,7 +85,7 @@ private static Stream GetEmbeddedFileStream(string baseCategory, string resource
var assembly = Assembly.GetExecutingAssembly();
string defaultNamespace = assembly.GetName().Name;

return assembly.GetManifestResourceStream($"{defaultNamespace}.Resources.{baseCategory}.{resourceName}");
return assembly.GetManifestResourceStream($"{defaultNamespace}.{baseCategory}.{resourceName}");
}

private static T GetResource<T>(string resourceName, string baseCategory, Func<Stream, T> objectProducer)
Expand Down Expand Up @@ -126,6 +125,11 @@ public static Image GetImage(string imageName)
return GetResource(imageName + ".png", "Images", stream => new Bitmap(stream));
}

public static string GetLocalizationFile(string language)
{
return GetResource(language + ".ini", "Locales", stream => new StreamReader(stream).ReadToEnd());
}

public static IEnumerable<string> GetThemesList()
{
if (! Directory.Exists(GetThemesRootDirectory()))
Expand Down
Loading