Merge remote-tracking branch 'refs/remotes/ShareX/master'

This commit is contained in:
L1Q 2015-11-15 16:50:19 +02:00
commit d1a1c77af9
279 changed files with 22488 additions and 2148 deletions

View file

@ -843,7 +843,7 @@ protected virtual void SwitchParent(Surface newParent)
_parent.Controls.Add(_targetGripper);
}
// Normal grippers
if (_grippers != null)
if (_parent != null && _grippers != null)
{
_parent.Controls.AddRange(_grippers);
}

View file

@ -77,7 +77,7 @@ public string Text
internal void ChangeText(string newText, bool allowUndoable)
{
if ((text == null && newText != null) || !text.Equals(newText))
if ((text == null && newText != null) || (text != null && !text.Equals(newText)))
{
if (makeUndoable && allowUndoable)
{

View file

@ -47,9 +47,10 @@ Name: "de"; MessagesFile: "compiler:Languages\German.isl"
[Tasks]
Name: "CreateDesktopIcon"; Description: "Create a desktop shortcut"; GroupDescription: "Additional shortcuts:"
Name: "CreateContextMenuButton"; Description: "Show ""Upload with ShareX"" button in Windows Explorer context menu"; GroupDescription: "Additional shortcuts:"
Name: "CreateSendToIcon"; Description: "Create a send to shortcut"; GroupDescription: "Additional shortcuts:"
Name: "CreateQuickLaunchIcon"; Description: "Create a quick launch shortcut"; GroupDescription: "Additional shortcuts:"; OnlyBelowVersion: 0,6.1
Name: "CreateStartupIcon"; Description: "Launch {#AppName} automatically at Windows startup"; GroupDescription: "Other tasks:"
Name: "CreateStartupIcon"; Description: "Run ShareX when Windows starts"; GroupDescription: "Other tasks:"
[Files]
Source: "{#AppParentDirectory}\ShareX.exe"; DestDir: {app}; Flags: ignoreversion
@ -66,7 +67,9 @@ Source: "{#AppParentDirectory}\hu\*.resources.dll"; DestDir: {app}\Languages\hu;
Source: "{#AppParentDirectory}\ko-KR\*.resources.dll"; DestDir: {app}\Languages\ko-KR; Flags: ignoreversion
Source: "{#AppParentDirectory}\nl-NL\*.resources.dll"; DestDir: {app}\Languages\nl-NL; Flags: ignoreversion
Source: "{#AppParentDirectory}\pt-BR\*.resources.dll"; DestDir: {app}\Languages\pt-BR; Flags: ignoreversion
Source: "{#AppParentDirectory}\ru\*.resources.dll"; DestDir: {app}\Languages\ru; Flags: ignoreversion
Source: "{#AppParentDirectory}\tr\*.resources.dll"; DestDir: {app}\Languages\tr; Flags: ignoreversion
Source: "{#AppParentDirectory}\vi-VN\*.resources.dll"; DestDir: {app}\Languages\vi-VN; Flags: ignoreversion
Source: "{#AppParentDirectory}\zh-CN\*.resources.dll"; DestDir: {app}\Languages\zh-CN; Flags: ignoreversion
[Icons]
@ -87,6 +90,12 @@ Filename: regsvr32; WorkingDir: {app}; Parameters: "/s /u audio_sniffer.dll"; Ch
Filename: regsvr32; WorkingDir: {app}; Parameters: "/s /u audio_sniffer-x64.dll"; Check: IsWin64
[Registry]
Root: "HKCU"; Subkey: "Software\Classes\*\shell\{#AppName}"; ValueType: string; ValueData: "Upload with {#AppName}"; Tasks: CreateContextMenuButton
Root: "HKCU"; Subkey: "Software\Classes\*\shell\{#AppName}"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#AppFilename}"",0"; Tasks: CreateContextMenuButton
Root: "HKCU"; Subkey: "Software\Classes\*\shell\{#AppName}\command"; ValueType: string; ValueData: """{app}\{#AppFilename}"" ""%1"""; Tasks: CreateContextMenuButton
Root: "HKCU"; Subkey: "Software\Classes\Directory\shell\{#AppName}"; ValueType: string; ValueData: "Upload with {#AppName}"; Tasks: CreateContextMenuButton
Root: "HKCU"; Subkey: "Software\Classes\Directory\shell\{#AppName}"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#AppFilename}"",0"; Tasks: CreateContextMenuButton
Root: "HKCU"; Subkey: "Software\Classes\Directory\shell\{#AppName}\command"; ValueType: string; ValueData: """{app}\{#AppFilename}"" ""%1"""; Tasks: CreateContextMenuButton
Root: "HKCU"; Subkey: "Software\Classes\*\shell\{#AppName}"; Flags: dontcreatekey uninsdeletekey
Root: "HKCU"; Subkey: "Software\Classes\Directory\shell\{#AppName}"; Flags: dontcreatekey uninsdeletekey
Root: "HKCU"; Subkey: "Software\Classes\Folder\shell\{#AppName}"; Flags: dontcreatekey uninsdeletekey

View file

@ -0,0 +1,156 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>ShareX - Automatisieren</value>
</data>
<data name="btnAddMouseMove.Text" xml:space="preserve">
<value>Zeigerposition hinzufügen</value>
</data>
<data name="btnLoadExample.Text" xml:space="preserve">
<value>Beispiel laden</value>
</data>
<data name="btnRemoveScript.Text" xml:space="preserve">
<value>Entfernen</value>
</data>
<data name="btnRun.Text" xml:space="preserve">
<value>Start</value>
</data>
<data name="btnSaveScript.Text" xml:space="preserve">
<value>Speichern</value>
</data>
<data name="chScriptName.Text" xml:space="preserve">
<value>Name</value>
</data>
<data name="lblFunctions.Text" xml:space="preserve">
<value>Funktionen:</value>
</data>
<data name="lblKeys.Text" xml:space="preserve">
<value>Tasten:</value>
</data>
<data name="lblLineDelayMiliseconds.Text" xml:space="preserve">
<value>ms</value>
</data>
<data name="lblScriptName.Text" xml:space="preserve">
<value>Script Name:</value>
</data>
<data name="lblLineDelay.Text" xml:space="preserve">
<value>Zeilenverzögerung:</value>
</data>
</root>

View file

@ -0,0 +1,156 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>ShareX - Tự động hóa</value>
</data>
<data name="btnAddMouseMove.Text" xml:space="preserve">
<value>Thêm vị trí con trỏ</value>
</data>
<data name="btnLoadExample.Text" xml:space="preserve">
<value>Đọc ví dụ</value>
</data>
<data name="btnRemoveScript.Text" xml:space="preserve">
<value>Xóa</value>
</data>
<data name="btnRun.Text" xml:space="preserve">
<value>Bắt đầu</value>
</data>
<data name="btnSaveScript.Text" xml:space="preserve">
<value>Lưu</value>
</data>
<data name="chScriptName.Text" xml:space="preserve">
<value>Tên</value>
</data>
<data name="lblFunctions.Text" xml:space="preserve">
<value>Chức năng:</value>
</data>
<data name="lblKeys.Text" xml:space="preserve">
<value>Phím:</value>
</data>
<data name="lblLineDelay.Text" xml:space="preserve">
<value>Trì hoãn giữa các dòng:</value>
</data>
<data name="lblLineDelayMiliseconds.Text" xml:space="preserve">
<value>mili giây</value>
</data>
<data name="lblScriptName.Text" xml:space="preserve">
<value>Tên script:</value>
</data>
</root>

View file

@ -0,0 +1,171 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>ShareX - Chọn màu</value>
</data>
<data name="btnCancel.Text" xml:space="preserve">
<value>Hủy bỏ</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>OK</value>
</data>
<data name="lblAlpha.Text" xml:space="preserve">
<value>Alpha:</value>
</data>
<data name="lblCyan.Text" xml:space="preserve">
<value>Cyan:</value>
</data>
<data name="lblDecimal.Text" xml:space="preserve">
<value>Decimal:</value>
</data>
<data name="lblKey.Text" xml:space="preserve">
<value>Key:</value>
</data>
<data name="lblMagenta.Text" xml:space="preserve">
<value>Magenta:</value>
</data>
<data name="lblNew.Text" xml:space="preserve">
<value>Mới:</value>
</data>
<data name="lblOld.Text" xml:space="preserve">
<value>Cũ:</value>
</data>
<data name="lblYellow.Text" xml:space="preserve">
<value>Vàng:</value>
</data>
<data name="rbBlue.Text" xml:space="preserve">
<value>Blue:</value>
</data>
<data name="rbBrightness.Text" xml:space="preserve">
<value>Độ sáng:</value>
</data>
<data name="rbGreen.Text" xml:space="preserve">
<value>Green:</value>
</data>
<data name="rbHue.Text" xml:space="preserve">
<value>Hue:</value>
</data>
<data name="rbRed.Text" xml:space="preserve">
<value>Red:</value>
</data>
<data name="rbSaturation.Text" xml:space="preserve">
<value>Tương phản:</value>
</data>
</root>

View file

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>Gradient</value>
</data>
<data name="btnAdd.Text" xml:space="preserve">
<value>Thêm</value>
</data>
<data name="btnCancel.Text" xml:space="preserve">
<value>Hủy bỏ</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>OK</value>
</data>
<data name="btnRemove.Text" xml:space="preserve">
<value>Xóa</value>
</data>
<data name="cbtnCurrentColor.Text" xml:space="preserve">
<value>Màu</value>
</data>
<data name="chLocation.Text" xml:space="preserve">
<value>Vị trí</value>
</data>
<data name="lblGradientType.Text" xml:space="preserve">
<value>Kiểu Gradient:</value>
</data>
<data name="lblLocation.Text" xml:space="preserve">
<value>Vị trí:</value>
</data>
<data name="lblPreview.Text" xml:space="preserve">
<value>Xem trước:</value>
</data>
</root>

View file

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@ -120,7 +121,7 @@
<value>Exportieren</value>
</data>
<data name="btnImport.Text" xml:space="preserve">
<value>Improtieren</value>
<value>Importieren</value>
</data>
<data name="tsmiExportClipboard.Text" xml:space="preserve">
<value>In Zwischenablage kopieren</value>

View file

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="tsmiExportFile.Text" xml:space="preserve">
<value>Lưu thành tệp tin...</value>
</data>
<data name="tsmiExportUpload.Text" xml:space="preserve">
<value>Tải lên dưới dạng văn bản</value>
</data>
<data name="tsmiImportClipboard.Text" xml:space="preserve">
<value>Từ vùng nhớ tạm</value>
</data>
<data name="tsmiImportFile.Text" xml:space="preserve">
<value>Từ tệp tin...</value>
</data>
<data name="tsmiImportURL.Text" xml:space="preserve">
<value>Từ URL...</value>
</data>
<data name="tsmiExportClipboard.Text" xml:space="preserve">
<value>Sao chép vào vùng nhớ tạm</value>
</data>
<data name="btnExport.Text" xml:space="preserve">
<value>Xuất ra</value>
</data>
<data name="btnImport.Text" xml:space="preserve">
<value>Nhập vào</value>
</data>
</root>

View file

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="lblStatus.Text" xml:space="preserve">
<value>Xem trước ảnh</value>
</data>
<data name="tsmiCopyImage.Text" xml:space="preserve">
<value>Sao chép ảnh</value>
</data>
</root>

View file

@ -118,10 +118,10 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnSave.Text" xml:space="preserve">
<value>&amp;Appliquer</value>
<value>Appliquer</value>
</data>
<data name="btnCancel.Text" xml:space="preserve">
<value>&amp;Fermer</value>
<value>Fermer</value>
</data>
<data name="lblAlternateDNS.Text" xml:space="preserve">
<value>Serveur DNS auxiliaire:</value>

View file

@ -273,7 +273,7 @@
<value>11</value>
</data>
<data name="btnSave.Text" xml:space="preserve">
<value>&amp;Apply</value>
<value>Apply</value>
</data>
<data name="&gt;&gt;btnSave.Name" xml:space="preserve">
<value>btnSave</value>
@ -297,7 +297,7 @@
<value>12</value>
</data>
<data name="btnCancel.Text" xml:space="preserve">
<value>&amp;Close</value>
<value>Close</value>
</data>
<data name="&gt;&gt;btnCancel.Name" xml:space="preserve">
<value>btnCancel</value>

View file

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@ -120,10 +121,10 @@
<value>ShareX DNS Değiştirici</value>
</data>
<data name="btnCancel.Text" xml:space="preserve">
<value>&amp;Kapat</value>
<value>Kapat</value>
</data>
<data name="btnSave.Text" xml:space="preserve">
<value>&amp;Uygula</value>
<value>Uygula</value>
</data>
<data name="cbAutomatic.Text" xml:space="preserve">
<value>DNS sunucu adresini otomatik al</value>

View file

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>Trình đổi DNS ShareX</value>
</data>
<data name="cbAutomatic.Text" xml:space="preserve">
<value>Nhận địa chỉ máy chủ DNS tự động</value>
</data>
<data name="lblDNS.Text" xml:space="preserve">
<value>Máy chủ DNS:</value>
</data>
<data name="lblPreferredDNS.Text" xml:space="preserve">
<value>Máy chủ DNS ưa dùng:</value>
</data>
<data name="lblAlternateDNS.Text" xml:space="preserve">
<value>Máy chủ DNS thay thế:</value>
</data>
<data name="lblAdapters.Text" xml:space="preserve">
<value>Network adapter:</value>
</data>
<data name="btnCancel.Text" xml:space="preserve">
<value>&amp;Close</value>
</data>
<data name="btnSave.Text" xml:space="preserve">
<value>&amp;Apply</value>
</data>
</root>

View file

@ -32,9 +32,9 @@ public static class DebugHelper
{
public static Logger Logger { get; private set; }
static DebugHelper()
public static void Init(string logFilePath)
{
Logger = new Logger();
Logger = new Logger(logFilePath);
}
public static void WriteLine(string message = "")

View file

@ -126,5 +126,19 @@ public static T Swap<T>(this Enum value, params T[] flags)
ulong flagVal = flags.Select(x => Convert.ToUInt64(x)).Aggregate((x, next) => x | next);
return (T)Enum.ToObject(typeof(T), keysVal ^ flagVal);
}
public static T Next<T>(this Enum value)
{
Array values = Enum.GetValues(value.GetType());
int i = Array.IndexOf(values, value) + 1;
return i == values.Length ? (T)values.GetValue(0) : (T)values.GetValue(i);
}
public static T Previous<T>(this Enum value)
{
Array values = Enum.GetValues(value.GetType());
int i = Array.IndexOf(values, value) - 1;
return i == -1 ? (T)values.GetValue(values.Length - 1) : (T)values.GetValue(i);
}
}
}

View file

@ -410,6 +410,11 @@ public static Bitmap CreateEmptyBitmap(this Image img, int widthOffset = 0, int
return bmp;
}
public static Bitmap CreateEmptyBitmap(this Image img, PixelFormat pixelFormat)
{
return img.CreateEmptyBitmap(0, 0, pixelFormat);
}
public static string GetDescription(this Type type)
{
DescriptionAttribute[] attributes = (DescriptionAttribute[])type.GetCustomAttributes(typeof(DescriptionAttribute), false);

View file

@ -118,10 +118,10 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnCancel.Text" xml:space="preserve">
<value>&amp;Annuler</value>
<value>Annuler</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>&amp;OK</value>
<value>OK</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Êtes-vous sûr de vouloir mettre en ligne?</value>

View file

@ -163,7 +163,7 @@
<value>0</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>&amp;OK</value>
<value>OK</value>
</data>
<data name="&gt;&gt;btnOK.Name" xml:space="preserve">
<value>btnOK</value>
@ -190,7 +190,7 @@
<value>1</value>
</data>
<data name="btnCancel.Text" xml:space="preserve">
<value>&amp;Cancel</value>
<value>Cancel</value>
</data>
<data name="&gt;&gt;btnCancel.Name" xml:space="preserve">
<value>btnCancel</value>

View file

@ -121,10 +121,10 @@
<value>Yüklemek istediğinize emin misiniz?</value>
</data>
<data name="btnCancel.Text" xml:space="preserve">
<value>&amp;İptal</value>
<value>İptal</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>&amp;Tamam</value>
<value>Tamam</value>
</data>
<data name="cbDontShowThisWindow.Text" xml:space="preserve">
<value>Bu pencereyi gösterme</value>

View file

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="lblQuestion.Text" xml:space="preserve">
<value>Vùng nhớ tạm đang chứa những thứ sau:</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Bạn có chắc chắn muốn tải lên không?</value>
</data>
<data name="cbDontShowThisWindow.Text" xml:space="preserve">
<value>Không hiện cửa sổ này</value>
</data>
<data name="btnCancel.Text" xml:space="preserve">
<value>&amp;Cancel</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>&amp;OK</value>
</data>
</root>

View file

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>ShareX - Ghi chép bắt lỗi</value>
</data>
<data name="btnCopyAll.Text" xml:space="preserve">
<value>Sao chép tất cả</value>
</data>
<data name="btnLoadedAssemblies.Text" xml:space="preserve">
<value>Các assembly đã được tải</value>
</data>
</root>

View file

@ -75,8 +75,8 @@ private void InitializeComponent()
resources.ApplyResources(this.flpMenu, "flpMenu");
this.flpMenu.Controls.Add(this.btnSendBugReport);
this.flpMenu.Controls.Add(this.btnOpenLogFile);
this.flpMenu.Controls.Add(this.btnClose);
this.flpMenu.Controls.Add(this.btnContinue);
this.flpMenu.Controls.Add(this.btnClose);
this.flpMenu.Name = "flpMenu";
//
// btnContinue
@ -94,7 +94,6 @@ private void InitializeComponent()
//
// ErrorForm
//
this.AcceptButton = this.btnContinue;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.lblErrorMessage);

View file

@ -51,8 +51,8 @@ public ErrorForm(string errorTitle, string errorMessage, string logPath, string
txtException.Text = errorMessage;
txtException.SelectionStart = txtException.TextLength;
btnOpenLogFile.Visible = !string.IsNullOrEmpty(LogPath) && File.Exists(LogPath);
btnSendBugReport.Visible = !string.IsNullOrEmpty(BugReportPath);
btnOpenLogFile.Visible = !string.IsNullOrEmpty(LogPath) && File.Exists(LogPath);
}
private void ErrorForm_Shown(object sender, EventArgs e)
@ -60,16 +60,16 @@ private void ErrorForm_Shown(object sender, EventArgs e)
this.ShowActivate();
}
private void btnOpenLogFile_Click(object sender, EventArgs e)
{
Helpers.OpenFile(LogPath);
}
private void btnSendBugReport_Click(object sender, EventArgs e)
{
URLHelpers.OpenURL(BugReportPath);
}
private void btnOpenLogFile_Click(object sender, EventArgs e)
{
Helpers.OpenFile(LogPath);
}
private void btnContinue_Click(object sender, EventArgs e)
{
DebugHelper.WriteLine("ShareX continue.");
@ -81,10 +81,5 @@ private void btnClose_Click(object sender, EventArgs e)
DebugHelper.WriteLine("ShareX closing. Reason: Unhandled exception");
Application.Exit();
}
public static void ThrowExceptionForTest()
{
throw new Exception("Error line one!\r\nError line two!");
}
}
}

View file

@ -118,14 +118,14 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnContinue.Text" xml:space="preserve">
<value>&amp;OK</value>
<value>Continuer</value>
</data>
<data name="lblErrorMessage.Text" xml:space="preserve">
<value>Erreur
Erreur 2</value>
</data>
<data name="btnClose.Text" xml:space="preserve">
<value>Quitter l'application</value>
<value>Quitter</value>
</data>
<data name="btnOpenLogFile.Text" xml:space="preserve">
<value>Ouvrir le fichier journal</value>

View file

@ -133,10 +133,10 @@
<value>Both</value>
</data>
<data name="txtException.Size" type="System.Drawing.Size, System.Drawing">
<value>480, 222</value>
<value>569, 320</value>
</data>
<data name="txtException.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
<value>0</value>
</data>
<data name="&gt;&gt;txtException.Name" xml:space="preserve">
<value>txtException</value>
@ -157,10 +157,10 @@
<value>0, 3, 3, 3</value>
</data>
<data name="btnSendBugReport.Size" type="System.Drawing.Size, System.Drawing">
<value>130, 24</value>
<value>150, 26</value>
</data>
<data name="btnSendBugReport.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
<value>0</value>
</data>
<data name="btnSendBugReport.Text" xml:space="preserve">
<value>Send bug report</value>
@ -181,16 +181,16 @@
<value>GrowAndShrink</value>
</data>
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
<value>254, 3</value>
<value>438, 3</value>
</data>
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
<value>122, 24</value>
<value>120, 26</value>
</data>
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="btnClose.Text" xml:space="preserve">
<value>Exit application</value>
<value>Quit</value>
</data>
<data name="&gt;&gt;btnClose.Name" xml:space="preserve">
<value>btnClose</value>
@ -202,13 +202,13 @@
<value>flpMenu</value>
</data>
<data name="&gt;&gt;btnClose.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<data name="btnOpenLogFile.Location" type="System.Drawing.Point, System.Drawing">
<value>136, 3</value>
<value>156, 3</value>
</data>
<data name="btnOpenLogFile.Size" type="System.Drawing.Size, System.Drawing">
<value>112, 24</value>
<value>150, 26</value>
</data>
<data name="btnOpenLogFile.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
@ -232,16 +232,16 @@
<value>Bottom, Left, Right</value>
</data>
<data name="btnContinue.Location" type="System.Drawing.Point, System.Drawing">
<value>382, 3</value>
<value>312, 3</value>
</data>
<data name="btnContinue.Size" type="System.Drawing.Size, System.Drawing">
<value>90, 24</value>
<value>120, 26</value>
</data>
<data name="btnContinue.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
<value>2</value>
</data>
<data name="btnContinue.Text" xml:space="preserve">
<value>&amp;OK</value>
<value>Continue</value>
</data>
<data name="&gt;&gt;btnContinue.Name" xml:space="preserve">
<value>btnContinue</value>
@ -253,13 +253,13 @@
<value>flpMenu</value>
</data>
<data name="&gt;&gt;btnContinue.ZOrder" xml:space="preserve">
<value>3</value>
<value>2</value>
</data>
<data name="flpMenu.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 278</value>
<value>7, 373</value>
</data>
<data name="flpMenu.Size" type="System.Drawing.Size, System.Drawing">
<value>480, 32</value>
<value>569, 32</value>
</data>
<data name="flpMenu.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
@ -286,7 +286,7 @@
<value>7, 8</value>
</data>
<data name="lblErrorMessage.Size" type="System.Drawing.Size, System.Drawing">
<value>480, 34</value>
<value>569, 34</value>
</data>
<data name="lblErrorMessage.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -314,7 +314,7 @@ Error 2</value>
<value>6, 13</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>495, 313</value>
<value>584, 411</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value>

View file

@ -124,7 +124,7 @@
<value>Uygulamadan çık</value>
</data>
<data name="btnContinue.Text" xml:space="preserve">
<value>&amp;Tamam</value>
<value>Tamam</value>
</data>
<data name="btnOpenLogFile.Text" xml:space="preserve">
<value>Hata kütüğünü aç</value>

View file

@ -0,0 +1,139 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>ShareX - Lỗi</value>
</data>
<data name="btnClose.Text" xml:space="preserve">
<value>Thoát ứng dụng</value>
</data>
<data name="btnContinue.Text" xml:space="preserve">
<value>OK</value>
</data>
<data name="btnOpenLogFile.Text" xml:space="preserve">
<value>Mở tệp sự kiện</value>
</data>
<data name="btnSendBugReport.Text" xml:space="preserve">
<value>Gửi báo cáo lỗi</value>
</data>
<data name="lblErrorMessage.Text" xml:space="preserve">
<value>Error
Error 2</value>
</data>
</root>

View file

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>Kiểm tra Hash</value>
</data>
<data name="btnFilePathBrowse.Text" xml:space="preserve">
<value>Duyệt...</value>
</data>
<data name="btnStartHashCheck.Text" xml:space="preserve">
<value>Bắt đầu</value>
</data>
<data name="lblFile.Text" xml:space="preserve">
<value>Đường dẫn tệp tin:</value>
</data>
<data name="lblHashType.Text" xml:space="preserve">
<value>Kiểu Hash:</value>
</data>
<data name="lblProgress.Text" xml:space="preserve">
<value>Tiến độ:</value>
</data>
<data name="lblResult.Text" xml:space="preserve">
<value>Kết quả:</value>
</data>
<data name="lblTarget.Text" xml:space="preserve">
<value>Đối tượng:</value>
</data>
</root>

View file

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>Sharex - Hộp thoại nhập liệu</value>
</data>
<data name="btnCancel.Text" xml:space="preserve">
<value>Hủy bỏ</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>OK</value>
</data>
</root>

View file

@ -0,0 +1,171 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>Kiểm tra màn hình</value>
</data>
<data name="btnClose.Text" xml:space="preserve">
<value>Đóng</value>
</data>
<data name="btnColorDialog.Text" xml:space="preserve">
<value>Hộp thoại chọn màu...</value>
</data>
<data name="btnGradientColor1.Text" xml:space="preserve">
<value>Màu 1</value>
</data>
<data name="btnGradientColor2.Text" xml:space="preserve">
<value>Màu 2</value>
</data>
<data name="cbShapes.Items1" xml:space="preserve">
<value>Vạch ngang</value>
</data>
<data name="cbShapes.Items2" xml:space="preserve">
<value>Vạch dọc</value>
</data>
<data name="lblTip.Text" xml:space="preserve">
<value>Bạn có thể nhấn ra ngoài để ẩn/hiện khung này.</value>
</data>
<data name="rbBlackWhite.Text" xml:space="preserve">
<value>Đen, Trắng:</value>
</data>
<data name="rbGradient.Text" xml:space="preserve">
<value>Gradient:</value>
</data>
<data name="rbRedGreenBlue.Text" xml:space="preserve">
<value>Đỏ, Xanh lục, Xanh dương (R,G,B):</value>
</data>
<data name="rbShapes.Text" xml:space="preserve">
<value>Hình dạng:</value>
</data>
<data name="lblShapeSize.Text" xml:space="preserve">
<value>Kích thước:</value>
</data>
<data name="lblRed.Text" xml:space="preserve">
<value>R:</value>
</data>
<data name="lblGreen.Text" xml:space="preserve">
<value>G:</value>
</data>
<data name="lblBlue.Text" xml:space="preserve">
<value>B:</value>
</data>
<data name="cbShapes.Items" xml:space="preserve">
<value>Kẻ ca rô</value>
</data>
</root>

View file

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>ShareX - Mã QR</value>
</data>
<data name="tsmiCopy.Text" xml:space="preserve">
<value>Sao chép vào vùng nhớ tạm</value>
</data>
<data name="tsmiSaveAs.Text" xml:space="preserve">
<value>Lưu thành tệp ảnh</value>
</data>
</root>

View file

