mirror of
https://github.com/LorenzCK/OnTopReplica.git
synced 2024-05-10 15:32:41 +12:00
119 lines
4.1 KiB
C#
119 lines
4.1 KiB
C#
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
using WindowsFormsAero.TaskDialog;
|
|
|
|
namespace OnTopReplica {
|
|
partial class MainForm {
|
|
|
|
/// <summary>
|
|
/// Opens the context menu.
|
|
/// </summary>
|
|
/// <param name="position">Optional position of the mouse, relative to which the menu is shown.</param>
|
|
public void OpenContextMenu(Point? position) {
|
|
Point menuPosition = MousePosition;
|
|
if (position.HasValue)
|
|
menuPosition = position.Value;
|
|
|
|
if (FullscreenManager.IsFullscreen) {
|
|
menuFullscreenContext.Show(menuPosition);
|
|
}
|
|
else {
|
|
menuContext.Show(menuPosition);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the window's vertical chrome size.
|
|
/// </summary>
|
|
public int ChromeBorderVertical {
|
|
get {
|
|
if (IsChromeVisible)
|
|
return SystemInformation.FrameBorderSize.Height;
|
|
else
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the window's horizontal chrome size.
|
|
/// </summary>
|
|
public int ChromeBorderHorizontal {
|
|
get {
|
|
if (IsChromeVisible)
|
|
return SystemInformation.FrameBorderSize.Width;
|
|
else
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Displays an error task dialog.
|
|
/// </summary>
|
|
/// <param name="mainInstruction">Main instruction of the error dialog.</param>
|
|
/// <param name="explanation">Detailed informations about the error.</param>
|
|
/// <param name="errorMessage">Expanded error codes/messages.</param>
|
|
private void ShowErrorDialog(string mainInstruction, string explanation, string errorMessage) {
|
|
TaskDialog dlg = new TaskDialog(mainInstruction, Strings.ErrorGenericTitle, explanation) {
|
|
CommonIcon = TaskDialogIcon.Stop,
|
|
IsExpanded = false
|
|
};
|
|
|
|
if (!string.IsNullOrEmpty(errorMessage)) {
|
|
dlg.ExpandedInformation = Strings.ErrorGenericInfoText + errorMessage;
|
|
dlg.ExpandedControlText = Strings.ErrorGenericInfoButton;
|
|
}
|
|
|
|
dlg.Show(this);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ensures that the main form is visible (either closing the fullscreen mode or reactivating from task icon).
|
|
/// </summary>
|
|
public void EnsureMainFormVisible() {
|
|
//Reset special modes
|
|
FullscreenManager.SwitchBack();
|
|
ClickThroughEnabled = false;
|
|
Opacity = 1.0;
|
|
|
|
//Restore main form in a platform-dependent method
|
|
Program.Platform.RestoreForm(this);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Opens a confirmation dialog to confirm whether to reset the main form or not.
|
|
/// </summary>
|
|
public void ResetMainFormWithConfirmation() {
|
|
var dlg = new TaskDialog(Strings.AskReset, Strings.AskResetTitle, Strings.AskResetContent);
|
|
dlg.UseCommandLinks = true;
|
|
dlg.CustomButtons = new CustomButton[] {
|
|
new CustomButton(Result.OK, Strings.AskResetButtonOk),
|
|
new CustomButton(Result.Cancel, Strings.ButtonCancel)
|
|
};
|
|
dlg.CommonIcon = TaskDialogIcon.Information;
|
|
|
|
if (dlg.Show(this).CommonButton == Result.OK) {
|
|
ResetMainForm();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Resets the main form to its initial state.
|
|
/// </summary>
|
|
public void ResetMainForm() {
|
|
//Reset form settings
|
|
UnsetThumbnail();
|
|
CloseSidePanel();
|
|
|
|
//Reset location and size (edge of the screen, min size)
|
|
Point nuLoc = Screen.PrimaryScreen.WorkingArea.Location;
|
|
nuLoc.Offset(40, 40);
|
|
Location = nuLoc;
|
|
Size = new Size(240, 220);
|
|
|
|
this.Show();
|
|
this.Activate();
|
|
}
|
|
|
|
}
|
|
}
|