", "").Replace("
", "");
}
else {
if (General.Default.UseFullBoardNameForTitle) {
@@ -548,22 +770,33 @@ public static string EightKun(string BoardOrDescription, bool IsDescription = fa
public static string fchan(string Board) {
if (General.Default.UseFullBoardNameForTitle) {
switch (Board.ToLower()) {
- #region Normal image boards
- case "f": return "female";
- case "m": return "male";
- case "h": return "herm";
- case "s": return "straight";
- case "toon": return "toon";
- case "a": return "alternative";
- case "ah": return "alternative (hard)";
- case "c": return "clean";
- #endregion
-
- #region Specialized image boards
- case "artist": return "artist";
- case "crit": return "critique";
- case "b": return "banners";
- #endregion
+ #region Normal image boards
+ case "f":
+ return "female";
+ case "m":
+ return "male";
+ case "h":
+ return "herm";
+ case "s":
+ return "straight";
+ case "toon":
+ return "toon";
+ case "a":
+ return "alternative";
+ case "ah":
+ return "alternative (hard)";
+ case "c":
+ return "clean";
+ #endregion
+
+ #region Specialized image boards
+ case "artist":
+ return "artist";
+ case "crit":
+ return "critique";
+ case "b":
+ return "banners";
+ #endregion
default:
return "Unknown board";
@@ -576,36 +809,57 @@ public static string fchan(string Board) {
public static string u18chan(string Board) {
if (General.Default.UseFullBoardNameForTitle) {
switch (Board.ToLower()) {
- #region Furry Related
- case "fur": return "Furries";
- case "c": return "Furry Comics";
- case "gfur": return "Gay Furries";
- case "gc": return "Gay Furry Comics";
- case "i": return "Intersex";
- case "rs": return "Request & Source";
- case "a": return "Animated";
- case "cute": return "Cute";
- #endregion
-
- #region The Basement
- case "pb": return "Post Your Naked Body";
- case "p": return "Ponies"; // Why, honestly, WHY?
- case "f": return "Feral";
- case "cub": return "Cub";
- case "gore": return "Gore";
- #endregion
-
- #region General
- case "d": return "Discussion";
- case "mu": return "Music";
- case "w": return "Wallpapers";
- case "v": return "Video Games";
- case "lo": return "Lounge";
- case "tech": return "Technology";
- case "lit": return "Literature";
- #endregion
-
- default: return "Unknown board";
+ #region Furry Related
+ case "fur":
+ return "Furries";
+ case "c":
+ return "Furry Comics";
+ case "gfur":
+ return "Gay Furries";
+ case "gc":
+ return "Gay Furry Comics";
+ case "i":
+ return "Intersex";
+ case "rs":
+ return "Request & Source";
+ case "a":
+ return "Animated";
+ case "cute":
+ return "Cute";
+ #endregion
+
+ #region The Basement
+ case "pb":
+ return "Post Your Naked Body";
+ case "p":
+ return "Ponies"; // Why, honestly, WHY?
+ case "f":
+ return "Feral";
+ case "cub":
+ return "Cub";
+ case "gore":
+ return "Gore";
+ #endregion
+
+ #region General
+ case "d":
+ return "Discussion";
+ case "mu":
+ return "Music";
+ case "w":
+ return "Wallpapers";
+ case "v":
+ return "Video Games";
+ case "lo":
+ return "Lounge";
+ case "tech":
+ return "Technology";
+ case "lit":
+ return "Literature";
+ #endregion
+
+ default:
+ return "Unknown board";
}
}
else {
@@ -634,10 +888,12 @@ public static class DefaultRegex {
"fchan.us/[a-zA-Z0-9]*?/res/[0-9]*.[^0-9]*";
public static readonly string fchanFiles =
"(?<=)";
+ public static readonly string fchanNames =
+ "(?<=File: ).*?(?=)";
public static readonly string u18chanURL =
"u18chan.com/(.*?)[a-zA-Z0-9]*?/topic/[0-9]*";
- public static readonly string u18chanFiles =
- "(?<=File: )";
+ public static readonly string u18chanPosts =
+ "(?<=a href=\").*?(_image\" style=\"width: )";
}
public static string FourChanURL {
get {
@@ -719,6 +975,16 @@ public static string fchanFiles {
}
}
}
+ public static string fchanNames {
+ get {
+ if (!string.IsNullOrEmpty(RegexStrings.Default.fchanNames)) {
+ return RegexStrings.Default.fchanNames;
+ }
+ else {
+ return DefaultRegex.fchanNames;
+ }
+ }
+ }
public static string u18chanURL {
get {
if (!string.IsNullOrEmpty(RegexStrings.Default.u18chanURL)) {
@@ -729,13 +995,13 @@ public static string u18chanURL {
}
}
}
- public static string u18chanFiles {
+ public static string u18chanPosts {
get {
- if (!string.IsNullOrEmpty(RegexStrings.Default.u18chanFiles)) {
- return RegexStrings.Default.u18chanFiles;
+ if (!string.IsNullOrEmpty(RegexStrings.Default.u18chanPosts)) {
+ return RegexStrings.Default.u18chanPosts;
}
else {
- return DefaultRegex.u18chanFiles;
+ return DefaultRegex.u18chanPosts;
}
}
}
@@ -752,7 +1018,7 @@ public enum Types : int {
EightChan = 3,
EightKun = 4,
fchan = 5,
- u18han = 6
+ u18chan = 6
}
public static int None { get { return -1; } }
public static int FourChan { get { return 0; } }
diff --git a/Classes/ErrorLog.cs b/Classes/ErrorLog.cs
new file mode 100644
index 0000000..7d85471
--- /dev/null
+++ b/Classes/ErrorLog.cs
@@ -0,0 +1,459 @@
+// 1.0
+using System;
+using System.Net;
+
+namespace YChanEx {
+ ///
+ /// This class will control the Errors that get reported in try-catch statements.
+ ///
+ class ErrorLog {
+ ///
+ /// Reports any web errors that are caught
+ ///
+ /// The WebException that was caught
+ /// The URL that (might-have) caused the problem
+ public static void ReportWebException(WebException WebException, string WebsiteAddress) {
+ if (Advanced.Default.SilenceErrors)
+ return;
+
+ string OutputFile = string.Empty;
+ string CustomDescriptionBuffer = string.Empty;
+ bool UseCustomDescription = false;
+
+ using (frmException ExceptionDisplay = new frmException()) {
+ ExceptionDisplay.ReportedWebException = WebException;
+ ExceptionDisplay.FromLanguage = false;
+
+ switch (WebException.Status) {
+ #region NameResolutionFailure
+ case WebExceptionStatus.NameResolutionFailure:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nName resolution failure" +
+ "\nThe name resolver service could not resolve the host name.";
+ break;
+ #endregion
+ #region ConnectFailure
+ case WebExceptionStatus.ConnectFailure:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nConnection failure" +
+ "\nThe remote service point could not be contacted at the transport level.";
+ break;
+ #endregion
+ #region RecieveFailure
+ case WebExceptionStatus.ReceiveFailure:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nRecieve failure" +
+ "\nA complete response was not received from the remote server.";
+ break;
+ #endregion
+ #region SendFailure
+ case WebExceptionStatus.SendFailure:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nSend failure" +
+ "\nA complete response could not be sent to the remote server.";
+ break;
+ #endregion
+ #region PipelineFailure
+ case WebExceptionStatus.PipelineFailure:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nPipeline failure" +
+ "\nThe request was a piplined request and the connection was closed before the response was received.";
+ break;
+ #endregion
+ #region RequestCanceled
+ case WebExceptionStatus.RequestCanceled:
+ return;
+ #endregion
+ #region ProtocolError
+ case WebExceptionStatus.ProtocolError:
+ var WebResponse = WebException.Response as HttpWebResponse;
+
+ if (WebResponse != null) {
+ UseCustomDescription = true;
+ switch ((int)WebResponse.StatusCode) {
+ #region StatusCodes
+ #region default / unspecified
+ default:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned " + WebResponse.StatusCode.ToString() +
+ "\n" + WebResponse.StatusDescription.ToString();
+ break;
+ #endregion
+
+ #region 301 Moved / Moved permanently
+ case 301:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 301 - Moved / Moved permanently" +
+ "\nThe requested information has been moved to the URI specified in the Location header.";
+ break;
+ #endregion
+
+ #region 400 Bad request
+ case 400:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 400 - Bad request" +
+ "\nThe request could not be understood by the server.";
+ break;
+ #endregion
+
+ #region 401 Unauthorized
+ case 401:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 401 - Unauthorized" +
+ "\nThe requested resource requires authentication.";
+ break;
+ #endregion
+
+ #region 402 Payment required
+ case 402:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 402 - Payment required" +
+ "\nPayment is required to view this content.\nThis status code isn't natively used.";
+ break;
+ #endregion
+
+ #region 403 Forbidden
+ case 403:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 403 - Forbidden" +
+ "\nYou do not have permission to view this file.";
+ break;
+ #endregion
+
+ #region 404 Not found
+ case 404:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 404 - Not found" +
+ "\nThe file does not exist on the server.";
+ break;
+ #endregion
+
+ #region 405 Method not allowed
+ case 405:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 405 - Method not allowed" +
+ "\nThe request method (GET) is not allowed on the requested resource.";
+ break;
+ #endregion
+
+ #region 406 Not acceptable
+ case 406:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 406 - Not acceptable" +
+ "\nThe client has indicated with Accept headers that it will not accept any of the available representations from the resource.";
+ break;
+ #endregion
+
+ #region 407 Proxy authentication required
+ case 407:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 407 - Proxy authentication required" +
+ "\nThe requested proxy requires authentication.";
+ break;
+ #endregion
+
+ #region 408 Request timeout
+ case 408:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 408 - Request timeout" +
+ "\nThe client did not send a request within the time the server was expection the request.";
+ break;
+ #endregion
+
+ #region 409 Conflict
+ case 409:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 409 - Conflict" +
+ "\nThe request could not be carried out because of a conflict on the server.";
+ break;
+ #endregion
+
+ #region 410 Gone
+ case 410:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 410 - Gone" +
+ "\nThe requested resource is no longer available.";
+ break;
+ #endregion
+
+ #region 411 Length required
+ case 411:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 410 - Length required" +
+ "\nThe required Content-length header is missing.";
+ break;
+ #endregion
+
+ #region 412 Precondition failed
+ case 412:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 412 - Precondition failed" +
+ "\nA condition set for this request failed, and the request cannot be carried out.";
+ break;
+ #endregion
+
+ #region 413 Request entity too large
+ case 413:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 413 - Request entity too large" +
+ "\nThe request is too large for the server to process.";
+ break;
+ #endregion
+
+ #region 414 Request uri too long
+ case 414:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 414 - Request uri too long" +
+ "\nThe uri is too long.";
+ break;
+ #endregion
+
+ #region 415 Unsupported media type
+ case 415:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 415 - Unsupported media type" +
+ "\nThe request is an unsupported type.";
+ break;
+ #endregion
+
+ #region 416 Requested range not satisfiable
+ case 416:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 416 - Requested range not satisfiable" +
+ "\nThe range of data requested from the resource cannot be returned.";
+ break;
+ #endregion
+
+ #region 417 Expectation failed
+ case 417:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 417 - Expectation failed" +
+ "\nAn expectation given in an Expect header could not be met by the server.";
+ break;
+ #endregion
+
+ #region 426 Upgrade required
+ case 426:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 426 - Upgrade required" +
+ "\nNo information is available about this error code.";
+ break;
+ #endregion
+
+ #region 500 Internal server error
+ case 500:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 500 - Internal server error" +
+ "\nAn error occured on the server.";
+ break;
+ #endregion
+
+ #region 501 Not implemented
+ case 501:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 501 - Not implemented" +
+ "\nThe server does not support the requested function.";
+ break;
+ #endregion
+
+ #region 502 Bad gateway
+ case 502:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 502 - Bad gateway" +
+ "\nThe proxy server recieved a bad response from another proxy or the origin server.";
+ break;
+ #endregion
+
+ #region 503 Service unavailable
+ case 503:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 503 - Service unavailable" +
+ "\nThe server is temporarily unavailable, likely due to high load or maintenance.";
+ break;
+ #endregion
+
+ #region 504 Gateway timeout
+ case 504:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 504 - Gateway timeout" +
+ "\nAn intermediate proxy server timed out while waiting for a response from another proxy or the origin server.";
+ break;
+ #endregion
+
+ #region 505 Http version not supported
+ case 505:
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nThe address returned 505 - Http version not supported" +
+ "\nThe requested HTTP version is not supported by the server.";
+ break;
+ #endregion
+ #endregion
+ }
+ }
+ break;
+ #endregion
+ #region ConnectionClosed
+ case WebExceptionStatus.ConnectionClosed:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nConnection closed" +
+ "\nThe connection was prematurely closed.";
+ break;
+ #endregion
+ #region TrustFailure
+ case WebExceptionStatus.TrustFailure:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nTrust failure" +
+ "\nA server certificate could not be validated.";
+ break;
+ #endregion
+ #region SecureChannelFailure
+ case WebExceptionStatus.SecureChannelFailure:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nSecure channel failure" +
+ "\nAn error occurred while establishing a connection using SSL.";
+ break;
+ #endregion
+ #region ServerProtocolViolation
+ case WebExceptionStatus.ServerProtocolViolation:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nServer protocol violation" +
+ "\nThe server response was not a valid HTTP response.";
+ break;
+ #endregion
+ #region KeepAliveFailure
+ case WebExceptionStatus.KeepAliveFailure:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nKeep alive failure" +
+ "\nThe connection for a request that specifies the Keep-alive header was closed unexpectedly.";
+ break;
+ #endregion
+ #region Pending
+ case WebExceptionStatus.Pending:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nPending" +
+ "\nAn internal asynchronous request is pending.";
+ break;
+ #endregion
+ #region Timeout
+ case WebExceptionStatus.Timeout:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nTimeout" +
+ "\nNo response was received during the time-out period for a request.";
+ break;
+ #endregion
+ #region ProxyNameResolutionFailure
+ case WebExceptionStatus.ProxyNameResolutionFailure:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nProxy name resolution failure" +
+ "\nThe name resolver service could not resolve the proxy host name.";
+ break;
+ #endregion
+ #region UnknownError
+ case WebExceptionStatus.UnknownError:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nUnknown error" +
+ "\nAn exception of unknown type has occurred.";
+ break;
+ #endregion
+ #region MessageLengthLimitExceeded
+ case WebExceptionStatus.MessageLengthLimitExceeded:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nMessage length limit exceeded" +
+ "\nA message was received that exceeded the specified limit when sending a request or receiving a response from the server.";
+ break;
+ #endregion
+ #region CacheEntryNotFound
+ case WebExceptionStatus.CacheEntryNotFound:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nCache entry not found" +
+ "\nThe specified cache entry was not found.";
+ break;
+ #endregion
+ #region RequestProhibitedByCachePolicy
+ case WebExceptionStatus.RequestProhibitedByCachePolicy:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nRequest prohibited by cache policy" +
+ "\nThe request was not permitted by the cache policy.";
+ break;
+ #endregion
+ #region RequestProhibitedByProxy
+ case WebExceptionStatus.RequestProhibitedByProxy:
+ UseCustomDescription = true;
+ CustomDescriptionBuffer += "A WebException occured at " + WebsiteAddress +
+ "\n\nRequest prohibited by proxy" +
+ "\nThis request was not permitted by the proxy.";
+ break;
+ #endregion
+
+ }
+
+ if (UseCustomDescription) {
+ CustomDescriptionBuffer += WebException.InnerException + "\n\nStackTrace:\n" +
+ WebException.StackTrace;
+ }
+
+ ExceptionDisplay.SetCustomDescription = UseCustomDescription;
+ ExceptionDisplay.CustomDescription = CustomDescriptionBuffer;
+ ExceptionDisplay.ShowDialog();
+ }
+
+ // build log file
+
+
+ //if (Errors.Default.logErrors) {
+ // if (UseCustomDescription) { WriteToFile(CustomDescriptionBuffer); }
+ // else { WriteToFile(WebException.ToString()); }
+ //}
+ }
+
+ ///
+ /// Reports any general exceptions that are caught
+ ///
+ /// The Exception that was caught
+ public static void ReportException(Exception Exception, bool IsWriteToFile = true) {
+ if (Advanced.Default.SilenceErrors)
+ return;
+
+ string OutputFile = string.Empty;
+
+ using (frmException ExceptionDisplay = new frmException()) {
+ ExceptionDisplay.ReportedException = Exception;
+ ExceptionDisplay.FromLanguage = false;
+ ExceptionDisplay.ShowDialog();
+ }
+
+ //if (Errors.Default.logErrors && !IsWriteToFile) {
+ // WriteToFile(Exception.ToString());
+ //}
+ }
+
+ ///
+ /// Writes the error to a .log file in the working directory.
+ ///
+ /// The data that will be written to the log file
+ public static void WriteToFile(string Buffer) {
+ try {
+ string FileName = string.Format("\\error_{0}.log", DateTime.Now);
+ System.IO.File.WriteAllText(FileName, Buffer);
+ }
+ catch (Exception ex) { ReportException(ex, true); }
+ }
+ }
+}
diff --git a/Downloads.Designer.cs b/Downloads.Designer.cs
index c3d987b..b195940 100644
--- a/Downloads.Designer.cs
+++ b/Downloads.Designer.cs
@@ -97,13 +97,13 @@ public int ScannerDelay {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("True")]
- public bool SaveQueueOnExit {
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool AllowFileNamesGreaterThan255 {
get {
- return ((bool)(this["SaveQueueOnExit"]));
+ return ((bool)(this["AllowFileNamesGreaterThan255"]));
}
set {
- this["SaveQueueOnExit"] = value;
+ this["AllowFileNamesGreaterThan255"] = value;
}
}
}
diff --git a/Downloads.settings b/Downloads.settings
index 0165256..4117a5e 100644
--- a/Downloads.settings
+++ b/Downloads.settings
@@ -20,8 +20,8 @@
60
-
- True
+
+ False
\ No newline at end of file
diff --git a/General.Designer.cs b/General.Designer.cs
index d8db51f..cb74899 100644
--- a/General.Designer.cs
+++ b/General.Designer.cs
@@ -37,7 +37,7 @@ public bool ShowTrayIcon {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ [global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool MinimizeToTray {
get {
return ((bool)(this["MinimizeToTray"]));
@@ -73,7 +73,7 @@ public bool EnableUpdates {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("True")]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool UseFullBoardNameForTitle {
get {
return ((bool)(this["UseFullBoardNameForTitle"]));
@@ -82,5 +82,29 @@ public bool UseFullBoardNameForTitle {
this["UseFullBoardNameForTitle"] = value;
}
}
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("True")]
+ public bool SaveQueueOnExit {
+ get {
+ return ((bool)(this["SaveQueueOnExit"]));
+ }
+ set {
+ this["SaveQueueOnExit"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("True")]
+ public bool MinimizeInsteadOfExiting {
+ get {
+ return ((bool)(this["MinimizeInsteadOfExiting"]));
+ }
+ set {
+ this["MinimizeInsteadOfExiting"] = value;
+ }
+ }
}
}
diff --git a/General.settings b/General.settings
index fdb0596..c2f655e 100644
--- a/General.settings
+++ b/General.settings
@@ -6,7 +6,7 @@
False
- False
+ True
False
@@ -15,6 +15,12 @@
True
+ False
+
+
+ True
+
+
True
diff --git a/Program.cs b/Program.cs
index 9373018..f3de19f 100644
--- a/Program.cs
+++ b/Program.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
+using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs
index 387ff49..ded2871 100644
--- a/Properties/Resources.Designer.cs
+++ b/Properties/Resources.Designer.cs
@@ -60,6 +60,46 @@ internal Resources() {
}
}
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap downloading {
+ get {
+ object obj = ResourceManager.GetObject("downloading", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap errored {
+ get {
+ object obj = ResourceManager.GetObject("errored", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap finished {
+ get {
+ object obj = ResourceManager.GetObject("finished", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap waiting {
+ get {
+ object obj = ResourceManager.GetObject("waiting", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
///
diff --git a/Properties/Resources.resx b/Properties/Resources.resx
index 0cd380b..420cb4b 100644
--- a/Properties/Resources.resx
+++ b/Properties/Resources.resx
@@ -127,4 +127,16 @@
..\Resources\YChanEx404.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\downloading.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\errored.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\finished.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\waiting.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
\ No newline at end of file
diff --git a/RegexStrings.Designer.cs b/RegexStrings.Designer.cs
index 0be38e3..3bd6948 100644
--- a/RegexStrings.Designer.cs
+++ b/RegexStrings.Designer.cs
@@ -119,6 +119,18 @@ public string fchanFiles {
}
}
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("")]
+ public string fchanNames {
+ get {
+ return ((string)(this["fchanNames"]));
+ }
+ set {
+ this["fchanNames"] = value;
+ }
+ }
+
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
@@ -142,5 +154,29 @@ public string u18chanFiles {
this["u18chanFiles"] = value;
}
}
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("")]
+ public string u18chanID {
+ get {
+ return ((string)(this["u18chanID"]));
+ }
+ set {
+ this["u18chanID"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("")]
+ public string u18chanPosts {
+ get {
+ return ((string)(this["u18chanPosts"]));
+ }
+ set {
+ this["u18chanPosts"] = value;
+ }
+ }
}
}
diff --git a/RegexStrings.settings b/RegexStrings.settings
index c32b848..0bc6e2d 100644
--- a/RegexStrings.settings
+++ b/RegexStrings.settings
@@ -26,11 +26,20 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/YChanEx.csproj b/YChanEx.csproj
index b1b64dd..d863c64 100644
--- a/YChanEx.csproj
+++ b/YChanEx.csproj
@@ -57,6 +57,7 @@
Component
+
True
@@ -177,6 +178,18 @@
+
+
+
+
+
+
+
+
+
+
+
+