@ -99,24 +99,22 @@ public static bool CopyText(string text)
}
public static bool CopyImage(Image img)
{
if (HelpersOptions.UseAlternativeCopyImage)
{
return CopyImageAlternative(img);
}
return CopyImageDefault(img);
}
private static bool CopyImageDefault(Image img)
{
if (img != null)
{
try
{
IDataObject data = new DataObject();
data.SetData(DataFormats.Bitmap, true, img);
return CopyData(data);
if (HelpersOptions.UseAlternativeCopyImage)
{
return CopyImageAlternative(img);
}
if (HelpersOptions.DefaultCopyImageFillBackground)
{
return CopyImageDefaultFillBackground(img, Color.White);
}
return CopyImageDefault(img);
}
catch (Exception e)
{
@ -127,32 +125,41 @@ private static bool CopyImageDefault(Image img)
return false;
}
private static bool CopyImageDefault(Image img)
{
IDataObject data = new DataObject();
data.SetData(DataFormats.Bitmap, true, img);
return CopyData(data);
}
private static bool CopyImageDefaultFillBackground(Image img, Color background)
{
using (Bitmap bmp = img.CreateEmptyBitmap(PixelFormat.Format24bppRgb))
using (Graphics g = Graphics.FromImage(bmp))
{
g.Clear(background);
g.DrawImage(img, 0, 0, img.Width, img.Height);
IDataObject data = new DataObject();
data.SetData(DataFormats.Bitmap, true, bmp);
return CopyData(data);
}
}
private static bool CopyImageAlternative(Image img)
{
if (img != null)
IDataObject data = new DataObject();
using (MemoryStream msPNG = new MemoryStream())
using (MemoryStream msBMP = new MemoryStream())
using (MemoryStream msDIB = new MemoryStream())
{
try
{
IDataObject data = new DataObject();
using (MemoryStream msPNG = new MemoryStream())
using (MemoryStream msBMP = new MemoryStream())
using (MemoryStream msDIB = new MemoryStream())
{
img.Save(msPNG, ImageFormat.Png);
data.SetData("PNG", false, msPNG);
img.Save(msBMP, ImageFormat.Bmp);
msBMP.CopyStreamTo(msDIB, 14, (int)msBMP.Length - 14);
data.SetData(DataFormats.Dib, true, msDIB);
return CopyData(data);
}
}
catch (Exception e)
{
DebugHelper.WriteException(e, "Clipboard copy image alternative failed.");
}
img.Save(msPNG, ImageFormat.Png);
data.SetData("PNG", false, msPNG);
img.Save(msBMP, ImageFormat.Bmp);
msBMP.CopyStreamTo(msDIB, 14, (int)msBMP.Length - 14);
data.SetData(DataFormats.Dib, true, msDIB);
return CopyData(data);
}
return false;
}
public static bool CopyFile(string path)

View file

@ -103,6 +103,11 @@ public static string ChangeFilenameExtension(string filePath, string extension)
return filePath;
}
public static string AppendExtension(string filePath, string extension)
{
return filePath.TrimEnd('.') + '.' + extension.TrimStart('.');
}
private static bool IsValidFile(string filePath, Type enumType)
{
string ext = GetFilenameExtension(filePath);

View file

@ -96,7 +96,7 @@ public static bool CheckShellContextMenu()
{
try
{
return CheckRegistry(ShellExtMenuFilesCmd) && CheckRegistry(ShellExtMenuDirectoryCmd);
return CheckRegistry(ShellExtMenuFilesCmd, null, ShellExtPath) && CheckRegistry(ShellExtMenuDirectoryCmd, null, ShellExtPath);
}
catch (Exception e)
{

View file

@ -24,18 +24,55 @@ You should have received a copy of the GNU General Public License
#endregion License Information (GPL v3)
using IWshRuntimeLibrary;
using Shell32;
using System;
using System.IO;
using File = System.IO.File;
using Folder = Shell32.Folder;
namespace ShareX.HelpersLib
{
public static class ShortcutHelpers
{
public static bool Create(string shortcutPath, string targetPath, string arguments = "")
public static bool SetShortcut(bool create, Environment.SpecialFolder specialFolder, string targetPath = "", string arguments = "")
{
string shortcutPath = GetShortcutPath(specialFolder);
return SetShortcut(create, shortcutPath, targetPath, arguments);
}
public static bool SetShortcut(bool create, string shortcutPath, string targetPath = "", string arguments = "")
{
if (create)
{
return Create(shortcutPath, targetPath, arguments);
}
return Delete(shortcutPath);
}
public static bool CheckShortcut(Environment.SpecialFolder specialFolder, string checkPath)
{
string shortcutPath = GetShortcutPath(specialFolder);
return CheckShortcut(shortcutPath, checkPath);
}
public static bool CheckShortcut(string shortcutPath, string targetPath)
{
if (!string.IsNullOrEmpty(shortcutPath) && !string.IsNullOrEmpty(targetPath) && File.Exists(shortcutPath))
{
string checkPath = GetShortcutTargetPath(shortcutPath);
return !string.IsNullOrEmpty(checkPath) && checkPath.Equals(targetPath, StringComparison.InvariantCultureIgnoreCase);
}
return false;
}
private static bool Create(string shortcutPath, string targetPath, string arguments = "")
{
if (!string.IsNullOrEmpty(shortcutPath) && !string.IsNullOrEmpty(targetPath) && File.Exists(targetPath))
{
Delete(shortcutPath);
try
{
IWshShell wsh = new WshShellClass();
@ -56,7 +93,7 @@ public static bool Create(string shortcutPath, string targetPath, string argumen
return false;
}
public static bool Delete(string shortcutPath)
private static bool Delete(string shortcutPath)
{
if (!string.IsNullOrEmpty(shortcutPath) && File.Exists(shortcutPath))
{
@ -67,35 +104,63 @@ public static bool Delete(string shortcutPath)
return false;
}
public static bool SetShortcut(bool create, Environment.SpecialFolder specialFolder, string filepath = "", string arguments = "")
private static string GetShortcutTargetPath(string shortcutPath)
{
string shortcutPath = GetShortcutPath(specialFolder);
string directory = Path.GetDirectoryName(shortcutPath);
string filename = Path.GetFileName(shortcutPath);
if (create)
try
{
return Create(shortcutPath, filepath, arguments);
Shell shell = new ShellClass();
Folder folder = shell.NameSpace(directory);
FolderItem folderItem = folder.ParseName(filename);
if (folderItem != null)
{
ShellLinkObject link = (ShellLinkObject)folderItem.GetLink;
return link.Path;
}
}
catch (Exception e)
{
DebugHelper.WriteException(e);
}
return Delete(shortcutPath);
}
public static bool CheckShortcut(Environment.SpecialFolder specialFolder)
{
string shortcutPath = GetShortcutPath(specialFolder);
return File.Exists(shortcutPath);
return null;
}
private static string GetShortcutPath(Environment.SpecialFolder specialFolder)
{
string folderPath = Environment.GetFolderPath(specialFolder);
string shortcutPath = Path.Combine(folderPath, "ShareX");
return Path.Combine(folderPath, "ShareX.lnk");
}
if (!Path.GetExtension(shortcutPath).Equals(".lnk", StringComparison.InvariantCultureIgnoreCase))
public static void PinUnpinTaskBar(string filePath, bool pin)
{
if (!string.IsNullOrEmpty(filePath) && File.Exists(filePath))
{
shortcutPath = Path.ChangeExtension(shortcutPath, "lnk");
}
string directory = Path.GetDirectoryName(filePath);
string filename = Path.GetFileName(filePath);
return shortcutPath;
Shell shell = new ShellClass();
Folder folder = shell.NameSpace(directory);
FolderItem folderItem = folder.ParseName(filename);
FolderItemVerbs verbs = folderItem.Verbs();
for (int i = 0; i < verbs.Count; i++)
{
FolderItemVerb verb = verbs.Item(i);
string verbName = verb.Name.Replace(@"&", string.Empty);
if ((pin && verbName.Equals("pin to taskbar", StringComparison.InvariantCultureIgnoreCase)) ||
(!pin && verbName.Equals("unpin from taskbar", StringComparison.InvariantCultureIgnoreCase)))
{
verb.DoIt();
return;
}
}
}
}
}
}

View file

@ -28,6 +28,7 @@ namespace ShareX.HelpersLib
public static class HelpersOptions
{
public static ProxyInfo CurrentProxy = new ProxyInfo();
public static bool DefaultCopyImageFillBackground = true;
public static bool UseAlternativeCopyImage = false;
public static string BrowserPath = null;
}

View file

@ -36,9 +36,22 @@ public class Logger
public event MessageAddedEventHandler MessageAdded;
public bool Async { get; set; }
public string LogFilePath { get; private set; }
private readonly object loggerLock = new object();
private StringBuilder sbMessages = new StringBuilder(4096);
private int lastSaveIndex;
public Logger()
{
Async = true;
}
public Logger(string logFilePath) : this()
{
LogFilePath = logFilePath;
Helpers.CreateDirectoryIfNotExist(LogFilePath);
}
protected void OnMessageAdded(string message)
{
@ -49,16 +62,45 @@ protected void OnMessageAdded(string message)
}
public void WriteLine(string message = "")
{
if (!string.IsNullOrEmpty(message))
{
if (Async)
{
TaskEx.Run(() => WriteLineInternal(message));
}
else
{
WriteLineInternal(message);
}
}
}
private void WriteLineInternal(string message)
{
lock (loggerLock)
{
if (!string.IsNullOrEmpty(message))
message = string.Format("{0:yyyy-MM-dd HH:mm:ss.fff} - {1}", DateTime.Now, message);
Debug.WriteLine(message);
if (sbMessages != null)
{
message = string.Format("{0:yyyy-MM-dd HH:mm:ss.fff} - {1}", DateTime.Now, message);
sbMessages.AppendLine(message);
}
try
{
if (!string.IsNullOrEmpty(LogFilePath))
{
File.AppendAllText(LogFilePath, message, Encoding.UTF8);
}
}
catch (Exception e)
{
Debug.WriteLine(e);
}
sbMessages.AppendLine(message);
Debug.WriteLine(message);
OnMessageAdded(message);
}
}
@ -78,30 +120,14 @@ public void WriteException(Exception exception, string message = "Exception")
WriteException(exception.ToString(), message);
}
public void SaveLog(string filepath)
{
lock (loggerLock)
{
if (sbMessages != null && sbMessages.Length > 0 && !string.IsNullOrEmpty(filepath))
{
string messages = sbMessages.ToString(lastSaveIndex, sbMessages.Length - lastSaveIndex);
if (!string.IsNullOrEmpty(messages))
{
Helpers.CreateDirectoryIfNotExist(filepath);
File.AppendAllText(filepath, messages, Encoding.UTF8);
lastSaveIndex = sbMessages.Length;
}
}
}
}
public void Clear()
{
lock (loggerLock)
{
sbMessages.Length = 0;
lastSaveIndex = 0;
if (sbMessages != null)
{
sbMessages.Clear();
}
}
}

View file

@ -0,0 +1,147 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>Lựa chọn in</value>
</data>
<data name="btnCancel.Text" xml:space="preserve">
<value>Hủy bỏ</value>
</data>
<data name="btnPrint.Text" xml:space="preserve">
<value>In...</value>
</data>
<data name="btnShowPreview.Text" xml:space="preserve">
<value>Xem trước...</value>
</data>
<data name="cbAllowEnlarge.Text" xml:space="preserve">
<value>Cho phép ảnh to lên</value>
</data>
<data name="cbAutoRotate.Text" xml:space="preserve">
<value>Tự động xoay ảnh</value>
</data>
<data name="cbAutoScale.Text" xml:space="preserve">
<value>Tự động chỉnh kích thước ảnh</value>
</data>
<data name="cbCenterImage.Text" xml:space="preserve">
<value>Vị trí trung tâm ảnh</value>
</data>
<data name="lblMargin.Text" xml:space="preserve">
<value>Khoảng cách lề:</value>
</data>
</root>

View file

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>Lựa chọn in</value>
</data>
<data name="btnCancel.Text" xml:space="preserve">
<value>Hủy</value>
</data>
<data name="btnChangeFont.Text" xml:space="preserve">
<value>Thay đổi font...</value>
</data>
<data name="btnPrint.Text" xml:space="preserve">
<value>In...</value>
</data>
<data name="btnShowPreview.Text" xml:space="preserve">
<value>Xem trước...</value>
</data>
<data name="lblFont.Text" xml:space="preserve">
<value>Font:</value>
</data>
</root>

View file

@ -1519,7 +1519,7 @@ internal static string HotkeyType_VideoThumbnailer_Category {
}
/// <summary>
/// Looks up a localized string similar to Capture region (Objects).
/// Looks up a localized string similar to Capture region (Windows and controls).
/// </summary>
internal static string HotkeyType_WindowRectangle {
get {
@ -2050,6 +2050,15 @@ internal static string ResponseType_Headers {
}
}
/// <summary>
/// Looks up a localized string similar to Location header.
/// </summary>
internal static string ResponseType_LocationHeader {
get {
return ResourceManager.GetString("ResponseType_LocationHeader", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Redirection URL.
/// </summary>
@ -2217,6 +2226,16 @@ internal static string UpdateMessageBox_UpdateMessageBox_ {
}
}
/// <summary>
/// Looks up a localized string similar to A newer version of {0} is available.
///Would you like to download it?.
/// </summary>
internal static string UpdateMessageBox_UpdateMessageBox_Portable {
get {
return ResourceManager.GetString("UpdateMessageBox_UpdateMessageBox_Portable", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Update is available.
/// </summary>

View file

@ -378,13 +378,13 @@ Dateigröße: {2:n0} / {3:n0} KB</value>
<value>QR code</value>
</data>
<data name="HotkeyType_RectangleAnnotate" xml:space="preserve">
<value>Rechteckregion aufnehmen (Notiz)</value>
<value>Region aufnehmen (Notiz)</value>
</data>
<data name="HotkeyType_RectangleLight" xml:space="preserve">
<value>Rechteckregion aufnehmen (Leicht)</value>
<value>Region aufnehmen (Leicht)</value>
</data>
<data name="HotkeyType_RectangleRegion" xml:space="preserve">
<value>Rechteckregion aufnehmen</value>
<value>Region aufnehmen</value>
</data>
<data name="HotkeyType_Ruler" xml:space="preserve">
<value>Lineal:</value>
@ -411,7 +411,7 @@ Dateigröße: {2:n0} / {3:n0} KB</value>
<value>Hochladen von URL</value>
</data>
<data name="HotkeyType_WindowRectangle" xml:space="preserve">
<value>Rechteckregion aufnehmen (Fenster)</value>
<value>Region aufnehmen (Fenster)</value>
</data>
<data name="HSB_ToString_" xml:space="preserve">
<value>Färbung: {0:0.0}°, Sättigung: {1:0.0}%, Helligkeit: {2:0.0}%</value>
@ -480,7 +480,7 @@ Dateigröße: {2:n0} / {3:n0} KB</value>
<value>Bildhöhe</value>
</data>
<data name="ReplCodeMenuEntry_i_Auto_increment_number" xml:space="preserve">
<value>Automatisch Zahl erhöhen</value>
<value>Automatisch Zahl erhöhen. 0 pad left using {n}</value>
</data>
<data name="ReplCodeMenuEntry_mi_Current_minute" xml:space="preserve">
<value>Derzeitige Minute</value>
@ -507,10 +507,10 @@ Dateigröße: {2:n0} / {3:n0} KB</value>
<value>Name von aktiven Fenster verarbeiten</value>
</data>
<data name="ReplCodeMenuEntry_ra_Random_alphanumeric_char" xml:space="preserve">
<value>Zufälliges alphanummerisches Zeichen</value>
<value>Zufälliges alphanummerisches Zeichen. Wiederholen mit {n}</value>
</data>
<data name="ReplCodeMenuEntry_rn_Random_number_0_to_9" xml:space="preserve">
<value>Zufällige Zahl von 0 bis 9</value>
<value>Zufällige Zahl von 0 bis 9. Wiederholen mit {n}</value>
</data>
<data name="ReplCodeMenuEntry_s_Current_second" xml:space="preserve">
<value>Derzeitige Sekunde</value>
@ -573,11 +573,11 @@ Dateigröße: {2:n0} / {3:n0} KB</value>
<value>Email</value>
</data>
<data name="UrlShortenerType_CustomURLShortener" xml:space="preserve">
<value>Eigener URL Kürzer</value>
<value>Eigener URL-Kürzer</value>
</data>
<data name="UpdateMessageBox_UpdateMessageBox_" xml:space="preserve">
<value>Eine neuere Version von {0} ist verfügbar.
Möchtest du es herunterladen und installieren?</value>
Möchtest du sie herunterladen und installieren?</value>
</data>
<data name="UpdateMessageBox_UpdateMessageBox_update_is_available" xml:space="preserve">
<value>Update ist verfügabr</value>
@ -594,4 +594,232 @@ Möchtest du es herunterladen und installieren?</value>
<data name="HotkeyType_StartScreenRecorderGIF" xml:space="preserve">
<value>Bildschirmaufnahme (GIF) starten mit der letzten Region</value>
</data>
</root>
<data name="HotkeyType_ActiveMonitor_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_ActiveWindow_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_AutoCapture_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_Automate_Category" xml:space="preserve">
<value>Werkzeuge</value>
</data>
<data name="HotkeyType_Automate" xml:space="preserve">
<value>Öffne/Stoppe Automatisierungs-Werkzeug</value>
</data>
<data name="HotkeyType_CaptureWebpage_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_ClipboardUpload_Category" xml:space="preserve">
<value>Hochladen</value>
</data>
<data name="HotkeyType_ClipboardUploadWithContentViewer_Category" xml:space="preserve">
<value>Hochladen</value>
</data>
<data name="HotkeyType_CaptureWebpage" xml:space="preserve">
<value>Webpage Aufnahme</value>
</data>
<data name="HotkeyType_ColorPicker_Category" xml:space="preserve">
<value>Werkzeuge</value>
</data>
<data name="HotkeyType_DisableHotkeys_Category" xml:space="preserve">
<value>Andere</value>
</data>
<data name="HotkeyType_DNSChanger_Category" xml:space="preserve">
<value>Werkzeuge</value>
</data>
<data name="HotkeyType_DragDropUpload_Category" xml:space="preserve">
<value>Hochladen</value>
</data>
<data name="HotkeyType_FileUpload_Category" xml:space="preserve">
<value>Hochladen</value>
</data>
<data name="HotkeyType_FolderUpload_Category" xml:space="preserve">
<value>Hochladen</value>
</data>
<data name="HotkeyType_FreeHandRegion_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_DNSChanger" xml:space="preserve">
<value>DNS-Wechsler</value>
</data>
<data name="HotkeyType_DisableHotkeys" xml:space="preserve">
<value>Deaktiviere/Aktiviere Hotkeys</value>
</data>
<data name="HotkeyType_CustomRegion_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_CustomRegion" xml:space="preserve">
<value>Angepasste Region aufnehmen</value>
</data>
<data name="HotkeyType_FTPClient_Category" xml:space="preserve">
<value>Werkzeuge</value>
</data>
<data name="HotkeyType_HashCheck_Category" xml:space="preserve">
<value>Werkzeuge</value>
</data>
<data name="HotkeyType_ImageCombiner_Category" xml:space="preserve">
<value>Werkzeuge</value>
</data>
<data name="HotkeyType_ImageEditor_Category" xml:space="preserve">
<value>Werkzeuge</value>
</data>
<data name="HotkeyType_ImageEffects_Category" xml:space="preserve">
<value>Werkzeuge</value>
</data>
<data name="HotkeyType_IndexFolder_Category" xml:space="preserve">
<value>Werkzeuge</value>
</data>
<data name="HotkeyType_ImageCombiner" xml:space="preserve">
<value>Bildverbinder</value>
</data>
<data name="HotkeyType_ImageEditor" xml:space="preserve">
<value>Bildeditor</value>
</data>
<data name="HotkeyType_IRCClient" xml:space="preserve">
<value>IRC-Programm</value>
</data>
<data name="HotkeyType_IRCClient_Category" xml:space="preserve">
<value>Werkzeuge</value>
</data>
<data name="HotkeyType_LastRegion_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_MonitorTest" xml:space="preserve">
<value>Bildschirm Test</value>
</data>
<data name="HotkeyType_MonitorTest_Category" xml:space="preserve">
<value>Werkzeuge</value>
</data>
<data name="HotkeyType_OpenScreenshotsFolder_Category" xml:space="preserve">
<value>Andere</value>
</data>
<data name="HotkeyType_PolygonRegion_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_PrintScreen_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_QRCode_Category" xml:space="preserve">
<value>Werkzeuge</value>
</data>
<data name="HotkeyType_RectangleAnnotate_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_RectangleLight_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_RectangleRegion_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_RectangleTransparent" xml:space="preserve">
<value>Region aufnehmen (Transparent)</value>
</data>
<data name="HotkeyType_RectangleTransparent_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_Ruler_Category" xml:space="preserve">
<value>Werkzeuge</value>
</data>
<data name="HotkeyType_ScreenColorPicker_Category" xml:space="preserve">
<value>Werkzeuge</value>
</data>
<data name="HotkeyType_ScreenRecorder_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_ScreenRecorderActiveWindow_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_ScreenRecorderGIF_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_ScreenRecorderGIFActiveWindow_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_ScrollingCapture_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_StartAutoCapture_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_StartScreenRecorder_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_StartScreenRecorderGIF_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_StopUploads_Category" xml:space="preserve">
<value>Hochladen</value>
</data>
<data name="HotkeyType_TweetMessage_Category" xml:space="preserve">
<value>Werkzeuge</value>
</data>
<data name="HotkeyType_UploadURL_Category" xml:space="preserve">
<value>Hochladen</value>
</data>
<data name="HotkeyType_VideoThumbnailer" xml:space="preserve">
<value>Video thumbnailer</value>
</data>
<data name="HotkeyType_VideoThumbnailer_Category" xml:space="preserve">
<value>Werkzeuge</value>
</data>
<data name="HotkeyType_WindowRectangle_Category" xml:space="preserve">
<value>Bildschirmaufnahme</value>
</data>
<data name="HotkeyType_ScreenRecorderActiveWindow" xml:space="preserve">
<value>Starte Bildschirmaufnahme mit der aktiven Fensterregion</value>
</data>
<data name="HotkeyType_ScreenRecorderGIFActiveWindow" xml:space="preserve">
<value>Starte Bildschirmaufnahme (GIF) mit der aktiven Fensterregion</value>
</data>
<data name="HotkeyType_ScrollingCapture" xml:space="preserve">
<value>Scroll Aufnahme</value>
</data>
<data name="ReplCodeMenuCategory_Computer" xml:space="preserve">
<value>Computer</value>
</data>
<data name="ReplCodeMenuCategory_Date_and_Time" xml:space="preserve">
<value>Datum und Zeit</value>
</data>
<data name="ReplCodeMenuCategory_Image" xml:space="preserve">
<value>Bild</value>
</data>
<data name="ReplCodeMenuCategory_Incremental" xml:space="preserve">
<value>Inkrementell</value>
</data>
<data name="ReplCodeMenuCategory_Random" xml:space="preserve">
<value>Zufällig</value>
</data>
<data name="ReplCodeMenuCategory_Target" xml:space="preserve">
<value>Ziel</value>
</data>
<data name="ReplCodeMenuEntry_guid_Random_guid" xml:space="preserve">
<value>Zufällige GUID</value>
</data>
<data name="ReplCodeMenuEntry_rx_Random_hexadecimal" xml:space="preserve">
<value>Zufälliges Hexadezimalzeichen. Wiederholen mit {n}</value>
</data>
<data name="ScreenRecordGIFEncoding_NET" xml:space="preserve">
<value>.NET (Schlechte Qualität)</value>
</data>
<data name="ScreenRecordGIFEncoding_FFmpeg" xml:space="preserve">
<value>FFmpeg (Gute Qualität)</value>
</data>
<data name="ScreenRecordGIFEncoding_OctreeQuantizer" xml:space="preserve">
<value>Octree quantizer (Mittlere Qualität)</value>
</data>
<data name="ReplCodeMenuEntry_ib_Auto_increment_base_alphanumeric" xml:space="preserve">
<value>Automatisch nach Basis {n} alphanumerisch (1 &lt; n &lt; 63) erhöhen</value>
</data>
<data name="ReplCodeMenuEntry_ix_Auto_increment_hexadecimal" xml:space="preserve">
<value>Automatisch hexadezimal erhöhen. 0 pad left using {n}</value>
</data>
<data name="ReplCodeMenuEntry_iAa_Auto_increment_alphanumeric_all" xml:space="preserve">
<value>Automatisch alphanumerisch (Groß-/Kleinschreibung) erhöhen. 0 pad left using {n}</value>
</data>
<data name="ReplCodeMenuEntry_ia_Auto_increment_alphanumeric" xml:space="preserve">
<value>Automatisch alphanumerisch erhöhen. 0 pad left using {n}</value>
</data>
</root>

View file

@ -182,16 +182,16 @@ Voulez-vous la télécharger et l'installer?</value>
<value>Capturer une région en polygone</value>
</data>
<data name="HotkeyType_RectangleRegion" xml:space="preserve">
<value>Capturer une région rectangulaire</value>
<value>Capturer une région</value>
</data>
<data name="HotkeyType_RectangleAnnotate" xml:space="preserve">
<value>Capturer une région rectangulaire (Annoter)</value>
<value>Capturer une région (Annoter)</value>
</data>
<data name="HotkeyType_RectangleLight" xml:space="preserve">
<value>Capturer une région rectangulaire (Simple)</value>
<value>Capturer une région (Simple)</value>
</data>
<data name="HotkeyType_WindowRectangle" xml:space="preserve">
<value>Capturer une région rectangulaire (Objets)</value>
<value>Capturer une région (Fenêtres et objets)</value>
</data>
<data name="HashCheckForm_btnFilePathBrowse_Click_Choose_file_path" xml:space="preserve">
<value>Choisir le chemin du fichier</value>
@ -595,7 +595,7 @@ Taille du fichier: {2:n0} / {3:n0} Ko</value>
<value>Capturer une région personnalisée</value>
</data>
<data name="HotkeyType_RectangleTransparent" xml:space="preserve">
<value>Capturer une région rectangulaire (Transparent)</value>
<value>Capturer une région (Transparent)</value>
</data>
<data name="HotkeyType_ScreenRecorderGIF" xml:space="preserve">
<value>Enregistrement d'écran (GIF)</value>
@ -822,4 +822,11 @@ Taille du fichier: {2:n0} / {3:n0} Ko</value>
<data name="ReplCodeMenuEntry_ia_Auto_increment_alphanumeric" xml:space="preserve">
<value>Incrémentation alphanumérique automatique insensible à la casse. Ajouter un 0 au début avec {n}</value>
</data>
<data name="UpdateMessageBox_UpdateMessageBox_Portable" xml:space="preserve">
<value>Une nouvelle version de {0} est disponible.
Voulez-vous la télécharger ?</value>
</data>
<data name="ResponseType_LocationHeader" xml:space="preserve">
<value>En-tête 'location'</value>
</data>
</root>

View file

@ -822,4 +822,11 @@ Wil je deze downloaden en installeren?</value>
<data name="ReplCodeMenuEntry_rx_Random_hexadecimal" xml:space="preserve">
<value>Willekeurig hexadecimaal karakter. Meerdere met {n}</value>
</data>
<data name="ResponseType_LocationHeader" xml:space="preserve">
<value>Locatie header</value>
</data>
<data name="UpdateMessageBox_UpdateMessageBox_Portable" xml:space="preserve">
<value>Er is een nieuwe versie van {0} beschikbaar.
Wil je deze downloaden?</value>
</data>
</root>

View file

@ -822,4 +822,7 @@ Tamanho do arquivo: {2:n0} / {3:n0} KB</value>
<data name="ReplCodeMenuEntry_rx_Random_hexadecimal" xml:space="preserve">
<value>Caractere hexadecimal aleatório. Repetir usando {n}</value>
</data>
<data name="ResponseType_LocationHeader" xml:space="preserve">
<value>Cabeçalho de localização</value>
</data>
</root>

View file

@ -478,7 +478,7 @@ File size: {2:n0} / {3:n0} KB</value>
<value>Upload from URL</value>
</data>
<data name="HotkeyType_WindowRectangle" xml:space="preserve">
<value>Capture region (Objects)</value>
<value>Capture region (Windows and controls)</value>
</data>
<data name="FileDestination_CustomFileUploader" xml:space="preserve">
<value>Custom file uploader</value>
@ -844,4 +844,11 @@ Would you like to download and install it?</value>
<data name="HotkeyType_VideoThumbnailer_Category" xml:space="preserve">
<value>Tools</value>
</data>
<data name="ResponseType_LocationHeader" xml:space="preserve">
<value>Location header</value>
</data>
<data name="UpdateMessageBox_UpdateMessageBox_Portable" xml:space="preserve">
<value>A newer version of {0} is available.
Would you like to download it?</value>
</data>
</root>

View file

@ -456,7 +456,7 @@ Dosya boyutu: {2:n0} / {3:n0} KB</value>
<value>Adresten yükle</value>
</data>
<data name="HotkeyType_WindowRectangle" xml:space="preserve">
<value>Bölge yakala (Objeler)</value>
<value>Bölge yakala (Pencereler ve kontroller)</value>
</data>
<data name="FileDestination_CustomFileUploader" xml:space="preserve">
<value>Özel dosya yükleyici</value>
@ -822,4 +822,11 @@ Dosya boyutu: {2:n0} / {3:n0} KB</value>
<data name="HotkeyType_VideoThumbnailer_Category" xml:space="preserve">
<value>Araçlar</value>
</data>
<data name="ResponseType_LocationHeader" xml:space="preserve">
<value>Konum başlığı</value>
</data>
<data name="UpdateMessageBox_UpdateMessageBox_Portable" xml:space="preserve">
<value>{0} yeni sürümü mevcut.
İndirmek ister misiniz?</value>
</data>
</root>

View file

@ -0,0 +1,825 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="DownloaderForm_ChangeProgress_Progress" xml:space="preserve">
<value>Tiến độ: {0:0.0}%
Tốc độ tải về: {1:0.0} KB/s
Kích thước tệp: {2:n0} / {3:n0} KB</value>
</data>
<data name="ActionsCodeMenuEntry_FilePath_File_path" xml:space="preserve">
<value>Đường dẫn tệp</value>
</data>
<data name="ActionsCodeMenuEntry_OutputFilePath_File_path_without_extension____Output_file_name_extension_" xml:space="preserve">
<value>Đường dẫn tệp không có phần mở rộng + "Phần mở rộng của tệp xuất ra"</value>
</data>
<data name="AfterCaptureTasks_AddImageEffects" xml:space="preserve">
<value>Thêm hiệu ứng ảnh / hình mờ (effects/watermark)</value>
</data>
<data name="AfterCaptureTasks_AnnotateImage" xml:space="preserve">
<value>Mở trong trình sửa ảnh</value>
</data>
<data name="AfterCaptureTasks_CopyFilePathToClipboard" xml:space="preserve">
<value>Chép đường dẫn tới tệp vào vùng nhớ tạm</value>
</data>
<data name="AfterCaptureTasks_CopyFileToClipboard" xml:space="preserve">
<value>Chép tệp vào vùng nhớ tạm</value>
</data>
<data name="AfterCaptureTasks_CopyImageToClipboard" xml:space="preserve">
<value>Chép ảnh vào vùng nhớ tạm</value>
</data>
<data name="AfterCaptureTasks_DeleteFile" xml:space="preserve">
<value>Xóa tệp trên máy</value>
</data>
<data name="AfterCaptureTasks_PerformActions" xml:space="preserve">
<value>Thực hiện các hành động</value>
</data>
<data name="AfterCaptureTasks_SaveImageToFile" xml:space="preserve">
<value>Lưu ảnh vào tệp tin</value>
</data>
<data name="AfterCaptureTasks_SaveImageToFileWithDialog" xml:space="preserve">
<value>Lưu ảnh vào tệp tin dưới dạng...</value>
</data>
<data name="AfterCaptureTasks_SaveThumbnailImageToFile" xml:space="preserve">
<value>Lưu ảnh thu nhỏ vào tệp tin</value>
</data>
<data name="AfterCaptureTasks_SendImageToPrinter" xml:space="preserve">
<value>In ảnh</value>
</data>
<data name="AfterCaptureTasks_UploadImageToHost" xml:space="preserve">
<value>Tải ảnh lên nơi lưu trữ</value>
</data>
<data name="AfterUploadTasks_CopyURLToClipboard" xml:space="preserve">
<value>Chép URL vào vùng nhớ tạm</value>
</data>
<data name="AfterUploadTasks_OpenURL" xml:space="preserve">
<value>Mở URL</value>
</data>
<data name="AfterUploadTasks_ShareURL" xml:space="preserve">
<value>Chia sẻ URL</value>
</data>
<data name="AfterUploadTasks_ShowQRCode" xml:space="preserve">
<value>Hiện cửa sổ mã QR</value>
</data>
<data name="AfterUploadTasks_UseURLShortener" xml:space="preserve">
<value>Rút gọn URL</value>
</data>
<data name="ClipboardContentViewer_ClipboardContentViewer_Load_Clipboard_content__File__Count___0__" xml:space="preserve">
<value>Nội dung vùng nhớ tạm: Tệp tin (Đếm: {0})</value>
</data>
<data name="ClipboardContentViewer_ClipboardContentViewer_Load_Clipboard_content__Image__Size___0_x_1__" xml:space="preserve">
<value>Nội dung vùng nhớ tạm: Ảnh (Kích thước: {0}x{1})</value>
</data>
<data name="ClipboardContentViewer_ClipboardContentViewer_Load_Clipboard_content__Text__Length___0__" xml:space="preserve">
<value>Nội dung vùng nhớ tạm: Văn bản (Độ dài: {0})</value>
</data>
<data name="ClipboardContentViewer_ClipboardContentViewer_Load_Clipboard_is_empty_or_contains_unknown_data_" xml:space="preserve">
<value>Vùng nhớ tạm trống hoặc chứa dữ liệu chưa biết.</value>
</data>
<data name="CodeMenu_Create_Close" xml:space="preserve">
<value>Đóng</value>
</data>
<data name="DirectoryNameEditor_EditValue_Browse_for_a_folder___" xml:space="preserve">
<value>Duyệt đến một thư mục...</value>
</data>
<data name="DNSChangerForm_btnSave_Click_DNS_successfully_set_" xml:space="preserve">
<value>Thiết lập DNS thành công.</value>
</data>
<data name="DNSChangerForm_btnSave_Click_DNS_successfully_set__Reboot_is_required_" xml:space="preserve">
<value>Thiết lập DNS thành công. Việc khởi động lại được yêu cầu.</value>
</data>
<data name="DNSChangerForm_btnSave_Click_Setting_DNS_failed_" xml:space="preserve">
<value>Thiết lập DNS thất bại</value>
</data>
<data name="DNSChangerForm_btnSave_Click_Setting_DNS_failed_with_error_code_" xml:space="preserve">
<value>Thiết lập DNS thất bại với mã lỗi:</value>
</data>
<data name="DownloaderForm_ChangeStatus_Status___0_" xml:space="preserve">
<value>Trạng thái: {0}</value>
</data>
<data name="DownloaderForm_DownloaderForm_Filename___0_" xml:space="preserve">
<value>Tên tệp: {0}</value>
</data>
<data name="DownloaderForm_DownloaderForm_Waiting_" xml:space="preserve">
<value>Đang đợi.</value>
</data>
<data name="DownloaderForm_fileDownloader_DownloadCompleted_Download_completed_" xml:space="preserve">
<value>Tải xuống thành công.</value>
</data>
<data name="DownloaderForm_fileDownloader_DownloadCompleted_Install" xml:space="preserve">
<value>Cài đặt</value>
</data>
<data name="DownloaderForm_StartDownload_Cancel" xml:space="preserve">
<value>Hủy bỏ</value>
</data>
<data name="DownloaderForm_StartDownload_Downloading_" xml:space="preserve">
<value>Đang tải về.</value>
</data>
<data name="DownloaderForm_StartDownload_Getting_file_size_" xml:space="preserve">
<value>Đang lấy kích thước tệp.</value>
</data>
<data name="Error" xml:space="preserve">
<value>Lỗi</value>
</data>
<data name="ExeFileNameEditor_EditValue_Browse_for_executable___" xml:space="preserve">
<value>Duyệt lấy tập tin thực thi...</value>
</data>
<data name="ExportImportControl_Deserialize_Import_failed_" xml:space="preserve">
<value>Nhập vào thất bại.</value>
</data>
<data name="ExportImportControl_Serialize_Export_failed_" xml:space="preserve">
<value>Xuất ra thất bại.</value>
</data>
<data name="CssFileNameEditor_EditValue_Browse_for_a_Cascading_Style_Sheet___" xml:space="preserve">
<value>Duyệt lấy tệp CSS</value>
</data>
<data name="ExportImportControl_tsmiExportClipboard_Click_Settings_copied_to_your_clipboard_" xml:space="preserve">
<value>Thiết lập đã được chép tới vùng nhớ tạm</value>
</data>
<data name="ExportImportControl_tsmiImportURL_Click_URL_to_download_settings_from" xml:space="preserve">
<value>URL để tải xuống thiết lập</value>
</data>
<data name="Extensions_AddContextMenu_Copy" xml:space="preserve">
<value>Sao chép</value>
</data>
<data name="Extensions_AddContextMenu_Paste" xml:space="preserve">
<value>Dán</value>
</data>
<data name="FileDestination_Email" xml:space="preserve">
<value>Email</value>
</data>
<data name="FileDestination_SharedFolder" xml:space="preserve">
<value>Thư mục được chia sẻ</value>
</data>
<data name="FileExistAction_Ask" xml:space="preserve">
<value>Hỏi sẽ làm gì</value>
</data>
<data name="FileExistAction_Cancel" xml:space="preserve">
<value>Không lưu lại</value>
</data>
<data name="FileExistAction_Overwrite" xml:space="preserve">
<value>Ghi đè</value>
</data>
<data name="FileExistAction_UniqueName" xml:space="preserve">
<value>Thêm số vào tên tệp</value>
</data>
<data name="FolderSelectDialog_Title_Select_a_folder" xml:space="preserve">
<value>Chọn một thư mục</value>
</data>
<data name="HashCheckForm_btnFilePathBrowse_Click_Choose_file_path" xml:space="preserve">
<value>Chọn đường dẫn tệp</value>
</data>
<data name="Helpers_CreateDirectoryIfNotExist_Create_failed_" xml:space="preserve">
<value>Không thể tạo đường dẫn.</value>
</data>
<data name="Helpers_DownloadString_Download_failed_" xml:space="preserve">
<value>Tải xuống thất bại:</value>
</data>
<data name="Helpers_OpenFolder_Folder_not_exist_" xml:space="preserve">
<value>Thư mục không tồn tại:</value>
</data>
<data name="ScreenRecordGIFEncoding_NET" xml:space="preserve">
<value>.NET (Chất lượng kém)</value>
</data>
<data name="ScreenRecordGIFEncoding_FFmpeg" xml:space="preserve">
<value>FFmpeg (Chất lượng tốt)</value>
</data>
<data name="ScreenRecordGIFEncoding_OctreeQuantizer" xml:space="preserve">
<value>Bộ lượng tử octree (Chất lượng trung bình)</value>
</data>
<data name="Start" xml:space="preserve">
<value>Bắt đầu</value>
</data>
<data name="Stop" xml:space="preserve">
<value>Dừng lại</value>
</data>
<data name="SupportedLanguage_Automatic" xml:space="preserve">
<value>Tự động</value>
</data>
<data name="UpdateCheckerLabel_UpdateControls_A_newer_version_of_ShareX_is_available" xml:space="preserve">
<value>Có một phiên bản mới của {0}</value>
</data>
<data name="UpdateCheckerLabel_UpdateControls_ShareX_is_up_to_date" xml:space="preserve">
<value>{0} đã được cập nhật</value>
</data>
<data name="UpdateCheckerLabel_UpdateControls_Update_check_failed" xml:space="preserve">
<value>Kiểm tra cập nhật thất bại</value>
</data>
<data name="URLSharingServices_Email" xml:space="preserve">
<value>Email</value>
</data>
<data name="ReplCodeMenuEntry_y_Current_year" xml:space="preserve">
<value>Năm hiện tại</value>
</data>
<data name="ReplCodeMenuEntry_yy_Current_year__2_digits_" xml:space="preserve">
<value>Năm hiện tại (2 chữ số)</value>
</data>
<data name="ReplCodeMenuEntry_mi_Current_minute" xml:space="preserve">
<value>Phút hiện tại</value>
</data>
<data name="ReplCodeMenuEntry_mo_Current_month" xml:space="preserve">
<value>Tháng hiện tại</value>
</data>
<data name="ReplCodeMenuEntry_mon_Current_month_name__Local_language_" xml:space="preserve">
<value>Tên tháng hiện tại (Ngôn ngữ thiết lập trên máy)</value>
</data>
<data name="ReplCodeMenuEntry_mon2_Current_month_name__English_" xml:space="preserve">
<value>Tên tháng hiện tại (Tiếng Anh)</value>
</data>
<data name="ReplCodeMenuEntry_ms_Current_millisecond" xml:space="preserve">
<value>Miligiây hiện tại</value>
</data>
<data name="ReplCodeMenuEntry_s_Current_second" xml:space="preserve">
<value>Giây hiện tại</value>
</data>
<data name="ReplCodeMenuEntry_t_Title_of_active_window" xml:space="preserve">
<value>Tiêu đề của cửa sổ đang kích hoạt</value>
</data>
<data name="ReplCodeMenuEntry_cn_Computer_name" xml:space="preserve">
<value>Tên máy tính</value>
</data>
<data name="ReplCodeMenuEntry_d_Current_day" xml:space="preserve">
<value>Ngày hiện tại</value>
</data>
<data name="ReplCodeMenuEntry_h_Current_hour" xml:space="preserve">
<value>Giờ hiện tại</value>
</data>
<data name="ProxyMethod_None" xml:space="preserve">
<value>Không có</value>
</data>
<data name="RegistryHelpers_ShellExtDesc_Upload_with__0_" xml:space="preserve">
<value>Tải lên với {0}</value>
</data>
<data name="PrintForm_LoadSettings_Print" xml:space="preserve">
<value>In</value>
</data>
<data name="MyPictureBox_LoadImageAsync_Loading_image___" xml:space="preserve">
<value>Đang mở ảnh...</value>
</data>
<data name="MyPictureBox_pbMain_LoadProgressChanged_Loading_image___0__" xml:space="preserve">
<value>Đang mở ảnh: {0}%</value>
</data>
<data name="MyMessageBox_MyMessageBox_OK" xml:space="preserve">
<value>OK</value>
</data>
<data name="MyMessageBox_MyMessageBox_Yes" xml:space="preserve">
<value>Có</value>
</data>
<data name="MyMessageBox_MyMessageBox_No" xml:space="preserve">
<value>Không</value>
</data>
<data name="MyMessageBox_MyMessageBox_Cancel" xml:space="preserve">
<value>Hủy bỏ</value>
</data>
<data name="HotkeyType_StopUploads_Category" xml:space="preserve">
<value>Tải lên</value>
</data>
<data name="CMYK_ToString_Cyan___0_0_0____Magenta___1_0_0____Yellow___2_0_0____Key___3_0_0__" xml:space="preserve">
<value>Cyan: {0:0.0}%, Magenta: {1:0.0}%, Yellow: {2:0.0}%, Key: {3:0.0}%</value>
</data>
<data name="DNSChangerForm_DNSChangerForm_Manual" xml:space="preserve">
<value>Tự thiết lập</value>
</data>
<data name="Extensions_AddContextMenu_Cut" xml:space="preserve">
<value>Cắt</value>
</data>
<data name="FileDestination_CustomFileUploader" xml:space="preserve">
<value>Tùy chỉnh dịch vụ tải lên tệp tin</value>
</data>
<data name="HotkeyType_ActiveMonitor" xml:space="preserve">
<value>Chụp màn hình đang hoạt động</value>
</data>
<data name="HotkeyType_ActiveMonitor_Category" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="HotkeyType_ActiveWindow" xml:space="preserve">
<value>Chụp cửa sổ đang hoạt động</value>
</data>
<data name="HotkeyType_ActiveWindow_Category" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="HotkeyType_AutoCapture" xml:space="preserve">
<value>Tự động chụp</value>
</data>
<data name="HotkeyType_AutoCapture_Category" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="HotkeyType_Automate_Category" xml:space="preserve">
<value>Công cụ</value>
</data>
<data name="HotkeyType_CaptureWebpage" xml:space="preserve">
<value>Chụp trang web</value>
</data>
<data name="HotkeyType_CaptureWebpage_Category" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="HotkeyType_ClipboardUpload" xml:space="preserve">
<value>Tải lên từ vùng nhớ tạm</value>
</data>
<data name="HotkeyType_ClipboardUpload_Category" xml:space="preserve">
<value>Tải lên</value>
</data>
<data name="HotkeyType_ClipboardUploadWithContentViewer" xml:space="preserve">
<value>Tải lên từ vùng nhớ tạm với trình xem nội dung</value>
</data>
<data name="HotkeyType_ClipboardUploadWithContentViewer_Category" xml:space="preserve">
<value>Tải lên</value>
</data>
<data name="HotkeyType_ColorPicker" xml:space="preserve">
<value>Trình chọn màu sắc</value>
</data>
<data name="HotkeyType_ColorPicker_Category" xml:space="preserve">
<value>Công cụ</value>
</data>
<data name="HotkeyType_CustomRegion" xml:space="preserve">
<value>Chụp vùng tùy chỉnh</value>
</data>
<data name="HotkeyType_CustomRegion_Category" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="PrintTextForm_LoadSettings_Name___0___Size___1_" xml:space="preserve">
<value>Tên: {0}, Kích thước: {1}</value>
</data>
<data name="ProxyMethod_Automatic" xml:space="preserve">
<value>Tự động</value>
</data>
<data name="ProxyMethod_Manual" xml:space="preserve">
<value>Tự chỉnh</value>
</data>
<data name="ReplCodeMenuCategory_Computer" xml:space="preserve">
<value>Máy tính</value>
</data>
<data name="ReplCodeMenuCategory_Date_and_Time" xml:space="preserve">
<value>Ngày và giờ</value>
</data>
<data name="ReplCodeMenuCategory_Image" xml:space="preserve">
<value>Ảnh</value>
</data>
<data name="ReplCodeMenuCategory_Incremental" xml:space="preserve">
<value>Tăng</value>
</data>
<data name="ReplCodeMenuCategory_Random" xml:space="preserve">
<value>Ngẫu nhiên</value>
</data>
<data name="ReplCodeMenuEntry_guid_Random_guid" xml:space="preserve">
<value>GUID ngẫu nhiên</value>
</data>
<data name="ReplCodeMenuEntry_height_Gets_image_height" xml:space="preserve">
<value>Chiều cao của ảnh</value>
</data>
<data name="ReplCodeMenuEntry_n_New_line" xml:space="preserve">
<value>Dòng mới</value>
</data>
<data name="ReplCodeMenuEntry_unix_Unix_timestamp" xml:space="preserve">
<value>Dấu thời gian của Unix</value>
</data>
<data name="ReplCodeMenuEntry_w_Current_week_name__Local_language_" xml:space="preserve">
<value>Tên tuần hiện tại (Ngôn ngữ thiết lập trên máy)</value>
</data>
<data name="ReplCodeMenuEntry_w2_Current_week_name__English_" xml:space="preserve">
<value>Tên tuần hiện tại (Tiếng Anh)</value>
</data>
<data name="ReplCodeMenuEntry_width_Gets_image_width" xml:space="preserve">
<value>Chiều rộng của ảnh</value>
</data>
<data name="ResponseType_Headers" xml:space="preserve">
<value>Header trả về</value>
</data>
<data name="ResponseType_RedirectionURL" xml:space="preserve">
<value>URL chuyển hướng</value>
</data>
<data name="ResponseType_Text" xml:space="preserve">
<value>Văn bản trả về</value>
</data>
<data name="TextDestination_CustomTextUploader" xml:space="preserve">
<value>Tùy chỉnh dịch vụ tải lên văn bản</value>
</data>
<data name="TextDestination_FileUploader" xml:space="preserve">
<value>Dịch vụ tải lên file</value>
</data>
<data name="UpdateMessageBox_UpdateMessageBox_" xml:space="preserve">
<value>Phiên bản mới hơn của {0} đã có.
Bạn có muốn tải về và cài đặt không?</value>
</data>
<data name="UpdateMessageBox_UpdateMessageBox_update_is_available" xml:space="preserve">
<value>Bản cập nhật có sẵn</value>
</data>
<data name="UrlShortenerType_CustomURLShortener" xml:space="preserve">
<value>Tùy chỉnh dịch vụ URL rút gọn</value>
</data>
<data name="HotkeyType_ScreenRecorderGIF" xml:space="preserve">
<value>Ghi lại màn hình (dạng ảnh GIF)</value>
</data>
<data name="HotkeyType_ScreenRecorder" xml:space="preserve">
<value>Ghi lại màn hình</value>
</data>
<data name="HotkeyType_ScreenRecorderActiveWindow" xml:space="preserve">
<value>Bắt đầu ghi lại màn hình sử dụng vùng cửa sổ đang hoạt động</value>
</data>
<data name="HotkeyType_ScreenRecorderGIFActiveWindow" xml:space="preserve">
<value>Bắt đầu ghi lại màn hình (dạng ảnh GIF) sử dụng vùng cửa sổ đang hoạt động</value>
</data>
<data name="HotkeyType_StartScreenRecorder" xml:space="preserve">
<value>Bắt đầu ghi lại màn hình sử dụng vùng lần trước</value>
</data>
<data name="HotkeyType_StartScreenRecorderGIF" xml:space="preserve">
<value>Bắt đầu ghi lại màn hình (dạng ảnh GIF) sử dụng vùng lần trước</value>
</data>
<data name="HotkeyType_Automate" xml:space="preserve">
<value>Mở/Dừng công cụ tự động hóa</value>
</data>
<data name="HotkeyType_OpenScreenshotsFolder" xml:space="preserve">
<value>Mở thư mục lưu ảnh chụp màn hình</value>
</data>
<data name="HotkeyType_ScrollingCapture" xml:space="preserve">
<value>Chụp khi cuộn trang</value>
</data>
<data name="HotkeyType_DragDropUpload_Category" xml:space="preserve">
<value>Tải lên</value>
</data>
<data name="HotkeyType_FileUpload_Category" xml:space="preserve">
<value>Tải lên</value>
</data>
<data name="HotkeyType_FolderUpload_Category" xml:space="preserve">
<value>Tải lên</value>
</data>
<data name="HotkeyType_UploadURL_Category" xml:space="preserve">
<value>Tải lên</value>
</data>
<data name="HotkeyType_DragDropUpload" xml:space="preserve">
<value>Kéo và thả để tải lên</value>
</data>
<data name="HotkeyType_FileUpload" xml:space="preserve">
<value>Tải lên tệp tin</value>
</data>
<data name="HotkeyType_FolderUpload" xml:space="preserve">
<value>Tải lên thư mục</value>
</data>
<data name="HotkeyType_StopUploads" xml:space="preserve">
<value>Dừng mọi tác vụ tải lên đang chạy</value>
</data>
<data name="HotkeyType_UploadURL" xml:space="preserve">
<value>Tải lên từ URL</value>
</data>
<data name="ImageDestination_CustomImageUploader" xml:space="preserve">
<value>Dịch vụ tải lên ảnh tùy chọn</value>
</data>
<data name="ImageDestination_FileUploader" xml:space="preserve">
<value>Dịch vụ tải lên tệp tin</value>
</data>
<data name="HotkeyType_DisableHotkeys" xml:space="preserve">
<value>Vô hiệu hóa/Kích hoạt hotkey</value>
</data>
<data name="HotkeyType_FreeHandRegion" xml:space="preserve">
<value>Chụp lại vùng tạo bằng tay</value>
</data>
<data name="HotkeyType_FreeHandRegion_Category" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="HotkeyType_FTPClient" xml:space="preserve">
<value>Trình FTP</value>
</data>
<data name="HotkeyType_FTPClient_Category" xml:space="preserve">
<value>Công cụ</value>
</data>
<data name="HotkeyType_HashCheck" xml:space="preserve">
<value>Kiểm tra Hash</value>
</data>
<data name="HotkeyType_HashCheck_Category" xml:space="preserve">
<value>Công cụ</value>
</data>
<data name="HotkeyType_ImageCombiner_Category" xml:space="preserve">
<value>Công cụ</value>
</data>
<data name="HotkeyType_ImageEditor_Category" xml:space="preserve">
<value>Công cụ</value>
</data>
<data name="HotkeyType_ImageEffects_Category" xml:space="preserve">
<value>Công cụ</value>
</data>
<data name="HotkeyType_IndexFolder_Category" xml:space="preserve">
<value>Công cụ</value>
</data>
<data name="HotkeyType_IRCClient_Category" xml:space="preserve">
<value>Công cụ</value>
</data>
<data name="HotkeyType_MonitorTest_Category" xml:space="preserve">
<value>Công cụ</value>
</data>
<data name="HotkeyType_QRCode_Category" xml:space="preserve">
<value>Công cụ</value>
</data>
<data name="HotkeyType_Ruler_Category" xml:space="preserve">
<value>Công cụ</value>
</data>
<data name="HotkeyType_ScreenColorPicker_Category" xml:space="preserve">
<value>Công cụ</value>
</data>
<data name="HotkeyType_TweetMessage_Category" xml:space="preserve">
<value>Công cụ</value>
</data>
<data name="HotkeyType_VideoThumbnailer_Category" xml:space="preserve">
<value>Công cụ</value>
</data>
<data name="HotkeyType_DisableHotkeys_Category" xml:space="preserve">
<value>Khác</value>
</data>
<data name="HotkeyType_DNSChanger_Category" xml:space="preserve">
<value>Công cụ</value>
</data>
<data name="HotkeyType_DNSChanger" xml:space="preserve">
<value>Trình đổi DNS</value>
</data>
<data name="GIFQuality_Bit4" xml:space="preserve">
<value>Bộ lượng tử octree 16 màu (4 bit)</value>
</data>
<data name="GIFQuality_Bit8" xml:space="preserve">
<value>Bộ lượng tử octree 256 màu - 8 bit (Encode lâu hơn nhưng chất lượng tốt hơn)</value>
</data>
<data name="GIFQuality_Grayscale" xml:space="preserve">
<value>Bộ lượng tử bảng màu thang độ xám 256 màu (grayscale 8 bit)</value>
</data>
<data name="PopUpNotificationType_BalloonTip" xml:space="preserve">
<value>Hiện hướng dẫn từ khay hệ thống</value>
</data>
<data name="PopUpNotificationType_None" xml:space="preserve">
<value>Không hiện gì</value>
</data>
<data name="PopUpNotificationType_ToastNotification" xml:space="preserve">
<value>Hiện thông báo tạm thời với vùng xem trước</value>
</data>
<data name="ReplCodeMenuEntry_un_User_name" xml:space="preserve">
<value>Tên tài khoản</value>
</data>
<data name="HotkeyType_RectangleLight_Category" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="HotkeyType_PolygonRegion_Category" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="HotkeyType_RectangleAnnotate_Category" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="HotkeyType_ScrollingCapture_Category" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="HotkeyType_LastRegion_Category" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="HotkeyType_WindowRectangle_Category" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="HotkeyType_RectangleTransparent_Category" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="HotkeyType_PrintScreen_Category" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="HotkeyType_StartAutoCapture_Category" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="HotkeyType_RectangleRegion_Category" xml:space="preserve">
<value>Chụp màn hình</value>
</data>
<data name="HotkeyType_StartScreenRecorder_Category" xml:space="preserve">
<value>Ghi lại màn hình</value>
</data>
<data name="HotkeyType_ScreenRecorderActiveWindow_Category" xml:space="preserve">
<value>Ghi lại màn hình</value>
</data>
<data name="HotkeyType_StartScreenRecorderGIF_Category" xml:space="preserve">
<value>Ghi lại màn hình</value>
</data>
<data name="HotkeyType_ScreenRecorderGIFActiveWindow_Category" xml:space="preserve">
<value>Ghi lại màn hình</value>
</data>
<data name="HotkeyType_ScreenRecorder_Category" xml:space="preserve">
<value>Ghi lại màn hình</value>
</data>
<data name="HotkeyType_ScreenRecorderGIF_Category" xml:space="preserve">
<value>Ghi lại màn hình</value>
</data>
<data name="HotkeyType_PrintScreen" xml:space="preserve">
<value>Chụp toàn màn hình</value>
</data>
<data name="HotkeyType_LastRegion" xml:space="preserve">
<value>Chụp vùng lần trước</value>
</data>
<data name="HotkeyType_PolygonRegion" xml:space="preserve">
<value>Chụp vùng đa giác</value>
</data>
<data name="HotkeyType_RectangleRegion" xml:space="preserve">
<value>Chụp theo vùng</value>
</data>
<data name="GIFQuality_Default" xml:space="preserve">
<value>Bộ nén mặc định của .NET (Nén nhanh nhưng chất lượng trung bình)</value>
</data>
<data name="HotkeyType_TweetMessage" xml:space="preserve">
<value>Tin nhắn tweet</value>
</data>
<data name="HotkeyType_OpenScreenshotsFolder_Category" xml:space="preserve">
<value>Khác</value>
</data>
<data name="HotkeyType_IRCClient" xml:space="preserve">
<value>Trình IRC</value>
</data>
<data name="HotkeyType_ImageCombiner" xml:space="preserve">
<value>Trình gộp ảnh</value>
</data>
<data name="HotkeyType_ImageEditor" xml:space="preserve">
<value>Trình chỉnh sửa ảnh</value>
</data>
<data name="HotkeyType_ImageEffects" xml:space="preserve">
<value>Hiệu ứng ảnh</value>
</data>
<data name="HotkeyType_QRCode" xml:space="preserve">
<value>Mã QR</value>
</data>
<data name="HotkeyType_MonitorTest" xml:space="preserve">
<value>Kiểm tra màn hình</value>
</data>
<data name="HotkeyType_RectangleAnnotate" xml:space="preserve">
<value>Chụp theo vùng (Đánh dấu)</value>
</data>
<data name="HotkeyType_RectangleLight" xml:space="preserve">
<value>Chụp theo vùng (Bản nhẹ hơn)</value>
</data>
<data name="HotkeyType_RectangleTransparent" xml:space="preserve">
<value>Chụp theo vùng (Trong suốt)</value>
</data>
<data name="HotkeyType_StartAutoCapture" xml:space="preserve">
<value>Bắt đầu chụp tự động dùng vùng lần trước</value>
</data>
<data name="HotkeyType_WindowRectangle" xml:space="preserve">
<value>Chụp theo vùng (Vật thể)</value>
</data>
<data name="ReplCodeMenuCategory_Target" xml:space="preserve">
<value>Đối tượng</value>
</data>
<data name="ReplCodeMenuEntry_pm_Gets_AM_PM" xml:space="preserve">
<value>Lấy AM/PM (Sáng/Chiều)</value>
</data>
<data name="ReplCodeMenuEntry_uln_User_login_name" xml:space="preserve">
<value>Tên tài khoản đăng nhập</value>
</data>
<data name="HotkeyType_VideoThumbnailer" xml:space="preserve">
<value>Trình tạo ảnh thu nhỏ cho video</value>
</data>
<data name="HotkeyType_None" xml:space="preserve">
<value>Không có</value>
</data>
<data name="HotkeyType_Ruler" xml:space="preserve">
<value>Thước đo</value>
</data>
<data name="HotkeyType_ScreenColorPicker" xml:space="preserve">
<value>Lấy màu từ màn hình</value>
</data>
<data name="ReplCodeMenuEntry_pn_Process_name_of_active_window" xml:space="preserve">
<value>Tên tiến trình của cửa sổ đang hoạt động</value>
</data>
<data name="ReplCodeMenuEntry_rn_Random_number_0_to_9" xml:space="preserve">
<value>Số ngẫu nhiên từ 0 đến 9. Lặp lại dùng {n}</value>
</data>
<data name="ReplCodeMenuEntry_rx_Random_hexadecimal" xml:space="preserve">
<value>Kí tự hệ cơ số 16. Lặp lại dùng {n}</value>
</data>
<data name="ReplCodeMenuEntry_ra_Random_alphanumeric_char" xml:space="preserve">
<value>Kí tự hệ bảng chữ cái &amp; số. Lặp lại dùng {n}</value>
</data>
<data name="HSB_ToString_" xml:space="preserve">
<value>Hue: {0:0.0}°, Tương phản: {1:0.0}%, Độ sáng: {2:0.0}%</value>
</data>
<data name="HotkeyType_IndexFolder" xml:space="preserve">
<value>Đánh dấu thư mục</value>
</data>
<data name="ReplCodeMenuEntry_i_Auto_increment_number" xml:space="preserve">
<value>Auto increment number. 0 pad left using {n}</value>
</data>
<data name="ReplCodeMenuEntry_ix_Auto_increment_hexadecimal" xml:space="preserve">
<value>Auto increment hexadecimal. 0 pad left using {n}</value>
</data>
<data name="ReplCodeMenuEntry_ib_Auto_increment_base_alphanumeric" xml:space="preserve">
<value>Auto increment by base {n} using alphanumeric (1 &lt; n &lt; 63)</value>
</data>
<data name="ReplCodeMenuEntry_iAa_Auto_increment_alphanumeric_all" xml:space="preserve">
<value>Auto increment alphanumeric case-sensitive. 0 pad left using {n}</value>
</data>
<data name="ReplCodeMenuEntry_ia_Auto_increment_alphanumeric" xml:space="preserve">
<value>Auto increment alphanumeric case-insensitive. 0 pad left using {n}</value>
</data>
</root>

View file

@ -406,6 +406,9 @@
<Compile Include="WindowState.cs" />
<Compile Include="XmlColor.cs" />
<Compile Include="XmlFont.cs" />
<EmbeddedResource Include="Automate\AutomateForm.de.resx">
<DependentUpon>AutomateForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Automate\AutomateForm.es.resx">
<DependentUpon>AutomateForm.cs</DependentUpon>
</EmbeddedResource>
@ -430,6 +433,9 @@
<EmbeddedResource Include="Automate\AutomateForm.tr.resx">
<DependentUpon>AutomateForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Automate\AutomateForm.vi-VN.resx">
<DependentUpon>AutomateForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Colors\ColorPickerForm.de.resx">
<DependentUpon>ColorPickerForm.cs</DependentUpon>
</EmbeddedResource>
@ -460,6 +466,9 @@
<EmbeddedResource Include="Colors\ColorPickerForm.tr.resx">
<DependentUpon>ColorPickerForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Colors\ColorPickerForm.vi-VN.resx">
<DependentUpon>ColorPickerForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Colors\ColorPickerForm.zh-CN.resx">
<DependentUpon>ColorPickerForm.cs</DependentUpon>
</EmbeddedResource>
@ -493,6 +502,9 @@
<EmbeddedResource Include="Colors\GradientPickerForm.tr.resx">
<DependentUpon>GradientPickerForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Colors\GradientPickerForm.vi-VN.resx">
<DependentUpon>GradientPickerForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Colors\GradientPickerForm.zh-CN.resx">
<DependentUpon>GradientPickerForm.cs</DependentUpon>
</EmbeddedResource>
@ -523,6 +535,9 @@
<EmbeddedResource Include="Controls\ExportImportControl.tr.resx">
<DependentUpon>ExportImportControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\ExportImportControl.vi-VN.resx">
<DependentUpon>ExportImportControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\ExportImportControl.zh-CN.resx">
<DependentUpon>ExportImportControl.cs</DependentUpon>
</EmbeddedResource>
@ -558,6 +573,9 @@
<DependentUpon>MyPictureBox.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Controls\MyPictureBox.vi-VN.resx">
<DependentUpon>MyPictureBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\MyPictureBox.zh-CN.resx">
<DependentUpon>MyPictureBox.cs</DependentUpon>
<SubType>Designer</SubType>
@ -592,6 +610,9 @@
<EmbeddedResource Include="DNS\DNSChangerForm.tr.resx">
<DependentUpon>DNSChangerForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="DNS\DNSChangerForm.vi-VN.resx">
<DependentUpon>DNSChangerForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="DNS\DNSChangerForm.zh-CN.resx">
<DependentUpon>DNSChangerForm.cs</DependentUpon>
</EmbeddedResource>
@ -622,6 +643,9 @@
<EmbeddedResource Include="Forms\ClipboardContentViewer.tr.resx">
<DependentUpon>ClipboardContentViewer.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ClipboardContentViewer.vi-VN.resx">
<DependentUpon>ClipboardContentViewer.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ClipboardContentViewer.zh-CN.resx">
<DependentUpon>ClipboardContentViewer.cs</DependentUpon>
</EmbeddedResource>
@ -658,6 +682,9 @@
<EmbeddedResource Include="Forms\DebugForm.tr.resx">
<DependentUpon>DebugForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\DebugForm.vi-VN.resx">
<DependentUpon>DebugForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\DebugForm.zh-CN.resx">
<DependentUpon>DebugForm.cs</DependentUpon>
</EmbeddedResource>
@ -691,6 +718,9 @@
<EmbeddedResource Include="Forms\ErrorForm.tr.resx">
<DependentUpon>ErrorForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ErrorForm.vi-VN.resx">
<DependentUpon>ErrorForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ErrorForm.zh-CN.resx">
<DependentUpon>ErrorForm.cs</DependentUpon>
</EmbeddedResource>
@ -724,6 +754,9 @@
<EmbeddedResource Include="Forms\HashCheckForm.tr.resx">
<DependentUpon>HashCheckForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\HashCheckForm.vi-VN.resx">
<DependentUpon>HashCheckForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\HashCheckForm.zh-CN.resx">
<DependentUpon>HashCheckForm.cs</DependentUpon>
</EmbeddedResource>
@ -757,6 +790,9 @@
<EmbeddedResource Include="Forms\InputBox.tr.resx">
<DependentUpon>InputBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\InputBox.vi-VN.resx">
<DependentUpon>InputBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\InputBox.zh-CN.resx">
<DependentUpon>InputBox.cs</DependentUpon>
</EmbeddedResource>
@ -790,6 +826,9 @@
<EmbeddedResource Include="Forms\MonitorTestForm.tr.resx">
<DependentUpon>MonitorTestForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\MonitorTestForm.vi-VN.resx">
<DependentUpon>MonitorTestForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\MonitorTestForm.zh-CN.resx">
<DependentUpon>MonitorTestForm.cs</DependentUpon>
</EmbeddedResource>
@ -835,6 +874,9 @@
<EmbeddedResource Include="Forms\QRCodeForm.tr.resx">
<DependentUpon>QRCodeForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\QRCodeForm.vi-VN.resx">
<DependentUpon>QRCodeForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\QRCodeForm.zh-CN.resx">
<DependentUpon>QRCodeForm.cs</DependentUpon>
</EmbeddedResource>
@ -865,6 +907,9 @@
<EmbeddedResource Include="Printer\PrintForm.tr.resx">
<DependentUpon>PrintForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Printer\PrintForm.vi-VN.resx">
<DependentUpon>PrintForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Printer\PrintForm.zh-CN.resx">
<DependentUpon>PrintForm.cs</DependentUpon>
</EmbeddedResource>
@ -895,6 +940,9 @@
<EmbeddedResource Include="Printer\PrintTextForm.tr.resx">
<DependentUpon>PrintTextForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Printer\PrintTextForm.vi-VN.resx">
<DependentUpon>PrintTextForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Printer\PrintTextForm.zh-CN.resx">
<DependentUpon>PrintTextForm.cs</DependentUpon>
</EmbeddedResource>
@ -907,6 +955,7 @@
<EmbeddedResource Include="Properties\Resources.pt-BR.resx" />
<EmbeddedResource Include="Properties\Resources.ru.resx" />
<EmbeddedResource Include="Properties\Resources.tr.resx" />
<EmbeddedResource Include="Properties\Resources.vi-VN.resx" />
<EmbeddedResource Include="Properties\Resources.zh-CN.resx" />
<EmbeddedResource Include="UpdateChecker\DownloaderForm.de.resx">
<DependentUpon>DownloaderForm.cs</DependentUpon>
@ -959,6 +1008,9 @@
<EmbeddedResource Include="UpdateChecker\DownloaderForm.tr.resx">
<DependentUpon>DownloaderForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UpdateChecker\DownloaderForm.vi-VN.resx">
<DependentUpon>DownloaderForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UpdateChecker\DownloaderForm.zh-CN.resx">
<DependentUpon>DownloaderForm.cs</DependentUpon>
</EmbeddedResource>
@ -997,6 +1049,9 @@
<EmbeddedResource Include="UpdateChecker\UpdateCheckerLabel.tr.resx">
<DependentUpon>UpdateCheckerLabel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UpdateChecker\UpdateCheckerLabel.vi-VN.resx">
<DependentUpon>UpdateCheckerLabel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UpdateChecker\UpdateCheckerLabel.zh-CN.resx">
<DependentUpon>UpdateCheckerLabel.cs</DependentUpon>
</EmbeddedResource>
@ -1030,6 +1085,9 @@
<EmbeddedResource Include="UpdateChecker\UpdateMessageBox.tr.resx">
<DependentUpon>UpdateMessageBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UpdateChecker\UpdateMessageBox.vi-VN.resx">
<DependentUpon>UpdateMessageBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UpdateChecker\UpdateMessageBox.zh-CN.resx">
<DependentUpon>UpdateMessageBox.cs</DependentUpon>
</EmbeddedResource>
@ -1048,6 +1106,15 @@
<Isolated>False</Isolated>
<EmbedInteropTypes>False</EmbedInteropTypes>
</COMReference>
<COMReference Include="Shell32">
<Guid>{50A7E9B0-70EF-11D1-B75A-00A0C90564FE}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>False</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<ItemGroup>
<None Include="Resources\Loading.gif" />

View file

@ -23,6 +23,7 @@ You should have received a copy of the GNU General Public License
#endregion License Information (GPL v3)
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@ -40,6 +41,8 @@ public class Tokenizer
public bool KeepWhitespace { get; set; }
public bool AutoParseLiteral { get; set; }
private List<Token> tokens;
public Tokenizer()
{
WhitespaceChars = new char[] { ' ', '\t', '\r', '\n' };
@ -58,7 +61,7 @@ public List<Token> TokenizeFile(string filePath)
public List<Token> Tokenize(string text)
{
List<Token> tokens = new List<Token>();
tokens = new List<Token>();
Token currentToken = null;
char currentChar;
@ -174,6 +177,18 @@ private void CheckIdentifier(Token token)
if (double.TryParse(token.Text, out result))
{
token.Type = TokenType.Numeric;
if (tokens.Count > 1)
{
Token previousToken = tokens[tokens.Count - 2];
if (previousToken != null && previousToken.Type == TokenType.Symbol && previousToken.Text.Equals("-", StringComparison.InvariantCulture))
{
tokens.Remove(previousToken);
token.Position--;
token.Text = "-" + token.Text;
}
}
}
else if (Keywords.Contains(token.Text))
{

View file

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@ -117,13 +118,13 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>ShareX Dateirunterlader</value>
<value>ShareX Dateiherunterlader</value>
</data>
<data name="btnAction.Text" xml:space="preserve">
<value>Herunterladen</value>
</data>
<data name="cbShowChangelog.Text" xml:space="preserve">
<value>Zeige Aktualisierungsnotizen</value>
<value>Zeige Aktualisierungshinweise</value>
</data>
<data name="lblFilename.Text" xml:space="preserve">
<value>Dateiname:</value>

View file

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>Trình tải tệp tin ShareX</value>
</data>
<data name="btnAction.Text" xml:space="preserve">
<value>Tải về</value>
</data>
<data name="cbShowChangelog.Text" xml:space="preserve">
<value>Hiện thay đổi trong cập nhật</value>
</data>
<data name="lblFilename.Text" xml:space="preserve">
<value>Tên file:</value>
</data>
<data name="lblProgress.Text" xml:space="preserve">
<value>Tiến độ:</value>
</data>
<data name="lblStatus.Text" xml:space="preserve">
<value>Trạng thái:</value>
</data>
</root>

View file

@ -80,12 +80,32 @@ public override void CheckUpdate()
if (latestRelease.assets != null && latestRelease.assets.Count > 0)
{
string extension;
if (IsPortable)
{
extension = "portable.zip";
}
else
{
extension = ".exe";
}
foreach (GitHubAsset asset in latestRelease.assets)
{
if (asset != null && !string.IsNullOrEmpty(asset.name) && asset.name.EndsWith(".exe", StringComparison.InvariantCultureIgnoreCase))
if (asset != null && !string.IsNullOrEmpty(asset.name) && asset.name.EndsWith(extension, StringComparison.InvariantCultureIgnoreCase))
{
Filename = asset.name;
DownloadURL = asset.url;
if (IsPortable)
{
DownloadURL = asset.browser_download_url;
}
else
{
DownloadURL = asset.url;
}
RefreshStatus();
return;
}
@ -193,5 +213,6 @@ public class GitHubAsset
public int download_count { get; set; }
public string created_at { get; set; }
public string updated_at { get; set; }
public string browser_download_url { get; set; }
}
}

View file

@ -37,6 +37,7 @@ public abstract class UpdateChecker
public Version LatestVersion { get; set; }
public ReleaseChannelType ReleaseType { get; set; }
public bool IsBeta { get; set; }
public bool IsPortable { get; set; }
public IWebProxy Proxy { get; set; }
private string filename;
@ -81,5 +82,25 @@ public void RefreshStatus()
}
public abstract void CheckUpdate();
public void DownloadUpdate()
{
if (IsPortable)
{
URLHelpers.OpenURL(DownloadURL);
}
else
{
using (DownloaderForm updaterForm = new DownloaderForm(this))
{
updaterForm.ShowDialog();
if (updaterForm.Status == DownloaderFormStatus.InstallStarted)
{
Application.Exit();
}
}
}
}
}
}

View file

@ -103,15 +103,7 @@ private void llblUpdateAvailable_LinkClicked(object sender, LinkLabelLinkClicked
{
if (updateChecker != null && updateChecker.Status == UpdateStatus.UpdateAvailable)
{
using (DownloaderForm updaterForm = new DownloaderForm(updateChecker))
{
updaterForm.ShowDialog();
if (updaterForm.Status == DownloaderFormStatus.InstallStarted)
{
Application.Exit();
}
}
updateChecker.DownloadUpdate();
}
}
}

View file

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="lblCheckingUpdates.Text" xml:space="preserve">
<value>Đang kiểm tra cập nhật...</value>
</data>
<data name="lblStatus.Text" xml:space="preserve">
<value>... đã được cập nhật mới nhất</value>
</data>
<data name="llblUpdateAvailable.Text" xml:space="preserve">
<value>Đã có phiên bản mới của ShareX</value>
</data>
</root>

View file

@ -35,7 +35,7 @@ public partial class UpdateMessageBox : BlackStyleForm
public bool ActivateWindow { get; private set; }
public UpdateMessageBox(bool activateWindow)
public UpdateMessageBox(bool activateWindow, bool isPortable = false)
{
ActivateWindow = activateWindow;
InitializeComponent();
@ -47,7 +47,15 @@ public UpdateMessageBox(bool activateWindow)
}
Text = Resources.UpdateMessageBox_UpdateMessageBox_update_is_available;
lblText.Text = string.Format(Resources.UpdateMessageBox_UpdateMessageBox_, Application.ProductName);
if (isPortable)
{
lblText.Text = string.Format(Resources.UpdateMessageBox_UpdateMessageBox_Portable, Application.ProductName);
}
else
{
lblText.Text = string.Format(Resources.UpdateMessageBox_UpdateMessageBox_, Application.ProductName);
}
}
public static void Start(UpdateChecker updateChecker, bool activateWindow = true)
@ -60,22 +68,14 @@ public static void Start(UpdateChecker updateChecker, bool activateWindow = true
{
DialogResult result;
using (UpdateMessageBox messageBox = new UpdateMessageBox(activateWindow))
using (UpdateMessageBox messageBox = new UpdateMessageBox(activateWindow, updateChecker.IsPortable))
{
result = messageBox.ShowDialog();
}
if (result == DialogResult.Yes)
{
using (DownloaderForm updaterForm = new DownloaderForm(updateChecker))
{
updaterForm.ShowDialog();
if (updaterForm.Status == DownloaderFormStatus.InstallStarted)
{
Application.Exit();
}
}
updateChecker.DownloadUpdate();
}
}
finally

View file

@ -123,4 +123,10 @@
<data name="btnYes.Text" xml:space="preserve">
<value>Ja</value>
</data>
<data name="lblViewChangelog.Text" xml:space="preserve">
<value>Änderungen ansehen</value>
</data>
<data name="cbDontShow.Text" xml:space="preserve">
<value>Nicht erneut bis zum nächsten ShareX Start auffordern</value>
</data>
</root>

View file

@ -0,0 +1,132 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnNo.Text" xml:space="preserve">
<value>Không</value>
</data>
<data name="btnYes.Text" xml:space="preserve">
<value>Đồng ý</value>
</data>
<data name="cbDontShow.Text" xml:space="preserve">
<value>Không hỏi nữa cho đến khi ShareX chạy lần sau</value>
</data>
<data name="lblViewChangelog.Text" xml:space="preserve">
<value>Xem lịch sử thay đổi</value>
</data>
</root>

View file

@ -130,7 +130,7 @@
<value>Culture actuelle</value>
</data>
<data name="chDateTime.Text" xml:space="preserve">
<value>Date &amp; heure</value>
<value>Date et heure</value>
</data>
<data name="cbDateFilter.Text" xml:space="preserve">
<value>Filtre de date:</value>

View file

@ -592,7 +592,7 @@
<value>Top, Bottom, Left, Right</value>
</data>
<data name="chDateTime.Text" xml:space="preserve">
<value>Date &amp; time</value>
<value>Date and time</value>
</data>
<data name="chDateTime.Width" type="System.Int32, mscorlib">
<value>122</value>

View file

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@ -205,7 +206,7 @@
<value>Filtreler</value>
</data>
<data name="chDateTime.Text" xml:space="preserve">
<value>Tarih &amp; saat</value>
<value>Tarih ve saat</value>
</data>
<data name="chFilename.Text" xml:space="preserve">
<value>Dosya adı</value>

View file

@ -0,0 +1,198 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="tsslStatus.Text" xml:space="preserve">
<value>Trạng thái:</value>
</data>
<data name="btnApplyFilters.Text" xml:space="preserve">
<value>Áp dụng bộ lọc</value>
</data>
<data name="cbFilenameFilterCase.Text" xml:space="preserve">
<value>Phân biệt chữ hoa/thường</value>
</data>
<data name="cbFilenameFilterMethod.Items" xml:space="preserve">
<value>Chứa</value>
</data>
<data name="chDateTime.Text" xml:space="preserve">
<value>Ngày &amp; giờ</value>
</data>
<data name="cbDateFilter.Text" xml:space="preserve">
<value>Lọc theo ngày</value>
</data>
<data name="lblFilterTo.Text" xml:space="preserve">
<value>Tới:</value>
</data>
<data name="chType.Text" xml:space="preserve">
<value>Kiểu</value>
</data>
<data name="cbTypeFilterSelection.Items" xml:space="preserve">
<value>Ảnh</value>
</data>
<data name="cbTypeFilterSelection.Items1" xml:space="preserve">
<value>Tệp</value>
</data>
<data name="chFilename.Text" xml:space="preserve">
<value>Tên tệp</value>
</data>
<data name="cbFilenameFilter.Text" xml:space="preserve">
<value>Lọc tên tệp:</value>
</data>
<data name="gbFilters.Text" xml:space="preserve">
<value>Bộ lọc</value>
</data>
<data name="lblFilterFrom.Text" xml:space="preserve">
<value>Từ:</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Lịch sử</value>
</data>
<data name="cbTypeFilterSelection.Items2" xml:space="preserve">
<value>Văn bản</value>
</data>
<data name="cbFilenameFilterMethod.Items2" xml:space="preserve">
<value>Kết thúc với</value>
</data>
<data name="cbFilenameFilterMethod.Items1" xml:space="preserve">
<value>Bắt đầu với</value>
</data>
<data name="cbFilenameFilterMethod.Items3" xml:space="preserve">
<value>Chính xác</value>
</data>
<data name="cbTypeFilter.Text" xml:space="preserve">
<value>Lọc loại tệp:</value>
</data>
<data name="chHost.Text" xml:space="preserve">
<value>Host</value>
</data>
<data name="cbHostFilter.Text" xml:space="preserve">
<value>Lọc Host:</value>
</data>
<data name="btnRemoveFilters.Text" xml:space="preserve">
<value>Xóa bộ lọc</value>
</data>
<data name="cbFilenameFilterCulture.Items" xml:space="preserve">
<value>Ngôn ngữ hiện tại</value>
</data>
<data name="cbFilenameFilterCulture.Items2" xml:space="preserve">
<value>Số thứ tự (Tiếng Anh)</value>
</data>
<data name="cbFilenameFilterCulture.Items1" xml:space="preserve">
<value>Invariant culture (English)</value>
</data>
</root>

View file

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>ShareX - Lịch sử thông tin hạng mục</value>
</data>
</root>

View file

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>Lịch sử hình ảnh</value>
</data>
<data name="tsbQuickList.Text" xml:space="preserve">
<value>Chỉ hiện 100 ảnh gần đây nhất</value>
</data>
<data name="tsddbThumbnailSize.Text" xml:space="preserve">
<value>Kích thước nhỏ</value>
</data>
<data name="tsddbViewMode.Text" xml:space="preserve">
<value>Chế độ xem</value>
</data>
<data name="tsmiViewModeGallery.Text" xml:space="preserve">
<value>Thư viện</value>
</data>
<data name="tsmiViewModePane.Text" xml:space="preserve">
<value>Khung</value>
</data>
<data name="tsmiViewModeThumbnails.Text" xml:space="preserve">
<value>Ảnh thu nhỏ</value>
</data>
</root>

View file

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@ -201,7 +202,7 @@
<value>URLs ({0})</value>
</data>
<data name="ObjectListView_ObjectListView_Copy_name" xml:space="preserve">
<value>Name kopieren</value>
<value>Namen kopieren</value>
</data>
<data name="ObjectListView_ObjectListView_Copy_value" xml:space="preserve">
<value>Wert kopieren</value>
@ -212,4 +213,10 @@
<data name="ObjectListView_ObjectListView_Value" xml:space="preserve">
<value>Wert</value>
</data>
<data name="HistoryManager_GetHistoryItems_Error" xml:space="preserve">
<value>Fehler</value>
</data>
<data name="HistoryManager_GetHistoryItems_Error_occured_while_reading_XML_file___0_" xml:space="preserve">
<value>Fehler beim Lesen der XML Datei: {0}</value>
</data>
</root>

View file

@ -0,0 +1,222 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="HistoryItemManager_InitializeComponent_Copy" xml:space="preserve">
<value>Sao chép</value>
</data>
<data name="ObjectListView_ObjectListView_Copy_name" xml:space="preserve">
<value>Sao chép tên</value>
</data>
<data name="ObjectListView_ObjectListView_Copy_value" xml:space="preserve">
<value>Sao chép giá trị</value>
</data>
<data name="HistoryItemManager_InitializeComponent_Open" xml:space="preserve">
<value>Mở</value>
</data>
<data name="ObjectListView_ObjectListView_Name" xml:space="preserve">
<value>Tên</value>
</data>
<data name="ObjectListView_ObjectListView_Value" xml:space="preserve">
<value>Giá trị</value>
</data>
<data name="HistoryForm_UpdateItemCount_Total___0_" xml:space="preserve">
<value>Tổng cộng: {0}</value>
</data>
<data name="HistoryItemManager_InitializeComponent_File" xml:space="preserve">
<value>Tệp tin</value>
</data>
<data name="HistoryItemManager_InitializeComponent_File_name" xml:space="preserve">
<value>Tên tệp tin</value>
</data>
<data name="HistoryItemManager_InitializeComponent_File_name_with_extension" xml:space="preserve">
<value>Tên tệp tin không có phần mở rộng</value>
</data>
<data name="HistoryItemManager_InitializeComponent_File_path" xml:space="preserve">
<value>Đường dẫn tệp</value>
</data>
<data name="HistoryItemManager_InitializeComponent_Folder" xml:space="preserve">
<value>Thư mục</value>
</data>
<data name="HistoryItemManager_InitializeComponent_Forum__BBCode__image" xml:space="preserve">
<value>Ảnh cho Forum (BBCode)</value>
</data>
<data name="HistoryItemManager_InitializeComponent_Forum__BBCode__link" xml:space="preserve">
<value>Đường dẫn cho Forum (BBCode)</value>
</data>
<data name="HistoryItemManager_InitializeComponent_Forum__BBCode__linked_image" xml:space="preserve">
<value>Ảnh kèm đường dẫn cho Forum (BBCode)</value>
</data>
<data name="HistoryForm_HistoryForm_History_" xml:space="preserve">
<value>Lịch sử: {0}</value>
</data>
<data name="HistoryForm_UpdateItemCount___Filtered___0_" xml:space="preserve">
<value>Đã lọc: {0}</value>
</data>
<data name="HistoryItemManager_InitializeComponent_Show" xml:space="preserve">
<value>Hiện</value>
</data>
<data name="HistoryManager_GetHistoryItems_Error" xml:space="preserve">
<value>Lỗi</value>
</data>
<data name="HistoryItemManager_InitializeComponent_Shortened_URL" xml:space="preserve">
<value>URL đã rút gọn</value>
</data>
<data name="HistoryItemManager_InitializeComponent_URL" xml:space="preserve">
<value>URL</value>
</data>
<data name="HistoryItemManager_UpdateTexts_URLs___0__" xml:space="preserve">
<value>URL ({0})</value>
</data>
<data name="HistoryItemManager_InitializeComponent_Image" xml:space="preserve">
<value>Ảnh</value>
</data>
<data name="HistoryItemManager_InitializeComponent_Image_preview" xml:space="preserve">
<value>Xem trước ảnh</value>
</data>
<data name="HistoryItemManager_InitializeComponent_Text" xml:space="preserve">
<value>Văn bản</value>
</data>
<data name="HistoryItemManager_InitializeComponent_Deletion_URL" xml:space="preserve">
<value>URL để xóa</value>
</data>
<data name="HistoryItemManager_InitializeComponent_Thumbnail_URL" xml:space="preserve">
<value>URL ảnh thu nhỏ</value>
</data>
<data name="HistoryManager_GetHistoryItems_Error_occured_while_reading_XML_file___0_" xml:space="preserve">
<value>Lỗi xảy ra khi đọc tệp XML: {0}</value>
</data>
<data name="HistoryItemManager_InitializeComponent_HTML_link" xml:space="preserve">
<value>Đường dẫn dạng HTML</value>
</data>
<data name="HistoryItemManager_InitializeComponent_HTML_image" xml:space="preserve">
<value>Ảnh dạng HTML</value>
</data>
<data name="HistoryItemManager_InitializeComponent_HTML_linked_image" xml:space="preserve">
<value>Ảnh kèm đường dẫn HTML</value>
</data>
<data name="HistoryItemManager_UpdateTexts_HTML_link___0__" xml:space="preserve">
<value>Đường dẫn dạng HTML ({0})</value>
</data>
<data name="HistoryItemManager_InitializeComponent_More_info" xml:space="preserve">
<value>Thông tin thêm</value>
</data>
<data name="HistoryForm_HistoryForm_Current_culture___0__" xml:space="preserve">
<value>Ngôn ngữ hiện tại ({0})</value>
</data>
</root>

View file

@ -137,6 +137,9 @@
<EmbeddedResource Include="HistoryForm.tr.resx">
<DependentUpon>HistoryForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="HistoryForm.vi-VN.resx">
<DependentUpon>HistoryForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="HistoryForm.zh-CN.resx">
<DependentUpon>HistoryForm.cs</DependentUpon>
</EmbeddedResource>
@ -170,6 +173,9 @@
<EmbeddedResource Include="HistoryItemInfoForm.tr.resx">
<DependentUpon>HistoryItemInfoForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="HistoryItemInfoForm.vi-VN.resx">
<DependentUpon>HistoryItemInfoForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="HistoryItemInfoForm.zh-CN.resx">
<DependentUpon>HistoryItemInfoForm.cs</DependentUpon>
</EmbeddedResource>
@ -203,6 +209,9 @@
<EmbeddedResource Include="ImageHistoryForm.tr.resx">
<DependentUpon>ImageHistoryForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ImageHistoryForm.vi-VN.resx">
<DependentUpon>ImageHistoryForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ImageHistoryForm.zh-CN.resx">
<DependentUpon>ImageHistoryForm.cs</DependentUpon>
</EmbeddedResource>
@ -219,6 +228,7 @@
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.ru.resx" />
<EmbeddedResource Include="Properties\Resources.tr.resx" />
<EmbeddedResource Include="Properties\Resources.vi-VN.resx" />
<EmbeddedResource Include="Properties\Resources.zh-CN.resx" />
</ItemGroup>
<ItemGroup>

View file

@ -0,0 +1,213 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>ShareX - IRC Programm</value>
</data>
<data name="btnCommandSend.Text" xml:space="preserve">
<value>Senden</value>
</data>
<data name="btnConnect.Text" xml:space="preserve">
<value>Verbinden</value>
</data>
<data name="btnMessageSend.Text" xml:space="preserve">
<value>Senden</value>
</data>
<data name="lblChannel.Text" xml:space="preserve">
<value>Channel/Nick:</value>
</data>
<data name="lblCommand.Text" xml:space="preserve">
<value>Befehl:</value>
</data>
<data name="lblMessage.Text" xml:space="preserve">
<value>Nachricht:</value>
</data>
<data name="tpMain.Text" xml:space="preserve">
<value>Einstellungen</value>
</data>
<data name="tpMessages.Text" xml:space="preserve">
<value>Nachrichten</value>
</data>
<data name="tpOutput.Text" xml:space="preserve">
<value>IRC Ausgabe</value>
</data>
<data name="tsmiColorBlack.Text" xml:space="preserve">
<value>Schwarz</value>
</data>
<data name="tsmiColorBlue.Text" xml:space="preserve">
<value>Blau</value>
</data>
<data name="tsmiColorBrown.Text" xml:space="preserve">
<value>Braun</value>
</data>
<data name="tsmiColorCyan.Text" xml:space="preserve">
<value>Cyan</value>
</data>
<data name="tsmiColorGreen.Text" xml:space="preserve">
<value>Grün</value>
</data>
<data name="tsmiColorGrey.Text" xml:space="preserve">
<value>Grau</value>
</data>
<data name="tsmiColorLightBlue.Text" xml:space="preserve">
<value>Hellblau</value>
</data>
<data name="tsmiColorLightCyan.Text" xml:space="preserve">
<value>Helles Cyan</value>
</data>
<data name="tsmiColorLightGreen.Text" xml:space="preserve">
<value>Hellgrün</value>
</data>
<data name="tsmiColorLightGrey.Text" xml:space="preserve">
<value>Hellgrau</value>
</data>
<data name="tsmiColorLightRed.Text" xml:space="preserve">
<value>Hellrot</value>
</data>
<data name="tsmiColorOrange.Text" xml:space="preserve">
<value>Orange</value>
</data>
<data name="tsmiColorPink.Text" xml:space="preserve">
<value>Pink</value>
</data>
<data name="tsmiColorPurple.Text" xml:space="preserve">
<value>Lila</value>
</data>
<data name="tsmiColors.Text" xml:space="preserve">
<value>Farben</value>
</data>
<data name="tsmiColorWhite.Text" xml:space="preserve">
<value>Weiß</value>
</data>
<data name="tsmiColorYellow.Text" xml:space="preserve">
<value>Gelb</value>
</data>
<data name="tsmiMessageBold.Text" xml:space="preserve">
<value>Fett</value>
</data>
<data name="tsmiMessageItalic.Text" xml:space="preserve">
<value>Kursiv</value>
</data>
<data name="tsmiMessageNormal.Text" xml:space="preserve">
<value>Normal</value>
</data>
<data name="tsmiMessageUnderline.Text" xml:space="preserve">
<value>Unterstrichen</value>
</data>
</root>

View file

@ -0,0 +1,213 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnConnect.Text" xml:space="preserve">
<value>Kết nối</value>
</data>
<data name="btnCommandSend.Text" xml:space="preserve">
<value>Gửi</value>
</data>
<data name="btnMessageSend.Text" xml:space="preserve">
<value>Gửi</value>
</data>
<data name="tpMain.Text" xml:space="preserve">
<value>Thiết lập</value>
</data>
<data name="tsmiColors.Text" xml:space="preserve">
<value>Màu</value>
</data>
<data name="tsmiMessageBold.Text" xml:space="preserve">
<value>Đậm</value>
</data>
<data name="tsmiMessageUnderline.Text" xml:space="preserve">
<value>Gạch chân</value>
</data>
<data name="tsmiMessageItalic.Text" xml:space="preserve">
<value>In nghiêng</value>
</data>
<data name="tsmiMessageNormal.Text" xml:space="preserve">
<value>Thường</value>
</data>
<data name="tsmiColorYellow.Text" xml:space="preserve">
<value>Vàng</value>
</data>
<data name="tsmiColorWhite.Text" xml:space="preserve">
<value>Trắng</value>
</data>
<data name="tsmiColorBlue.Text" xml:space="preserve">
<value>Xanh dương</value>
</data>
<data name="tsmiColorBlack.Text" xml:space="preserve">
<value>Đen</value>
</data>
<data name="tsmiColorBrown.Text" xml:space="preserve">
<value>Nâu</value>
</data>
<data name="tsmiColorCyan.Text" xml:space="preserve">
<value>Xanh lục lam</value>
</data>
<data name="tsmiColorGrey.Text" xml:space="preserve">
<value>Xám</value>
</data>
<data name="tsmiColorGreen.Text" xml:space="preserve">
<value>Xanh lục</value>
</data>
<data name="tsmiColorLightRed.Text" xml:space="preserve">
<value>Đỏ nhạt</value>
</data>
<data name="tsmiColorLightGrey.Text" xml:space="preserve">
<value>Xám nhạt</value>
</data>
<data name="tsmiColorLightGreen.Text" xml:space="preserve">
<value>Xanh lục nhạt</value>
</data>
<data name="tsmiColorLightCyan.Text" xml:space="preserve">
<value>Xanh lam lục nhạt</value>
</data>
<data name="tsmiColorLightBlue.Text" xml:space="preserve">
<value>Xanh dương nhạt</value>
</data>
<data name="tpMessages.Text" xml:space="preserve">
<value>Tin nhắn:</value>
</data>
<data name="lblMessage.Text" xml:space="preserve">
<value>Tin nhắn:</value>
</data>
<data name="tsmiColorOrange.Text" xml:space="preserve">
<value>Cam</value>
</data>
<data name="tsmiColorPink.Text" xml:space="preserve">
<value>Hồng</value>
</data>
<data name="tsmiColorPurple.Text" xml:space="preserve">
<value>Tím</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>ShareX - Trình IRC</value>
</data>
<data name="lblCommand.Text" xml:space="preserve">
<value>Lệnh:</value>
</data>
<data name="lblChannel.Text" xml:space="preserve">
<value>Kênh/Nick:</value>
</data>
<data name="tpOutput.Text" xml:space="preserve">
<value>Đầu ra IRC</value>
</data>
</root>

View file

@ -84,7 +84,7 @@ public class IRCInfo : SettingsBase<IRCInfo>
[Category("Options"), Description("When connected automatically join these channels."),
TypeConverter(typeof(StringCollectionToStringTypeConverter)),
Editor("System.Windows.Forms.Design.StringCollectionEditor,System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
public List<string> AutoJoinChannels { get; set; } = new List<string>() { "#ShareX" };
public List<string> AutoJoinChannels { get; set; } = new List<string>();
[Category("Options"), Description("Wait for identify confirmation before auto join channels. Currently only works in Freenode server because each server sends different response after identify."), DefaultValue(false)]
public bool AutoJoinWaitIdentify { get; set; }

View file

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="IRCClientForm_Connect_Disconnect" xml:space="preserve">
<value>Trennen</value>
</data>
<data name="IRCClientForm_Disconnect_Connect" xml:space="preserve">
<value>Verbinden</value>
</data>
</root>

View file

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="IRCClientForm_Connect_Disconnect" xml:space="preserve">
<value>Ngắt kết nối</value>
</data>
<data name="IRCClientForm_Disconnect_Connect" xml:space="preserve">
<value>Kết nối</value>
</data>
</root>

View file

@ -75,6 +75,9 @@
<Compile Include="UserInfo.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="IRCClient\IRCClientForm.de.resx">
<DependentUpon>IRCClientForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="IRCClient\IRCClientForm.fr.resx">
<DependentUpon>IRCClientForm.cs</DependentUpon>
</EmbeddedResource>
@ -93,6 +96,10 @@
<EmbeddedResource Include="IRCClient\IRCClientForm.tr.resx">
<DependentUpon>IRCClientForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="IRCClient\IRCClientForm.vi-VN.resx">
<DependentUpon>IRCClientForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.de.resx" />
<EmbeddedResource Include="Properties\Resources.fr.resx" />
<EmbeddedResource Include="Properties\Resources.nl-NL.resx" />
<EmbeddedResource Include="Properties\Resources.pt-BR.resx" />
@ -102,6 +109,7 @@
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.ru.resx" />
<EmbeddedResource Include="Properties\Resources.tr.resx" />
<EmbeddedResource Include="Properties\Resources.vi-VN.resx" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ShareX.HelpersLib\ShareX.HelpersLib.csproj">

View file

@ -144,4 +144,13 @@
<data name="btnSaveImage.Text" xml:space="preserve">
<value>Bild speichern...</value>
</data>
<data name="mbLoadImage.Text" xml:space="preserve">
<value>Bild laden</value>
</data>
<data name="tsmiLoadImageFromClipboard.Text" xml:space="preserve">
<value>Aus der Zwischenablage</value>
</data>
<data name="tsmiLoadImageFromFile.Text" xml:space="preserve">
<value>Aus Datei...</value>
</data>
</root>

View file

@ -0,0 +1,156 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>ShareX - Hiệu ứng ảnh</value>
</data>
<data name="btnAdd.Text" xml:space="preserve">
<value>Thêm</value>
</data>
<data name="btnCancel.Text" xml:space="preserve">
<value>Hủy bỏ</value>
</data>
<data name="btnClear.Text" xml:space="preserve">
<value>Làm lại</value>
</data>
<data name="btnDuplicate.Text" xml:space="preserve">
<value>Nhân bản</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>OK</value>
</data>
<data name="btnRefresh.Text" xml:space="preserve">
<value>Làm mới</value>
</data>
<data name="btnRemove.Text" xml:space="preserve">
<value>Xóa</value>
</data>
<data name="btnSaveImage.Text" xml:space="preserve">
<value>Lưu ảnh...</value>
</data>
<data name="mbLoadImage.Text" xml:space="preserve">
<value>Chọn ảnh</value>
</data>
<data name="tsmiLoadImageFromClipboard.Text" xml:space="preserve">
<value>Từ vùng nhớ tạm</value>
</data>
<data name="tsmiLoadImageFromFile.Text" xml:space="preserve">
<value>Từ tệp tin...</value>
</data>
</root>

View file

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@ -117,7 +118,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ImageEffectsForm_AddAllEffectsToTreeView_Adjustments" xml:space="preserve">
<value>Regulierungen</value>
<value>Anpassungen</value>
</data>
<data name="ImageEffectsForm_AddAllEffectsToTreeView_Drawings" xml:space="preserve">
<value>Zeichnungen</value>

View file

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ImageEffectsForm_AddAllEffectsToTreeView_Adjustments" xml:space="preserve">
<value>Điều chỉnh</value>
</data>
<data name="ImageEffectsForm_UpdatePreview_Image_effects___Width___0___Height___1___Render_time___2__ms" xml:space="preserve">
<value>Hiệu ứng ảnh - Rộng: {0}, Cao: {1}, Thời gian xuất: {2} miligiây</value>
</data>
<data name="ImageEffectsForm_AddAllEffectsToTreeView_Filters" xml:space="preserve">
<value>Bộ lọc</value>
</data>
<data name="ImageEffectsForm_AddAllEffectsToTreeView_Drawings" xml:space="preserve">
<value>Vẽ</value>
</data>
<data name="ImageEffectsForm_AddAllEffectsToTreeView_Manipulations" xml:space="preserve">
<value>Thao tác</value>
</data>
</root>

View file

@ -193,6 +193,9 @@
<EmbeddedResource Include="ImageEffectsForm.tr.resx">
<DependentUpon>ImageEffectsForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ImageEffectsForm.vi-VN.resx">
<DependentUpon>ImageEffectsForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ImageEffectsForm.zh-CN.resx">
<DependentUpon>ImageEffectsForm.cs</DependentUpon>
</EmbeddedResource>
@ -209,6 +212,7 @@
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.ru.resx" />
<EmbeddedResource Include="Properties\Resources.tr.resx" />
<EmbeddedResource Include="Properties\Resources.vi-VN.resx" />
<EmbeddedResource Include="Properties\Resources.zh-CN.resx" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

View file

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>ShareX - Video Thumbnailer</value>
</data>
<data name="btnStart.Text" xml:space="preserve">
<value>Screenshots Aufnehmen</value>
</data>
</root>

View file

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>ShareX - Công cụ tạo thumbnail cho video</value>
</data>
<data name="btnStart.Text" xml:space="preserve">
<value>Chụp ảnh</value>
</data>
</root>

View file

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="VideoThumbnailerForm_btnBrowse_Click_Browse_for_media_file" xml:space="preserve">
<value>Mediendatei Auswählen</value>
</data>
</root>

View file

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="VideoThumbnailerForm_btnBrowse_Click_Browse_for_media_file" xml:space="preserve">
<value>Duyệt tệp tin đa phương tiện</value>
</data>
</root>

View file

@ -79,6 +79,9 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Forms\VideoThumbnailerForm.de.resx">
<DependentUpon>VideoThumbnailerForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\VideoThumbnailerForm.fr.resx">
<DependentUpon>VideoThumbnailerForm.cs</DependentUpon>
</EmbeddedResource>
@ -97,6 +100,10 @@
<EmbeddedResource Include="Forms\VideoThumbnailerForm.tr.resx">
<DependentUpon>VideoThumbnailerForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\VideoThumbnailerForm.vi-VN.resx">
<DependentUpon>VideoThumbnailerForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.de.resx" />
<EmbeddedResource Include="Properties\Resources.fr.resx" />
<EmbeddedResource Include="Properties\Resources.nl-NL.resx" />
<EmbeddedResource Include="Properties\Resources.pt-BR.resx" />
@ -106,6 +113,7 @@
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.ru.resx" />
<EmbeddedResource Include="Properties\Resources.tr.resx" />
<EmbeddedResource Include="Properties\Resources.vi-VN.resx" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

View file

@ -147,6 +147,13 @@ public enum RegionShape
Diamond
}
public enum RegionAnnotateMode
{
Capture,
Rectangle,
Pen
}
public enum ScrollingCaptureScrollMethod
{
[Description("Automatically try all methods until one works")]
@ -158,4 +165,16 @@ public enum ScrollingCaptureScrollMethod
[Description("Simulate mouse wheel scrolling")]
MouseWheel
}
public enum ScrollingCaptureScrollTopMethod
{
[Description("First simulate pressing \"Home\" key then send scroll top message")]
All,
[Description("Send scroll top message")]
SendMessageTop,
[Description("Simulate pressing \"Home\" key")]
KeyPressHome,
[Description("Disable scrolling to top")]
None
}
}

View file

@ -31,6 +31,7 @@ You should have received a copy of the GNU General Public License
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using System.Text;
using System.Windows.Forms;
namespace ShareX.ScreenCaptureLib
@ -79,43 +80,20 @@ public Point PreviousMousePosition0Based
}
}
private bool cursorShown = true;
public bool CursorShown
{
get
{
return cursorShown;
}
private set
{
if (cursorShown == value)
{
return;
}
if (value)
{
Cursor.Show();
}
else
{
Cursor.Hide();
}
cursorShown = value;
}
}
public RectangleAnnotateOptions Options { get; private set; }
public RegionAnnotateMode Mode { get; private set; }
public bool IsDrawingMode => Mode != RegionAnnotateMode.Capture && !isBusy;
private Timer timer;
private Image backgroundImage;
private Pen borderDotPen, borderDotPen2;
private Pen borderDotPen, borderDotPen2, textBackgroundPenWhite, textBackgroundPenBlack;
private Brush textBackgroundBrush;
private Point positionOnClick;
private bool isMouseDown, isDrawingMode;
private bool isMouseDown, isBusy;
private Stopwatch penTimer;
private Font rectangleInfofont, tipFont;
private Font infoFont;
public RectangleAnnotate(RectangleAnnotateOptions options)
{
@ -125,8 +103,10 @@ public RectangleAnnotate(RectangleAnnotateOptions options)
borderDotPen = new Pen(Color.Black, 1);
borderDotPen2 = new Pen(Color.White, 1);
borderDotPen2.DashPattern = new float[] { 5, 5 };
rectangleInfofont = new Font("Arial", 17, FontStyle.Bold);
tipFont = new Font("Arial", 13);
textBackgroundBrush = new SolidBrush(Color.FromArgb(75, Color.Black));
textBackgroundPenWhite = new Pen(Color.FromArgb(50, Color.White));
textBackgroundPenBlack = new Pen(Color.FromArgb(150, Color.Black));
infoFont = new Font("Verdana", 9);
penTimer = Stopwatch.StartNew();
ScreenRectangle = CaptureHelpers.GetScreenBounds();
@ -163,8 +143,6 @@ private void InitializeComponent()
MouseWheel += RectangleAnnotate_MouseWheel;
KeyDown += RectangleAnnotate_KeyDown;
KeyUp += RectangleAnnotate_KeyUp;
FormClosing += RectangleAnnotate_FormClosing;
LostFocus += RectangleAnnotate_LostFocus;
ResumeLayout(false);
}
@ -180,8 +158,10 @@ protected override void Dispose(bool disposing)
if (backgroundImage != null) backgroundImage.Dispose();
if (borderDotPen != null) borderDotPen.Dispose();
if (borderDotPen2 != null) borderDotPen2.Dispose();
if (rectangleInfofont != null) rectangleInfofont.Dispose();
if (tipFont != null) tipFont.Dispose();
if (textBackgroundBrush != null) textBackgroundBrush.Dispose();
if (textBackgroundPenWhite != null) textBackgroundPenWhite.Dispose();
if (textBackgroundPenBlack != null) textBackgroundPenBlack.Dispose();
if (infoFont != null) infoFont.Dispose();
base.Dispose(disposing);
}
@ -191,37 +171,36 @@ private void RectangleAnnotate_Shown(object sender, EventArgs e)
this.ShowActivate();
}
private void RectangleAnnotate_FormClosing(object sender, FormClosingEventArgs e)
{
CursorShown = true;
}
private void RectangleAnnotate_LostFocus(object sender, EventArgs e)
{
CursorShown = true;
}
private void RectangleAnnotate_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.ControlKey)
if (e.KeyCode == Keys.D1)
{
isDrawingMode = !isDrawingMode;
CursorShown = !isDrawingMode;
Mode = RegionAnnotateMode.Capture;
}
else if (e.KeyCode == Keys.ShiftKey && isDrawingMode)
else if (e.KeyCode == Keys.D2)
{
Mode = RegionAnnotateMode.Rectangle;
}
else if (e.KeyCode == Keys.D3)
{
Mode = RegionAnnotateMode.Pen;
}
else if (e.KeyCode == Keys.ShiftKey && IsDrawingMode)
{
isDrawingMode = false;
try
{
isBusy = true;
Options.DrawingPenColor = ColorPickerForm.GetColor(Options.DrawingPenColor);
}
finally
{
CursorShown = false;
isDrawingMode = true;
isBusy = false;
}
}
else if (e.KeyCode == Keys.F1)
{
Options.ShowTips = !Options.ShowTips;
}
}
private void RectangleAnnotate_KeyUp(object sender, KeyEventArgs e)
@ -249,13 +228,16 @@ private void RectangleAnnotate_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left && isMouseDown)
{
if (isDrawingMode)
isMouseDown = false;
switch (Mode)
{
isMouseDown = false;
}
else
{
DoSelection(SelectionRectangle);
case RegionAnnotateMode.Capture:
DoSelection(SelectionRectangle);
break;
case RegionAnnotateMode.Rectangle:
AddRectangle();
break;
}
}
else if (e.Button == MouseButtons.Right)
@ -273,15 +255,40 @@ private void RectangleAnnotate_MouseUp(object sender, MouseEventArgs e)
private void RectangleAnnotate_MouseWheel(object sender, MouseEventArgs e)
{
if (isDrawingMode)
if (ModifierKeys == Keys.Control)
{
if (e.Delta > 0)
{
Options.DrawingPenSize++;
if (Mode == RegionAnnotateMode.Rectangle)
{
Options.DrawingRectangleBorderSize++;
}
else if (Mode == RegionAnnotateMode.Pen)
{
Options.DrawingPenSize++;
}
}
else if (e.Delta < 0)
{
Options.DrawingPenSize--;
if (Mode == RegionAnnotateMode.Rectangle)
{
Options.DrawingRectangleBorderSize--;
}
else if (Mode == RegionAnnotateMode.Pen)
{
Options.DrawingPenSize--;
}
}
}
else
{
if (e.Delta > 0)
{
Mode = Mode.Previous<RegionAnnotateMode>();
}
else if (e.Delta < 0)
{
Mode = Mode.Next<RegionAnnotateMode>();
}
}
}
@ -331,121 +338,191 @@ protected override void OnPaintBackground(PaintEventArgs e)
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
g.InterpolationMode = InterpolationMode.NearestNeighbor;
g.SmoothingMode = SmoothingMode.HighQuality;
if (isDrawingMode && isMouseDown)
if (Mode == RegionAnnotateMode.Pen && isMouseDown)
{
using (Graphics gImage = Graphics.FromImage(backgroundImage))
{
gImage.SmoothingMode = SmoothingMode.HighQuality;
DrawLine(gImage, PreviousMousePosition0Based, CurrentMousePosition0Based, Options.DrawingPenSize, Options.DrawingPenColor);
DrawLine(gImage);
}
}
Graphics g = e.Graphics;
g.InterpolationMode = InterpolationMode.NearestNeighbor;
g.SmoothingMode = SmoothingMode.HighQuality;
g.CompositingMode = CompositingMode.SourceCopy;
g.DrawImage(backgroundImage, ScreenRectangle0Based);
g.CompositingMode = CompositingMode.SourceOver;
if (isDrawingMode)
if (Mode == RegionAnnotateMode.Rectangle)
{
DrawDot(g, CurrentMousePosition0Based, Options.DrawingPenSize, Options.DrawingPenColor, true);
g.SmoothingMode = SmoothingMode.HighSpeed;
if (isMouseDown)
{
DrawRectangle(g);
}
else
{
DrawRectangleMarker(g);
}
g.SmoothingMode = SmoothingMode.HighQuality;
}
else if (Mode == RegionAnnotateMode.Pen)
{
DrawDot(g);
}
if (Options.ShowTips)
{
DrawTips(g);
DrawTips(g, 10, 10);
}
if (isMouseDown && !isDrawingMode)
if (!IsDrawingMode)
{
if (Options.ShowRectangleInfo)
if (Options.ShowInfo)
{
DrawRectangleInfo(g);
DrawInfo(g);
}
g.DrawRectangleProper(borderDotPen, SelectionRectangle0Based);
borderDotPen2.DashOffset = (int)(penTimer.Elapsed.TotalMilliseconds / 100) % 10;
g.DrawRectangleProper(borderDotPen2, SelectionRectangle0Based);
if (isMouseDown)
{
g.DrawRectangleProper(borderDotPen, SelectionRectangle0Based);
borderDotPen2.DashOffset = (float)penTimer.Elapsed.TotalSeconds * -10;
g.DrawRectangleProper(borderDotPen2, SelectionRectangle0Based);
}
}
}
private void DrawTips(Graphics g)
private void DrawInfoText(Graphics g, string text, Rectangle rect, int padding)
{
int offset = 10;
int padding = 3;
g.FillRectangle(textBackgroundBrush, rect.Offset(-2));
g.DrawRectangleProper(textBackgroundPenBlack, rect.Offset(-1));
g.DrawRectangleProper(textBackgroundPenWhite, rect);
string tipText;
ImageHelpers.DrawTextWithShadow(g, text, rect.Offset(-padding).Location, infoFont, Brushes.White, Brushes.Black);
}
if (isDrawingMode)
{
tipText = Resources.RectangleAnnotate_DrawTips_Drawing_mode_on;
}
else
{
tipText = Resources.RectangleAnnotate_DrawTips_Drawing_mode_off;
}
private void DrawTips(Graphics g, int offset, int padding)
{
StringBuilder sb = new StringBuilder();
WriteTips(sb);
string tipText = sb.ToString().Trim();
Size textSize = g.MeasureString(tipText, tipFont).ToSize();
int rectWidth = textSize.Width + padding * 2;
Size textSize = g.MeasureString(tipText, infoFont).ToSize();
int rectWidth = textSize.Width + padding * 2 + 2;
int rectHeight = textSize.Height + padding * 2;
Rectangle primaryScreenBounds = CaptureHelpers.GetPrimaryScreenBounds0Based();
Rectangle textRectangle = new Rectangle(primaryScreenBounds.X + (primaryScreenBounds.Width / 2) - (rectWidth / 2), primaryScreenBounds.Y + offset, rectWidth, rectHeight);
Rectangle textRectangle = new Rectangle(primaryScreenBounds.X + primaryScreenBounds.Width - rectWidth - offset, primaryScreenBounds.Y + offset, rectWidth, rectHeight);
if (textRectangle.Offset(10).Contains(CurrentMousePosition0Based))
{
textRectangle.Y = primaryScreenBounds.Height - rectHeight - offset;
}
using (Brush brush = new SolidBrush(Color.FromArgb(175, Color.White)))
using (Pen pen = new Pen(Color.FromArgb(175, Color.Black)))
{
g.DrawRoundedRectangle(brush, pen, textRectangle, 5);
}
using (StringFormat sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center })
{
g.DrawString(tipText, tipFont, Brushes.Black, textRectangle, sf);
}
DrawInfoText(g, tipText, textRectangle, padding);
}
private void DrawRectangleInfo(Graphics g)
protected virtual void WriteTips(StringBuilder sb)
{
int offset = 10;
Point position = new Point(CurrentMousePosition0Based.X + offset, CurrentMousePosition0Based.Y + offset);
sb.AppendLine(Resources.RectangleRegion_WriteTips__F1__Hide_tips);
ImageHelpers.DrawTextWithOutline(g, string.Format("X:{0} Y:{1}\r\n{2} x {3}", SelectionRectangle.X, SelectionRectangle.Y,
SelectionRectangle.Width, SelectionRectangle.Height), position, rectangleInfofont, Color.White, Color.Black);
sb.AppendLine();
sb.AppendLine(Resources.RectangleAnnotate_WriteTips__Mouse_wheel__Swap_modes);
if (Mode == RegionAnnotateMode.Capture) sb.Append("-> ");
sb.AppendLine(Resources.RectangleAnnotate_WriteTips__1__Select_capture_mode);
if (Mode == RegionAnnotateMode.Rectangle) sb.Append("-> ");
sb.AppendLine(Resources.RectangleAnnotate_WriteTips__2__Select_rectangle_drawing_mode);
if (Mode == RegionAnnotateMode.Pen) sb.Append("-> ");
sb.AppendLine(Resources.RectangleAnnotate_WriteTips__3__Select_pen_drawing_mode);
switch (Mode)
{
case RegionAnnotateMode.Rectangle:
sb.AppendLine();
sb.AppendLine(Resources.RectangleAnnotate_WriteTips__Shift__Change_border_color);
sb.AppendLine(Resources.RectangleAnnotate_WriteTips__Ctrl___Mouse_wheel__Change_border_size);
break;
case RegionAnnotateMode.Pen:
sb.AppendLine();
sb.AppendLine(Resources.RectangleAnnotate_WriteTips__Shift__Change_pen_color);
sb.AppendLine(Resources.RectangleAnnotate_WriteTips__Ctrl___Mouse_wheel__Change_pen_size);
break;
}
sb.AppendLine();
sb.AppendLine(Resources.RectangleRegion_WriteTips__Space__Fullscreen_capture);
}
private void DrawLine(Graphics g, Point pos1, Point pos2, int size, Color color)
private void DrawInfo(Graphics g)
{
if (pos1 == pos2)
string infoText;
if (isMouseDown)
{
DrawDot(g, pos1, size, color);
infoText = string.Format("X: {0} Y: {1}\r\n{2} x {3}", SelectionRectangle.X, SelectionRectangle.Y, SelectionRectangle.Width, SelectionRectangle.Height);
}
else
{
using (Pen pen = new Pen(color, size) { StartCap = LineCap.Round, EndCap = LineCap.Round })
infoText = string.Format("X: {0} Y: {1}", CurrentMousePosition.X, CurrentMousePosition.Y);
}
int offset = 10, padding = 3;
Point pos = CurrentMousePosition0Based;
Size textSize = g.MeasureString(infoText, infoFont).ToSize();
DrawInfoText(g, infoText, new Rectangle(pos.X + offset, pos.Y + offset, textSize.Width + padding * 2, textSize.Height + padding * 2), padding);
}
private void DrawLine(Graphics g)
{
if (CurrentMousePosition0Based == PreviousMousePosition0Based)
{
DrawDot(g);
}
else
{
using (Pen pen = new Pen(Options.DrawingPenColor, Options.DrawingPenSize) { StartCap = LineCap.Round, EndCap = LineCap.Round })
{
g.DrawLine(pen, PreviousMousePosition0Based, CurrentMousePosition0Based);
}
}
}
private void DrawDot(Graphics g, Point pos, int size, Color color, bool border = false)
private void DrawRectangle(Graphics g)
{
using (Brush brush = new SolidBrush(color))
using (Pen pen = new Pen(Options.DrawingPenColor, Options.DrawingRectangleBorderSize) { Alignment = PenAlignment.Inset })
{
RectangleF rect = new RectangleF(pos.X - size / 2f, pos.Y - size / 2f, size, size);
g.FillEllipse(brush, rect);
g.DrawRectangleProper(pen, SelectionRectangle.Offset(Options.DrawingRectangleBorderSize - 1));
}
}
if (border)
{
g.DrawEllipse(Pens.Black, rect);
g.DrawEllipse(Pens.White, new RectangleF(rect.X - 1, rect.Y - 1, rect.Width + 2, rect.Height + 2));
}
private void AddRectangle()
{
using (Graphics g = Graphics.FromImage(backgroundImage))
{
g.SmoothingMode = SmoothingMode.HighSpeed;
DrawRectangle(g);
}
}
private void DrawDot(Graphics g)
{
using (Brush brush = new SolidBrush(Options.DrawingPenColor))
{
Point pos = CurrentMousePosition0Based;
Rectangle rect = new Rectangle((int)(pos.X - Options.DrawingPenSize / 2f), (int)(pos.Y - Options.DrawingPenSize / 2f), Options.DrawingPenSize, Options.DrawingPenSize);
g.FillEllipse(brush, rect);
}
}
private void DrawRectangleMarker(Graphics g)
{
using (Pen pen = new Pen(Options.DrawingPenColor, Options.DrawingRectangleBorderSize) { Alignment = PenAlignment.Inset })
{
Point pos = CurrentMousePosition0Based;
int offset = 15;
g.DrawRectangleProper(pen, new Rectangle(pos.X - offset, pos.Y - offset, offset * 2, offset * 2).Offset(Options.DrawingRectangleBorderSize - 1));
}
}
}

View file

@ -26,8 +26,10 @@ You should have received a copy of the GNU General Public License
using ShareX.HelpersLib;
using ShareX.ScreenCaptureLib.Properties;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Windows.Forms;
@ -208,13 +210,19 @@ protected override void Draw(Graphics g)
}
}
RegionInfo[] areas = AreaManager.ValidAreas;
List<RegionInfo> areas = AreaManager.ValidAreas.ToList();
bool drawAreaExist = areas.Count > 0;
if (areas.Length > 0 || !AreaManager.CurrentHoverArea.IsEmpty)
if (AreaManager.IsCurrentHoverAreaValid && areas.All(area => area.Area != AreaManager.CurrentHoverArea))
{
areas.Add(AreaManager.GetRegionInfo(AreaManager.CurrentHoverArea));
}
if (areas.Count > 0)
{
UpdateRegionPath();
if (areas.Length > 0)
if (drawAreaExist)
{
if (Config.UseDimming)
{
@ -572,7 +580,7 @@ private void DrawMagnifier(Graphics g)
if (Config.ShowInfo)
{
infoTextRect.Location = new Point(x + (magnifier.Width / 2) - (infoTextRect.Width / 2), y + magnifier.Height + infoTextOffset);
DrawInfoText(g, infoText, infoTextRect, 3);
DrawInfoText(g, infoText, infoTextRect, infoTextPadding);
}
g.SetHighQuality();
@ -671,13 +679,30 @@ private void DrawRuler(Graphics g, Rectangle rect, Pen pen, int rulerSize, int r
public void UpdateRegionPath()
{
regionFillPath = new GraphicsPath { FillMode = FillMode.Winding };
regionDrawPath = new GraphicsPath { FillMode = FillMode.Winding };
foreach (RegionInfo regionInfo in AreaManager.ValidAreas)
if (regionFillPath != null)
{
AddShapePath(regionFillPath, regionInfo);
AddShapePath(regionDrawPath, regionInfo, -1);
regionFillPath.Dispose();
regionFillPath = null;
}
if (regionDrawPath != null)
{
regionDrawPath.Dispose();
regionDrawPath = null;
}
RegionInfo[] areas = AreaManager.ValidAreas;
if (areas != null && areas.Length > 0)
{
regionFillPath = new GraphicsPath { FillMode = FillMode.Winding };
regionDrawPath = new GraphicsPath { FillMode = FillMode.Winding };
foreach (RegionInfo regionInfo in AreaManager.ValidAreas)
{
AddShapePath(regionFillPath, regionInfo);
AddShapePath(regionDrawPath, regionInfo, -1);
}
}
}

View file

@ -34,6 +34,7 @@ private void InitializeComponent()
this.lblMaximumScrollCount = new System.Windows.Forms.Label();
this.tcScrollingCapture = new System.Windows.Forms.TabControl();
this.tpCapture = new System.Windows.Forms.TabPage();
this.chkAutoUpload = new System.Windows.Forms.CheckBox();
this.lblNote = new System.Windows.Forms.Label();
this.cbStartSelectionAutomatically = new System.Windows.Forms.CheckBox();
this.cbAutoCombine = new System.Windows.Forms.CheckBox();
@ -41,7 +42,6 @@ private void InitializeComponent()
this.btnSelectRectangle = new System.Windows.Forms.Button();
this.lblStartDelay = new System.Windows.Forms.Label();
this.nudStartDelay = new System.Windows.Forms.NumericUpDown();
this.cbScrollTopBeforeCapture = new System.Windows.Forms.CheckBox();
this.cbStartCaptureAutomatically = new System.Windows.Forms.CheckBox();
this.cbRemoveDuplicates = new System.Windows.Forms.CheckBox();
this.cbAutoDetectScrollEnd = new System.Windows.Forms.CheckBox();
@ -74,7 +74,12 @@ private void InitializeComponent()
this.pOutput = new System.Windows.Forms.Panel();
this.lblProcessing = new System.Windows.Forms.Label();
this.pbOutput = new System.Windows.Forms.PictureBox();
this.chkAutoUpload = new System.Windows.Forms.CheckBox();
this.lblScrollTopMethodBeforeCapture = new System.Windows.Forms.Label();
this.cbScrollTopMethodBeforeCapture = new System.Windows.Forms.ComboBox();
this.gbBeforeCapture = new System.Windows.Forms.GroupBox();
this.gbWhileCapturing = new System.Windows.Forms.GroupBox();
this.gbAfterCapture = new System.Windows.Forms.GroupBox();
this.cbAutoClose = new System.Windows.Forms.CheckBox();
((System.ComponentModel.ISupportInitialize)(this.nudScrollDelay)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nudMaximumScrollCount)).BeginInit();
this.tcScrollingCapture.SuspendLayout();
@ -93,6 +98,9 @@ private void InitializeComponent()
((System.ComponentModel.ISupportInitialize)(this.nudTrimRight)).BeginInit();
this.pOutput.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pbOutput)).BeginInit();
this.gbBeforeCapture.SuspendLayout();
this.gbWhileCapturing.SuspendLayout();
this.gbAfterCapture.SuspendLayout();
this.SuspendLayout();
//
// btnSelectHandle
@ -155,31 +163,24 @@ private void InitializeComponent()
//
// tpCapture
//
this.tpCapture.Controls.Add(this.chkAutoUpload);
this.tpCapture.Controls.Add(this.gbAfterCapture);
this.tpCapture.Controls.Add(this.gbWhileCapturing);
this.tpCapture.Controls.Add(this.gbBeforeCapture);
this.tpCapture.Controls.Add(this.lblNote);
this.tpCapture.Controls.Add(this.cbStartSelectionAutomatically);
this.tpCapture.Controls.Add(this.cbAutoCombine);
this.tpCapture.Controls.Add(this.lblSelectedRectangle);
this.tpCapture.Controls.Add(this.btnSelectRectangle);
this.tpCapture.Controls.Add(this.lblStartDelay);
this.tpCapture.Controls.Add(this.nudStartDelay);
this.tpCapture.Controls.Add(this.cbScrollTopBeforeCapture);
this.tpCapture.Controls.Add(this.cbStartCaptureAutomatically);
this.tpCapture.Controls.Add(this.cbRemoveDuplicates);
this.tpCapture.Controls.Add(this.cbAutoDetectScrollEnd);
this.tpCapture.Controls.Add(this.lblScrollMethod);
this.tpCapture.Controls.Add(this.cbScrollMethod);
this.tpCapture.Controls.Add(this.btnSelectHandle);
this.tpCapture.Controls.Add(this.lblMaximumScrollCount);
this.tpCapture.Controls.Add(this.lblControlText);
this.tpCapture.Controls.Add(this.lblScrollDelay);
this.tpCapture.Controls.Add(this.btnCapture);
this.tpCapture.Controls.Add(this.nudMaximumScrollCount);
this.tpCapture.Controls.Add(this.nudScrollDelay);
resources.ApplyResources(this.tpCapture, "tpCapture");
this.tpCapture.Name = "tpCapture";
this.tpCapture.UseVisualStyleBackColor = true;
//
// chkAutoUpload
//
resources.ApplyResources(this.chkAutoUpload, "chkAutoUpload");
this.chkAutoUpload.Name = "chkAutoUpload";
this.chkAutoUpload.UseVisualStyleBackColor = true;
this.chkAutoUpload.CheckedChanged += new System.EventHandler(this.chkAutoUpload_CheckedChanged);
//
// lblNote
//
resources.ApplyResources(this.lblNote, "lblNote");
@ -227,13 +228,6 @@ private void InitializeComponent()
this.nudStartDelay.Name = "nudStartDelay";
this.nudStartDelay.ValueChanged += new System.EventHandler(this.nudStartDelay_ValueChanged);
//
// cbScrollTopBeforeCapture
//
resources.ApplyResources(this.cbScrollTopBeforeCapture, "cbScrollTopBeforeCapture");
this.cbScrollTopBeforeCapture.Name = "cbScrollTopBeforeCapture";
this.cbScrollTopBeforeCapture.UseVisualStyleBackColor = true;
this.cbScrollTopBeforeCapture.CheckedChanged += new System.EventHandler(this.cbScrollTopBeforeCapture_CheckedChanged);
//
// cbStartCaptureAutomatically
//
resources.ApplyResources(this.cbStartCaptureAutomatically, "cbStartCaptureAutomatically");
@ -487,12 +481,62 @@ private void InitializeComponent()
this.pbOutput.Name = "pbOutput";
this.pbOutput.TabStop = false;
//
// chkAutoUpload
// lblScrollTopMethodBeforeCapture
//
resources.ApplyResources(this.chkAutoUpload, "chkAutoUpload");
this.chkAutoUpload.Name = "chkAutoUpload";
this.chkAutoUpload.UseVisualStyleBackColor = true;
this.chkAutoUpload.CheckedChanged += new System.EventHandler(this.chkAutoUpload_CheckedChanged);
resources.ApplyResources(this.lblScrollTopMethodBeforeCapture, "lblScrollTopMethodBeforeCapture");
this.lblScrollTopMethodBeforeCapture.Name = "lblScrollTopMethodBeforeCapture";
//
// cbScrollTopMethodBeforeCapture
//
this.cbScrollTopMethodBeforeCapture.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbScrollTopMethodBeforeCapture.FormattingEnabled = true;
resources.ApplyResources(this.cbScrollTopMethodBeforeCapture, "cbScrollTopMethodBeforeCapture");
this.cbScrollTopMethodBeforeCapture.Name = "cbScrollTopMethodBeforeCapture";
this.cbScrollTopMethodBeforeCapture.SelectedIndexChanged += new System.EventHandler(this.cbScrollTopMethodBeforeCapture_SelectedIndexChanged);
//
// gbBeforeCapture
//
resources.ApplyResources(this.gbBeforeCapture, "gbBeforeCapture");
this.gbBeforeCapture.Controls.Add(this.lblScrollTopMethodBeforeCapture);
this.gbBeforeCapture.Controls.Add(this.cbScrollTopMethodBeforeCapture);
this.gbBeforeCapture.Controls.Add(this.lblStartDelay);
this.gbBeforeCapture.Controls.Add(this.cbStartSelectionAutomatically);
this.gbBeforeCapture.Controls.Add(this.nudStartDelay);
this.gbBeforeCapture.Controls.Add(this.cbStartCaptureAutomatically);
this.gbBeforeCapture.Controls.Add(this.btnSelectHandle);
this.gbBeforeCapture.Controls.Add(this.btnSelectRectangle);
this.gbBeforeCapture.Name = "gbBeforeCapture";
this.gbBeforeCapture.TabStop = false;
//
// gbWhileCapturing
//
resources.ApplyResources(this.gbWhileCapturing, "gbWhileCapturing");
this.gbWhileCapturing.Controls.Add(this.lblScrollDelay);
this.gbWhileCapturing.Controls.Add(this.nudScrollDelay);
this.gbWhileCapturing.Controls.Add(this.nudMaximumScrollCount);
this.gbWhileCapturing.Controls.Add(this.lblMaximumScrollCount);
this.gbWhileCapturing.Controls.Add(this.lblScrollMethod);
this.gbWhileCapturing.Controls.Add(this.cbScrollMethod);
this.gbWhileCapturing.Controls.Add(this.cbAutoDetectScrollEnd);
this.gbWhileCapturing.Name = "gbWhileCapturing";
this.gbWhileCapturing.TabStop = false;
//
// gbAfterCapture
//
resources.ApplyResources(this.gbAfterCapture, "gbAfterCapture");
this.gbAfterCapture.Controls.Add(this.cbAutoClose);
this.gbAfterCapture.Controls.Add(this.cbRemoveDuplicates);
this.gbAfterCapture.Controls.Add(this.cbAutoCombine);
this.gbAfterCapture.Controls.Add(this.chkAutoUpload);
this.gbAfterCapture.Name = "gbAfterCapture";
this.gbAfterCapture.TabStop = false;
//
// cbAutoClose
//
resources.ApplyResources(this.cbAutoClose, "cbAutoClose");
this.cbAutoClose.Name = "cbAutoClose";
this.cbAutoClose.UseVisualStyleBackColor = true;
this.cbAutoClose.CheckedChanged += new System.EventHandler(this.cbAutoClose_CheckedChanged);
//
// ScrollingCaptureForm
//
@ -523,6 +567,12 @@ private void InitializeComponent()
this.pOutput.ResumeLayout(false);
this.pOutput.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pbOutput)).EndInit();
this.gbBeforeCapture.ResumeLayout(false);
this.gbBeforeCapture.PerformLayout();
this.gbWhileCapturing.ResumeLayout(false);
this.gbWhileCapturing.PerformLayout();
this.gbAfterCapture.ResumeLayout(false);
this.gbAfterCapture.PerformLayout();
this.ResumeLayout(false);
}
@ -565,7 +615,6 @@ private void InitializeComponent()
private CheckBox cbAutoDetectScrollEnd;
private CheckBox cbRemoveDuplicates;
private CheckBox cbStartCaptureAutomatically;
private CheckBox cbScrollTopBeforeCapture;
private Label lblProcessing;
private Label lblImageCount;
private Label lblStartDelay;
@ -580,5 +629,11 @@ private void InitializeComponent()
private TextBox txtImagesCount;
private Label lblNote;
private CheckBox chkAutoUpload;
private Label lblScrollTopMethodBeforeCapture;
private ComboBox cbScrollTopMethodBeforeCapture;
private GroupBox gbAfterCapture;
private GroupBox gbWhileCapturing;
private GroupBox gbBeforeCapture;
private CheckBox cbAutoClose;
}
}

