diff --git a/GreenshotImmioPlugin/Forms/ImmioForm.cs b/GreenshotImmioPlugin/Forms/ImmioForm.cs
new file mode 100644
index 000000000..ed117daf5
--- /dev/null
+++ b/GreenshotImmioPlugin/Forms/ImmioForm.cs
@@ -0,0 +1,34 @@
+/*
+ * Greenshot - a free and open source screenshot tool
+ * Copyright (C) 2007-2012 Thomas Braun, Jens Klingen, Robin Krom
+ *
+ * For more information see: http://getgreenshot.org/
+ * The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/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.Windows.Forms;
+using GreenshotPlugin.Core;
+using GreenshotPlugin.Controls;
+
+namespace GreenshotImmioPlugin {
+ ///
+ /// Description of ImmioForm.
+ ///
+ public class ImmioForm : GreenshotForm {
+ public ImmioForm() : base() {
+ }
+ }
+}
diff --git a/GreenshotImmioPlugin/Forms/SettingsForm.Designer.cs b/GreenshotImmioPlugin/Forms/SettingsForm.Designer.cs
new file mode 100644
index 000000000..18595162b
--- /dev/null
+++ b/GreenshotImmioPlugin/Forms/SettingsForm.Designer.cs
@@ -0,0 +1,119 @@
+/*
+ * Greenshot - a free and open source screenshot tool
+ * Copyright (C) 2007-2012 Thomas Braun, Jens Klingen, Robin Krom
+ *
+ * For more information see: http://getgreenshot.org/
+ * The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/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 .
+ */
+namespace GreenshotImmioPlugin {
+ partial class SettingsForm {
+ ///
+ /// Designer variable used to keep track of non-visual components.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Disposes resources used by the form.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing) {
+ if (components != null) {
+ components.Dispose();
+ }
+ }
+ base.Dispose(disposing);
+ }
+
+ ///
+ /// This method is required for Windows Forms designer support.
+ /// Do not change the method contents inside the source code editor. The Forms designer might
+ /// not be able to load this method if it was changed manually.
+ ///
+ private void InitializeComponent()
+ {
+ this.buttonOK = new GreenshotPlugin.Controls.GreenshotButton();
+ this.buttonCancel = new GreenshotPlugin.Controls.GreenshotButton();
+ this.combobox_uploadimageformat = new GreenshotPlugin.Controls.GreenshotComboBox();
+ this.label_upload_format = new GreenshotPlugin.Controls.GreenshotLabel();
+ this.SuspendLayout();
+ //
+ // buttonOK
+ //
+ this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.buttonOK.LanguageKey = "immio.OK";
+ this.buttonOK.Location = new System.Drawing.Point(222, 88);
+ this.buttonOK.Name = "buttonOK";
+ this.buttonOK.Size = new System.Drawing.Size(75, 23);
+ this.buttonOK.TabIndex = 2;
+ this.buttonOK.UseVisualStyleBackColor = true;
+ this.buttonOK.Click += new System.EventHandler(this.ButtonOKClick);
+ //
+ // buttonCancel
+ //
+ this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.buttonCancel.LanguageKey = "immio.CANCEL";
+ this.buttonCancel.Location = new System.Drawing.Point(303, 88);
+ this.buttonCancel.Name = "buttonCancel";
+ this.buttonCancel.Size = new System.Drawing.Size(75, 23);
+ this.buttonCancel.TabIndex = 3;
+ this.buttonCancel.UseVisualStyleBackColor = true;
+ this.buttonCancel.Click += new System.EventHandler(this.ButtonCancelClick);
+ //
+ // combobox_uploadimageformat
+ //
+ this.combobox_uploadimageformat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.combobox_uploadimageformat.FormattingEnabled = true;
+ this.combobox_uploadimageformat.Location = new System.Drawing.Point(102, 7);
+ this.combobox_uploadimageformat.Name = "combobox_uploadimageformat";
+ this.combobox_uploadimageformat.PropertyName = "UploadFormat";
+ this.combobox_uploadimageformat.SectionName = "Immio";
+ this.combobox_uploadimageformat.Size = new System.Drawing.Size(276, 21);
+ this.combobox_uploadimageformat.TabIndex = 8;
+ //
+ // label_upload_format
+ //
+ this.label_upload_format.LanguageKey = "immio.label_upload_format";
+ this.label_upload_format.Location = new System.Drawing.Point(12, 10);
+ this.label_upload_format.Name = "label_upload_format";
+ this.label_upload_format.Size = new System.Drawing.Size(84, 20);
+ this.label_upload_format.TabIndex = 9;
+ //
+ // SettingsForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
+ this.ClientSize = new System.Drawing.Size(387, 123);
+ this.Controls.Add(this.label_upload_format);
+ this.Controls.Add(this.combobox_uploadimageformat);
+ this.Controls.Add(this.buttonCancel);
+ this.Controls.Add(this.buttonOK);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.LanguageKey = "immio.settings_title";
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "SettingsForm";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+ private GreenshotPlugin.Controls.GreenshotComboBox combobox_uploadimageformat;
+ private GreenshotPlugin.Controls.GreenshotLabel label_upload_format;
+ private GreenshotPlugin.Controls.GreenshotButton buttonCancel;
+ private GreenshotPlugin.Controls.GreenshotButton buttonOK;
+ }
+}
diff --git a/GreenshotImmioPlugin/Forms/SettingsForm.cs b/GreenshotImmioPlugin/Forms/SettingsForm.cs
new file mode 100644
index 000000000..b8d3e3236
--- /dev/null
+++ b/GreenshotImmioPlugin/Forms/SettingsForm.cs
@@ -0,0 +1,47 @@
+/*
+ * Greenshot - a free and open source screenshot tool
+ * Copyright (C) 2007-2012 Thomas Braun, Jens Klingen, Robin Krom
+ *
+ * For more information see: http://getgreenshot.org/
+ * The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/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.Windows.Forms;
+using GreenshotPlugin.Core;
+using GreenshotPlugin.Controls;
+
+namespace GreenshotImmioPlugin {
+ ///
+ /// Description of PasswordRequestForm.
+ ///
+ public partial class SettingsForm : ImmioForm {
+ public SettingsForm(ImmioConfiguration config) : base() {
+ //
+ // The InitializeComponent() call is required for Windows Forms designer support.
+ //
+ InitializeComponent();
+ this.Icon = GreenshotPlugin.Core.GreenshotResources.getGreenshotIcon();
+ }
+
+ void ButtonOKClick(object sender, EventArgs e) {
+ this.DialogResult = DialogResult.OK;
+ }
+
+ void ButtonCancelClick(object sender, System.EventArgs e) {
+ this.DialogResult = DialogResult.Cancel;
+ }
+ }
+}
diff --git a/GreenshotImmioPlugin/GreenshotImmioPlugin.csproj b/GreenshotImmioPlugin/GreenshotImmioPlugin.csproj
new file mode 100644
index 000000000..4c4a8c046
--- /dev/null
+++ b/GreenshotImmioPlugin/GreenshotImmioPlugin.csproj
@@ -0,0 +1,98 @@
+
+
+
+
+ {B7B30064-1034-4C53-AB7C-17A007360C19}
+ Library
+ GreenshotImmioPlugin
+ GreenshotImmioPlugin
+ v2.0
+ Properties
+ False
+ False
+ 4
+ false
+ Always
+
+
+
+ 3.5
+
+
+
+
+
+ ..\Greenshot\Lib\log4net.dll
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ SettingsForm.cs
+
+
+
+
+
+
+
+
+ Never
+
+
+
+ ImmioPlugin.cs
+
+
+
+
+ {5B924697-4DCD-4F98-85F1-105CB84B7341}
+ GreenshotPlugin
+
+
+
+ "$(SolutionDir)\tools\TortoiseSVN\SubWCRev.exe" "$(ProjectDir)\" "$(ProjectDir)\Properties\AssemblyInfo.cs.template" "$(ProjectDir)\Properties\AssemblyInfo.cs"
+
+ mkdir "$(SolutionDir)bin\$(Configuration)\Plugins\$(ProjectName)"
+copy "$(ProjectDir)bin\$(Configuration)\$(TargetFileName)" "$(SolutionDir)bin\$(Configuration)\Plugins\$(ProjectName)\*.gsp"
+copy "$(ProjectDir)bin\$(Configuration)\$(ProjectName).pdb" "$(SolutionDir)bin\$(Configuration)\Plugins\$(ProjectName)\"
+mkdir "$(SolutionDir)bin\$(Configuration)\Languages\Plugins\$(ProjectName)"
+copy "$(ProjectDir)\Languages\*.xml" "$(SolutionDir)bin\$(Configuration)\Languages\Plugins\$(ProjectName)\"
+
+
+
+ True
+ False
+ Full
+ true
+ TRACE
+
+
+ False
+ Off
+ 4194304
+ AnyCPU
+ 4096
+
+
+ False
+ Off
+ 4194304
+ x86
+ 4096
+
+
+ False
+ True
+ Full
+ true
+ DEBUG;TRACE
+
+
\ No newline at end of file
diff --git a/GreenshotImmioPlugin/ImmioConfiguration.cs b/GreenshotImmioPlugin/ImmioConfiguration.cs
new file mode 100644
index 000000000..210e094bd
--- /dev/null
+++ b/GreenshotImmioPlugin/ImmioConfiguration.cs
@@ -0,0 +1,63 @@
+/*
+ * Greenshot - a free and open source screenshot tool
+ * Copyright (C) 2007-2012 Thomas Braun, Jens Klingen, Robin Krom
+ *
+ * For more information see: http://getgreenshot.org/
+ * The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/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.Windows.Forms;
+
+using GreenshotPlugin.Controls;
+using GreenshotPlugin.Core;
+using Greenshot.IniFile;
+
+namespace GreenshotImmioPlugin {
+ ///
+ /// Description of ImmioConfiguration.
+ ///
+ [IniSection("Immio", Description="Greenshot Immio Plugin configuration")]
+ public class ImmioConfiguration : IniSection {
+ [IniProperty("UploadFormat", Description="What file type to use for uploading", DefaultValue="png")]
+ public OutputFormat UploadFormat;
+ [IniProperty("UploadJpegQuality", Description="JPEG file save quality in %.", DefaultValue="80")]
+ public int UploadJpegQuality;
+ [IniProperty("UploadReduceColors", Description="Reduce color amount of the uploaded image to 256", DefaultValue="False")]
+ public bool UploadReduceColors;
+ [IniProperty("UsePageLink", Description = "Use pagelink instead of direct link on the clipboard", DefaultValue = "False")]
+ public bool UsePageLink;
+
+ ///
+ /// A form for username/password
+ ///
+ /// bool true if OK was pressed, false if cancel
+ public bool ShowConfigDialog() {
+ SettingsForm settingsForm = null;
+
+ new PleaseWaitForm().ShowAndWait(ImmioPlugin.Attributes.Name, Language.GetString("immio", LangKey.communication_wait),
+ delegate() {
+ settingsForm = new SettingsForm(this);
+ }
+ );
+ DialogResult result = settingsForm.ShowDialog();
+ if (result == DialogResult.OK) {
+ return true;
+ }
+ return false;
+ }
+ }
+}
diff --git a/GreenshotImmioPlugin/ImmioDestination.cs b/GreenshotImmioPlugin/ImmioDestination.cs
new file mode 100644
index 000000000..548f703bc
--- /dev/null
+++ b/GreenshotImmioPlugin/ImmioDestination.cs
@@ -0,0 +1,76 @@
+/*
+ * Greenshot - a free and open source screenshot tool
+ * Copyright (C) 2007-2012 Thomas Braun, Jens Klingen, Robin Krom
+ *
+ * For more information see: http://getgreenshot.org/
+ * The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/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.ComponentModel;
+using System.Diagnostics;
+using System.Drawing;
+using System.IO;
+using System.Windows;
+
+using Greenshot.Plugin;
+using GreenshotPlugin.Core;
+using Greenshot.IniFile;
+
+namespace GreenshotImmioPlugin {
+ ///
+ /// Description of ImmioDestination.
+ ///
+ public class ImmioDestination : AbstractDestination {
+ private static log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(ImmioDestination));
+ private static ImmioConfiguration config = IniConfig.GetIniSection();
+ private ImmioPlugin plugin = null;
+
+ public ImmioDestination(ImmioPlugin plugin) {
+ this.plugin = plugin;
+ }
+
+ public override string Designation {
+ get {
+ return "Immio";
+ }
+ }
+
+ public override string Description {
+ get {
+ return Language.GetString("immio", LangKey.upload_menu_item);
+ }
+ }
+
+ public override Image DisplayIcon {
+ get {
+ ComponentResourceManager resources = new ComponentResourceManager(typeof(ImmioPlugin));
+ return (Image)resources.GetObject("Immio");
+ }
+ }
+
+ public override ExportInformation ExportCapture(bool manuallyInitiated, ISurface surface, ICaptureDetails captureDetails) {
+ ExportInformation exportInformation = new ExportInformation(this.Designation, this.Description);
+ using (Image image = surface.GetImageForExport()) {
+ string uploadURL = null;
+ exportInformation.ExportMade = plugin.Upload(captureDetails, image, out uploadURL);
+ exportInformation.Uri = uploadURL;
+ }
+ ProcessExport(exportInformation, surface);
+ return exportInformation;
+ }
+ }
+}
diff --git a/GreenshotImmioPlugin/ImmioPlugin.cs b/GreenshotImmioPlugin/ImmioPlugin.cs
new file mode 100644
index 000000000..adb17005b
--- /dev/null
+++ b/GreenshotImmioPlugin/ImmioPlugin.cs
@@ -0,0 +1,138 @@
+/*
+ * Greenshot - a free and open source screenshot tool
+ * Copyright (C) 2007-2012 Thomas Braun, Jens Klingen, Robin Krom
+ *
+ * For more information see: http://getgreenshot.org/
+ * The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/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.ComponentModel;
+using System.Drawing;
+using System.IO;
+using System.Windows.Forms;
+using System.Threading;
+
+using Greenshot.Plugin;
+using GreenshotPlugin.Controls;
+using GreenshotPlugin.Core;
+using Greenshot.IniFile;
+
+namespace GreenshotImmioPlugin {
+ ///
+ /// This is the ImmioPlugin code
+ ///
+ public class ImmioPlugin : IGreenshotPlugin {
+ private static readonly log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(ImmioPlugin));
+ private static ImmioConfiguration config;
+ public static PluginAttribute Attributes;
+ private IGreenshotHost host;
+ private ComponentResourceManager resources;
+
+ public ImmioPlugin() {
+ }
+
+ public IEnumerable Destinations() {
+ yield return new ImmioDestination(this);
+ }
+
+ public IEnumerable Processors() {
+ yield break;
+ }
+
+ ///
+ /// Implementation of the IGreenshotPlugin.Initialize
+ ///
+ /// Use the IGreenshotPluginHost interface to register events
+ /// Use the ICaptureHost interface to register in the MainContextMenu
+ /// My own attributes
+ /// true if plugin is initialized, false if not (doesn't show)
+ public virtual bool Initialize(IGreenshotHost pluginHost, PluginAttribute myAttributes) {
+ this.host = (IGreenshotHost)pluginHost;
+ Attributes = myAttributes;
+
+ // Get configuration
+ config = IniConfig.GetIniSection();
+ resources = new ComponentResourceManager(typeof(ImmioPlugin));
+
+ ToolStripMenuItem itemPlugInRoot = new ToolStripMenuItem(Language.GetString("immio", LangKey.configure));
+ itemPlugInRoot.Image = (Image)resources.GetObject("Immio");
+ itemPlugInRoot.Click += delegate {
+ config.ShowConfigDialog();
+ };
+
+ PluginUtils.AddToContextMenu(host, itemPlugInRoot);
+ return true;
+ }
+
+ public virtual void Shutdown() {
+ LOG.Debug("Immio Plugin shutdown.");
+ }
+
+ ///
+ /// Implementation of the IPlugin.Configure
+ ///
+ public virtual void Configure() {
+ config.ShowConfigDialog();
+ }
+
+ ///
+ /// This will be called when Greenshot is shutting down
+ ///
+ ///
+ ///
+ public void Closing(object sender, FormClosingEventArgs e) {
+ LOG.Debug("Application closing, de-registering Immio Plugin!");
+ Shutdown();
+ }
+
+ ///
+ /// Upload the capture to Immio
+ ///
+ ///
+ ///
+ /// out string for the url
+ /// true if the upload succeeded
+ public bool Upload(ICaptureDetails captureDetails, Image image, out string uploadURL) {
+ OutputSettings outputSettings = new OutputSettings(config.UploadFormat, config.UploadJpegQuality, config.UploadReduceColors);
+ uploadURL = null;
+ try {
+ string filename = Path.GetFileName(FilenameHelper.GetFilename(config.UploadFormat, captureDetails));
+ string url = null;
+
+ // Run upload in the background
+ new PleaseWaitForm().ShowAndWait(Attributes.Name, Language.GetString("immio", LangKey.communication_wait),
+ delegate() {
+ url = ImmioUtils.UploadToImmio(image, outputSettings, captureDetails.Title, filename);
+ }
+ );
+ uploadURL = url;
+
+ IniConfig.Save();
+ try {
+ Clipboard.SetText(url);
+ } catch (Exception ex) {
+ LOG.Error("Can't write to clipboard: ", ex);
+ }
+ return true;
+ } catch (Exception e) {
+ LOG.Error(e);
+ MessageBox.Show(Language.GetString("immio", LangKey.upload_failure) + " " + e.Message);
+ }
+ return false;
+ }
+ }
+}
diff --git a/GreenshotImmioPlugin/ImmioPlugin.resx b/GreenshotImmioPlugin/ImmioPlugin.resx
new file mode 100644
index 000000000..00ce7ed3d
--- /dev/null
+++ b/GreenshotImmioPlugin/ImmioPlugin.resx
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAMVJREFUOE9jDA0J
+ ZSAJADW8ffeOSAQyHaJhzvHXaGjR6TdoCKgMi4Zzj79+/vH3Pxg8ePfz2cdfQBGgTqBx2DVAlKKB9Zfe
+ 49QAlIOofvP1N9BsINp69QPEtdhtAEoAHbDi3FtMX+HUgKkUiw29m6e0rshsWORfO88WSLatyp+4fRqa
+ ThQbgKqBStuWO6ChpcdTFx+vXnh8IbofkFUvPOKDhhYciVlwtATFBojBmEqRRdA14FcNlEXRQFA1ugbS
+ Eh8wSRGPAL2C6QdnoO9oAAAAAElFTkSuQmCC
+
+
+
\ No newline at end of file
diff --git a/GreenshotImmioPlugin/ImmioUtils.cs b/GreenshotImmioPlugin/ImmioUtils.cs
new file mode 100644
index 000000000..e24b25d61
--- /dev/null
+++ b/GreenshotImmioPlugin/ImmioUtils.cs
@@ -0,0 +1,71 @@
+/*
+ * Greenshot - a free and open source screenshot tool
+ * Copyright (C) 2007-2012 Thomas Braun, Jens Klingen, Robin Krom
+ *
+ * For more information see: http://getgreenshot.org/
+ * The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/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.Drawing.Drawing2D;
+using System.IO;
+using System.Net;
+using System.Text;
+using System.Web;
+
+using GreenshotPlugin.Core;
+using Greenshot.IniFile;
+using Greenshot.Plugin;
+
+namespace GreenshotImmioPlugin {
+ ///
+ /// Description of ImmioUtils.
+ ///
+ public class ImmioUtils {
+ private static readonly log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(ImmioUtils));
+ private static ImmioConfiguration config = IniConfig.GetIniSection();
+
+ private ImmioUtils() {
+ }
+
+ ///
+ /// Do the actual upload to Immio
+ ///
+ /// Image to upload
+ /// OutputSettings for the image file format
+ /// Title
+ /// Filename
+ /// ImmioInfo with details
+ public static string UploadToImmio(Image image, OutputSettings outputSettings, string title, string filename) {
+
+ string responseString = null;
+ HttpWebRequest webRequest = (HttpWebRequest)NetworkHelper.CreateWebRequest("http://imm.io/store/");
+ webRequest.Method = "POST";
+ webRequest.ServicePoint.Expect100Continue = false;
+
+ IDictionary uploadParameters = new Dictionary();
+ uploadParameters.Add("name", filename);
+ uploadParameters.Add("image", new ImageContainer(image, outputSettings, null));
+ NetworkHelper.WriteMultipartFormData(webRequest, uploadParameters);
+
+ responseString = NetworkHelper.GetResponse(webRequest);
+
+ IDictionary parsedResponse = JSONHelper.JsonDecode(responseString);
+ return (string)parsedResponse["uri"];
+ }
+ }
+}
diff --git a/GreenshotImmioPlugin/LanguageKeys.cs b/GreenshotImmioPlugin/LanguageKeys.cs
new file mode 100644
index 000000000..3b7c486ff
--- /dev/null
+++ b/GreenshotImmioPlugin/LanguageKeys.cs
@@ -0,0 +1,36 @@
+/*
+ * Greenshot - a free and open source screenshot tool
+ * Copyright (C) 2007-2012 Thomas Braun, Jens Klingen, Robin Krom
+ *
+ * For more information see: http://getgreenshot.org/
+ * The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/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;
+
+namespace GreenshotImmioPlugin {
+ public enum LangKey {
+ upload_menu_item,
+ settings_title,
+ label_url,
+ label_upload_format,
+ OK,
+ CANCEL,
+ upload_success,
+ upload_failure,
+ communication_wait,
+ configure
+ }
+}
diff --git a/GreenshotImmioPlugin/Languages/language_immioplugin-en-US.xml b/GreenshotImmioPlugin/Languages/language_immioplugin-en-US.xml
new file mode 100644
index 000000000..7fff7c924
--- /dev/null
+++ b/GreenshotImmioPlugin/Languages/language_immioplugin-en-US.xml
@@ -0,0 +1,32 @@
+
+
+
+
+ Upload to Immio
+
+
+ Immio settings
+
+
+ OK
+
+
+ Cancel
+
+
+ Successfully uploaded image to Immio!
+
+
+ An error occured while uploading to Immio:
+
+
+ Image format
+
+
+ Communicating with Immio. Please wait...
+
+
+ Configure Immio
+
+
+
\ No newline at end of file
diff --git a/GreenshotImmioPlugin/Properties/AssemblyInfo.cs.template b/GreenshotImmioPlugin/Properties/AssemblyInfo.cs.template
new file mode 100644
index 000000000..bedcf9309
--- /dev/null
+++ b/GreenshotImmioPlugin/Properties/AssemblyInfo.cs.template
@@ -0,0 +1,54 @@
+/*
+ * Greenshot - a free and open source screenshot tool
+ * Copyright (C) 2007-2012 Thomas Braun, Jens Klingen, Robin Krom
+ *
+ * For more information see: http://getgreenshot.org/
+ * The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/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 .
+ */
+#region Using directives
+
+using System;
+using System.Reflection;
+using System.Runtime.InteropServices;
+using Greenshot.Plugin;
+
+#endregion
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("GreenshotImmioPlugin")]
+[assembly: AssemblyDescription("A plugin to upload images to Imm.io")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Greenshot")]
+[assembly: AssemblyProduct("Immio Plugin")]
+[assembly: AssemblyCopyright("Copyright (C) 2007-2012")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+// The PluginAttribute describes the "entryType" and if the plugin is configurable
+[assembly: PluginAttribute("GreenshotImmioPlugin.ImmioPlugin", true)]
+
+// This sets the default COM visibility of types in the assembly to invisible.
+// If you need to expose a type to COM, use [ComVisible(true)] on that type.
+[assembly: ComVisible(false)]
+
+// The assembly version has following format :
+//
+// Major.Minor.Build.Revision
+//
+// You can specify all the values or you can use the default the Revision and
+// Build Numbers by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.3.$WCREV$")]