Adding per client borders and hotkey to cycle through clients
This commit is contained in:
51
README.md
51
README.md
@@ -165,6 +165,57 @@ The following hotkey is described as `modifier+key` where `modifier` can be **Co
|
||||
|
||||
<div style="page-break-after: always;"></div>
|
||||
|
||||
### Cycle Clients with Hotkey Setup
|
||||
|
||||
In a similar pattern to the per client Hotkey Setup, It is possible to set a key combinations to cycle through select Eve Windows. EVE-O Preview doesn't provide any GUI to set the these hotkeys. It should be done via editing the configuration file directly. Don't forget to make a backup copy of the file before editing it.
|
||||
|
||||
If you have not run EVE-O Preview before, or since this feature was added then it is recommended to quickly open and close EVE-O Preview once to trigger the config to update with some sample values.
|
||||
|
||||
**Note**: Don't forget to make a backup copy of the file before editing it.
|
||||
|
||||
Open the file using any text editor. find the entries **CycleGroup1ForwardHotkeys** and **CycleGroup1BackwardHotkeys**. Most probably it will look like
|
||||
|
||||
"CycleGroup1ForwardHotkeys": [
|
||||
"F14",
|
||||
"Control+F14"
|
||||
],
|
||||
"CycleGroup1BackwardHotkeys": [
|
||||
"F13",
|
||||
"Control+F13"
|
||||
]
|
||||
|
||||
**Note**: It is highly recommended to leave the Hotkey values as default and bind them with a gaming device if you can support it.
|
||||
|
||||
Next find the entry **CycleGroup1ForwardHotkeys**. Most probably it will look like
|
||||
|
||||
"CycleGroup1ClientsOrder": {
|
||||
"EVE - Example DPS Toon 1": "1",
|
||||
"EVE - Example DPS Toon 2": "2",
|
||||
"EVE - Example DPS Toon 3": "3"
|
||||
}
|
||||
|
||||
You should modify this entry with a list of each of your alts replacing "Example DPS Toon 1", etc with the name of your character. The numbers on the right are used to force the order in which they cycle.
|
||||
If a character appears in the list but is not currently logged in, then it will simply be skipped.
|
||||
If a character does not appear in the list, then they will never become active when cycling clients.
|
||||
|
||||
By now you may have noticed that there are two groups. The above configuration can be followed for a second group by using the values **CycleGroup2ForwardHotkeys**, **CycleGroup2BackwardHotkeys**, and **CycleGroup2ForwardHotkeys**
|
||||
This may provide useful if you want to have one HotKey to cycle through a group of DPS characters, while another HotKey cycles through support roles such as gate scouts, or a group of logi.
|
||||
|
||||
Alternatively you may not want to use any of these HotKeys. Please note that deleting the values in their entirety will simply result in them being automatically re-generated.
|
||||
Should you wish to remove these HotKeys completely, Simply set the values to empty, such as the example below:
|
||||
"CycleGroup1ForwardHotkeys": [],
|
||||
"CycleGroup1BackwardHotkeys": [],
|
||||
"CycleGroup1ClientsOrder": {},
|
||||
"CycleGroup2ForwardHotkeys": [],
|
||||
"CycleGroup2BackwardHotkeys": [],
|
||||
"CycleGroup2ClientsOrder": {}
|
||||
|
||||
**Hints**
|
||||
* Minimise the use of modifiers or standard keys to minimise issues with the client playing up. In the default example unusual Function keys (e.g. F14) are used which are then bound to a game pad or gaming mouse.
|
||||
* The Eve client can be somewhat less than stable, often getting confused as client focus switches. It is near certain that you will experience issues such as keys sticking or even in some cases D-Scan running each time the client swaps. So far I have found no perfect solution and opt for the most stable solution instead, of sticking to the F14+ keys.
|
||||
* For the best experience try to use the Control modifier. In the default example F14 is used to cycle to the next client, but if pressed mid locking a target (Control + Clicking) then the client will not cycle. By registering Control+F4 as an additional hotkey, the client will cycle.
|
||||
* For a list of supported keys, see: https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.keys
|
||||
|
||||
### Compatibility Mode
|
||||
|
||||
This setting allows to enable an alternate thumbnail render. This render doesn't use advanced DWM API to create live previews. Instead it is a screenshot-based render with the following pros and cons:
|
||||
|
@@ -27,7 +27,14 @@ namespace EveOPreview.Configuration.Implementation
|
||||
|
||||
string rawData = File.ReadAllText(filename);
|
||||
|
||||
JsonConvert.PopulateObject(rawData, this._thumbnailConfiguration);
|
||||
JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings()
|
||||
{
|
||||
ObjectCreationHandling = ObjectCreationHandling.Replace
|
||||
};
|
||||
|
||||
// StageHotkeyArraysToAvoidDuplicates(rawData);
|
||||
|
||||
JsonConvert.PopulateObject(rawData, this._thumbnailConfiguration, jsonSerializerSettings);
|
||||
|
||||
// Validate data after loading it
|
||||
this._thumbnailConfiguration.ApplyRestrictions();
|
||||
|
@@ -1,5 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
@@ -14,6 +15,30 @@ namespace EveOPreview.Configuration.Implementation
|
||||
|
||||
public ThumbnailConfiguration()
|
||||
{
|
||||
this.CycleGroup1ForwardHotkeys = new List<string> { "F14", "Control+F14" };
|
||||
this.CycleGroup1BackwardHotkeys = new List<string> { "F13", "Control+F13" };
|
||||
this.CycleGroup1ClientsOrder = new Dictionary<string, string>
|
||||
{
|
||||
{ "EVE - Example DPS Toon 1", "1" },
|
||||
{ "EVE - Example DPS Toon 2", "2" },
|
||||
{ "EVE - Example DPS Toon 3", "3" }
|
||||
};
|
||||
|
||||
this.CycleGroup2ForwardHotkeys = new List<string> { "F16", "Control+F16" };
|
||||
this.CycleGroup2BackwardHotkeys = new List<string> { "F15", "Control+F15" };
|
||||
this.CycleGroup2ClientsOrder = new Dictionary<string, string>
|
||||
{
|
||||
{ "EVE - Example Logi Toon 1", "1" },
|
||||
{ "EVE - Example Scout Toon 2", "2" },
|
||||
{ "EVE - Example Tackle Toon 3", "3" }
|
||||
};
|
||||
|
||||
this.PerClientActiveClientHighlightColor = new Dictionary<string, Color>
|
||||
{
|
||||
{"EVE - Example Toon 1", Color.Red},
|
||||
{"EVE - Example Toon 2", Color.Green}
|
||||
};
|
||||
|
||||
this.PerClientLayout = new Dictionary<string, Dictionary<string, Point>>();
|
||||
this.FlatLayout = new Dictionary<string, Point>();
|
||||
this.ClientLayout = new Dictionary<string, ClientLayout>();
|
||||
@@ -55,6 +80,27 @@ namespace EveOPreview.Configuration.Implementation
|
||||
this.ActiveClientHighlightThickness = 3;
|
||||
}
|
||||
|
||||
[JsonProperty("CycleGroup1ForwardHotkeys")]
|
||||
public List<string> CycleGroup1ForwardHotkeys { get; set; }
|
||||
|
||||
[JsonProperty("CycleGroup1BackwardHotkeys")]
|
||||
public List<string> CycleGroup1BackwardHotkeys { get; set; }
|
||||
|
||||
[JsonProperty("CycleGroup1ClientsOrder")]
|
||||
public Dictionary<string, string> CycleGroup1ClientsOrder { get; set; }
|
||||
|
||||
[JsonProperty("CycleGroup2ForwardHotkeys")]
|
||||
public List<string> CycleGroup2ForwardHotkeys { get; set; }
|
||||
|
||||
[JsonProperty("CycleGroup2BackwardHotkeys")]
|
||||
public List<string> CycleGroup2BackwardHotkeys { get; set; }
|
||||
|
||||
[JsonProperty("CycleGroup2ClientsOrder")]
|
||||
public Dictionary<string, string> CycleGroup2ClientsOrder { get; set; }
|
||||
|
||||
[JsonProperty("PerClientActiveClientHighlightColor")]
|
||||
public Dictionary<string, Color> PerClientActiveClientHighlightColor { get; set; }
|
||||
|
||||
public bool MinimizeToTray { get; set; }
|
||||
public int ThumbnailRefreshPeriod { get; set; }
|
||||
|
||||
@@ -220,6 +266,12 @@ namespace EveOPreview.Configuration.Implementation
|
||||
this.ClientHotkey[currentClient] = (new KeysConverter()).ConvertToInvariantString(hotkey);
|
||||
}
|
||||
|
||||
public Keys StringToKey(string hotkey)
|
||||
{
|
||||
object rawValue = (new KeysConverter()).ConvertFromInvariantString(hotkey);
|
||||
return rawValue != null ? (Keys)rawValue : Keys.None;
|
||||
}
|
||||
|
||||
public bool IsPriorityClient(string currentClient)
|
||||
{
|
||||
return this.PriorityClients.Contains(currentClient);
|
||||
|
@@ -1,10 +1,21 @@
|
||||
using System.Drawing;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace EveOPreview.Configuration
|
||||
{
|
||||
public interface IThumbnailConfiguration
|
||||
{
|
||||
List<string> CycleGroup1ForwardHotkeys { get; set; }
|
||||
List<string> CycleGroup1BackwardHotkeys { get; set; }
|
||||
Dictionary<string, string> CycleGroup1ClientsOrder { get; set; }
|
||||
|
||||
List<string> CycleGroup2ForwardHotkeys { get; set; }
|
||||
List<string> CycleGroup2BackwardHotkeys { get; set; }
|
||||
Dictionary<string, string> CycleGroup2ClientsOrder { get; set; }
|
||||
|
||||
Dictionary<string, Color> PerClientActiveClientHighlightColor { get; set; }
|
||||
|
||||
bool MinimizeToTray { get; set; }
|
||||
int ThumbnailRefreshPeriod { get; set; }
|
||||
|
||||
@@ -47,6 +58,7 @@ namespace EveOPreview.Configuration
|
||||
|
||||
Keys GetClientHotkey(string currentClient);
|
||||
void SetClientHotkey(string currentClient, Keys hotkey);
|
||||
Keys StringToKey(string hotkey);
|
||||
|
||||
bool IsPriorityClient(string currentClient);
|
||||
|
||||
|
@@ -1,10 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Threading;
|
||||
using EveOPreview.Configuration;
|
||||
using EveOPreview.Mediator.Messages;
|
||||
using EveOPreview.UI.Hotkeys;
|
||||
using EveOPreview.View;
|
||||
using MediatR;
|
||||
|
||||
@@ -42,6 +46,8 @@ namespace EveOPreview.Services
|
||||
|
||||
private int _refreshCycleCount;
|
||||
private int _hideThumbnailsDelay;
|
||||
|
||||
private List<HotkeyHandler> _cycleClientHotkeyHandlers = new List<HotkeyHandler>();
|
||||
#endregion
|
||||
|
||||
public ThumbnailManager(IMediator mediator, IThumbnailConfiguration configuration, IProcessMonitor processMonitor, IWindowManager windowManager, IThumbnailViewFactory factory)
|
||||
@@ -69,6 +75,109 @@ namespace EveOPreview.Services
|
||||
this._thumbnailUpdateTimer.Interval = new TimeSpan(0, 0, 0, 0, configuration.ThumbnailRefreshPeriod);
|
||||
|
||||
this._hideThumbnailsDelay = this._configuration.HideThumbnailsDelay;
|
||||
|
||||
RegisterCycleClientHotkey(this._configuration.CycleGroup1ForwardHotkeys?.Select(x => this._configuration.StringToKey(x)), true, this._configuration.CycleGroup1ClientsOrder);
|
||||
RegisterCycleClientHotkey(this._configuration.CycleGroup1BackwardHotkeys?.Select(x => this._configuration.StringToKey(x)), false, this._configuration.CycleGroup1ClientsOrder);
|
||||
|
||||
RegisterCycleClientHotkey(this._configuration.CycleGroup2ForwardHotkeys?.Select(x => this._configuration.StringToKey(x)), true, this._configuration.CycleGroup2ClientsOrder);
|
||||
RegisterCycleClientHotkey(this._configuration.CycleGroup2BackwardHotkeys?.Select(x => this._configuration.StringToKey(x)), false, this._configuration.CycleGroup2ClientsOrder);
|
||||
}
|
||||
|
||||
public IThumbnailView GetClientByTitle(string title)
|
||||
{
|
||||
return _thumbnailViews.FirstOrDefault(x => x.Value.Title == title).Value;
|
||||
}
|
||||
|
||||
public IThumbnailView GetClientByPointer(IntPtr ptr)
|
||||
{
|
||||
return _thumbnailViews.FirstOrDefault(x => x.Key == ptr).Value;
|
||||
}
|
||||
|
||||
public IThumbnailView GetActiveClient()
|
||||
{
|
||||
return GetClientByPointer(this._activeClient.Handle);
|
||||
}
|
||||
|
||||
public void SetActive(KeyValuePair<IntPtr, IThumbnailView> newClient)
|
||||
{
|
||||
this.GetActiveClient()?.ClearBorder();
|
||||
|
||||
this._windowManager.ActivateWindow(newClient.Key);
|
||||
this.SwitchActiveClient(newClient.Key, newClient.Value.Title);
|
||||
|
||||
newClient.Value.SetHighlight();
|
||||
newClient.Value.Refresh(true);
|
||||
}
|
||||
|
||||
public void CycleNextClient(bool isForwards, Dictionary<string, string> cycleOrder)
|
||||
{
|
||||
IOrderedEnumerable<KeyValuePair<string, string>> clientOrder;
|
||||
if (isForwards)
|
||||
{
|
||||
clientOrder = cycleOrder.OrderBy(x => x.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
clientOrder = cycleOrder.OrderByDescending(x => x.Value);
|
||||
}
|
||||
|
||||
bool setNextClient = false;
|
||||
IThumbnailView lastClient = null;
|
||||
|
||||
foreach (var t in clientOrder)
|
||||
{
|
||||
if (t.Key == _activeClient.Title)
|
||||
{
|
||||
setNextClient = true;
|
||||
lastClient = _thumbnailViews.FirstOrDefault(x => x.Value.Title == t.Key).Value;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!setNextClient)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (_thumbnailViews.Any(x => x.Value.Title == t.Key))
|
||||
{
|
||||
var ptr = _thumbnailViews.First(x => x.Value.Title == t.Key);
|
||||
SetActive(ptr);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// we didn't get a next one. just get the first one from the start.
|
||||
foreach (var t in clientOrder)
|
||||
{
|
||||
if (_thumbnailViews.Any(x => x.Value.Title == t.Key))
|
||||
{
|
||||
var ptr = _thumbnailViews.First(x => x.Value.Title == t.Key);
|
||||
SetActive(ptr);
|
||||
_activeClient = (ptr.Key, t.Key);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void RegisterCycleClientHotkey(IEnumerable<Keys> keys, bool isForwards, Dictionary<string, string> cycleOrder)
|
||||
{
|
||||
foreach (var hotkey in keys)
|
||||
{
|
||||
if (hotkey == Keys.None)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var newHandler = new HotkeyHandler(default(IntPtr), hotkey);
|
||||
newHandler.Pressed += (object s, HandledEventArgs e) =>
|
||||
{
|
||||
this.CycleNextClient(isForwards, cycleOrder);
|
||||
e.Handled = true;
|
||||
};
|
||||
|
||||
newHandler.Register();
|
||||
this._cycleClientHotkeyHandlers.Add(newHandler);
|
||||
}
|
||||
}
|
||||
|
||||
public void Start()
|
||||
@@ -306,8 +415,9 @@ namespace EveOPreview.Services
|
||||
|
||||
view.IsOverlayEnabled = this._configuration.ShowThumbnailOverlays;
|
||||
|
||||
view.SetHighlight(this._configuration.EnableActiveClientHighlight && (view.Id == this._activeClient.Handle),
|
||||
this._configuration.ActiveClientHighlightColor, this._configuration.ActiveClientHighlightThickness);
|
||||
view.SetHighlight(
|
||||
this._configuration.EnableActiveClientHighlight && (view.Id == this._activeClient.Handle),
|
||||
this._configuration.ActiveClientHighlightThickness);
|
||||
|
||||
if (!view.IsActive)
|
||||
{
|
||||
|
@@ -5,7 +5,7 @@ using EveOPreview.Services.Interop;
|
||||
|
||||
namespace EveOPreview.Services.Implementation
|
||||
{
|
||||
sealed class WindowManager : IWindowManager
|
||||
public class WindowManager : IWindowManager
|
||||
{
|
||||
#region Private constants
|
||||
private const int WINDOW_SIZE_THRESHOLD = 300;
|
||||
@@ -30,6 +30,7 @@ namespace EveOPreview.Services.Implementation
|
||||
public void ActivateWindow(IntPtr handle)
|
||||
{
|
||||
User32NativeMethods.SetForegroundWindow(handle);
|
||||
User32NativeMethods.SetFocus(handle);
|
||||
|
||||
int style = User32NativeMethods.GetWindowLong(handle, InteropConstants.GWL_STYLE);
|
||||
|
||||
|
@@ -1,4 +1,6 @@
|
||||
namespace EveOPreview.Services
|
||||
using EveOPreview.View;
|
||||
|
||||
namespace EveOPreview.Services
|
||||
{
|
||||
public interface IThumbnailManager
|
||||
{
|
||||
@@ -7,5 +9,9 @@
|
||||
|
||||
void UpdateThumbnailsSize();
|
||||
void UpdateThumbnailFrames();
|
||||
|
||||
IThumbnailView GetClientByTitle(string title);
|
||||
IThumbnailView GetClientByPointer(System.IntPtr ptr);
|
||||
IThumbnailView GetActiveClient();
|
||||
}
|
||||
}
|
@@ -11,6 +11,12 @@ namespace EveOPreview.Services.Interop
|
||||
[DllImport("user32.dll")]
|
||||
public static extern bool SetForegroundWindow(IntPtr window);
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
public static extern void SetFocus(IntPtr window);
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
public static extern void EnableWindow(IntPtr window, bool isEnabled);
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
|
||||
|
||||
|
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using EveOPreview.Configuration;
|
||||
using EveOPreview.Services;
|
||||
|
||||
namespace EveOPreview.View
|
||||
@@ -10,13 +11,15 @@ namespace EveOPreview.View
|
||||
private IDwmThumbnail _thumbnail;
|
||||
private Point _startLocation;
|
||||
private Point _endLocation;
|
||||
private IThumbnailConfiguration _config;
|
||||
#endregion
|
||||
|
||||
public LiveThumbnailView(IWindowManager windowManager)
|
||||
: base(windowManager)
|
||||
public LiveThumbnailView(IWindowManager windowManager, IThumbnailConfiguration config, IThumbnailManager thumbnailManager)
|
||||
: base(windowManager, config, thumbnailManager)
|
||||
{
|
||||
this._startLocation = new Point(0, 0);
|
||||
this._endLocation = new Point(this.ClientSize);
|
||||
this._config = config;
|
||||
}
|
||||
|
||||
protected override void RefreshThumbnail(bool forceRefresh)
|
||||
|
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using EveOPreview.Configuration;
|
||||
using EveOPreview.Services;
|
||||
|
||||
namespace EveOPreview.View
|
||||
@@ -9,10 +10,11 @@ namespace EveOPreview.View
|
||||
{
|
||||
#region Private fields
|
||||
private readonly PictureBox _thumbnail;
|
||||
private IThumbnailConfiguration _config;
|
||||
#endregion
|
||||
|
||||
public StaticThumbnailView(IWindowManager windowManager)
|
||||
: base(windowManager)
|
||||
public StaticThumbnailView(IWindowManager windowManager, IThumbnailConfiguration config, IThumbnailManager thumbnailManager)
|
||||
: base(windowManager, config, thumbnailManager)
|
||||
{
|
||||
this._thumbnail = new StaticThumbnailImage
|
||||
{
|
||||
@@ -22,6 +24,7 @@ namespace EveOPreview.View
|
||||
Size = new Size(this.ClientSize.Width, this.ClientSize.Height)
|
||||
};
|
||||
this.Controls.Add(this._thumbnail);
|
||||
this._config = config;
|
||||
}
|
||||
|
||||
protected override void RefreshThumbnail(bool forceRefresh)
|
||||
|
@@ -1,7 +1,9 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using EveOPreview.Configuration;
|
||||
using EveOPreview.Services;
|
||||
using EveOPreview.UI.Hotkeys;
|
||||
|
||||
@@ -40,9 +42,13 @@ namespace EveOPreview.View
|
||||
private Size _baseZoomMaximumSize;
|
||||
|
||||
private HotkeyHandler _hotkeyHandler;
|
||||
|
||||
private IThumbnailConfiguration _config;
|
||||
private Lazy<Color> _myBorderColor;
|
||||
private IThumbnailManager _thumbnailManager;
|
||||
#endregion
|
||||
|
||||
protected ThumbnailView(IWindowManager windowManager)
|
||||
protected ThumbnailView(IWindowManager windowManager, IThumbnailConfiguration config, IThumbnailManager thumbnailManager)
|
||||
{
|
||||
this.SuppressResizeEvent();
|
||||
|
||||
@@ -66,9 +72,13 @@ namespace EveOPreview.View
|
||||
InitializeComponent();
|
||||
|
||||
this._overlay = new ThumbnailOverlay(this, this.MouseDown_Handler);
|
||||
|
||||
this._config = config;
|
||||
SetDefaultBorderColor();
|
||||
this._thumbnailManager = thumbnailManager;
|
||||
}
|
||||
|
||||
protected IWindowManager WindowManager { get; }
|
||||
public IWindowManager WindowManager { get; }
|
||||
|
||||
public IntPtr Id { get; set; }
|
||||
|
||||
@@ -78,14 +88,15 @@ namespace EveOPreview.View
|
||||
set
|
||||
{
|
||||
this.Text = value;
|
||||
this._overlay.SetOverlayLabel(value);
|
||||
this._overlay.SetOverlayLabel(value.Replace("EVE - ", ""));
|
||||
SetDefaultBorderColor();
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsActive { get; set; }
|
||||
|
||||
public bool IsOverlayEnabled { get; set; }
|
||||
|
||||
|
||||
public Point ThumbnailLocation
|
||||
{
|
||||
get => this.Location;
|
||||
@@ -114,6 +125,21 @@ namespace EveOPreview.View
|
||||
|
||||
public Action<IntPtr, bool> ThumbnailDeactivated { get; set; }
|
||||
|
||||
public void SetDefaultBorderColor()
|
||||
{
|
||||
this._myBorderColor = new Lazy<Color>(() =>
|
||||
{
|
||||
if (this._config.PerClientActiveClientHighlightColor.Any(x => x.Key == this.Title))
|
||||
{
|
||||
return this._config.PerClientActiveClientHighlightColor[Title];
|
||||
}
|
||||
else
|
||||
{
|
||||
return _config.ActiveClientHighlightColor;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public new void Show()
|
||||
{
|
||||
this.SuppressResizeEvent();
|
||||
@@ -219,7 +245,12 @@ namespace EveOPreview.View
|
||||
this._isTopMost = enableTopmost;
|
||||
}
|
||||
|
||||
public void SetHighlight(bool enabled, Color color, int width)
|
||||
public void SetHighlight()
|
||||
{
|
||||
SetHighlight(_config.EnableActiveClientHighlight, _config.ActiveClientHighlightThickness);
|
||||
}
|
||||
|
||||
public void SetHighlight(bool enabled, int width)
|
||||
{
|
||||
if (this._isHighlightRequested == enabled)
|
||||
{
|
||||
@@ -230,7 +261,7 @@ namespace EveOPreview.View
|
||||
{
|
||||
this._isHighlightRequested = true;
|
||||
this._highlightWidth = width;
|
||||
this.BackColor = color;
|
||||
this.BackColor = _myBorderColor.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -241,6 +272,12 @@ namespace EveOPreview.View
|
||||
this._isSizeChanged = true;
|
||||
}
|
||||
|
||||
public void ClearBorder()
|
||||
{
|
||||
this.SetHighlight(false, 0);
|
||||
this.Refresh(true);
|
||||
}
|
||||
|
||||
public void ZoomIn(ViewZoomAnchor anchor, int zoomFactor)
|
||||
{
|
||||
int oldWidth = this._baseZoomSize.Width;
|
||||
@@ -475,6 +512,7 @@ namespace EveOPreview.View
|
||||
|
||||
private void HotkeyPressed_Handler(object sender, HandledEventArgs e)
|
||||
{
|
||||
this.SetHighlight();
|
||||
this.ThumbnailActivated?.Invoke(this.Id);
|
||||
|
||||
e.Handled = true;
|
||||
@@ -549,7 +587,12 @@ namespace EveOPreview.View
|
||||
this.ThumbnailDeactivated?.Invoke(this.Id, true);
|
||||
break;
|
||||
case MouseButtons.Left:
|
||||
var oldWindow = this._thumbnailManager.GetActiveClient();
|
||||
this.ThumbnailActivated?.Invoke(this.Id);
|
||||
this.SetHighlight();
|
||||
this.Refresh(true);
|
||||
|
||||
oldWindow?.ClearBorder();
|
||||
break;
|
||||
case MouseButtons.Right:
|
||||
case MouseButtons.Left | MouseButtons.Right:
|
||||
|
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using EveOPreview.Services;
|
||||
|
||||
namespace EveOPreview.View
|
||||
{
|
||||
@@ -20,7 +21,8 @@ namespace EveOPreview.View
|
||||
void SetOpacity(double opacity);
|
||||
void SetFrames(bool enable);
|
||||
void SetTopMost(bool enableTopmost);
|
||||
void SetHighlight(bool enabled, Color color, int width);
|
||||
void SetHighlight();
|
||||
void SetHighlight(bool enabled, int width);
|
||||
|
||||
void ZoomIn(ViewZoomAnchor anchor, int zoomFactor);
|
||||
void ZoomOut();
|
||||
@@ -37,5 +39,9 @@ namespace EveOPreview.View
|
||||
|
||||
Action<IntPtr> ThumbnailActivated { get; set; }
|
||||
Action<IntPtr, bool> ThumbnailDeactivated { get; set; }
|
||||
|
||||
IWindowManager WindowManager { get; }
|
||||
void SetDefaultBorderColor();
|
||||
void ClearBorder();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user