Merge branch 'main' of https://git.steelants.cz/JonatanRek/FakeDeck
This commit is contained in:
		
							
								
								
									
										54
									
								
								FakeDeckUI/FakeDeck/ButtonType/ProcessMacro.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								FakeDeckUI/FakeDeck/ButtonType/ProcessMacro.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Runtime.CompilerServices;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Text.Json;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows;
 | 
			
		||||
using static System.Text.Json.JsonElement;
 | 
			
		||||
 | 
			
		||||
namespace FakeDeck.ButtonType
 | 
			
		||||
{
 | 
			
		||||
    class ProcessMacro : Button
 | 
			
		||||
    {
 | 
			
		||||
        public static string getButton(string process, string arguments = "", string? icon = null, string? image = null)
 | 
			
		||||
        {
 | 
			
		||||
            Dictionary<string, string> parameters = new Dictionary<string, string>() { { "process", process } };
 | 
			
		||||
            if (!string.IsNullOrEmpty(arguments))
 | 
			
		||||
            {
 | 
			
		||||
                parameters.Add("arguments", arguments);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (!string.IsNullOrEmpty(icon) || !string.IsNullOrEmpty(image))
 | 
			
		||||
            {
 | 
			
		||||
                process = null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return getButtonHTML(icon, image, process, "button\\ProcessMacro", null, parameters);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static bool invokeAction(string process, string arguments = "")
 | 
			
		||||
        {
 | 
			
		||||
            if (!File.ReadAllText("./configuration.yaml").Contains(process))
 | 
			
		||||
            {
 | 
			
		||||
                Debug.WriteLine("not known process");
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (!File.ReadAllText("./configuration.yaml").Contains(arguments))
 | 
			
		||||
            {
 | 
			
		||||
                Debug.WriteLine("not known arguments");
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Process notePad = new Process();
 | 
			
		||||
            notePad.StartInfo.FileName = process;
 | 
			
		||||
            notePad.StartInfo.Arguments = arguments;
 | 
			
		||||
            notePad.Start();
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -20,6 +20,7 @@ namespace FakeDeck.Class
 | 
			
		||||
            AutoUpdater.ParseUpdateInfoEvent += AutoUpdaterOnParseUpdateInfoEvent;
 | 
			
		||||
            AutoUpdater.Synchronous = true;
 | 
			
		||||
            AutoUpdater.ShowRemindLaterButton = false;
 | 
			
		||||
            AutoUpdater.ClearAppDirectory = false;
 | 
			
		||||
            //AutoUpdater.ReportErrors = Debugger.IsAttached;
 | 
			
		||||
            AutoUpdater.HttpUserAgent = ("FakeDeck-v" + Assembly.GetExecutingAssembly().GetName().Version);
 | 
			
		||||
            AutoUpdater.Start("https://api.github.com/repos/GamerClassN7/FakeDeck/releases/latest");
 | 
			
		||||
 
 | 
			
		||||
@@ -160,9 +160,15 @@ namespace FakeDeck.Class
 | 
			
		||||
 | 
			
		||||
            string pageContent = "";
 | 
			
		||||
            foreach (JsonElement button in selectedPage.GetProperty("buttons").EnumerateArray())
 | 
			
		||||
            {
 | 
			
		||||
                try
 | 
			
		||||
                {
 | 
			
		||||
                    pageContent += AbstractionHelper.getButtonVisual(button);
 | 
			
		||||
                }
 | 
			
		||||
                catch (Exception ex) {
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (Directory.Exists(cachePath))
 | 
			
		||||
                Directory.CreateDirectory(cachePath);
 | 
			
		||||
 
 | 
			
		||||
@@ -156,6 +156,24 @@ pages:
 | 
			
		||||
 | 
			
		||||
  - page: media
 | 
			
		||||
    buttons: 
 | 
			
		||||
      - button: notepad
 | 
			
		||||
        function: ProcessMacro
 | 
			
		||||
        parameters:
 | 
			
		||||
          - name: process
 | 
			
		||||
            value: "notepad.exe"
 | 
			
		||||
          - name: image
 | 
			
		||||
            value: "https://www.club386.com/wp-content/uploads/2021/12/notepad-icon-696x632.jpg"
 | 
			
		||||
 | 
			
		||||
      - button: cmd
 | 
			
		||||
        function: ProcessMacro
 | 
			
		||||
        parameters:
 | 
			
		||||
          - name: process
 | 
			
		||||
            value: "cmd.exe"
 | 
			
		||||
          - name: arguments
 | 
			
		||||
            value: "/C ping google.com -t"
 | 
			
		||||
          - name: image
 | 
			
		||||
            value: "https://winaero.com/blog/wp-content/uploads/2019/06/WIndows-Terminal-icon.png"
 | 
			
		||||
 | 
			
		||||
      - button: mute
 | 
			
		||||
        function: MediaMacro
 | 
			
		||||
        parameters:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								README.md
									
									
									
									
									
								
							@@ -124,6 +124,16 @@ Just add desired macros to `configuration.yaml` and start the application, tahn
 | 
			
		||||
    - name: Key
 | 
			
		||||
      value: spacer
 | 
			
		||||
```
 | 
			
		||||
### Process Macro
 | 
			
		||||
```yaml
 | 
			
		||||
- button: cmd
 | 
			
		||||
  function: ProcessMacro
 | 
			
		||||
  parameters:
 | 
			
		||||
    - name: process
 | 
			
		||||
      value: "cmd.exe"
 | 
			
		||||
    - name: arguments #Optional Proces Arguments
 | 
			
		||||
      value: "/C ipconfig"
 | 
			
		||||
```
 | 
			
		||||
### Comon Macro Parameters
 | 
			
		||||
```yaml
 | 
			
		||||
...
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user