View file

@ -57,12 +57,13 @@ public ScrollingCaptureForm(ScrollingCaptureOptions options, bool forceSelection
cbScrollMethod.Items.AddRange(Helpers.GetEnumDescriptions<ScrollingCaptureScrollMethod>());
cbScrollMethod.SelectedIndex = (int)Options.ScrollMethod;
cbScrollTopMethodBeforeCapture.Items.AddRange(Helpers.GetEnumDescriptions<ScrollingCaptureScrollTopMethod>());
cbScrollTopMethodBeforeCapture.SelectedIndex = (int)Options.ScrollTopMethodBeforeCapture;
nudStartDelay.Value = Options.StartDelay;
nudScrollDelay.Value = Options.ScrollDelay;
nudMaximumScrollCount.Value = Options.MaximumScrollCount;
cbStartSelectionAutomatically.Checked = Options.StartSelectionAutomatically;
cbStartCaptureAutomatically.Checked = Options.StartCaptureAutomatically;
cbScrollTopBeforeCapture.Checked = Options.ScrollTopBeforeCapture;
cbAutoDetectScrollEnd.Checked = Options.AutoDetectScrollEnd;
cbRemoveDuplicates.Checked = Options.RemoveDuplicates;
cbAutoCombine.Checked = Options.AfterCaptureAutomaticallyCombine;
@ -315,10 +316,18 @@ private void captureTimer_Tick(object sender, EventArgs e)
firstCapture = false;
captureTimer.Interval = Options.ScrollDelay;
if (Options.ScrollTopBeforeCapture)
if (Options.ScrollTopMethodBeforeCapture == ScrollingCaptureScrollTopMethod.All || Options.ScrollTopMethodBeforeCapture == ScrollingCaptureScrollTopMethod.KeyPressHome)
{
InputHelpers.SendKeyPress(VirtualKeyCode.HOME);
}
if (Options.ScrollTopMethodBeforeCapture == ScrollingCaptureScrollTopMethod.All || Options.ScrollTopMethodBeforeCapture == ScrollingCaptureScrollTopMethod.SendMessageTop)
{
NativeMethods.SendMessage(selectedWindow.Handle, (int)WindowsMessages.VSCROLL, (int)ScrollBarCommands.SB_TOP, 0);
}
if (Options.ScrollTopMethodBeforeCapture != ScrollingCaptureScrollTopMethod.None)
{
return;
}
}
@ -377,6 +386,11 @@ private void cbScrollMethod_SelectedIndexChanged(object sender, EventArgs e)
Options.ScrollMethod = (ScrollingCaptureScrollMethod)cbScrollMethod.SelectedIndex;
}
private void cbScrollTopMethodBeforeCapture_SelectedIndexChanged(object sender, EventArgs e)
{
Options.ScrollTopMethodBeforeCapture = (ScrollingCaptureScrollTopMethod)cbScrollTopMethodBeforeCapture.SelectedIndex;
}
private void nudStartDelay_ValueChanged(object sender, EventArgs e)
{
Options.StartDelay = (int)nudStartDelay.Value;
@ -402,11 +416,6 @@ private void cbStartCaptureAutomatically_CheckedChanged(object sender, EventArgs
Options.StartCaptureAutomatically = cbStartCaptureAutomatically.Checked;
}
private void cbScrollTopBeforeCapture_CheckedChanged(object sender, EventArgs e)
{
Options.ScrollTopBeforeCapture = cbScrollTopBeforeCapture.Checked;
}
private void cbAutoDetectScrollEnd_CheckedChanged(object sender, EventArgs e)
{
Options.AutoDetectScrollEnd = cbAutoDetectScrollEnd.Checked;
@ -673,6 +682,11 @@ private void chkAutoUpload_CheckedChanged(object sender, EventArgs e)
Options.AutoUpload = chkAutoUpload.Checked;
}
private void cbAutoClose_CheckedChanged(object sender, EventArgs e)
{
Options.AutoClose = cbAutoClose.Checked;
}
private Padding GuessEdges(Image img1, Image img2)
{
Padding result = new Padding();

View file

@ -0,0 +1,216 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>ShareX - Scrollaufnahme</value>
</data>
<data name="btnCapture.Text" xml:space="preserve">
<value>Aufnahme starten</value>
</data>
<data name="btnResetCombine.Text" xml:space="preserve">
<value>Ausgabeoptionen zurücksetzen</value>
</data>
<data name="btnGuessEdges.Text" xml:space="preserve">
<value>Rate abzuschneidende Kantenwerte</value>
</data>
<data name="btnGuessCombineAdjustments.Text" xml:space="preserve">
<value>Rate Verbindungsanpassungen &amp; Verbinde</value>
</data>
<data name="btnSelectHandle.Text" xml:space="preserve">
<value>Wähle Fenster oder Steuerung zum Scrollen aus...</value>
</data>
<data name="btnSelectRectangle.Text" xml:space="preserve">
<value>(Optional) Wähle angepasste Region im Fenster aus...</value>
</data>
<data name="btnStartTask.Text" xml:space="preserve">
<value>Lade Hoch/Speichere abhängig von den "Nach der Aufnahme" Einstellungen</value>
</data>
<data name="cbAutoCombine.Text" xml:space="preserve">
<value>Rate automatisch die Abstände und Verbinde nach der Aufnahme</value>
</data>
<data name="cbAutoDetectScrollEnd.Text" xml:space="preserve">
<value>Erkenne automatisch das Scrollende</value>
</data>
<data name="cbRemoveDuplicates.Text" xml:space="preserve">
<value>Entferne doppelte Bilder</value>
</data>
<data name="cbStartCaptureAutomatically.Text" xml:space="preserve">
<value>Starte Scrollaufnahme sofort nach der Auswahl der Aufnahmeregion</value>
</data>
<data name="gbImages.Text" xml:space="preserve">
<value>Bilder</value>
</data>
<data name="gbTrimEdges.Text" xml:space="preserve">
<value>Kanten beschneiden</value>
</data>
<data name="lblCombineLastVertical.Text" xml:space="preserve">
<value>Letzte vertikal:</value>
</data>
<data name="lblCombineVertical.Text" xml:space="preserve">
<value>Vertikal:</value>
</data>
<data name="lblIgnoreLast.Text" xml:space="preserve">
<value>Entferne letzte:</value>
</data>
<data name="lblImageCount.Text" xml:space="preserve">
<value>Bildanzahl:</value>
</data>
<data name="gbCombineAdjustments.Text" xml:space="preserve">
<value>Verbinde Anpassungen</value>
</data>
<data name="cbStartSelectionAutomatically.Text" xml:space="preserve">
<value>Starte automatisch die Auswahl der Aufnahmeregion vor der Öffnung dieses Fensters</value>
</data>
<data name="chkAutoUpload.Text" xml:space="preserve">
<value>Lade Hoch/Speichere automatisch abhängig von den "Nach der Aufnahme" Einstellungen und schließe</value>
</data>
<data name="lblMaximumScrollCount.Text" xml:space="preserve">
<value>Maximale Scrollanzahl:</value>
</data>
<data name="lblProcessing.Text" xml:space="preserve">
<value>Bearbeite...</value>
</data>
<data name="lblScrollDelay.Text" xml:space="preserve">
<value>Scrollverzögerung:</value>
</data>
<data name="lblScrollMethod.Text" xml:space="preserve">
<value>Scrollmethode:</value>
</data>
<data name="lblStartDelay.Text" xml:space="preserve">
<value>Anfangsverzögerung:</value>
</data>
<data name="lblTrimBottom.Text" xml:space="preserve">
<value>Unten:</value>
</data>
<data name="lblTrimLeft.Text" xml:space="preserve">
<value>Links:</value>
</data>
<data name="lblTrimRight.Text" xml:space="preserve">
<value>Rechts:</value>
</data>
<data name="lblTrimTop.Text" xml:space="preserve">
<value>Oben:</value>
</data>
<data name="tpCapture.Text" xml:space="preserve">
<value>Aufnehmen</value>
</data>
<data name="tpOutput.Text" xml:space="preserve">
<value>Ausgabe</value>
</data>
</root>

View file

@ -192,9 +192,6 @@
<data name="btnSelectRectangle.Text" xml:space="preserve">
<value>(Optionnel) Sélectionner une région personnalisée dans la fenêtre...</value>
</data>
<data name="cbScrollTopBeforeCapture.Text" xml:space="preserve">
<value>Essayer de défiler tout en haut avant la capture</value>
</data>
<data name="lblStartDelay.Text" xml:space="preserve">
<value>Départ différé:</value>
</data>
@ -208,7 +205,7 @@
<value>Deviner automatiquement les décalages et combiner après la capture</value>
</data>
<data name="btnGuessCombineAdjustments.Text" xml:space="preserve">
<value>Deviner les ajustement des combinaisons &amp; combiner</value>
<value>Deviner les ajustement des combinaisons et combiner</value>
</data>
<data name="btnGuessEdges.Text" xml:space="preserve">
<value>Deviner les valeurs des contours à ajuster</value>
@ -216,4 +213,22 @@
<data name="lblCombineLastVertical.Text" xml:space="preserve">
<value>Dernière image:</value>
</data>
<data name="chkAutoUpload.Text" xml:space="preserve">
<value>Mettre en ligne/enregistrer en fonction des paramètres 'Après la capture'</value>
</data>
<data name="gbBeforeCapture.Text" xml:space="preserve">
<value>Avant la capture</value>
</data>
<data name="gbWhileCapturing.Text" xml:space="preserve">
<value>Pendant la capture</value>
</data>
<data name="gbAfterCapture.Text" xml:space="preserve">
<value>Après la capture</value>
</data>
<data name="cbAutoClose.Text" xml:space="preserve">
<value>Fermer cette fenêtre après le traitement</value>
</data>
<data name="lblScrollTopMethodBeforeCapture.Text" xml:space="preserve">
<value>Méthode de défilement vers le haut avant la capture:</value>
</data>
</root>

View file

@ -204,9 +204,6 @@
<data name="cbAutoDetectScrollEnd.Text" xml:space="preserve">
<value>Automatische detectie van einde scrollen</value>
</data>
<data name="cbScrollTopBeforeCapture.Text" xml:space="preserve">
<value>Probeer naar de top te scrollen voor opname</value>
</data>
<data name="cbStartCaptureAutomatically.Text" xml:space="preserve">
<value>Start scrollopname onmiddelijk na regio selectie</value>
</data>
@ -216,4 +213,22 @@
<data name="lblNote.Text" xml:space="preserve">
<value>Gelieve op te merken dat desondanks het feit dat ShareX probeert een accurate opname inclusief scrollen te maken, het nog steeds kan gebeuren dat niet alles correct opgenomen wordt. De voornaamste reden hiervoor is bewegende elementen op het scherm (zoals een geanimeerde gif, of een menu dat niet meescrollt), die ervoor zorgen dat niet alles meegenomen wordt tijdens het combineren.</value>
</data>
<data name="chkAutoUpload.Text" xml:space="preserve">
<value>Upload/Sla op afhankelijk van de "na opname" instelling</value>
</data>
<data name="gbBeforeCapture.Text" xml:space="preserve">
<value>Voor opname</value>
</data>
<data name="gbWhileCapturing.Text" xml:space="preserve">
<value>Tijdens opnemen</value>
</data>
<data name="gbAfterCapture.Text" xml:space="preserve">
<value>Na opname</value>
</data>
<data name="cbAutoClose.Text" xml:space="preserve">
<value>Sluit dit venster na verwerken</value>
</data>
<data name="lblScrollTopMethodBeforeCapture.Text" xml:space="preserve">
<value>Scroll naar begin methode voor opname:</value>
</data>
</root>

View file

@ -207,13 +207,28 @@
<data name="cbRemoveDuplicates.Text" xml:space="preserve">
<value>Remover imagens iguais</value>
</data>
<data name="cbScrollTopBeforeCapture.Text" xml:space="preserve">
<value>Tentar rolar para o topo antes de capturar</value>
</data>
<data name="cbStartCaptureAutomatically.Text" xml:space="preserve">
<value>Iniciar captura rolante imediatamente após a seleção da região de captura</value>
</data>
<data name="cbStartSelectionAutomatically.Text" xml:space="preserve">
<value>Iniciar seleção da região de captura automaticamente antes de abrir esta janela</value>
</data>
<data name="cbAutoClose.Text" xml:space="preserve">
<value>Fechar esta janela após processamento</value>
</data>
<data name="chkAutoUpload.Text" xml:space="preserve">
<value>Enviar/salvar dependendo das configurações pós-captura</value>
</data>
<data name="gbAfterCapture.Text" xml:space="preserve">
<value>Pós-captura</value>
</data>
<data name="gbBeforeCapture.Text" xml:space="preserve">
<value>Pré-captura</value>
</data>
<data name="gbWhileCapturing.Text" xml:space="preserve">
<value>Enquanto estiver capturando</value>
</data>
<data name="lblScrollTopMethodBeforeCapture.Text" xml:space="preserve">
<value>Método de rolagem do topo antes da captura:</value>
</data>
</root>

View file

@ -123,10 +123,10 @@
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="btnSelectHandle.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 16</value>
<value>16, 24</value>
</data>
<data name="btnSelectHandle.Size" type="System.Drawing.Size, System.Drawing">
<value>344, 23</value>
<value>376, 23</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="btnSelectHandle.TabIndex" type="System.Int32, mscorlib">
@ -142,10 +142,10 @@
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;btnSelectHandle.Parent" xml:space="preserve">
<value>tpCapture</value>
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;btnSelectHandle.ZOrder" xml:space="preserve">
<value>14</value>
<value>6</value>
</data>
<data name="lblControlText.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -169,25 +169,31 @@
<value>tpCapture</value>
</data>
<data name="&gt;&gt;lblControlText.ZOrder" xml:space="preserve">
<value>16</value>
<value>5</value>
</data>
<data name="btnCapture.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="btnCapture.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="btnCapture.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft Sans Serif, 12pt</value>
</data>
<data name="btnCapture.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="btnCapture.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 336</value>
<value>8, 480</value>
</data>
<data name="btnCapture.Size" type="System.Drawing.Size, System.Drawing">
<value>344, 48</value>
<value>960, 48</value>
</data>
<data name="btnCapture.TabIndex" type="System.Int32, mscorlib">
<value>18</value>
</data>
<data name="btnCapture.Text" xml:space="preserve">
<value>Start capture</value>
<value>Start scrolling capture</value>
</data>
<data name="&gt;&gt;btnCapture.Name" xml:space="preserve">
<value>btnCapture</value>
@ -199,13 +205,13 @@
<value>tpCapture</value>
</data>
<data name="&gt;&gt;btnCapture.ZOrder" xml:space="preserve">
<value>18</value>
<value>6</value>
</data>
<metadata name="captureTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="nudScrollDelay.Location" type="System.Drawing.Point, System.Drawing">
<value>160, 116</value>
<value>256, 44</value>
</data>
<data name="nudScrollDelay.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 20</value>
@ -223,13 +229,13 @@
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;nudScrollDelay.Parent" xml:space="preserve">
<value>tpCapture</value>
<value>gbWhileCapturing</value>
</data>
<data name="&gt;&gt;nudScrollDelay.ZOrder" xml:space="preserve">
<value>20</value>
<value>1</value>
</data>
<data name="nudMaximumScrollCount.Location" type="System.Drawing.Point, System.Drawing">
<value>160, 140</value>
<value>256, 68</value>
</data>
<data name="nudMaximumScrollCount.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 20</value>
@ -247,16 +253,16 @@
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;nudMaximumScrollCount.Parent" xml:space="preserve">
<value>tpCapture</value>
<value>gbWhileCapturing</value>
</data>
<data name="&gt;&gt;nudMaximumScrollCount.ZOrder" xml:space="preserve">
<value>19</value>
<value>2</value>
</data>
<data name="lblScrollDelay.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblScrollDelay.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 120</value>
<value>13, 48</value>
</data>
<data name="lblScrollDelay.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 13</value>
@ -274,16 +280,16 @@
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblScrollDelay.Parent" xml:space="preserve">
<value>tpCapture</value>
<value>gbWhileCapturing</value>
</data>
<data name="&gt;&gt;lblScrollDelay.ZOrder" xml:space="preserve">
<value>17</value>
<value>0</value>
</data>
<data name="lblMaximumScrollCount.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblMaximumScrollCount.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 144</value>
<value>13, 72</value>
</data>
<data name="lblMaximumScrollCount.Size" type="System.Drawing.Size, System.Drawing">
<value>111, 13</value>
@ -301,10 +307,145 @@
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblMaximumScrollCount.Parent" xml:space="preserve">
<value>tpCapture</value>
<value>gbWhileCapturing</value>
</data>
<data name="&gt;&gt;lblMaximumScrollCount.ZOrder" xml:space="preserve">
<value>15</value>
<value>3</value>
</data>
<data name="&gt;&gt;tpCapture.Name" xml:space="preserve">
<value>tpCapture</value>
</data>
<data name="&gt;&gt;tpCapture.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tpCapture.Parent" xml:space="preserve">
<value>tcScrollingCapture</value>
</data>
<data name="&gt;&gt;tpCapture.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;tpOutput.Name" xml:space="preserve">
<value>tpOutput</value>
</data>
<data name="&gt;&gt;tpOutput.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tpOutput.Parent" xml:space="preserve">
<value>tcScrollingCapture</value>
</data>
<data name="&gt;&gt;tpOutput.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tcScrollingCapture.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tcScrollingCapture.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tcScrollingCapture.Size" type="System.Drawing.Size, System.Drawing">
<value>984, 661</value>
</data>
<data name="tcScrollingCapture.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;tcScrollingCapture.Name" xml:space="preserve">
<value>tcScrollingCapture</value>
</data>
<data name="&gt;&gt;tcScrollingCapture.Type" xml:space="preserve">
<value>System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tcScrollingCapture.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tcScrollingCapture.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;gbAfterCapture.Name" xml:space="preserve">
<value>gbAfterCapture</value>
</data>
<data name="&gt;&gt;gbAfterCapture.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;gbAfterCapture.Parent" xml:space="preserve">
<value>tpCapture</value>
</data>
<data name="&gt;&gt;gbAfterCapture.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;gbWhileCapturing.Name" xml:space="preserve">
<value>gbWhileCapturing</value>
</data>
<data name="&gt;&gt;gbWhileCapturing.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;gbWhileCapturing.Parent" xml:space="preserve">
<value>tpCapture</value>
</data>
<data name="&gt;&gt;gbWhileCapturing.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;gbBeforeCapture.Name" xml:space="preserve">
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;gbBeforeCapture.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;gbBeforeCapture.Parent" xml:space="preserve">
<value>tpCapture</value>
</data>
<data name="&gt;&gt;gbBeforeCapture.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;lblNote.Name" xml:space="preserve">
<value>lblNote</value>
</data>
<data name="&gt;&gt;lblNote.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblNote.Parent" xml:space="preserve">
<value>tpCapture</value>
</data>
<data name="&gt;&gt;lblNote.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;lblSelectedRectangle.Name" xml:space="preserve">
<value>lblSelectedRectangle</value>
</data>
<data name="&gt;&gt;lblSelectedRectangle.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblSelectedRectangle.Parent" xml:space="preserve">
<value>tpCapture</value>
</data>
<data name="&gt;&gt;lblSelectedRectangle.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="tpCapture.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="tpCapture.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="tpCapture.Size" type="System.Drawing.Size, System.Drawing">
<value>976, 635</value>
</data>
<data name="tpCapture.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="tpCapture.Text" xml:space="preserve">
<value>Capture</value>
</data>
<data name="&gt;&gt;tpCapture.Name" xml:space="preserve">
<value>tpCapture</value>
</data>
<data name="&gt;&gt;tpCapture.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tpCapture.Parent" xml:space="preserve">
<value>tcScrollingCapture</value>
</data>
<data name="&gt;&gt;tpCapture.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="chkAutoUpload.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -313,16 +454,16 @@
<value>NoControl</value>
</data>
<data name="chkAutoUpload.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 312</value>
<value>16, 72</value>
</data>
<data name="chkAutoUpload.Size" type="System.Drawing.Size, System.Drawing">
<value>370, 17</value>
<value>258, 17</value>
</data>
<data name="chkAutoUpload.TabIndex" type="System.Int32, mscorlib">
<value>20</value>
</data>
<data name="chkAutoUpload.Text" xml:space="preserve">
<value>Automatically upload/save depending on after capture settings and close</value>
<value>Upload/save depending on after capture settings</value>
</data>
<data name="&gt;&gt;chkAutoUpload.Name" xml:space="preserve">
<value>chkAutoUpload</value>
@ -331,19 +472,19 @@
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;chkAutoUpload.Parent" xml:space="preserve">
<value>tpCapture</value>
<value>gbAfterCapture</value>
</data>
<data name="&gt;&gt;chkAutoUpload.ZOrder" xml:space="preserve">
<value>0</value>
<value>3</value>
</data>
<data name="lblNote.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="lblNote.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 400</value>
<value>8, 544</value>
</data>
<data name="lblNote.Size" type="System.Drawing.Size, System.Drawing">
<value>944, 216</value>
<value>960, 80</value>
</data>
<data name="lblNote.TabIndex" type="System.Int32, mscorlib">
<value>19</value>
@ -361,22 +502,22 @@
<value>tpCapture</value>
</data>
<data name="&gt;&gt;lblNote.ZOrder" xml:space="preserve">
<value>1</value>
<value>3</value>
</data>
<data name="cbStartSelectionAutomatically.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="cbStartSelectionAutomatically.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 168</value>
<value>16, 80</value>
</data>
<data name="cbStartSelectionAutomatically.Size" type="System.Drawing.Size, System.Drawing">
<value>359, 17</value>
<value>296, 17</value>
</data>
<data name="cbStartSelectionAutomatically.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="cbStartSelectionAutomatically.Text" xml:space="preserve">
<value>Automatically start selecting capture region before opening this window</value>
<value>Start selecting capture region before opening this window</value>
</data>
<data name="&gt;&gt;cbStartSelectionAutomatically.Name" xml:space="preserve">
<value>cbStartSelectionAutomatically</value>
@ -385,25 +526,25 @@
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbStartSelectionAutomatically.Parent" xml:space="preserve">
<value>tpCapture</value>
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;cbStartSelectionAutomatically.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<data name="cbAutoCombine.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="cbAutoCombine.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 288</value>
<value>16, 48</value>
</data>
<data name="cbAutoCombine.Size" type="System.Drawing.Size, System.Drawing">
<value>280, 17</value>
<value>190, 17</value>
</data>
<data name="cbAutoCombine.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="cbAutoCombine.Text" xml:space="preserve">
<value>Automatically guess offsets and combine after capture</value>
<value>Guess offsets and combine images</value>
</data>
<data name="&gt;&gt;cbAutoCombine.Name" xml:space="preserve">
<value>cbAutoCombine</value>
@ -412,10 +553,10 @@
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbAutoCombine.Parent" xml:space="preserve">
<value>tpCapture</value>
<value>gbAfterCapture</value>
</data>
<data name="&gt;&gt;cbAutoCombine.ZOrder" xml:space="preserve">
<value>3</value>
<value>2</value>
</data>
<data name="lblSelectedRectangle.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -448,10 +589,10 @@
<value>NoControl</value>
</data>
<data name="btnSelectRectangle.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 40</value>
<value>16, 48</value>
</data>
<data name="btnSelectRectangle.Size" type="System.Drawing.Size, System.Drawing">
<value>344, 23</value>
<value>376, 23</value>
</data>
<data name="btnSelectRectangle.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
@ -466,16 +607,16 @@
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;btnSelectRectangle.Parent" xml:space="preserve">
<value>tpCapture</value>
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;btnSelectRectangle.ZOrder" xml:space="preserve">
<value>5</value>
<value>7</value>
</data>
<data name="lblStartDelay.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblStartDelay.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 96</value>
<value>13, 160</value>
</data>
<data name="lblStartDelay.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 13</value>
@ -493,13 +634,13 @@
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblStartDelay.Parent" xml:space="preserve">
<value>tpCapture</value>
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;lblStartDelay.ZOrder" xml:space="preserve">
<value>6</value>
<value>2</value>
</data>
<data name="nudStartDelay.Location" type="System.Drawing.Point, System.Drawing">
<value>160, 92</value>
<value>256, 156</value>
</data>
<data name="nudStartDelay.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 20</value>
@ -517,43 +658,16 @@
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;nudStartDelay.Parent" xml:space="preserve">
<value>tpCapture</value>
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;nudStartDelay.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="cbScrollTopBeforeCapture.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="cbScrollTopBeforeCapture.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 216</value>
</data>
<data name="cbScrollTopBeforeCapture.Size" type="System.Drawing.Size, System.Drawing">
<value>223, 17</value>
</data>
<data name="cbScrollTopBeforeCapture.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="cbScrollTopBeforeCapture.Text" xml:space="preserve">
<value>Attempt scrolling to the top before capture</value>
</data>
<data name="&gt;&gt;cbScrollTopBeforeCapture.Name" xml:space="preserve">
<value>cbScrollTopBeforeCapture</value>
</data>
<data name="&gt;&gt;cbScrollTopBeforeCapture.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbScrollTopBeforeCapture.Parent" xml:space="preserve">
<value>tpCapture</value>
</data>
<data name="&gt;&gt;cbScrollTopBeforeCapture.ZOrder" xml:space="preserve">
<value>8</value>
<value>4</value>
</data>
<data name="cbStartCaptureAutomatically.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="cbStartCaptureAutomatically.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 192</value>
<value>16, 104</value>
</data>
<data name="cbStartCaptureAutomatically.Size" type="System.Drawing.Size, System.Drawing">
<value>325, 17</value>
@ -571,16 +685,16 @@
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbStartCaptureAutomatically.Parent" xml:space="preserve">
<value>tpCapture</value>
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;cbStartCaptureAutomatically.ZOrder" xml:space="preserve">
<value>9</value>
<value>5</value>
</data>
<data name="cbRemoveDuplicates.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="cbRemoveDuplicates.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 264</value>
<value>16, 24</value>
</data>
<data name="cbRemoveDuplicates.Size" type="System.Drawing.Size, System.Drawing">
<value>148, 17</value>
@ -598,25 +712,25 @@
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbRemoveDuplicates.Parent" xml:space="preserve">
<value>tpCapture</value>
<value>gbAfterCapture</value>
</data>
<data name="&gt;&gt;cbRemoveDuplicates.ZOrder" xml:space="preserve">
<value>10</value>
<value>1</value>
</data>
<data name="cbAutoDetectScrollEnd.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="cbAutoDetectScrollEnd.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 240</value>
<value>16, 96</value>
</data>
<data name="cbAutoDetectScrollEnd.Size" type="System.Drawing.Size, System.Drawing">
<value>169, 17</value>
<value>106, 17</value>
</data>
<data name="cbAutoDetectScrollEnd.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="cbAutoDetectScrollEnd.Text" xml:space="preserve">
<value>Automatically detect scroll end</value>
<value>Detect scroll end</value>
</data>
<data name="&gt;&gt;cbAutoDetectScrollEnd.Name" xml:space="preserve">
<value>cbAutoDetectScrollEnd</value>
@ -625,16 +739,16 @@
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbAutoDetectScrollEnd.Parent" xml:space="preserve">
<value>tpCapture</value>
<value>gbWhileCapturing</value>
</data>
<data name="&gt;&gt;cbAutoDetectScrollEnd.ZOrder" xml:space="preserve">
<value>11</value>
<value>6</value>
</data>
<data name="lblScrollMethod.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblScrollMethod.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 72</value>
<value>13, 24</value>
</data>
<data name="lblScrollMethod.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 13</value>
@ -652,16 +766,16 @@
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblScrollMethod.Parent" xml:space="preserve">
<value>tpCapture</value>
<value>gbWhileCapturing</value>
</data>
<data name="&gt;&gt;lblScrollMethod.ZOrder" xml:space="preserve">
<value>12</value>
<value>4</value>
</data>
<data name="cbScrollMethod.Location" type="System.Drawing.Point, System.Drawing">
<value>160, 68</value>
<value>256, 20</value>
</data>
<data name="cbScrollMethod.Size" type="System.Drawing.Size, System.Drawing">
<value>312, 21</value>
<value>400, 21</value>
</data>
<data name="cbScrollMethod.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
@ -673,37 +787,10 @@
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbScrollMethod.Parent" xml:space="preserve">
<value>tpCapture</value>
<value>gbWhileCapturing</value>
</data>
<data name="&gt;&gt;cbScrollMethod.ZOrder" xml:space="preserve">
<value>13</value>
</data>
<data name="tpCapture.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="tpCapture.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="tpCapture.Size" type="System.Drawing.Size, System.Drawing">
<value>976, 635</value>
</data>
<data name="tpCapture.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="tpCapture.Text" xml:space="preserve">
<value>Capture</value>
</data>
<data name="&gt;&gt;tpCapture.Name" xml:space="preserve">
<value>tpCapture</value>
</data>
<data name="&gt;&gt;tpCapture.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tpCapture.Parent" xml:space="preserve">
<value>tcScrollingCapture</value>
</data>
<data name="&gt;&gt;tpCapture.ZOrder" xml:space="preserve">
<value>0</value>
<value>5</value>
</data>
<data name="&gt;&gt;gbImages.Name" xml:space="preserve">
<value>gbImages</value>
@ -828,30 +915,6 @@
<data name="&gt;&gt;tpOutput.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tcScrollingCapture.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tcScrollingCapture.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tcScrollingCapture.Size" type="System.Drawing.Size, System.Drawing">
<value>984, 661</value>
</data>
<data name="tcScrollingCapture.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;tcScrollingCapture.Name" xml:space="preserve">
<value>tcScrollingCapture</value>
</data>
<data name="&gt;&gt;tcScrollingCapture.Type" xml:space="preserve">
<value>System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tcScrollingCapture.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tcScrollingCapture.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;txtImagesCount.Name" xml:space="preserve">
<value>txtImagesCount</value>
</data>
@ -1075,7 +1138,7 @@
<value>4</value>
</data>
<data name="btnGuessCombineAdjustments.Text" xml:space="preserve">
<value>Guess combine adjustments &amp; combine</value>
<value>Guess combine adjustments and combine</value>
</data>
<data name="btnGuessCombineAdjustments.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
@ -1764,9 +1827,339 @@
<data name="&gt;&gt;pbOutput.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="lblScrollTopMethodBeforeCapture.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblScrollTopMethodBeforeCapture.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 136</value>
</data>
<data name="lblScrollTopMethodBeforeCapture.Size" type="System.Drawing.Size, System.Drawing">
<value>164, 13</value>
</data>
<data name="lblScrollTopMethodBeforeCapture.TabIndex" type="System.Int32, mscorlib">
<value>21</value>
</data>
<data name="lblScrollTopMethodBeforeCapture.Text" xml:space="preserve">
<value>Scroll top method before capture:</value>
</data>
<data name="&gt;&gt;lblScrollTopMethodBeforeCapture.Name" xml:space="preserve">
<value>lblScrollTopMethodBeforeCapture</value>
</data>
<data name="&gt;&gt;lblScrollTopMethodBeforeCapture.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblScrollTopMethodBeforeCapture.Parent" xml:space="preserve">
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;lblScrollTopMethodBeforeCapture.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="cbScrollTopMethodBeforeCapture.Location" type="System.Drawing.Point, System.Drawing">
<value>256, 132</value>
</data>
<data name="cbScrollTopMethodBeforeCapture.Size" type="System.Drawing.Size, System.Drawing">
<value>400, 21</value>
</data>
<data name="cbScrollTopMethodBeforeCapture.TabIndex" type="System.Int32, mscorlib">
<value>22</value>
</data>
<data name="&gt;&gt;cbScrollTopMethodBeforeCapture.Name" xml:space="preserve">
<value>cbScrollTopMethodBeforeCapture</value>
</data>
<data name="&gt;&gt;cbScrollTopMethodBeforeCapture.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbScrollTopMethodBeforeCapture.Parent" xml:space="preserve">
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;cbScrollTopMethodBeforeCapture.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="gbBeforeCapture.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;lblScrollTopMethodBeforeCapture.Name" xml:space="preserve">
<value>lblScrollTopMethodBeforeCapture</value>
</data>
<data name="&gt;&gt;lblScrollTopMethodBeforeCapture.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblScrollTopMethodBeforeCapture.Parent" xml:space="preserve">
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;lblScrollTopMethodBeforeCapture.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;cbScrollTopMethodBeforeCapture.Name" xml:space="preserve">
<value>cbScrollTopMethodBeforeCapture</value>
</data>
<data name="&gt;&gt;cbScrollTopMethodBeforeCapture.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbScrollTopMethodBeforeCapture.Parent" xml:space="preserve">
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;cbScrollTopMethodBeforeCapture.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;lblStartDelay.Name" xml:space="preserve">
<value>lblStartDelay</value>
</data>
<data name="&gt;&gt;lblStartDelay.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblStartDelay.Parent" xml:space="preserve">
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;lblStartDelay.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;cbStartSelectionAutomatically.Name" xml:space="preserve">
<value>cbStartSelectionAutomatically</value>
</data>
<data name="&gt;&gt;cbStartSelectionAutomatically.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbStartSelectionAutomatically.Parent" xml:space="preserve">
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;cbStartSelectionAutomatically.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;nudStartDelay.Name" xml:space="preserve">
<value>nudStartDelay</value>
</data>
<data name="&gt;&gt;nudStartDelay.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;nudStartDelay.Parent" xml:space="preserve">
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;nudStartDelay.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="&gt;&gt;cbStartCaptureAutomatically.Name" xml:space="preserve">
<value>cbStartCaptureAutomatically</value>
</data>
<data name="&gt;&gt;cbStartCaptureAutomatically.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbStartCaptureAutomatically.Parent" xml:space="preserve">
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;cbStartCaptureAutomatically.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="&gt;&gt;btnSelectRectangle.Name" xml:space="preserve">
<value>btnSelectRectangle</value>
</data>
<data name="&gt;&gt;btnSelectRectangle.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;btnSelectRectangle.Parent" xml:space="preserve">
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;btnSelectRectangle.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="gbBeforeCapture.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 8</value>
</data>
<data name="gbBeforeCapture.Size" type="System.Drawing.Size, System.Drawing">
<value>960, 192</value>
</data>
<data name="gbBeforeCapture.TabIndex" type="System.Int32, mscorlib">
<value>23</value>
</data>
<data name="gbBeforeCapture.Text" xml:space="preserve">
<value>Before capture</value>
</data>
<data name="&gt;&gt;gbBeforeCapture.Name" xml:space="preserve">
<value>gbBeforeCapture</value>
</data>
<data name="&gt;&gt;gbBeforeCapture.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;gbBeforeCapture.Parent" xml:space="preserve">
<value>tpCapture</value>
</data>
<data name="&gt;&gt;gbBeforeCapture.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="gbWhileCapturing.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;lblScrollMethod.Name" xml:space="preserve">
<value>lblScrollMethod</value>
</data>
<data name="&gt;&gt;lblScrollMethod.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblScrollMethod.Parent" xml:space="preserve">
<value>gbWhileCapturing</value>
</data>
<data name="&gt;&gt;lblScrollMethod.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="&gt;&gt;cbScrollMethod.Name" xml:space="preserve">
<value>cbScrollMethod</value>
</data>
<data name="&gt;&gt;cbScrollMethod.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbScrollMethod.Parent" xml:space="preserve">
<value>gbWhileCapturing</value>
</data>
<data name="&gt;&gt;cbScrollMethod.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="&gt;&gt;cbAutoDetectScrollEnd.Name" xml:space="preserve">
<value>cbAutoDetectScrollEnd</value>
</data>
<data name="&gt;&gt;cbAutoDetectScrollEnd.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbAutoDetectScrollEnd.Parent" xml:space="preserve">
<value>gbWhileCapturing</value>
</data>
<data name="&gt;&gt;cbAutoDetectScrollEnd.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="gbWhileCapturing.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 208</value>
</data>
<data name="gbWhileCapturing.Size" type="System.Drawing.Size, System.Drawing">
<value>960, 128</value>
</data>
<data name="gbWhileCapturing.TabIndex" type="System.Int32, mscorlib">
<value>24</value>
</data>
<data name="gbWhileCapturing.Text" xml:space="preserve">
<value>While capturing</value>
</data>
<data name="&gt;&gt;gbWhileCapturing.Name" xml:space="preserve">
<value>gbWhileCapturing</value>
</data>
<data name="&gt;&gt;gbWhileCapturing.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;gbWhileCapturing.Parent" xml:space="preserve">
<value>tpCapture</value>
</data>
<data name="&gt;&gt;gbWhileCapturing.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="gbAfterCapture.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;cbAutoClose.Name" xml:space="preserve">
<value>cbAutoClose</value>
</data>
<data name="&gt;&gt;cbAutoClose.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbAutoClose.Parent" xml:space="preserve">
<value>gbAfterCapture</value>
</data>
<data name="&gt;&gt;cbAutoClose.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;cbRemoveDuplicates.Name" xml:space="preserve">
<value>cbRemoveDuplicates</value>
</data>
<data name="&gt;&gt;cbRemoveDuplicates.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbRemoveDuplicates.Parent" xml:space="preserve">
<value>gbAfterCapture</value>
</data>
<data name="&gt;&gt;cbRemoveDuplicates.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;cbAutoCombine.Name" xml:space="preserve">
<value>cbAutoCombine</value>
</data>
<data name="&gt;&gt;cbAutoCombine.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbAutoCombine.Parent" xml:space="preserve">
<value>gbAfterCapture</value>
</data>
<data name="&gt;&gt;cbAutoCombine.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;chkAutoUpload.Name" xml:space="preserve">
<value>chkAutoUpload</value>
</data>
<data name="&gt;&gt;chkAutoUpload.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;chkAutoUpload.Parent" xml:space="preserve">
<value>gbAfterCapture</value>
</data>
<data name="&gt;&gt;chkAutoUpload.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="gbAfterCapture.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 344</value>
</data>
<data name="gbAfterCapture.Size" type="System.Drawing.Size, System.Drawing">
<value>960, 128</value>
</data>
<data name="gbAfterCapture.TabIndex" type="System.Int32, mscorlib">
<value>25</value>
</data>
<data name="gbAfterCapture.Text" xml:space="preserve">
<value>After capture</value>
</data>
<data name="&gt;&gt;gbAfterCapture.Name" xml:space="preserve">
<value>gbAfterCapture</value>
</data>
<data name="&gt;&gt;gbAfterCapture.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;gbAfterCapture.Parent" xml:space="preserve">
<value>tpCapture</value>
</data>
<data name="&gt;&gt;gbAfterCapture.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="cbAutoClose.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="cbAutoClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="cbAutoClose.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 96</value>
</data>
<data name="cbAutoClose.Size" type="System.Drawing.Size, System.Drawing">
<value>188, 17</value>
</data>
<data name="cbAutoClose.TabIndex" type="System.Int32, mscorlib">
<value>21</value>
</data>
<data name="cbAutoClose.Text" xml:space="preserve">
<value>Close this window after processing</value>
</data>
<data name="&gt;&gt;cbAutoClose.Name" xml:space="preserve">
<value>cbAutoClose</value>
</data>
<data name="&gt;&gt;cbAutoClose.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbAutoClose.Parent" xml:space="preserve">
<value>gbAfterCapture</value>
</data>
<data name="&gt;&gt;cbAutoClose.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>57</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>

View file

@ -171,9 +171,6 @@
<data name="cbRemoveDuplicates.Text" xml:space="preserve">
<value>Удалять дубликаты изображений</value>
</data>
<data name="cbScrollTopBeforeCapture.Text" xml:space="preserve">
<value>Прокручивать до верха перед захватом</value>
</data>
<data name="cbAutoCombine.Text" xml:space="preserve">
<value>Автоматически угадать сдвиг и объединить после захвата</value>
</data>

View file

@ -204,9 +204,6 @@
<data name="cbAutoCombine.Text" xml:space="preserve">
<value>Yakaladıktan sonra birleştirme ayarlarını tespit et ve birleştir</value>
</data>
<data name="cbScrollTopBeforeCapture.Text" xml:space="preserve">
<value>Yakalama başlamadan önce sayfayı yukarıya kaydırmayı dene</value>
</data>
<data name="cbStartCaptureAutomatically.Text" xml:space="preserve">
<value>Alan seçtikten sonra kaydırarak yakalamayı başlat</value>
</data>
@ -216,4 +213,22 @@
<data name="lblNote.Text" xml:space="preserve">
<value>Lütfen dikkat, ShareX düzgün bir şekilde kaydırarak yakalama için elinden geleni yapsada her durumda kusursuz kaydırarak yakalama yapmak mümkün değildir. Ana nedenlerinden biri kaydırma esnasında ekranda hareket olmasıdır, mesela web sayfası yakalarken ekranda hareketli bir GIF resmi varsa birleştirme esnasında sorun yaratcaktır. Bir diğer nedende ekranda olan sabit objelerdir, mesela web sayfası kaydırırken ekranda hareket etmiyen bir menu veya tuş olması nereden birleştirilceğini hesaplamada zorluk çıkarıcaktır.</value>
</data>
<data name="cbAutoClose.Text" xml:space="preserve">
<value>İşlemlerden sonra bu pencereyi kapat</value>
</data>
<data name="chkAutoUpload.Text" xml:space="preserve">
<value>Yükle/kaydet yakalama sonrası ayarlarına göre</value>
</data>
<data name="gbAfterCapture.Text" xml:space="preserve">
<value>Yakalamadan sonra</value>
</data>
<data name="gbBeforeCapture.Text" xml:space="preserve">
<value>Yakalamadan önce</value>
</data>
<data name="gbWhileCapturing.Text" xml:space="preserve">
<value>Yakalama esnasında</value>
</data>
<data name="lblScrollTopMethodBeforeCapture.Text" xml:space="preserve">
<value>Yukarı kaydırma yöntemi yakalamadan önce:</value>
</data>
</root>

View file

@ -0,0 +1,219 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>ShareX - Chụp khi cuộn trang</value>
</data>
<data name="cbStartCaptureAutomatically.Text" xml:space="preserve">
<value>Bắt đầu chụp khi cuộn trang ngay sau khi chọn vùng</value>
</data>
<data name="lblNote.Text" xml:space="preserve">
<value>Vui lòng chú ý rằng mặc dù ShareX cố gắng hết sức để hiển thị ra ảnh chụp khi cuộn trang một cách chính xác nhất nhưng mọi nội dung khi cuộn vẫn có thể được chụp không chính xác. Lý do chính gây ra vấn đề khi tiến hành việc chụp cuộn là những chuyển động trên màn hình. Ví dụ: Trang web có ảnh động GIF hoặc khung tĩnh trên màn hình khi đang cuộn (chẳng hạn như thanh menu tĩnh trên cùng hoặc các nút bấm tĩnh không thay đổi vị trí nhưng các thành phần khác của trang web vẫn được cuộn).</value>
</data>
<data name="btnStartTask.Text" xml:space="preserve">
<value>Tải lên/lưu lại tùy thuộc vào tùy chỉnh sau khi tải lên</value>
</data>
<data name="chkAutoUpload.Text" xml:space="preserve">
<value>Tự động tải lên/lưu lại tùy thuộc vào thiết lập sau khi chụp ảnh và đóng lại</value>
</data>
<data name="btnCapture.Text" xml:space="preserve">
<value>Bắt đầu chụp</value>
</data>
<data name="btnGuessEdges.Text" xml:space="preserve">
<value>Tự phỏng đoán giá trị cạnh để cắt</value>
</data>
<data name="btnSelectRectangle.Text" xml:space="preserve">
<value>(Tùy chọn) Chọn vùng tự tạo trong cửa sổ...</value>
</data>
<data name="tpCapture.Text" xml:space="preserve">
<value>Chụp</value>
</data>
<data name="gbCombineAdjustments.Text" xml:space="preserve">
<value>Kết hợp các điều chỉnh</value>
</data>
<data name="cbRemoveDuplicates.Text" xml:space="preserve">
<value>Xóa các ảnh trùng lặp</value>
</data>
<data name="lblImageCount.Text" xml:space="preserve">
<value>Số lượng ảnh:</value>
</data>
<data name="cbStartSelectionAutomatically.Text" xml:space="preserve">
<value>Tự động bắt đầu chọn vùng chụp trước khi mở cửa sổ này</value>
</data>
<data name="gbImages.Text" xml:space="preserve">
<value>Ảnh</value>
</data>
<data name="gbTrimEdges.Text" xml:space="preserve">
<value>Cắt các cạnh</value>
</data>
<data name="lblTrimTop.Text" xml:space="preserve">
<value>Trên:</value>
</data>
<data name="lblStartDelay.Text" xml:space="preserve">
<value>Bắt đầu sau:</value>
</data>
<data name="cbAutoDetectScrollEnd.Text" xml:space="preserve">
<value>Tự động xác định việc cuộn trang kết thúc</value>
</data>
<data name="lblTrimBottom.Text" xml:space="preserve">
<value>Dưới:</value>
</data>
<data name="lblCombineVertical.Text" xml:space="preserve">
<value>Dọc:</value>
</data>
<data name="lblTrimLeft.Text" xml:space="preserve">
<value>Trái:</value>
</data>
<data name="lblMaximumScrollCount.Text" xml:space="preserve">
<value>Số lần cuộn tối đa:</value>
</data>
<data name="lblProcessing.Text" xml:space="preserve">
<value>Đang xử lý...</value>
</data>
<data name="lblTrimRight.Text" xml:space="preserve">
<value>Phải:</value>
</data>
<data name="lblScrollMethod.Text" xml:space="preserve">
<value>Phương thức cuộn:</value>
</data>
<data name="lblScrollDelay.Text" xml:space="preserve">
<value>Độ trễ cuộn:</value>
</data>
<data name="lblIgnoreLast.Text" xml:space="preserve">
<value>Xóa lần cuối:</value>
</data>
<data name="tpOutput.Text" xml:space="preserve">
<value>Đầu ra</value>
</data>
<data name="btnResetCombine.Text" xml:space="preserve">
<value>Đặt lại thiết lập đầu ra</value>
</data>
<data name="btnSelectHandle.Text" xml:space="preserve">
<value>Chọn cửa sổ hoặc vùng điều khiển để cuộn...</value>
</data>
<data name="btnGuessCombineAdjustments.Text" xml:space="preserve">
<value>Tự kết hợp các điều chỉnh</value>
</data>
<data name="cbAutoCombine.Text" xml:space="preserve">
<value>Tự động đoán offset và gộp sau khi chụp</value>
</data>
<data name="lblCombineLastVertical.Text" xml:space="preserve">
<value>Hàng dọc cuối:</value>
</data>
</root>

View file

@ -302,7 +302,7 @@ public void Close(SurfaceResult result)
}
}
borderDotPen.DashOffset = (float)timerStart.Elapsed.TotalSeconds * 10;
borderDotPen.DashOffset = (float)timerStart.Elapsed.TotalSeconds * -10;
}
protected virtual void Draw(Graphics g)

