Giter Club home page Giter Club logo

r7.webmate's Introduction

About R7.Webmate

R7.Webmate is a desktop productivity toolbox.

The main project goal is to provide desktop helper app hosting increasing number of simple tools. It's centered around text processing, compact UI and "single click - multiple results" behaviour.

Components

  • Text cleaner
  • HTML table markup cleaner
  • Text case changer
  • GUID/UUID generator
  • Hex string to text decoder

Tech

  • Mono.Xwt for cross-platform UI.
  • FontAwesome for icons.
  • NGettext for i18n.
  • YamlDotNet for configs.
  • NLog for logging.

Supported platforms

  • Windows
  • Linux (Unix)

OSX suppport is possible, but not tested in any way.

Licenses

Consider it a program, not product - and feel free to tweak and extend as you need!

r7.webmate's People

Contributors

roman-yagodin avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar

r7.webmate's Issues

External tools

Users should be able to run external (platform-specific) local applications and open external services in a browser. Each app/service could be linked to the one or many features. Users should be able to extend/modify list of apps/services. Some apps/services could be marked as favorites for easy access (e.g. via buttons on the side panel, others - via menu or dropdown). Program should be able to detect which local apps are available. Program should be able to collect usage frequency for the tools.

Examples:

  • Character map applications.
  • Text cleaners.
  • Markup validators.
  • SEO tools.
  • Password generators and managers.

Hex to text converter feature

Use case - copy string representation of T-SQL varbinary (e.g. 0x3C3F786D6C...) and convert to text in different encodings (UTF-8, Windows-1251, Windows-1252, etc.) Would be useful in cases then varbinary contains plain text, XML, JSON, etc.

Add support for optional "0x" prefix.

Windows port

WPF Backend lacks number of features:

  • It cannot load SVG images.
    I think we should convert icons we use to PNG on build (e.g. with inkscape -z -e test.png test.svg), or implement SVG loading via external library.
  • It doesn't have StatusIcon implementation.
    Could be simulated with taskbar - minimize on close, and close app via Exit command in the main menu. Update: cannot minimize window via Xwt, as its look like a window manager responsibility.

Can expect number of issues with clipboard.

Also, assemblies for supported backends should not be referenced in the project file directly, but we still need to copy required files into output directory on build - see #2, #5.

Backend assemblies not copied to build output on Windows

It is better to use Visual Studio Code than Visual Studio to work with the project, because in Visual Studio the project is compiled but cannot run.

Для работы с проектом лучше использовать Visual Studio Code чем Visual Studio, так как в Visual Studio проект компилируется, но не может запуститься.

Separate apps for status icon

Due to incomplete (in GTK/GTK3 backends) and absent (WPF backend) implementation of status icon, it would be better to have separate projects for status icons apps (like R7.Webmater.StatusIcon.Gtk3, R7.Webmater.StatusIcon.WinForms)

Alternatively, does it really better to have icon in tray area instead of taskbar?

Explore: Freedesktop specification of desktop actions: https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#extra-actions

Example (from VSCode desktop file):

[Desktop Action new-empty-window]
Name=New Empty Window
Exec=/usr/share/code/code --no-sandbox --new-window %F
Icon=/usr/share/pixmaps/com.visualstudio.code.png

Related issues: #16

External tools feature

Separate tab for external tools, filtered by local platform / web, installed state, category, etc.

Cannot use WPF backend on Windows due to broken ScrollView

2021-09-01 17:43:23.7680|ERROR|R7.Webmate.Xwt.Program|System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.TypeInitializationException: Инициализатор типа "Xwt.WPFBackend.ScrollViewBackend" выдал исключение. ---> System.IO.IOException: Не удается найти ресурс "xwt.wpfbackend/scrollview.xaml".
   в MS.Internal.AppModel.ResourcePart.GetStreamCore(FileMode mode, FileAccess access)
   в System.IO.Packaging.PackagePart.GetStream(FileMode mode, FileAccess access)
   в System.IO.Packaging.PackagePart.GetStream()
   в System.Windows.Application.GetResourceStream(Uri uriResource)
   в Xwt.WPFBackend.ScrollViewBackend..cctor()
   --- Конец трассировки внутреннего стека исключений ---
   в Xwt.WPFBackend.ScrollViewBackend..ctor()
   --- Конец трассировки внутреннего стека исключений ---
   в System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   в System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   в System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   в System.Activator.CreateInstance(Type type, Boolean nonPublic)
   в System.Activator.CreateInstance(Type type)
   в Xwt.Backends.ToolkitEngineBackend.CreateBackendForFrontend(Type frontendType)
   в Xwt.Backends.BackendHost.OnCreateBackend()
   в Xwt.Backends.BackendHost.LoadBackend()
   в Xwt.Backends.BackendHost.get_Backend()
   в Xwt.Backends.BackendHost`2.get_Backend()
   в Xwt.ScrollView.get_Backend()
   в Xwt.ScrollView.set_HorizontalScrollPolicy(ScrollPolicy value)
   в Xwt.ScrollView..ctor()
   в Xwt.ScrollView..ctor(Widget child)
   в R7.Webmate.Xwt.CaseChangerWidget..ctor() в C:\Projects\R7.Webmate\R7.Webmate.Xwt\Text\CaseChangerWidget.cs:строка 44
   в R7.Webmate.Xwt.MainWindow..ctor() в C:\Projects\R7.Webmate\R7.Webmate.Xwt\MainWindow.cs:строка 36
   в R7.Webmate.Xwt.Program.Main(String[] args) в C:\Projects\R7.Webmate\R7.Webmate.Xwt\Program.cs:строка 52

Could possibly downgrade to 0.2.234 (last known working version) or switch to Gtk2 backend.

Tracking for v1.0

  • TextCleaner
  • TableCleaner
  • HtmlToHtml processing should properly process text inside tags and text in selected attributes (alt, title), remove physical markup like FONT, scripts and styles. Maybe we need separate CleanupHtml processing?
  • Allow to copy HTML from results.
  • Allow to load source text from file.
  • Windows port #1

Tests, more tests.

Clipboard watcher

Clipboard watcher updates paste buttons state depending on the content of the clipboard, so user will not need to guess which button to click.

Skeleton implementation:

void InitTimer ()
{
    var timer = new ThreadStart (() => {
        while (true) {
            Thread.Sleep (500);

            if (Clipboard.ContainsData (TransferDataType.Html)) {
                Application.Invoke (() => {
		// TODO: Check widget state before change it
	    TextCleanerWidget.btnPasteHtml.Sensitive = true;
                });

                // Console.WriteLine ("Clipboard contains HTML.");
            }
            else {
                Application.Invoke (() => {
		// TODO: Check widget state before change it
                    TextCleanerWidget.btnPasteHtml.Sensitive = false;
                });
            }

            if (Clipboard.ContainsData (TransferDataType.Text)) {
                // Console.WriteLine ("Clipboard contains text.");
            }
        }
    });

    var timerThread = new Thread (timer);
    timerThread.Start ();
}

Progress bar

This simple UI improvement could require some kind of async processing implementation.

Archive extractor feature (Linux)

  • Extract ZIP archives containing filenames with cyrillic encoding
  • Extract archives containing filenames which is too long for Linux filesystems

Don't reference Xwt backend directly

Assemblies for supported backends should not be referenced in the project file directly, but we still need to copy required files into output directory on build.

Related issues: #1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.