From a907eca010a42c990f32168ce116ff3f6ec445d9 Mon Sep 17 00:00:00 2001 From: RKrom Date: Tue, 11 Sep 2012 16:44:11 +0000 Subject: [PATCH] Initial code for a possible Photobucket plug-in git-svn-id: http://svn.code.sf.net/p/greenshot/code/trunk@2023 7dccd23d-a4a3-4e1f-8c07-b4c1b4018ab4 --- .../Forms/PhotobucketForm.cs | 31 ++++ .../Forms/SettingsForm.Designer.cs | 158 ++++++++++++++++++ .../Forms/SettingsForm.cs | 47 ++++++ .../GreenshotPhotobucketPlugin.csproj | 108 ++++++++++++ GreenshotPhotobucketPlugin/LanguageKeys.cs | 42 +++++ .../language_photobucketplugin-de-DE.xml | 50 ++++++ .../language_photobucketplugin-en-US.xml | 53 ++++++ .../language_photobucketplugin-fr_FR.xml | 41 +++++ .../language_photobucketplugin-it-IT.xml | 50 ++++++ .../language_photobucketplugin-nl-NL.xml | 50 ++++++ .../language_photobucketplugin-ru-RU.xml | 50 ++++++ .../language_photobucketplugin-uk-UA.xml | 20 +++ .../language_photobucketplugin-zh-CN.xml | 38 +++++ .../PhotobucketConfiguration.cs | 75 +++++++++ .../PhotobucketDestination.cs | 78 +++++++++ GreenshotPhotobucketPlugin/PhotobucketInfo.cs | 98 +++++++++++ .../PhotobucketPlugin.cs | 150 +++++++++++++++++ .../PhotobucketPlugin.resx | 129 ++++++++++++++ .../PhotobucketUtils.cs | 128 ++++++++++++++ .../Properties/AssemblyInfo.cs.template | 54 ++++++ 20 files changed, 1450 insertions(+) create mode 100644 GreenshotPhotobucketPlugin/Forms/PhotobucketForm.cs create mode 100644 GreenshotPhotobucketPlugin/Forms/SettingsForm.Designer.cs create mode 100644 GreenshotPhotobucketPlugin/Forms/SettingsForm.cs create mode 100644 GreenshotPhotobucketPlugin/GreenshotPhotobucketPlugin.csproj create mode 100644 GreenshotPhotobucketPlugin/LanguageKeys.cs create mode 100644 GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-de-DE.xml create mode 100644 GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-en-US.xml create mode 100644 GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-fr_FR.xml create mode 100644 GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-it-IT.xml create mode 100644 GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-nl-NL.xml create mode 100644 GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-ru-RU.xml create mode 100644 GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-uk-UA.xml create mode 100644 GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-zh-CN.xml create mode 100644 GreenshotPhotobucketPlugin/PhotobucketConfiguration.cs create mode 100644 GreenshotPhotobucketPlugin/PhotobucketDestination.cs create mode 100644 GreenshotPhotobucketPlugin/PhotobucketInfo.cs create mode 100644 GreenshotPhotobucketPlugin/PhotobucketPlugin.cs create mode 100644 GreenshotPhotobucketPlugin/PhotobucketPlugin.resx create mode 100644 GreenshotPhotobucketPlugin/PhotobucketUtils.cs create mode 100644 GreenshotPhotobucketPlugin/Properties/AssemblyInfo.cs.template diff --git a/GreenshotPhotobucketPlugin/Forms/PhotobucketForm.cs b/GreenshotPhotobucketPlugin/Forms/PhotobucketForm.cs new file mode 100644 index 000000000..5a2d509bc --- /dev/null +++ b/GreenshotPhotobucketPlugin/Forms/PhotobucketForm.cs @@ -0,0 +1,31 @@ +/* + * 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 GreenshotPhotobucketPlugin { + /// + /// This class is needed for design-time resolving of the language files + /// + public class PhotobucketForm : GreenshotPlugin.Controls.GreenshotForm { + public PhotobucketForm() : base() { + } + } +} diff --git a/GreenshotPhotobucketPlugin/Forms/SettingsForm.Designer.cs b/GreenshotPhotobucketPlugin/Forms/SettingsForm.Designer.cs new file mode 100644 index 000000000..fb1b23364 --- /dev/null +++ b/GreenshotPhotobucketPlugin/Forms/SettingsForm.Designer.cs @@ -0,0 +1,158 @@ +/* + * 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 GreenshotPhotobucketPlugin { + 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.label_url = new GreenshotPlugin.Controls.GreenshotLabel(); + this.textBoxUrl = new GreenshotPlugin.Controls.GreenshotTextBox(); + this.combobox_uploadimageformat = new GreenshotPlugin.Controls.GreenshotComboBox(); + this.label_upload_format = new GreenshotPlugin.Controls.GreenshotLabel(); + this.checkbox_usepagelink = new GreenshotPlugin.Controls.GreenshotCheckBox(); + this.SuspendLayout(); + // + // buttonOK + // + this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonOK.LanguageKey = "photobucket.OK"; + this.buttonOK.Location = new System.Drawing.Point(222, 129); + 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 = "photobucket.CANCEL"; + this.buttonCancel.Location = new System.Drawing.Point(303, 129); + 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); + // + // label_url + // + this.label_url.LanguageKey = "photobucket.label_url"; + this.label_url.Location = new System.Drawing.Point(12, 21); + this.label_url.Name = "label_url"; + this.label_url.Size = new System.Drawing.Size(84, 20); + this.label_url.TabIndex = 7; + // + // textBoxUrl + // + this.textBoxUrl.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxUrl.Location = new System.Drawing.Point(102, 21); + this.textBoxUrl.Name = "textBoxUrl"; + this.textBoxUrl.PropertyName = "PhotobucketApiUrl"; + this.textBoxUrl.SectionName = "Photobucket"; + this.textBoxUrl.Size = new System.Drawing.Size(276, 20); + this.textBoxUrl.TabIndex = 6; + // + // 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, 47); + this.combobox_uploadimageformat.Name = "combobox_uploadimageformat"; + this.combobox_uploadimageformat.PropertyName = "UploadFormat"; + this.combobox_uploadimageformat.SectionName = "Photobucket"; + this.combobox_uploadimageformat.Size = new System.Drawing.Size(276, 21); + this.combobox_uploadimageformat.TabIndex = 8; + // + // label_upload_format + // + this.label_upload_format.LanguageKey = "photobucket.label_upload_format"; + this.label_upload_format.Location = new System.Drawing.Point(12, 50); + 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; + // + // checkbox_usepagelink + // + this.checkbox_usepagelink.AutoSize = true; + this.checkbox_usepagelink.LanguageKey = "photobucket.use_page_link"; + this.checkbox_usepagelink.Location = new System.Drawing.Point(15, 97); + this.checkbox_usepagelink.Name = "checkbox_usepagelink"; + this.checkbox_usepagelink.PropertyName = "UsePageLink"; + this.checkbox_usepagelink.SectionName = "Photobucket"; + this.checkbox_usepagelink.Size = new System.Drawing.Size(297, 17); + this.checkbox_usepagelink.TabIndex = 13; + this.checkbox_usepagelink.UseVisualStyleBackColor = true; + // + // SettingsForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.ClientSize = new System.Drawing.Size(387, 168); + this.Controls.Add(this.checkbox_usepagelink); + this.Controls.Add(this.label_upload_format); + this.Controls.Add(this.combobox_uploadimageformat); + this.Controls.Add(this.label_url); + this.Controls.Add(this.textBoxUrl); + this.Controls.Add(this.buttonCancel); + this.Controls.Add(this.buttonOK); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.LanguageKey = "photobucket.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.GreenshotTextBox textBoxUrl; + private GreenshotPlugin.Controls.GreenshotLabel label_url; + private GreenshotPlugin.Controls.GreenshotButton buttonCancel; + private GreenshotPlugin.Controls.GreenshotButton buttonOK; + private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_usepagelink; + } +} diff --git a/GreenshotPhotobucketPlugin/Forms/SettingsForm.cs b/GreenshotPhotobucketPlugin/Forms/SettingsForm.cs new file mode 100644 index 000000000..8c04847f5 --- /dev/null +++ b/GreenshotPhotobucketPlugin/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 GreenshotPhotobucketPlugin { + /// + /// Description of PasswordRequestForm. + /// + public partial class SettingsForm : PhotobucketForm { + public SettingsForm(PhotobucketConfiguration 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/GreenshotPhotobucketPlugin/GreenshotPhotobucketPlugin.csproj b/GreenshotPhotobucketPlugin/GreenshotPhotobucketPlugin.csproj new file mode 100644 index 000000000..9befd679a --- /dev/null +++ b/GreenshotPhotobucketPlugin/GreenshotPhotobucketPlugin.csproj @@ -0,0 +1,108 @@ + + + + {9C0ECC4C-7807-4111-916A-4F57BB29788A} + Debug + x86 + Library + GreenshotPhotobucketPlugin + GreenshotPhotobucketPlugin + v2.0 + Properties + C:\Users\Robin\AppData\Roaming\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis + False + False + 4 + false + OnBuildSuccess + + + + 3.5 + + + + bin\Debug\ + true + Full + False + True + False + Off + 4194304 + x86 + 4096 + DEBUG;TRACE + + + bin\Release\ + false + None + True + False + False + Off + 4194304 + AnyCPU + 4096 + + + + + ..\Greenshot\Lib\log4net.dll + + + + + + + + + Form + + + Form + + + SettingsForm.cs + + + + + + + + + + Never + + + Never + + + Never + + + Never + + + + + PhotobucketPlugin.cs + Designer + + + + + {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" +mkdir "$(SolutionDir)bin\$(Configuration)\Languages\Plugins\$(ProjectName)" +copy "$(ProjectDir)\Languages\*.xml" "$(SolutionDir)bin\$(Configuration)\Languages\Plugins\$(ProjectName)\" + + \ No newline at end of file diff --git a/GreenshotPhotobucketPlugin/LanguageKeys.cs b/GreenshotPhotobucketPlugin/LanguageKeys.cs new file mode 100644 index 000000000..82debdf6d --- /dev/null +++ b/GreenshotPhotobucketPlugin/LanguageKeys.cs @@ -0,0 +1,42 @@ +/* + * 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 GreenshotPhotobucketPlugin { + public enum LangKey { + upload_menu_item, + settings_title, + label_url, + label_upload_format, + label_clear, + OK, + CANCEL, + upload_success, + upload_failure, + communication_wait, + delete_question, + clear_question, + delete_title, + use_page_link, + history, + configure + } +} diff --git a/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-de-DE.xml b/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-de-DE.xml new file mode 100644 index 000000000..be0407a91 --- /dev/null +++ b/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-de-DE.xml @@ -0,0 +1,50 @@ + + + + + Zu Photobucket hochladen + + + Photobucket Einstellungen + + + Url + + + OK + + + Cancel + + + Das Hochladen zu Photobucket war erfolgreich. + + + Es gab einen Fehler beim Hochladen zu Photobucket: + + + Bildformat + + + Übermittle Daten zu Photobucket. Bitte warten... + + + Sind Sie sicher das sie das Bild {0} von Photobucket löschen möchte? + + + Sind Sie sicher das sie den lokalen Photobucket Verlauf löschen möchte? + + + Photobucket {0} löschen + + + Benutze der Seite-URL statt Bild-URL im Zwischenablage + + + Verlauf + + + Einstellungen + + + \ No newline at end of file diff --git a/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-en-US.xml b/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-en-US.xml new file mode 100644 index 000000000..461d7deb2 --- /dev/null +++ b/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-en-US.xml @@ -0,0 +1,53 @@ + + + + + Upload to Photobucket + + + Photobucket settings + + + Url + + + OK + + + Cancel + + + Successfully uploaded image to Photobucket! + + + An error occured while uploading to Photobucket: + + + Image format + + + Communicating with Photobucket. Please wait... + + + Are you sure you want to delete the image {0} from Photobucket? + + + Are you sure you want to delete the local Photobucket history? + + + Delete Photobucket {0} + + + Use anonymous access + + + Use page link instead of image link on clipboard + + + History + + + Configure + + + \ No newline at end of file diff --git a/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-fr_FR.xml b/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-fr_FR.xml new file mode 100644 index 000000000..b90d3e228 --- /dev/null +++ b/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-fr_FR.xml @@ -0,0 +1,41 @@ + + + + + Téléverser vers Photobucket + + + Paramètres Photobucket + + + URL + + + Utiliser proxy + + + OK + + + Annuler + + + L'image a été téléversée vers Photobucket avec succès ! + + + Une erreur est survenue lors du téléversement vers Photobucket: + + + Format d'image + + + Téléversement vers Photobucket, veuillez patienter... + + + Histoire + + + Configurer + + + \ No newline at end of file diff --git a/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-it-IT.xml b/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-it-IT.xml new file mode 100644 index 000000000..f3bb72df1 --- /dev/null +++ b/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-it-IT.xml @@ -0,0 +1,50 @@ + + + + + Carica su Imgur + + + Impostazioni Imgur + + + Url + + + OK + + + Annulla + + + Immagine caricata correttamente su Imgur! + + + Si è verificato un problema durante il collegamento: + + + Formato immagine + + + Comunicazione con Imgur. Attendere prego... + + + Sei sicuro si voler eliminare l'immagine {0} da Imgur? + + + Sei sicuro si voler eliminare la cronologia locale di Imgur? + + + Elimina Imgur {0} + + + Usa il collegamento alla pagina invece di quello all'immagine su appunti + + + Cronologia + + + Configurazione + + + \ No newline at end of file diff --git a/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-nl-NL.xml b/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-nl-NL.xml new file mode 100644 index 000000000..fae6514dd --- /dev/null +++ b/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-nl-NL.xml @@ -0,0 +1,50 @@ + + + + + Naar Photobucket uploaden + + + Photobucket instellingen + + + Url + + + OK + + + Afbreken + + + Het uploaden naar Photobucket is geslaagt! + + + Tijdens het uploaden naar Photobucket is een fout opgetreden: + + + Beeld formaat + + + Data overdraging naar Photobucket, wachten AUB... + + + Weet U zeker dat U het beeld {0} van Photobucket verwijderen wilt? + + + Weet U zeker dat U de locale Photobucket historie verwijderen wilt? + + + Photobucket {0} verwijderen + + + Kopieer de pagina link in plaats van de beeld link in het klembord + + + Verloop + + + Instellingen + + + \ No newline at end of file diff --git a/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-ru-RU.xml b/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-ru-RU.xml new file mode 100644 index 000000000..8b238ac90 --- /dev/null +++ b/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-ru-RU.xml @@ -0,0 +1,50 @@ + + + + + Загрузить на Imgur + + + Imgur параметры + + + Url + + + OK + + + Отмена + + + Изображение успешно загружено на Imgur! + + + Произошла ошибка при загрузке на Imgur: + + + Формат изображения + + + Общение с Imgur. Подождите... + + + Вы действительно хотите удалить изображение {0} из Imgur? + + + Вы действительно хотите удалить местную историю Imgur? + + + Удалить Imgur {0} + + + Использовать ссылку страницы, вместо ссылки изображения в буфере обмена + + + История + + + Настройка + + + \ No newline at end of file diff --git a/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-uk-UA.xml b/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-uk-UA.xml new file mode 100644 index 000000000..509fd0d68 --- /dev/null +++ b/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-uk-UA.xml @@ -0,0 +1,20 @@ + + + + Вивантажити на Imgur + Параметри Imgur + Посилання + Гаразд + Скасувати + Зображення вдало вивантажено на Imgur! + Відбулась помилка при вивантаженні зображення на Imgur: + Формат зображення + З’єднання з Imgur. Будь ласка, зачекайте... + Чи дійсно Ви хочете видалити зображення {0} з Imgur? + Чи дійсно Ви хочете видалити локальну історію Imgur? + Видалити Imgur {0} + Використовувати посилання на сторінку замість посилання на зображення + Історія + Налаштувати + + diff --git a/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-zh-CN.xml b/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-zh-CN.xml new file mode 100644 index 000000000..86506241b --- /dev/null +++ b/GreenshotPhotobucketPlugin/Languages/language_photobucketplugin-zh-CN.xml @@ -0,0 +1,38 @@ + + + + + 上传到 Photobucket + + + Photobucket 设置 + + + Url + + + 确定 + + + 取消 + + + 已成功上传图片到 Photobucket ! + + + 上传到 Photobucket 时出现错误: + + + 图片格式 + + + 连接到 Photobucket,请稍候... + + + 您是否确定要从 Photobucket 删除图片 {0} ? + + + 删除 Photobucket {0} + + + \ No newline at end of file diff --git a/GreenshotPhotobucketPlugin/PhotobucketConfiguration.cs b/GreenshotPhotobucketPlugin/PhotobucketConfiguration.cs new file mode 100644 index 000000000..662976f51 --- /dev/null +++ b/GreenshotPhotobucketPlugin/PhotobucketConfiguration.cs @@ -0,0 +1,75 @@ +/* + * 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 GreenshotPhotobucketPlugin { + /// + /// Description of PhotobucketConfiguration. + /// + [IniSection("Photobucket", Description="Greenshot Photobucket Plugin configuration")] + public class PhotobucketConfiguration : IniSection { + [IniProperty("PhotobucketApiUrl", Description = "Url to Photobucket system.", DefaultValue = "http://api.photobucket.com")] + public string PhotobucketApiUrl; + + [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; + [IniProperty("PhotobucketToken", Description = "The Photobucket token", Encrypted=true, ExcludeIfNull=true)] + public string PhotobucketToken; + [IniProperty("PhotobucketTokenSecret", Description = "The Photobucket token secret", Encrypted=true, ExcludeIfNull=true)] + public string PhotobucketTokenSecret; + + public int Credits { + get; + set; + } + + /// + /// A form for username/password + /// + /// bool true if OK was pressed, false if cancel + public bool ShowConfigDialog() { + SettingsForm settingsForm = null; + + new PleaseWaitForm().ShowAndWait(PhotobucketPlugin.Attributes.Name, Language.GetString("photobucket", LangKey.communication_wait), + delegate() { + settingsForm = new SettingsForm(this); + } + ); + DialogResult result = settingsForm.ShowDialog(); + if (result == DialogResult.OK) { + return true; + } + return false; + } + } +} diff --git a/GreenshotPhotobucketPlugin/PhotobucketDestination.cs b/GreenshotPhotobucketPlugin/PhotobucketDestination.cs new file mode 100644 index 000000000..26833abe9 --- /dev/null +++ b/GreenshotPhotobucketPlugin/PhotobucketDestination.cs @@ -0,0 +1,78 @@ +/* + * 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 GreenshotPhotobucketPlugin { + /// + /// Description of PhotobucketDestination. + /// + public class PhotobucketDestination : AbstractDestination { + private static log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(PhotobucketDestination)); + private static PhotobucketConfiguration config = IniConfig.GetIniSection(); + private PhotobucketPlugin plugin = null; + + public PhotobucketDestination(PhotobucketPlugin plugin) { + this.plugin = plugin; + } + + public override string Designation { + get { + return "Photobucket"; + } + } + + public override string Description { + get { + return Language.GetString("photobucket", LangKey.upload_menu_item); + } + } + + public override Image DisplayIcon { + get { + ComponentResourceManager resources = new ComponentResourceManager(typeof(PhotobucketPlugin)); + return (Image)resources.GetObject("Photobucket"); + } + } + + public override bool ExportCapture(bool manuallyInitiated, ISurface surface, ICaptureDetails captureDetails) { + using (Image image = surface.GetImageForExport()) { + string uploadURL = null; + bool uploaded = plugin.Upload(captureDetails, image, out uploadURL); + if (uploaded) { + surface.UploadURL = uploadURL; + surface.SendMessageEvent(this, SurfaceMessageTyp.UploadedUrl, Language.GetFormattedString("exported_to", Designation)); + surface.Modified = false; + } + return uploaded; + } + } + } +} diff --git a/GreenshotPhotobucketPlugin/PhotobucketInfo.cs b/GreenshotPhotobucketPlugin/PhotobucketInfo.cs new file mode 100644 index 000000000..da363b56b --- /dev/null +++ b/GreenshotPhotobucketPlugin/PhotobucketInfo.cs @@ -0,0 +1,98 @@ +/* + * 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.Drawing; +using System.Xml; + +namespace GreenshotPhotobucketPlugin +{ + /// + /// Description of PhotobucketInfo. + /// + public class PhotobucketInfo : IDisposable { + private static readonly log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(PhotobucketInfo)); + + private string original; + public string Original { + get {return original;} + set {original = value;} + } + + private string page; + public string Page { + get {return page;} + set {page = value;} + } + + private string thumbnail; + public string Thumbnail { + get {return thumbnail;} + set {thumbnail = value;} + } + + public PhotobucketInfo() { + } + + /// + /// The public accessible Dispose + /// Will call the GarbageCollector to SuppressFinalize, preventing being cleaned twice + /// + public void Dispose() { + Dispose(true); + GC.SuppressFinalize(this); + } + + /// + /// This Dispose is called from the Dispose and the Destructor. + /// When disposing==true all non-managed resources should be freed too! + /// + /// + protected virtual void Dispose(bool disposing) { + if (disposing) { + } + } + + public static PhotobucketInfo ParseResponse(string response) { + LOG.Debug(response); + PhotobucketInfo PhotobucketInfo = new PhotobucketInfo(); + try { + XmlDocument doc = new XmlDocument(); + doc.LoadXml(response); + XmlNodeList nodes; + nodes = doc.GetElementsByTagName("url"); + if(nodes.Count > 0) { + PhotobucketInfo.Original = nodes.Item(0).InnerText; + } + nodes = doc.GetElementsByTagName("browseurl"); + if(nodes.Count > 0) { + PhotobucketInfo.Page = nodes.Item(0).InnerText; + } + nodes = doc.GetElementsByTagName("thumb"); + if(nodes.Count > 0) { + PhotobucketInfo.Thumbnail = nodes.Item(0).InnerText; + } + } catch(Exception e) { + LOG.ErrorFormat("Could not parse Photobucket response due to error {0}, response was: {1}", e.Message, response); + } + return PhotobucketInfo; + } + } +} diff --git a/GreenshotPhotobucketPlugin/PhotobucketPlugin.cs b/GreenshotPhotobucketPlugin/PhotobucketPlugin.cs new file mode 100644 index 000000000..907be691d --- /dev/null +++ b/GreenshotPhotobucketPlugin/PhotobucketPlugin.cs @@ -0,0 +1,150 @@ +/* + * 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 GreenshotPhotobucketPlugin { + /// + /// This is the GreenshotPhotobucketPlugin base code + /// + public class PhotobucketPlugin : IGreenshotPlugin { + private static readonly log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(PhotobucketPlugin)); + private static PhotobucketConfiguration config; + public static PluginAttribute Attributes; + private IGreenshotHost host; + private ComponentResourceManager resources; + + public PhotobucketPlugin() { + } + + public IEnumerable Destinations() { + yield return new PhotobucketDestination(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(PhotobucketPlugin)); + + ToolStripMenuItem itemPlugInRoot = new ToolStripMenuItem("Photobucket"); + itemPlugInRoot.Image = (Image)resources.GetObject("Photobucket"); + + ToolStripMenuItem itemPlugInConfig = new ToolStripMenuItem(Language.GetString("photobucket", LangKey.configure)); + itemPlugInConfig.Tag = host; + itemPlugInConfig.Click += delegate { + config.ShowConfigDialog(); + }; + itemPlugInRoot.DropDownItems.Add(itemPlugInConfig); + + PluginUtils.AddToContextMenu(host, itemPlugInRoot); + + return true; + } + + public virtual void Shutdown() { + LOG.Debug("Photobucket 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 Photobucket Plugin!"); + Shutdown(); + } + + /// + /// Upload the capture to Photobucket + /// + /// + /// + /// 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); + using (MemoryStream stream = new MemoryStream()) { + host.SaveToStream(image, stream, outputSettings); + try { + string filename = Path.GetFileName(host.GetFilename(config.UploadFormat, captureDetails)); + PhotobucketInfo PhotobucketInfo = null; + + // Run upload in the background + new PleaseWaitForm().ShowAndWait(Attributes.Name, Language.GetString("photobucket", LangKey.communication_wait), + delegate() { + PhotobucketInfo = PhotobucketUtils.UploadToPhotobucket(stream.GetBuffer(), (int)stream.Length, captureDetails.Title, filename); + } + ); + uploadURL = null; + try { + if (config.UsePageLink) { + uploadURL = PhotobucketInfo.Page; + Clipboard.SetText(PhotobucketInfo.Page); + } else { + uploadURL = PhotobucketInfo.Original; + Clipboard.SetText(PhotobucketInfo.Original); + } + } catch (Exception ex) { + LOG.Error("Can't write to clipboard: ", ex); + } + return true; + } catch (Exception e) { + LOG.Error(e); + MessageBox.Show(Language.GetString("photobucket", LangKey.upload_failure) + " " + e.Message); + } + } + uploadURL = null; + return false; + } + } +} diff --git a/GreenshotPhotobucketPlugin/PhotobucketPlugin.resx b/GreenshotPhotobucketPlugin/PhotobucketPlugin.resx new file mode 100644 index 000000000..ebae1258e --- /dev/null +++ b/GreenshotPhotobucketPlugin/PhotobucketPlugin.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAFJJREFUOE9jFBIS + /M9ACQAZQAlmwKXZL0f6f+cxFTAGsXGpw2kATDOMJtkAmAt6TpHpAmLDBacXGhsb/sMAiE2yF+C6oYxR + A/4PxUCkOB0QmxIB9tCMsK3wUGgAAAAASUVORK5CYII= + + + \ No newline at end of file diff --git a/GreenshotPhotobucketPlugin/PhotobucketUtils.cs b/GreenshotPhotobucketPlugin/PhotobucketUtils.cs new file mode 100644 index 000000000..16c7d0b8b --- /dev/null +++ b/GreenshotPhotobucketPlugin/PhotobucketUtils.cs @@ -0,0 +1,128 @@ +/* + * 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; + +namespace GreenshotPhotobucketPlugin { + /// + /// Description of PhotobucketUtils. + /// + public class PhotobucketUtils { + private static readonly log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(PhotobucketUtils)); + private static PhotobucketConfiguration config = IniConfig.GetIniSection(); + + private PhotobucketUtils() { + } + + /// + /// A wrapper around the EscapeDataString, as the limit is 32766 characters + /// See: http://msdn.microsoft.com/en-us/library/system.uri.escapedatastring%28v=vs.110%29.aspx + /// + /// + /// escaped data string + private static StringBuilder EscapeDataStringToStringBuilder(string dataString) { + StringBuilder result = new StringBuilder(); + int currentLocation = 0; + while (currentLocation < dataString.Length) { + string process = dataString.Substring(currentLocation,Math.Min(16384, dataString.Length-currentLocation)); + result.Append(Uri.EscapeDataString(process)); + currentLocation = currentLocation + 16384; + } + return result; + } + + private static string EscapeText(string text) { + string[] UriRfc3986CharsToEscape = new[] { "!", "*", "'", "(", ")" }; + LOG.DebugFormat("Text size {0}", text.Length); + StringBuilder escaped = EscapeDataStringToStringBuilder(text); + + for (int i = 0; i < UriRfc3986CharsToEscape.Length; i++) { + escaped.Replace(UriRfc3986CharsToEscape[i], Uri.HexEscape(UriRfc3986CharsToEscape[i][0])); + } + return escaped.ToString(); + } + + /// + /// Do the actual upload to Photobucket + /// For more details on the available parameters, see: http://api.Photobucket.com/resources_anon + /// + /// byte[] with image data + /// PhotobucketResponse + public static PhotobucketInfo UploadToPhotobucket(byte[] imageData, int dataLength, string title, string filename) { + StringBuilder uploadRequest = new StringBuilder(); + uploadRequest.Append("identifier=greenshot"); + // add type + uploadRequest.Append("&type=base64"); + // Add image + uploadRequest.Append("&uploadfile="); + uploadRequest.Append(EscapeText(System.Convert.ToBase64String(imageData, 0, dataLength))); + // add title + if (title != null) { + uploadRequest.Append("&title="); + uploadRequest.Append(EscapeText(title)); + } + // add filename + if (filename != null) { + uploadRequest.Append("&filename="); + uploadRequest.Append(EscapeText(filename)); + } + string url = config.PhotobucketApiUrl + "/album/greenshot/upload"; + string responseString; + + OAuthHelper oAuth = new OAuthHelper(); + oAuth.CallbackUrl = "http://getgreenshot.org"; + oAuth.AccessTokenUrl = "http://api.photobucket.com/login/access"; + oAuth.AuthorizeUrl = " http://photobucket.com/apilogin/login"; + oAuth.RequestTokenUrl = "http://api.photobucket.com/login/request"; + oAuth.ConsumerKey = "fill-in"; + oAuth.ConsumerSecret = "fill-in"; + oAuth.UserAgent = "Greenshot"; + if (string.IsNullOrEmpty(config.PhotobucketToken)) { + LOG.Debug("Creating Photobucket Token"); + oAuth.getRequestToken(); + if (string.IsNullOrEmpty(oAuth.authorizeToken("Photobucket authorization"))) { + return null; + } + string accessToken = oAuth.getAccessToken(); + config.PhotobucketToken = oAuth.Token; + config.PhotobucketTokenSecret = oAuth.TokenSecret; + } else { + LOG.Debug("Using stored Photobucket Token"); + oAuth.Token = config.PhotobucketToken; + oAuth.TokenSecret = config.PhotobucketTokenSecret; + } + responseString = oAuth.oAuthWebRequest(OAuthHelper.Method.POST, url, uploadRequest.ToString()); + LOG.Info(responseString); + PhotobucketInfo PhotobucketInfo = PhotobucketInfo.ParseResponse(responseString); + LOG.Debug("Upload to Photobucket was finished"); + return PhotobucketInfo; + } + } +} diff --git a/GreenshotPhotobucketPlugin/Properties/AssemblyInfo.cs.template b/GreenshotPhotobucketPlugin/Properties/AssemblyInfo.cs.template new file mode 100644 index 000000000..da7ef9f76 --- /dev/null +++ b/GreenshotPhotobucketPlugin/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("Greenshot-Photobucket-Plugin")] +[assembly: AssemblyDescription("A plugin to upload images to Photobucket")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Greenshot")] +[assembly: AssemblyProduct("Photobucket Plugin")] +[assembly: AssemblyCopyright("Copyright (C) 2007-2012")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +// The PluginAttribute describes the "entryType" and if the plugin is configurable +[assembly: PluginAttribute("GreenshotPhotobucketPlugin.PhotobucketPlugin", 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.2.$WCREV$")]