View file

@ -70,6 +70,16 @@ internal static byte[] Crosshair {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap exclamation_button {
get {
object obj = ResourceManager.GetObject("exclamation_button", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized string similar to FFmpeg error.
/// </summary>
@ -125,24 +135,6 @@ internal static string FFmpegOptionsForm_UpdateUI_Quality_ {
}
}
/// <summary>
/// Looks up a localized string similar to Ctrl: Drawing mode ░ Space: Fullscreen capture.
/// </summary>
internal static string RectangleAnnotate_DrawTips_Drawing_mode_off {
get {
return ResourceManager.GetString("RectangleAnnotate_DrawTips_Drawing_mode_off", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Ctrl: Region mode ░ Shift: Pen color ░ Mouse wheel: Pen size ░ Space: Fullscreen capture.
/// </summary>
internal static string RectangleAnnotate_DrawTips_Drawing_mode_on {
get {
return ResourceManager.GetString("RectangleAnnotate_DrawTips_Drawing_mode_on", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Rectangle capture annotate.
/// </summary>
@ -152,6 +144,78 @@ internal static string RectangleAnnotate_InitializeComponent_Rectangle_capture_a
}
}
/// <summary>
/// Looks up a localized string similar to [1] Select capture mode.
/// </summary>
internal static string RectangleAnnotate_WriteTips__1__Select_capture_mode {
get {
return ResourceManager.GetString("RectangleAnnotate_WriteTips__1__Select_capture_mode", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [2] Select rectangle drawing mode.
/// </summary>
internal static string RectangleAnnotate_WriteTips__2__Select_rectangle_drawing_mode {
get {
return ResourceManager.GetString("RectangleAnnotate_WriteTips__2__Select_rectangle_drawing_mode", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [3] Select pen drawing mode.
/// </summary>
internal static string RectangleAnnotate_WriteTips__3__Select_pen_drawing_mode {
get {
return ResourceManager.GetString("RectangleAnnotate_WriteTips__3__Select_pen_drawing_mode", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [Ctrl + Mouse wheel] Change border size.
/// </summary>
internal static string RectangleAnnotate_WriteTips__Ctrl___Mouse_wheel__Change_border_size {
get {
return ResourceManager.GetString("RectangleAnnotate_WriteTips__Ctrl___Mouse_wheel__Change_border_size", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [Ctrl + Mouse wheel] Change pen size.
/// </summary>
internal static string RectangleAnnotate_WriteTips__Ctrl___Mouse_wheel__Change_pen_size {
get {
return ResourceManager.GetString("RectangleAnnotate_WriteTips__Ctrl___Mouse_wheel__Change_pen_size", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [Mouse wheel] Swap modes.
/// </summary>
internal static string RectangleAnnotate_WriteTips__Mouse_wheel__Swap_modes {
get {
return ResourceManager.GetString("RectangleAnnotate_WriteTips__Mouse_wheel__Swap_modes", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [Shift] Change border color.
/// </summary>
internal static string RectangleAnnotate_WriteTips__Shift__Change_border_color {
get {
return ResourceManager.GetString("RectangleAnnotate_WriteTips__Shift__Change_border_color", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [Shift] Change pen color.
/// </summary>
internal static string RectangleAnnotate_WriteTips__Shift__Change_pen_color {
get {
return ResourceManager.GetString("RectangleAnnotate_WriteTips__Shift__Change_pen_color", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Rectangle capture light.
/// </summary>

View file

@ -135,12 +135,6 @@
<data name="FFmpegOptionsForm_UpdateUI_Quality_" xml:space="preserve">
<value>Qualität:</value>
</data>
<data name="RectangleAnnotate_DrawTips_Drawing_mode_off" xml:space="preserve">
<value>Strg: Zeichenmodus ░ Leertaste: Vollbildschirmaufnahme</value>
</data>
<data name="RectangleAnnotate_DrawTips_Drawing_mode_on" xml:space="preserve">
<value>Strg: Regionsmodus ░ Shift: Stiftfarbe Mausrad: Stiftgröße ░ Leertaste: Vollbildschirmaufnahme</value>
</data>
<data name="RectangleAnnotate_InitializeComponent_Rectangle_capture_annotate" xml:space="preserve">
<value>Rechteckaufnahme Anmerkung</value>
</data>
@ -158,4 +152,139 @@ Distanz: {6:0.00} px / Winkel: {7:0.00}°</value>
<data name="Surface_InitializeComponent_Region_capture" xml:space="preserve">
<value>Regionsaufnahme</value>
</data>
<data name="RectangleRegion_WriteTips_____Active_monitor_capture" xml:space="preserve">
<value>[~] Aufnahme aktiver Bildschirm</value>
</data>
<data name="RectangleRegion_WriteTips__1__2__3_____0__Monitor_capture" xml:space="preserve">
<value>[1, 2, 3 ... 0] Aufnahme Bildschirm</value>
</data>
<data name="RectangleRegion_WriteTips__Arrow_keys__Move_cursor_position" xml:space="preserve">
<value>[Pfeiltasten] Zeigerposition ändern</value>
</data>
<data name="RectangleRegion_WriteTips__Arrow_keys__Resize_selected_region_from__0_" xml:space="preserve">
<value>[Pfeiltasten] Größe der Ausgewählten Region von {0} ändern</value>
</data>
<data name="RectangleRegion_WriteTips__C___0__screen_wide_crosshair" xml:space="preserve">
<value>[C] {0} bildschirmweites Fadenkreuz</value>
</data>
<data name="RectangleRegion_WriteTips__Ctrl___Arrow_keys__Move_cursor_position_faster" xml:space="preserve">
<value>[Strg + Pfeiltasten] Zeigerposition schneller ändern</value>
</data>
<data name="RectangleRegion_WriteTips__Ctrl___C__Copy_info" xml:space="preserve">
<value>[Strg + C] Info kopieren</value>
</data>
<data name="RectangleRegion_WriteTips__Ctrl___C__Copy_position" xml:space="preserve">
<value>[Strg + C] Position kopieren</value>
</data>
<data name="RectangleRegion_WriteTips__Ctrl___C__Copy_position_and_size" xml:space="preserve">
<value>[Strg + C] Position und Größe kopieren</value>
</data>
<data name="RectangleRegion_WriteTips__Ctrl___Mouse_wheel__Change_magnifier_pixel_size" xml:space="preserve">
<value>[Strg + Mausrad] Pixelgröße der Lupe ändern</value>
</data>
<data name="RectangleRegion_WriteTips__Double_Left_click___Enter__Capture_regions" xml:space="preserve">
<value>[Doppel Linksklick] [Enter] Regionen aufnehmen</value>
</data>
<data name="RectangleRegion_WriteTips__Esc__Cancel_capture" xml:space="preserve">
<value>[Esc] Aufnahme abbrechen</value>
</data>
<data name="RectangleRegion_WriteTips__F1__Hide_tips" xml:space="preserve">
<value>[F1] Tipps verstecken</value>
</data>
<data name="RectangleRegion_WriteTips__Hold_Alt__Snap_resizing_to_preset_sizes" xml:space="preserve">
<value>[Alt halten] Raste Auswahl auf vorgefertigte Größen ein</value>
</data>
<data name="RectangleRegion_WriteTips__Hold_Ctrl__Resize___Move_faster" xml:space="preserve">
<value>[Strg halten] Vergrößere / Bewege schneller</value>
</data>
<data name="RectangleRegion_WriteTips__Hold_Left_click__Start_region_selection" xml:space="preserve">
<value>[Linksklick halten] [Einf] Beginne Regionsauswahl</value>
</data>
<data name="RectangleRegion_WriteTips__Hold_Left_click_on_selection__Move_region" xml:space="preserve">
<value>[Linksklick auf Auswahl halten] Verschiebe Region</value>
</data>
<data name="RectangleRegion_WriteTips__Hold_Shift__Move_selected_region_instead_of_resizing" xml:space="preserve">
<value>[Umschalttaste halten] Ausgewählte Region verschieben statt Größe zu ändern</value>
</data>
<data name="RectangleRegion_WriteTips__Hold_Shift__Proportional_resizing" xml:space="preserve">
<value>[Umschalttaste halten] Größe proportional ändern</value>
</data>
<data name="RectangleRegion_WriteTips__I___0__position_and_size_info" xml:space="preserve">
<value>[I] {0} Positions- und Größeninformation</value>
</data>
<data name="RectangleRegion_WriteTips__Insert__Stop_region_selection" xml:space="preserve">
<value>[Linksklick loslassen] [Einf] Regionsauswahl beenden</value>
</data>
<data name="RectangleRegion_WriteTips__M___0__magnifier" xml:space="preserve">
<value>[M] {0} Lupe</value>
</data>
<data name="RectangleRegion_WriteTips__Mouse_wheel__Change_magnifier_pixel_count" xml:space="preserve">
<value>[Mausrad] Pixelanzahl der Lupe ändern</value>
</data>
<data name="RectangleRegion_WriteTips__Numpad___or____Change_rounded_rectangle_corner_radius" xml:space="preserve">
<value>[Numpad + oder -] Radius der abgerundeten Rechteck Ecken ändern</value>
</data>
<data name="RectangleRegion_WriteTips__Numpad___or____Change_triangle_angle" xml:space="preserve">
<value>[Numpad + oder -] Dreieck Winkel ändern</value>
</data>
<data name="RectangleRegion_WriteTips__Numpad_1__Rectangle_shape" xml:space="preserve">
<value>[Numpad 1] Rechteckform</value>
</data>
<data name="RectangleRegion_WriteTips__Numpad_2__Rounded_rectangle_shape" xml:space="preserve">
<value>[Numpad 2] abgerundete Rechteckform</value>
</data>
<data name="RectangleRegion_WriteTips__Numpad_3__Ellipse_shape" xml:space="preserve">
<value>[Numpad 3] Ellipsenform</value>
</data>
<data name="RectangleRegion_WriteTips__Numpad_4__Triangle_shape" xml:space="preserve">
<value>[Numpad 4] Dreieckform</value>
</data>
<data name="RectangleRegion_WriteTips__Numpad_5__Diamond_shape" xml:space="preserve">
<value>[Numpad 5] Diamantform</value>
</data>
<data name="ScrollingCaptureForm_StartCapture_Stop_capture" xml:space="preserve">
<value>Aufnahme Stoppen</value>
</data>
<data name="ScrollingCaptureForm_StopCapture_Start_capture" xml:space="preserve">
<value>Aufnahme Starten</value>
</data>
<data name="RectangleRegion_WriteTips_bottom_right" xml:space="preserve">
<value>unten rechts</value>
</data>
<data name="RectangleRegion_WriteTips_Hide" xml:space="preserve">
<value>Verstecken</value>
</data>
<data name="RectangleRegion_WriteTips_Show" xml:space="preserve">
<value>Zeigen</value>
</data>
<data name="RectangleRegion_WriteTips_top_left" xml:space="preserve">
<value>oben links</value>
</data>
<data name="ScreenRegion_Name_Monitor_0___X__1__Y__2__Width__3__Height__4_" xml:space="preserve">
<value>Monitor {0} (X:{1} Y:{2} Breite:{3} Höhe:{4})</value>
</data>
<data name="RectangleTransparent_RectangleTransparent_Rectangle_capture_transparent" xml:space="preserve">
<value>Rechteckaufnahme Transparent</value>
</data>
<data name="RectangleRegion_WriteTips__Tab__Swap_resize_anchor_to__0_" xml:space="preserve">
<value>[Tab] Wechsle Größenänderungs-Anker zu {0}</value>
</data>
<data name="RectangleRegion_WriteTips__Space__Fullscreen_capture" xml:space="preserve">
<value>[Leertaste] Vollbild Aufnahme</value>
</data>
<data name="RectangleRegion_WriteTips__Q__Activate_multi_region_mode" xml:space="preserve">
<value>[Q] Multi-Regionen Modus aktivieren</value>
</data>
<data name="RectangleRegion_WriteTips__Q__Activate_quick_capture_mode" xml:space="preserve">
<value>[Q] Schnellaufnahme Modus aktivieren</value>
</data>
<data name="RectangleRegion_WriteTips__Right_click___Esc__Cancel_capture" xml:space="preserve">
<value>[Rechtsklick] [Esc] Aufnahme abbrechen</value>
</data>
<data name="RectangleRegion_WriteTips__Right_click__Cancel_region_selection" xml:space="preserve">
<value>[Rechtsklick] [Entf] Regionsauswahl abbrechen</value>
</data>
<data name="RectangleRegion_WriteTips__Right_click_on_selection___Delete__Remove_region" xml:space="preserve">
<value>[Rechtsklick auf Auswahl] [Entf] Region entfernen</value>
</data>
</root>

Some files were not shown because too many files have changed in this diff Show more