diff --git a/app/Helpers/ToastForm.cs b/app/Helpers/ToastForm.cs
index a96cc509..e6d298e9 100644
--- a/app/Helpers/ToastForm.cs
+++ b/app/Helpers/ToastForm.cs
@@ -1,4 +1,5 @@
-using System.Drawing.Drawing2D;
+using System.Diagnostics;
+using System.Drawing.Drawing2D;
namespace GHelper.Helpers
{
@@ -134,6 +135,16 @@ namespace GHelper.Helpers
}
+ public static void ReadText(string text)
+ {
+ ProcessStartInfo startInfo = new ProcessStartInfo();
+ startInfo.FileName = "PowerShell.exe";
+ startInfo.Arguments = $"-Command \"Add-Type -AssemblyName System.Speech; (New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak('{text}')\"";
+ startInfo.CreateNoWindow = true;
+ Process.Start(startInfo);
+ }
+
+
public void RunToast(string text, ToastIcon? icon = null)
{
@@ -156,6 +167,14 @@ namespace GHelper.Helpers
Show();
timer.Start();
+
+ //if (AppConfig.Is("narrator")) ReadText(text);
+
+ Program.settingsForm.AccessibilityObject.RaiseAutomationNotification(
+ System.Windows.Forms.Automation.AutomationNotificationKind.ActionCompleted,
+ System.Windows.Forms.Automation.AutomationNotificationProcessing.MostRecent,
+ text);
+
});
}
diff --git a/app/Program.cs b/app/Program.cs
index c315888b..ecf1d2e7 100644
--- a/app/Program.cs
+++ b/app/Program.cs
@@ -266,7 +266,7 @@ namespace GHelper
{
// If helper window is not on top, this just focuses on the app again
// Pressing the ghelper button again will hide the app
- if (checkForFocus && !settingsForm.HasAnyFocus(trayClick))
+ if (checkForFocus && !settingsForm.HasAnyFocus(trayClick) && !AppConfig.Is("topmost"))
{
settingsForm.ShowAll();
}
diff --git a/app/Properties/Strings.fr.resx b/app/Properties/Strings.fr.resx
index 18ac0b45..c5e50613 100644
--- a/app/Properties/Strings.fr.resx
+++ b/app/Properties/Strings.fr.resx
@@ -145,7 +145,7 @@
Redémarrer maintenant ?
- Ally Controller
+ Contrôleur Ally
Vitesse de l'animation
@@ -253,10 +253,10 @@
Délai branché / sur batterie (0 - ON)
- Backlight Timeout when on battery
+ Délai de rétro-éclairage sur batterie
- Backlight Timeout when plugged
+ Délai de rétro-éclairage sur secteur
Équilibré
@@ -274,13 +274,13 @@
Charge unique à 100%
- Binding
+ Liaison
- Primary
+ Primaire
- Secondary
+ Secondaire
Mise à jour BIOS et pilotes
@@ -310,10 +310,10 @@
Couleur
- Contrast
+ Contraste
- Controller
+ Contrôleur
CPU Boost
@@ -328,7 +328,7 @@
Par défaut
- Disable Controller
+ Désactiver le contrôleur
Désactiver l'overdrive de l'écran
@@ -349,7 +349,7 @@
Éco
- Enable GPU on shutdown (prevents issue with Eco mode)
+ Activer le GPU lors de l'arrêt (empêche les problèmes avec le mode Éco)
Désactiver le dGPU en passant au mode Eco pendant que le mode d'affichage dans le panneau de configuration NVIDIA n'est pas réglé sur Optimus peut causer des problèmes avec les commandes de luminosité jusqu'au prochain redémarrage.
@@ -363,7 +363,7 @@ Voulez-vous continuer ?
Paramètres d'énergie
- Export Profile
+ Exporter un profil
+ d'options
@@ -438,10 +438,10 @@ Voulez-vous continuer ?
Élevé
- Image Rotation
+ Rotation de l'image
- Import Profile
+ Importer un profil
Raccourcis clavier
@@ -477,10 +477,10 @@ Voulez-vous continuer ?
Faible
- Left Stick Deadzones
+ Stick gauche des zones mortes
- Left Trigger Deadzones
+ Gâchette gauche des zones mortes
Visualiseur Audio
@@ -528,10 +528,10 @@ Voulez-vous continuer ?
Arrêt automatique après
- Button Response
+ Réponse du bouton
- Import failed. Selected file is not a valid mouse profile or corrutpted.
+ Échec de l'importation. Le fichier sélectionné n'est pas un profil de souris valide ou corrompu.
Lift Off Distance
@@ -567,7 +567,7 @@ Voulez-vous continuer ?
Non connecté
- One Zone
+ Une zone
Ouvrir G-Helper
@@ -600,7 +600,7 @@ Voulez-vous continuer ?
Lecture / Pause
- Polling Rate
+ Fréquence d'interrogation
Limites de puissance
@@ -618,7 +618,7 @@ Voulez-vous continuer ?
Quitter
- Reset
+ Réinitialiser
Un programme utilise le dGPU et empêche le passage en mode Éco. Laissez G-Helper tenter un redémarrage du dGPU dans le gestionnaire de tâches ? (Procéder à vos propres risques)
@@ -627,16 +627,16 @@ Voulez-vous continuer ?
RPM
- Right Stick Deadzones
+ Stick droit des zones mortes
- Right Trigger Deadzones
+ Gâchette droite des zones mortes
Exécuter au démarrage
- Scaling Quality
+ Qualité de Mise à l'échelle (Scaling)
Baisser la luminosité du Screenpad
@@ -717,7 +717,7 @@ Voulez-vous continuer ?
Version
- Vibration Strength
+ Intensité de la vibration
Vol-
diff --git a/app/Settings.cs b/app/Settings.cs
index 2723a759..bbaec21c 100644
--- a/app/Settings.cs
+++ b/app/Settings.cs
@@ -1382,11 +1382,13 @@ namespace GHelper
buttonEco.Activated = !GPUAuto;
buttonOptimized.Activated = GPUAuto;
labelGPU.Text = Properties.Strings.GPUMode + ": " + Properties.Strings.GPUModeEco;
+ panelGPU.AccessibleName = Properties.Strings.GPUMode + " - " + (GPUAuto ? Properties.Strings.Optimized : Properties.Strings.EcoMode);
Program.trayIcon.Icon = Properties.Resources.eco;
break;
case AsusACPI.GPUModeUltimate:
buttonUltimate.Activated = true;
labelGPU.Text = Properties.Strings.GPUMode + ": " + Properties.Strings.GPUModeUltimate;
+ panelGPU.AccessibleName = Properties.Strings.GPUMode + " - " + Properties.Strings.UltimateMode;
Program.trayIcon.Icon = Properties.Resources.ultimate;
break;
default:
@@ -1394,10 +1396,13 @@ namespace GHelper
buttonStandard.Activated = !GPUAuto;
buttonOptimized.Activated = GPUAuto;
labelGPU.Text = Properties.Strings.GPUMode + ": " + Properties.Strings.GPUModeStandard;
+ panelGPU.AccessibleName = Properties.Strings.GPUMode + " - " + (GPUAuto ? Properties.Strings.Optimized : Properties.Strings.StandardMode);
Program.trayIcon.Icon = Properties.Resources.standard;
break;
}
+
+
VisualizeXGM(GPUMode);
if (isGpuSection)
diff --git a/app/UI/RButton.cs b/app/UI/RButton.cs
index d2b93d36..7284f8d0 100644
--- a/app/UI/RButton.cs
+++ b/app/UI/RButton.cs
@@ -4,6 +4,7 @@ namespace GHelper.UI
{
public class RButton : Button
{
+
//Fields
private int borderSize = 5;
diff --git a/app/UI/RForm.cs b/app/UI/RForm.cs
index 003f2937..2f203e01 100644
--- a/app/UI/RForm.cs
+++ b/app/UI/RForm.cs
@@ -28,7 +28,15 @@ namespace GHelper.UI
private static extern int DwmSetWindowAttribute(nint hwnd, int attr, int[] attrValue, int attrSize);
public bool darkTheme = false;
-
+ protected override CreateParams CreateParams
+ {
+ get
+ {
+ var parms = base.CreateParams;
+ parms.Style &= ~0x02000000; // Turn off WS_CLIPCHILDREN
+ return parms;
+ }
+ }
public static void InitColors(bool darkTheme)
{
if (darkTheme)
@@ -98,8 +106,10 @@ namespace GHelper.UI
{
DwmSetWindowAttribute(Handle, 20, new[] { darkTheme ? 1 : 0 }, 4);
ControlHelper.Adjust(this, changed);
+ this.Invalidate();
}
+
return changed;
}
diff --git a/app/Updates.Designer.cs b/app/Updates.Designer.cs
index 8feb65b4..d72c08f5 100644
--- a/app/Updates.Designer.cs
+++ b/app/Updates.Designer.cs
@@ -126,7 +126,7 @@ namespace GHelper
buttonRefresh.Name = "buttonRefresh";
buttonRefresh.Secondary = true;
buttonRefresh.Size = new Size(52, 46);
- buttonRefresh.TabIndex = 3;
+ buttonRefresh.TabIndex = 1;
buttonRefresh.UseVisualStyleBackColor = false;
//
// panelBios
diff --git a/app/Updates.cs b/app/Updates.cs
index 7de7b532..428466e6 100644
--- a/app/Updates.cs
+++ b/app/Updates.cs
@@ -35,10 +35,15 @@ namespace GHelper
(bios, model) = AppConfig.GetBiosAndModel();
+ buttonRefresh.TabStop = false;
+
updatesCount = 0;
labelUpdates.ForeColor = colorEco;
labelUpdates.Text = Properties.Strings.NoNewUpdates;
+ panelBios.AccessibleRole = AccessibleRole.Grouping;
+ panelBios.AccessibleName = Properties.Strings.NoNewUpdates;
+ panelBios.TabStop = true;
Text = Properties.Strings.BiosAndDriverUpdates + ": " + model + " " + bios;
labelBIOS.Text = "BIOS";
@@ -121,12 +126,17 @@ namespace GHelper
Invoke(delegate
{
string versionText = driver.version.Replace("latest version at the ", "");
- Label versionLabel = new Label { Text = versionText, Anchor = AnchorStyles.Left, AutoSize = true };
+ LinkLabel versionLabel = new LinkLabel { Text = versionText, Anchor = AnchorStyles.Left, AutoSize = true };
+
+ versionLabel.AccessibleName = driver.title;
+ versionLabel.TabStop = true;
+ versionLabel.TabIndex = table.RowCount + 1;
+
versionLabel.Cursor = Cursors.Hand;
versionLabel.Font = new Font(versionLabel.Font, FontStyle.Underline);
- versionLabel.ForeColor = colorEco;
+ versionLabel.LinkColor = colorEco;
versionLabel.Padding = new Padding(5, 5, 5, 5);
- versionLabel.Click += delegate
+ versionLabel.LinkClicked += delegate
{
Process.Start(new ProcessStartInfo(driver.downloadUrl) { UseShellExecute = true });
};
@@ -152,18 +162,19 @@ namespace GHelper
public void VisualiseNewDriver(int position, int newer, TableLayoutPanel table)
{
- var label = table.GetControlFromPosition(3, position) as Label;
+ var label = table.GetControlFromPosition(3, position) as LinkLabel;
if (label != null)
{
Invoke(delegate
{
if (newer == DRIVER_NEWER)
{
+ label.AccessibleName = label.AccessibleName + Properties.Strings.NewUpdates;
label.Font = new Font(label.Font, FontStyle.Underline | FontStyle.Bold);
- label.ForeColor = colorTurbo;
+ label.LinkColor = colorTurbo;
}
- if (newer == DRIVER_NOT_FOUND) label.ForeColor = Color.Gray;
+ if (newer == DRIVER_NOT_FOUND) label.LinkColor = Color.Gray;
});
}
@@ -176,6 +187,9 @@ namespace GHelper
labelUpdates.Text = $"{Properties.Strings.NewUpdates}: {updatesCount}";
labelUpdates.ForeColor = colorTurbo;
labelUpdates.Font = new Font(labelUpdates.Font, FontStyle.Bold);
+
+ panelBios.AccessibleName = labelUpdates.Text;
+
});
}