/* * Greenshot - a free and open source screenshot tool * Copyright (C) 2007-2020 Thomas Braun, Jens Klingen, Robin Krom * * For more information see: http://getgreenshot.org/ * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 1 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace Greenshot.Plugin { public class ExportInformation { public ExportInformation(string destinationDesignation, string destinationDescription) { DestinationDesignation = destinationDesignation; DestinationDescription = destinationDescription; } public ExportInformation(string destinationDesignation, string destinationDescription, bool exportMade): this(destinationDesignation, destinationDescription) { ExportMade = exportMade; } public string DestinationDesignation { get; } public string DestinationDescription { get; set; } /// /// Set to true to specify if the export worked. /// public bool ExportMade { get; set; } public string Uri { get; set; } public string ErrorMessage { get; set; } public string Filepath { get; set; } } /// /// Description of IDestination. /// public interface IDestination : IDisposable, IComparable { /// /// Simple "designation" like "File", "Editor" etc, used to store the configuration /// string Designation { get; } /// /// Description which will be shown in the settings form, destination picker etc /// string Description { get; } /// /// Priority, used for sorting /// int Priority { get; } /// /// Gets an icon for the destination /// Image DisplayIcon { get; } /// /// Returns if the destination is active /// bool IsActive { get; } /// /// Return a menu item /// /// Resolve the dynamic destinations too? /// The menu for which the item is created /// Handler which is called when clicked /// ToolStripMenuItem ToolStripMenuItem GetMenuItem(bool addDynamics, ContextMenuStrip menu, EventHandler destinationClickHandler); /// /// Gets the ShortcutKeys for the Editor /// Keys EditorShortcutKeys { get; } /// /// Gets the dynamic destinations /// IEnumerable DynamicDestinations(); /// /// Returns true if this destination can be dynamic /// bool IsDynamic { get; } /// /// Returns if the destination is active /// bool UseDynamicsOnly { get; } /// /// Returns true if this destination returns a link /// bool IsLinkable { get; } /// /// If a capture is made, and the destination is enabled, this method is called. /// /// true if the user selected this destination from a GUI, false if it was called as part of a process /// /// /// DestinationExportInformation with information, like if the destination has "exported" the capture ExportInformation ExportCapture(bool manuallyInitiated, ISurface surface, ICaptureDetails captureDetails); } }