Compare commits
175 Commits
Author | SHA1 | Date | |
---|---|---|---|
746eba185b | |||
82dec92510 | |||
2edc93df47 | |||
c5a6738199 | |||
dfd578165b | |||
285d400f69 | |||
47a3444ace | |||
0ec227da52 | |||
f9cf582306 | |||
b0883229bf | |||
31b5d9a4c0 | |||
6841a78556 | |||
9d2089a8ce | |||
6d6bb79199 | |||
937c8e22c4 | |||
34c8d44dfe | |||
2dbf778e56 | |||
873fe2b393 | |||
0c53bc6f32 | |||
fa407e150b | |||
4e52102c5c | |||
0355a5c646 | |||
377d9c3554 | |||
20b1b3c895 | |||
41bbe7c51b | |||
27fa6aefd3 | |||
a63c3232da | |||
146908a115 | |||
48b0f35fee | |||
6c435ebe26 | |||
b8d0b721a2 | |||
a6d5957f46 | |||
9e5f676e23 | |||
414f3a1f9d | |||
fedf9c60ee | |||
b6385d9622 | |||
76d25a712d | |||
2c6d935273 | |||
830d98a101 | |||
d7378bd75a | |||
0f41cb9dbc | |||
77bc922d93 | |||
c91b635132 | |||
e5521de34a | |||
7c0f8d0f24 | |||
f60d5f650f | |||
ca67f2fe0a | |||
16cce8be1d | |||
770619d948 | |||
cfedb7d6b1 | |||
738557b3a2 | |||
38b01deec1 | |||
1a31e69ec9 | |||
e065983c95 | |||
30a169171a | |||
8d1900362e | |||
e154189de1 | |||
b0f147de24 | |||
979b3548db | |||
05d6c578b3 | |||
a117559063 | |||
f87c649b09 | |||
6504dc9184 | |||
25a8ddffd4 | |||
fa0f9b89cf | |||
4d00a67891 | |||
bd2c43e1f4 | |||
c7279eaa34 | |||
fd523e552c | |||
cb877b8b23 | |||
ed1bee8b89 | |||
a8e1492056 | |||
5587216c01 | |||
86569261ad | |||
4a9049c7aa | |||
75d60a8182 | |||
14d4dc2ed9 | |||
fd0e1740a5 | |||
70ca890bef | |||
b9318dfd8e | |||
995642a719 | |||
d14de4ac9e | |||
b7f325a241 | |||
27c55718c2 | |||
421ff0654b | |||
ed947458f9 | |||
9cdb20ba84 | |||
d8774b735f | |||
adcb42695f | |||
dd77b5bcbb | |||
d2445be155 | |||
10254c8af7 | |||
d7e830badf | |||
b445a3a9b8 | |||
97f42ead66 | |||
03730fafb9 | |||
0be9465dca | |||
d7f1df4995 | |||
3cb0f90706 | |||
a3e9b15a8a | |||
00bfa68a57 | |||
c311e24f08 | |||
1cdd4e4455 | |||
8078c0081a | |||
a867e1fc40 | |||
61da36ac1c | |||
720ca2a018 | |||
b39c593552 | |||
c808952a45 | |||
b468d7a766 | |||
28578f60be | |||
92a39e2527 | |||
1bce5e4342 | |||
68f586e104 | |||
d27a66202e | |||
07de2f450c | |||
3c03726634 | |||
6fb2643063 | |||
5eef6c8196 | |||
829c332e13 | |||
47eec14bca | |||
e7ee1d6be7 | |||
e41b5e5ff7 | |||
ba1bacd08c | |||
1029ea5840 | |||
339eaf0195 | |||
aa1e1549d8 | |||
1f8ae9ef80 | |||
65165de060 | |||
485836d2ce | |||
64c07c14d9 | |||
b6313c2b72 | |||
58124b5821 | |||
b6a599f8a6 | |||
19a6bc0dbd | |||
8cb81d44ee | |||
22d0a372d8 | |||
988fae75c3 | |||
a82b0e3622 | |||
bc6cacacf9 | |||
03ad1b3cbc | |||
eac300627f | |||
12525ac386 | |||
7558551859 | |||
a9cce13eef | |||
5bb2c43dd0 | |||
5b1dcc88cc | |||
5c8fc1d136 | |||
82c2ab3448 | |||
b05c8d180f | |||
87109e5d01 | |||
be1a809098 | |||
ba0e3f1bd4 | |||
27d41e6164 | |||
1ce5ddfd98 | |||
0096a1a4ef | |||
d2a6560a90 | |||
4d7c048139 | |||
1d78bd2655 | |||
9250f1907c | |||
a63e210b88 | |||
06bd65b7f8 | |||
b6c17eb05e | |||
a3d40fdc2b | |||
c064ef7a30 | |||
762717da1e | |||
b7d3758bea | |||
d20541fd24 | |||
2c2f860f26 | |||
d1db3aa673 | |||
cedc52cdf5 | |||
33f8eafbcf | |||
ad45cf8c72 | |||
f99d035621 | |||
f3072caea8 |
@@ -6,7 +6,8 @@ namespace TweetDuck.Configuration{
|
|||||||
// public args
|
// public args
|
||||||
public const string ArgDataFolder = "-datafolder";
|
public const string ArgDataFolder = "-datafolder";
|
||||||
public const string ArgLogging = "-log";
|
public const string ArgLogging = "-log";
|
||||||
public const string ArgDebugUpdates = "-debugupdates";
|
public const string ArgIgnoreGDPR = "-nogdpr";
|
||||||
|
public const string ArgNotificationScrollWA = "-nscrollwa";
|
||||||
|
|
||||||
// internal args
|
// internal args
|
||||||
public const string ArgRestart = "-restart";
|
public const string ArgRestart = "-restart";
|
||||||
|
@@ -1,28 +1,17 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.IO;
|
|
||||||
using TweetDuck.Data.Serialization;
|
using TweetDuck.Data.Serialization;
|
||||||
|
|
||||||
namespace TweetDuck.Configuration{
|
namespace TweetDuck.Configuration{
|
||||||
sealed class SystemConfig{
|
sealed class SystemConfig{
|
||||||
private static readonly FileSerializer<SystemConfig> Serializer = new FileSerializer<SystemConfig>();
|
private static readonly FileSerializer<SystemConfig> Serializer = new FileSerializer<SystemConfig>();
|
||||||
|
|
||||||
public static readonly bool IsHardwareAccelerationSupported = File.Exists(Path.Combine(Program.ProgramPath, "libEGL.dll")) &&
|
|
||||||
File.Exists(Path.Combine(Program.ProgramPath, "libGLESv2.dll"));
|
|
||||||
|
|
||||||
// CONFIGURATION DATA
|
// CONFIGURATION DATA
|
||||||
|
|
||||||
private bool _hardwareAcceleration = true;
|
public bool HardwareAcceleration { get; set; } = true;
|
||||||
|
|
||||||
public bool ClearCacheAutomatically { get; set; } = true;
|
public bool ClearCacheAutomatically { get; set; } = true;
|
||||||
public int ClearCacheThreshold { get; set; } = 250;
|
public int ClearCacheThreshold { get; set; } = 250;
|
||||||
|
|
||||||
// SPECIAL PROPERTIES
|
|
||||||
|
|
||||||
public bool HardwareAcceleration{
|
|
||||||
get => _hardwareAcceleration && IsHardwareAccelerationSupported;
|
|
||||||
set => _hardwareAcceleration = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
// END OF CONFIG
|
// END OF CONFIG
|
||||||
|
|
||||||
private readonly string file;
|
private readonly string file;
|
||||||
|
@@ -39,7 +39,7 @@ namespace TweetDuck.Configuration{
|
|||||||
public bool AllowDataCollection { get; set; } = false;
|
public bool AllowDataCollection { get; set; } = false;
|
||||||
|
|
||||||
public WindowState BrowserWindow { get; set; } = new WindowState();
|
public WindowState BrowserWindow { get; set; } = new WindowState();
|
||||||
public WindowState PluginsWindow { get; set; } = new WindowState();
|
public Size PluginsWindowSize { get; set; } = Size.Empty;
|
||||||
|
|
||||||
public bool ExpandLinksOnHover { get; set; } = true;
|
public bool ExpandLinksOnHover { get; set; } = true;
|
||||||
public bool OpenSearchInFirstColumn { get; set; } = true;
|
public bool OpenSearchInFirstColumn { get; set; } = true;
|
||||||
|
@@ -50,6 +50,10 @@ namespace TweetDuck.Core.Bridge{
|
|||||||
public void OpenContextMenu(){
|
public void OpenContextMenu(){
|
||||||
form.InvokeAsyncSafe(form.OpenContextMenu);
|
form.InvokeAsyncSafe(form.OpenContextMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OpenProfileImport(){
|
||||||
|
form.InvokeAsyncSafe(form.OpenProfileImport);
|
||||||
|
}
|
||||||
|
|
||||||
public void OnIntroductionClosed(bool showGuide, bool allowDataCollection){
|
public void OnIntroductionClosed(bool showGuide, bool allowDataCollection){
|
||||||
form.InvokeAsyncSafe(() => {
|
form.InvokeAsyncSafe(() => {
|
||||||
@@ -64,6 +68,10 @@ namespace TweetDuck.Core.Bridge{
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetRightClickedLink(string type, string url){
|
||||||
|
ContextInfo.SetLink(type, url);
|
||||||
|
}
|
||||||
|
|
||||||
public void SetRightClickedChirp(string tweetUrl, string quoteUrl, string chirpAuthors, string chirpImages){
|
public void SetRightClickedChirp(string tweetUrl, string quoteUrl, string chirpAuthors, string chirpImages){
|
||||||
ContextInfo.SetChirp(tweetUrl, quoteUrl, chirpAuthors, chirpImages);
|
ContextInfo.SetChirp(tweetUrl, quoteUrl, chirpAuthors, chirpImages);
|
||||||
}
|
}
|
||||||
@@ -99,10 +107,6 @@ namespace TweetDuck.Core.Bridge{
|
|||||||
|
|
||||||
// Global
|
// Global
|
||||||
|
|
||||||
public void SetLastRightClickInfo(string type, string url){
|
|
||||||
ContextInfo.SetLink(type, url);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void OnTweetPopup(string columnId, string chirpId, string columnName, string tweetHtml, int tweetCharacters, string tweetUrl, string quoteUrl){
|
public void OnTweetPopup(string columnId, string chirpId, string columnName, string tweetHtml, int tweetCharacters, string tweetUrl, string quoteUrl){
|
||||||
notification.InvokeAsyncSafe(() => {
|
notification.InvokeAsyncSafe(() => {
|
||||||
form.OnTweetNotification();
|
form.OnTweetNotification();
|
||||||
|
@@ -7,7 +7,7 @@ namespace TweetDuck.Core.Controls{
|
|||||||
public int LineHeight { get; set; }
|
public int LineHeight { get; set; }
|
||||||
|
|
||||||
protected override void OnPaint(PaintEventArgs e){
|
protected override void OnPaint(PaintEventArgs e){
|
||||||
int y = (int)Math.Floor((ClientRectangle.Height-Text.Length*LineHeight)/2F)-2; // 2 = random
|
int y = (int)Math.Floor((ClientRectangle.Height-Text.Length*LineHeight)/2F)-1;
|
||||||
|
|
||||||
using(Brush brush = new SolidBrush(ForeColor)){
|
using(Brush brush = new SolidBrush(ForeColor)){
|
||||||
foreach(char chr in Text){
|
foreach(char chr in Text){
|
||||||
|
6
Core/FormBrowser.Designer.cs
generated
@@ -39,17 +39,17 @@
|
|||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.BackColor = TweetDuck.Core.Utils.TwitterUtils.BackgroundColor;
|
this.BackColor = TweetDuck.Core.Utils.TwitterUtils.BackgroundColor;
|
||||||
this.ClientSize = new System.Drawing.Size(400, 386);
|
this.ClientSize = new System.Drawing.Size(1008, 730);
|
||||||
this.Icon = Properties.Resources.icon;
|
this.Icon = Properties.Resources.icon;
|
||||||
this.Location = TweetDuck.Core.Controls.ControlExtensions.InvisibleLocation;
|
this.Location = TweetDuck.Core.Controls.ControlExtensions.InvisibleLocation;
|
||||||
this.MinimumSize = new System.Drawing.Size(416, 424);
|
this.MinimumSize = new System.Drawing.Size(348, 424);
|
||||||
this.Name = "FormBrowser";
|
this.Name = "FormBrowser";
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
|
||||||
this.Activated += new System.EventHandler(this.FormBrowser_Activated);
|
this.Activated += new System.EventHandler(this.FormBrowser_Activated);
|
||||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormBrowser_FormClosing);
|
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormBrowser_FormClosing);
|
||||||
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormBrowser_FormClosed);
|
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormBrowser_FormClosed);
|
||||||
this.LocationChanged += new System.EventHandler(this.FormBrowser_LocationChanged);
|
|
||||||
this.ResizeEnd += new System.EventHandler(this.FormBrowser_ResizeEnd);
|
this.ResizeEnd += new System.EventHandler(this.FormBrowser_ResizeEnd);
|
||||||
|
this.LocationChanged += new System.EventHandler(this.FormBrowser_LocationChanged);
|
||||||
this.Resize += new System.EventHandler(this.FormBrowser_Resize);
|
this.Resize += new System.EventHandler(this.FormBrowser_Resize);
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
@@ -5,11 +5,13 @@ using TweetDuck.Configuration;
|
|||||||
using TweetDuck.Core.Bridge;
|
using TweetDuck.Core.Bridge;
|
||||||
using TweetDuck.Core.Controls;
|
using TweetDuck.Core.Controls;
|
||||||
using TweetDuck.Core.Handling;
|
using TweetDuck.Core.Handling;
|
||||||
|
using TweetDuck.Core.Handling.General;
|
||||||
using TweetDuck.Core.Management;
|
using TweetDuck.Core.Management;
|
||||||
using TweetDuck.Core.Notification;
|
using TweetDuck.Core.Notification;
|
||||||
using TweetDuck.Core.Notification.Screenshot;
|
using TweetDuck.Core.Notification.Screenshot;
|
||||||
using TweetDuck.Core.Other;
|
using TweetDuck.Core.Other;
|
||||||
using TweetDuck.Core.Other.Analytics;
|
using TweetDuck.Core.Other.Analytics;
|
||||||
|
using TweetDuck.Core.Other.Settings.Dialogs;
|
||||||
using TweetDuck.Core.Utils;
|
using TweetDuck.Core.Utils;
|
||||||
using TweetDuck.Plugins;
|
using TweetDuck.Plugins;
|
||||||
using TweetDuck.Plugins.Enums;
|
using TweetDuck.Plugins.Enums;
|
||||||
@@ -39,6 +41,7 @@ namespace TweetDuck.Core{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public string UpdateInstallerPath { get; private set; }
|
public string UpdateInstallerPath { get; private set; }
|
||||||
|
private bool ignoreUpdateCheckError;
|
||||||
|
|
||||||
public AnalyticsFile AnalyticsFile => analytics?.File ?? AnalyticsFile.Dummy;
|
public AnalyticsFile AnalyticsFile => analytics?.File ?? AnalyticsFile.Dummy;
|
||||||
|
|
||||||
@@ -55,7 +58,7 @@ namespace TweetDuck.Core{
|
|||||||
private VideoPlayer videoPlayer;
|
private VideoPlayer videoPlayer;
|
||||||
private AnalyticsManager analytics;
|
private AnalyticsManager analytics;
|
||||||
|
|
||||||
public FormBrowser(UpdaterSettings updaterSettings){
|
public FormBrowser(){
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
Text = Program.BrandName;
|
Text = Program.BrandName;
|
||||||
@@ -71,15 +74,16 @@ namespace TweetDuck.Core{
|
|||||||
this.browser = new TweetDeckBrowser(this, new TweetDeckBridge.Browser(this, notification));
|
this.browser = new TweetDeckBrowser(this, new TweetDeckBridge.Browser(this, notification));
|
||||||
this.contextMenu = ContextMenuBrowser.CreateMenu(this);
|
this.contextMenu = ContextMenuBrowser.CreateMenu(this);
|
||||||
|
|
||||||
this.plugins.Register(browser, PluginEnvironment.Browser, true);
|
this.plugins.Register(browser, PluginEnvironment.Browser, this, true);
|
||||||
|
|
||||||
Controls.Add(new MenuStrip{ Visible = false }); // fixes Alt freezing the program in Win 10 Anniversary Update
|
Controls.Add(new MenuStrip{ Visible = false }); // fixes Alt freezing the program in Win 10 Anniversary Update
|
||||||
|
|
||||||
Disposed += (sender, args) => {
|
Disposed += (sender, args) => {
|
||||||
Config.MuteToggled -= Config_MuteToggled;
|
Config.MuteToggled -= Config_MuteToggled;
|
||||||
Config.TrayBehaviorChanged -= Config_TrayBehaviorChanged;
|
Config.TrayBehaviorChanged -= Config_TrayBehaviorChanged;
|
||||||
|
|
||||||
browser.Dispose();
|
browser.Dispose();
|
||||||
|
updates.Dispose();
|
||||||
contextMenu.Dispose();
|
contextMenu.Dispose();
|
||||||
|
|
||||||
notificationScreenshotManager?.Dispose();
|
notificationScreenshotManager?.Dispose();
|
||||||
@@ -93,9 +97,14 @@ namespace TweetDuck.Core{
|
|||||||
this.trayIcon.ClickClose += trayIcon_ClickClose;
|
this.trayIcon.ClickClose += trayIcon_ClickClose;
|
||||||
Config.TrayBehaviorChanged += Config_TrayBehaviorChanged;
|
Config.TrayBehaviorChanged += Config_TrayBehaviorChanged;
|
||||||
|
|
||||||
UpdateTrayIcon();
|
UpdateTray();
|
||||||
|
|
||||||
this.updates = new UpdateHandler(browser, updaterSettings);
|
if (Config.MuteNotifications){
|
||||||
|
UpdateFormIcon();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.updates = new UpdateHandler(browser, Program.InstallerPath);
|
||||||
|
this.updates.CheckFinished += updates_CheckFinished;
|
||||||
this.updates.UpdateAccepted += updates_UpdateAccepted;
|
this.updates.UpdateAccepted += updates_UpdateAccepted;
|
||||||
this.updates.UpdateDismissed += updates_UpdateDismissed;
|
this.updates.UpdateDismissed += updates_UpdateDismissed;
|
||||||
|
|
||||||
@@ -124,7 +133,11 @@ namespace TweetDuck.Core{
|
|||||||
isLoaded = true;
|
isLoaded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateTrayIcon(){
|
private void UpdateFormIcon(){ // TODO fix to show icon in taskbar too
|
||||||
|
Icon = Config.MuteNotifications ? Properties.Resources.icon_muted : Properties.Resources.icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateTray(){
|
||||||
trayIcon.Visible = Config.TrayBehavior.ShouldDisplayIcon();
|
trayIcon.Visible = Config.TrayBehavior.ShouldDisplayIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,18 +212,19 @@ namespace TweetDuck.Core{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void Config_MuteToggled(object sender, EventArgs e){
|
private void Config_MuteToggled(object sender, EventArgs e){
|
||||||
|
UpdateFormIcon();
|
||||||
AnalyticsFile.NotificationMutes.Trigger();
|
AnalyticsFile.NotificationMutes.Trigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Config_TrayBehaviorChanged(object sender, EventArgs e){
|
private void Config_TrayBehaviorChanged(object sender, EventArgs e){
|
||||||
UpdateTrayIcon();
|
UpdateTray();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void trayIcon_ClickRestore(object sender, EventArgs e){
|
private void trayIcon_ClickRestore(object sender, EventArgs e){
|
||||||
Show();
|
Show();
|
||||||
RestoreWindow();
|
RestoreWindow();
|
||||||
Activate();
|
Activate();
|
||||||
UpdateTrayIcon();
|
UpdateTray();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void trayIcon_ClickClose(object sender, EventArgs e){
|
private void trayIcon_ClickClose(object sender, EventArgs e){
|
||||||
@@ -233,6 +247,27 @@ namespace TweetDuck.Core{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updates_CheckFinished(object sender, UpdateCheckEventArgs e){
|
||||||
|
e.Result.Handle(update => {
|
||||||
|
string tag = update.VersionTag;
|
||||||
|
|
||||||
|
if (tag != Program.VersionTag && tag != Config.DismissedUpdate){
|
||||||
|
updates.PrepareUpdate(update);
|
||||||
|
browser.ShowUpdateNotification(tag, update.ReleaseNotes);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
updates.StartTimer();
|
||||||
|
}
|
||||||
|
}, ex => {
|
||||||
|
if (!ignoreUpdateCheckError){
|
||||||
|
Program.Reporter.HandleException("Update Check Error", "An error occurred while checking for updates.", true, ex);
|
||||||
|
updates.StartTimer();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
ignoreUpdateCheckError = true;
|
||||||
|
}
|
||||||
|
|
||||||
private void updates_UpdateAccepted(object sender, UpdateEventArgs e){
|
private void updates_UpdateAccepted(object sender, UpdateEventArgs e){
|
||||||
this.InvokeAsyncSafe(() => {
|
this.InvokeAsyncSafe(() => {
|
||||||
FormManager.CloseAllDialogs();
|
FormManager.CloseAllDialogs();
|
||||||
@@ -241,13 +276,21 @@ namespace TweetDuck.Core{
|
|||||||
Config.DismissedUpdate = null;
|
Config.DismissedUpdate = null;
|
||||||
Config.Save();
|
Config.Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
updates.BeginUpdateDownload(this, e.UpdateInfo, update => {
|
|
||||||
if (update.DownloadStatus == UpdateDownloadStatus.Done){
|
|
||||||
UpdateInstallerPath = update.InstallerPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
ForceClose();
|
updates.BeginUpdateDownload(this, e.UpdateInfo, update => {
|
||||||
|
UpdateDownloadStatus status = update.DownloadStatus;
|
||||||
|
|
||||||
|
if (status == UpdateDownloadStatus.Done){
|
||||||
|
UpdateInstallerPath = update.InstallerPath;
|
||||||
|
ForceClose();
|
||||||
|
}
|
||||||
|
else if (status != UpdateDownloadStatus.Canceled && FormMessage.Error("Update Has Failed", "Could not automatically download the update: "+(update.DownloadError?.Message ?? "unknown error")+"\n\nWould you like to open the website and try downloading the update manually?", FormMessage.Yes, FormMessage.No)){
|
||||||
|
BrowserUtils.OpenExternalBrowser(Program.Website);
|
||||||
|
ForceClose();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
Show();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -302,6 +345,7 @@ namespace TweetDuck.Core{
|
|||||||
Resources.ScriptLoader.HotSwap();
|
Resources.ScriptLoader.HotSwap();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
ignoreUpdateCheckError = false;
|
||||||
browser.ReloadToTweetDeck();
|
browser.ReloadToTweetDeck();
|
||||||
AnalyticsFile.BrowserReloads.Trigger();
|
AnalyticsFile.BrowserReloads.Trigger();
|
||||||
}
|
}
|
||||||
@@ -327,6 +371,10 @@ namespace TweetDuck.Core{
|
|||||||
AnalyticsFile.UsedROT13.Trigger();
|
AnalyticsFile.UsedROT13.Trigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OpenDevTools(){
|
||||||
|
browser.OpenDevTools();
|
||||||
|
}
|
||||||
|
|
||||||
// callback handlers
|
// callback handlers
|
||||||
|
|
||||||
public void OnIntroductionClosed(bool showGuide, bool allowDataCollection){
|
public void OnIntroductionClosed(bool showGuide, bool allowDataCollection){
|
||||||
@@ -352,13 +400,13 @@ namespace TweetDuck.Core{
|
|||||||
public void OpenSettings(){
|
public void OpenSettings(){
|
||||||
OpenSettings(null);
|
OpenSettings(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OpenSettings(Type startTab){
|
public void OpenSettings(Type startTab){
|
||||||
if (!FormManager.TryBringToFront<FormSettings>()){
|
if (!FormManager.TryBringToFront<FormSettings>()){
|
||||||
bool prevEnableUpdateCheck = Config.EnableUpdateCheck;
|
bool prevEnableUpdateCheck = Config.EnableUpdateCheck;
|
||||||
|
|
||||||
FormSettings form = new FormSettings(this, plugins, updates, analytics, startTab);
|
FormSettings form = new FormSettings(this, plugins, updates, analytics, startTab);
|
||||||
|
|
||||||
form.FormClosed += (sender, args) => {
|
form.FormClosed += (sender, args) => {
|
||||||
if (!prevEnableUpdateCheck && Config.EnableUpdateCheck){
|
if (!prevEnableUpdateCheck && Config.EnableUpdateCheck){
|
||||||
Config.DismissedUpdate = null;
|
Config.DismissedUpdate = null;
|
||||||
@@ -414,6 +462,18 @@ namespace TweetDuck.Core{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OpenProfileImport(){
|
||||||
|
FormManager.TryFind<FormSettings>()?.Close();
|
||||||
|
|
||||||
|
using(DialogSettingsManage dialog = new DialogSettingsManage(plugins, true)){
|
||||||
|
if (dialog.ShowDialog() == DialogResult.OK && !dialog.IsRestarting){
|
||||||
|
BrowserProcessHandler.UpdatePrefs();
|
||||||
|
FormManager.TryFind<FormPlugins>()?.Close();
|
||||||
|
plugins.Reload(); // also reloads the browser
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void OnTweetNotification(){ // may be called multiple times, once for each type of notification
|
public void OnTweetNotification(){ // may be called multiple times, once for each type of notification
|
||||||
if (Config.EnableTrayHighlight && !ContainsFocus){
|
if (Config.EnableTrayHighlight && !ContainsFocus){
|
||||||
trayIcon.HasNotifications = true;
|
trayIcon.HasNotifications = true;
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using TweetDuck.Core.Other;
|
|
||||||
|
|
||||||
namespace TweetDuck.Core{
|
namespace TweetDuck.Core{
|
||||||
static class FormManager{
|
static class FormManager{
|
||||||
@@ -18,12 +17,14 @@ namespace TweetDuck.Core{
|
|||||||
else return false;
|
else return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool HasAnyDialogs => Application.OpenForms.OfType<IAppDialog>().Any();
|
||||||
|
|
||||||
public static void CloseAllDialogs(){
|
public static void CloseAllDialogs(){
|
||||||
foreach(Form form in Application.OpenForms.Cast<Form>().Reverse()){
|
foreach(IAppDialog dialog in Application.OpenForms.OfType<IAppDialog>().Reverse()){
|
||||||
if (form is FormSettings || form is FormPlugins || form is FormAbout || form is FormGuide){
|
((Form)dialog).Close();
|
||||||
form.Close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface IAppDialog{}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -15,8 +15,6 @@ using TweetDuck.Resources;
|
|||||||
|
|
||||||
namespace TweetDuck.Core.Handling{
|
namespace TweetDuck.Core.Handling{
|
||||||
abstract class ContextMenuBase : IContextMenuHandler{
|
abstract class ContextMenuBase : IContextMenuHandler{
|
||||||
public static readonly bool HasDevTools = File.Exists(Path.Combine(Program.ProgramPath, "devtools_resources.pak"));
|
|
||||||
|
|
||||||
private static TwitterUtils.ImageQuality ImageQuality => Program.UserConfig.TwitterImageQuality;
|
private static TwitterUtils.ImageQuality ImageQuality => Program.UserConfig.TwitterImageQuality;
|
||||||
|
|
||||||
private const CefMenuCommand MenuOpenLinkUrl = (CefMenuCommand)26500;
|
private const CefMenuCommand MenuOpenLinkUrl = (CefMenuCommand)26500;
|
||||||
@@ -28,6 +26,7 @@ namespace TweetDuck.Core.Handling{
|
|||||||
private const CefMenuCommand MenuSaveMedia = (CefMenuCommand)26506;
|
private const CefMenuCommand MenuSaveMedia = (CefMenuCommand)26506;
|
||||||
private const CefMenuCommand MenuSaveTweetImages = (CefMenuCommand)26507;
|
private const CefMenuCommand MenuSaveTweetImages = (CefMenuCommand)26507;
|
||||||
private const CefMenuCommand MenuSearchInBrowser = (CefMenuCommand)26508;
|
private const CefMenuCommand MenuSearchInBrowser = (CefMenuCommand)26508;
|
||||||
|
private const CefMenuCommand MenuReadApplyROT13 = (CefMenuCommand)26509;
|
||||||
private const CefMenuCommand MenuOpenDevTools = (CefMenuCommand)26599;
|
private const CefMenuCommand MenuOpenDevTools = (CefMenuCommand)26599;
|
||||||
|
|
||||||
protected ContextInfo.LinkInfo LastLink { get; private set; }
|
protected ContextInfo.LinkInfo LastLink { get; private set; }
|
||||||
@@ -57,6 +56,8 @@ namespace TweetDuck.Core.Handling{
|
|||||||
if (parameters.TypeFlags.HasFlag(ContextMenuType.Selection) && !parameters.TypeFlags.HasFlag(ContextMenuType.Editable)){
|
if (parameters.TypeFlags.HasFlag(ContextMenuType.Selection) && !parameters.TypeFlags.HasFlag(ContextMenuType.Editable)){
|
||||||
model.AddItem(MenuSearchInBrowser, "Search in browser");
|
model.AddItem(MenuSearchInBrowser, "Search in browser");
|
||||||
model.AddSeparator();
|
model.AddSeparator();
|
||||||
|
model.AddItem(MenuReadApplyROT13, "Apply ROT13");
|
||||||
|
model.AddSeparator();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool hasTweetImage = LastLink.IsImage;
|
bool hasTweetImage = LastLink.IsImage;
|
||||||
@@ -126,7 +127,7 @@ namespace TweetDuck.Core.Handling{
|
|||||||
SetClipboardText(control, TwitterUtils.GetMediaLink(LastLink.GetMediaSource(parameters), ImageQuality));
|
SetClipboardText(control, TwitterUtils.GetMediaLink(LastLink.GetMediaSource(parameters), ImageQuality));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MenuViewImage:
|
case MenuViewImage: {
|
||||||
void ViewImage(string path){
|
void ViewImage(string path){
|
||||||
string ext = Path.GetExtension(path);
|
string ext = Path.GetExtension(path);
|
||||||
|
|
||||||
@@ -141,37 +142,60 @@ namespace TweetDuck.Core.Handling{
|
|||||||
string url = LastLink.GetMediaSource(parameters);
|
string url = LastLink.GetMediaSource(parameters);
|
||||||
string file = Path.Combine(BrowserCache.CacheFolder, TwitterUtils.GetImageFileName(url) ?? Path.GetRandomFileName());
|
string file = Path.Combine(BrowserCache.CacheFolder, TwitterUtils.GetImageFileName(url) ?? Path.GetRandomFileName());
|
||||||
|
|
||||||
if (File.Exists(file)){
|
control.InvokeAsyncSafe(() => {
|
||||||
ViewImage(file);
|
if (File.Exists(file)){
|
||||||
}
|
|
||||||
else{
|
|
||||||
control.InvokeAsyncSafe(analytics.AnalyticsFile.ViewedImages.Trigger);
|
|
||||||
|
|
||||||
BrowserUtils.DownloadFileAsync(TwitterUtils.GetMediaLink(url, ImageQuality), file, () => {
|
|
||||||
ViewImage(file);
|
ViewImage(file);
|
||||||
}, ex => {
|
}
|
||||||
FormMessage.Error("Image Download", "An error occurred while downloading the image: "+ex.Message, FormMessage.OK);
|
else{
|
||||||
});
|
analytics.AnalyticsFile.ViewedImages.Trigger();
|
||||||
}
|
|
||||||
|
BrowserUtils.DownloadFileAsync(TwitterUtils.GetMediaLink(url, ImageQuality), file, () => {
|
||||||
|
ViewImage(file);
|
||||||
|
}, ex => {
|
||||||
|
FormMessage.Error("Image Download", "An error occurred while downloading the image: "+ex.Message, FormMessage.OK);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case MenuSaveMedia: {
|
||||||
|
bool isVideo = LastLink.IsVideo;
|
||||||
|
string url = LastLink.GetMediaSource(parameters);
|
||||||
|
string username = LastChirp.Authors.LastOrDefault();
|
||||||
|
|
||||||
|
control.InvokeAsyncSafe(() => {
|
||||||
|
if (isVideo){
|
||||||
|
TwitterUtils.DownloadVideo(url, username);
|
||||||
|
analytics.AnalyticsFile.DownloadedVideos.Trigger();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
TwitterUtils.DownloadImage(url, username, ImageQuality);
|
||||||
|
analytics.AnalyticsFile.DownloadedImages.Trigger();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case MenuSaveMedia:
|
case MenuSaveTweetImages: {
|
||||||
if (LastLink.IsVideo){
|
string[] urls = LastChirp.Images;
|
||||||
control.InvokeAsyncSafe(analytics.AnalyticsFile.DownloadedVideos.Trigger);
|
string username = LastChirp.Authors.LastOrDefault();
|
||||||
TwitterUtils.DownloadVideo(LastLink.GetMediaSource(parameters), LastChirp.Authors.LastOrDefault());
|
|
||||||
}
|
control.InvokeAsyncSafe(() => {
|
||||||
else{
|
TwitterUtils.DownloadImages(urls, username, ImageQuality);
|
||||||
control.InvokeAsyncSafe(analytics.AnalyticsFile.DownloadedImages.Trigger);
|
analytics.AnalyticsFile.DownloadedImages.Trigger();
|
||||||
TwitterUtils.DownloadImage(LastLink.GetMediaSource(parameters), LastChirp.Authors.LastOrDefault(), ImageQuality);
|
});
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case MenuSaveTweetImages:
|
case MenuReadApplyROT13:
|
||||||
control.InvokeAsyncSafe(analytics.AnalyticsFile.DownloadedImages.Trigger);
|
string selection = parameters.SelectionText;
|
||||||
TwitterUtils.DownloadImages(LastChirp.Images, LastChirp.Authors.LastOrDefault(), ImageQuality);
|
control.InvokeAsyncSafe(() => FormMessage.Information("ROT13", StringUtils.ConvertRot13(selection), FormMessage.OK));
|
||||||
break;
|
control.InvokeAsyncSafe(analytics.AnalyticsFile.UsedROT13.Trigger);
|
||||||
|
return true;
|
||||||
|
|
||||||
case MenuSearchInBrowser:
|
case MenuSearchInBrowser:
|
||||||
string query = parameters.SelectionText;
|
string query = parameters.SelectionText;
|
||||||
@@ -195,15 +219,15 @@ namespace TweetDuck.Core.Handling{
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void DeselectAll(IFrame frame){
|
protected static void DeselectAll(IFrame frame){
|
||||||
ScriptLoader.ExecuteScript(frame, "window.getSelection().removeAllRanges()", "gen:deselect");
|
ScriptLoader.ExecuteScript(frame, "window.getSelection().removeAllRanges()", "gen:deselect");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OpenBrowser(Control control, string url){
|
protected static void OpenBrowser(Control control, string url){
|
||||||
control.InvokeAsyncSafe(() => BrowserUtils.OpenExternalBrowser(url));
|
control.InvokeAsyncSafe(() => BrowserUtils.OpenExternalBrowser(url));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void SetClipboardText(Control control, string text){
|
protected static void SetClipboardText(Control control, string text){
|
||||||
control.InvokeAsyncSafe(() => WindowsUtils.SetClipboard(text, TextDataFormat.UnicodeText));
|
control.InvokeAsyncSafe(() => WindowsUtils.SetClipboard(text, TextDataFormat.UnicodeText));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -212,7 +236,10 @@ namespace TweetDuck.Core.Handling{
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected static void AddDebugMenuItems(IMenuModel model){
|
protected static void AddDebugMenuItems(IMenuModel model){
|
||||||
model.AddItem(MenuOpenDevTools, "Open dev tools");
|
if (BrowserUtils.HasDevTools){
|
||||||
|
AddSeparator(model);
|
||||||
|
model.AddItem(MenuOpenDevTools, "Open dev tools");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void RemoveSeparatorIfLast(IMenuModel model){
|
protected static void RemoveSeparatorIfLast(IMenuModel model){
|
||||||
|
@@ -16,7 +16,7 @@ namespace TweetDuck.Core.Handling{
|
|||||||
private const CefMenuCommand MenuOpenQuotedTweetUrl = (CefMenuCommand)26612;
|
private const CefMenuCommand MenuOpenQuotedTweetUrl = (CefMenuCommand)26612;
|
||||||
private const CefMenuCommand MenuCopyQuotedTweetUrl = (CefMenuCommand)26613;
|
private const CefMenuCommand MenuCopyQuotedTweetUrl = (CefMenuCommand)26613;
|
||||||
private const CefMenuCommand MenuScreenshotTweet = (CefMenuCommand)26614;
|
private const CefMenuCommand MenuScreenshotTweet = (CefMenuCommand)26614;
|
||||||
private const CefMenuCommand MenuInputApplyROT13 = (CefMenuCommand)26615;
|
private const CefMenuCommand MenuWriteApplyROT13 = (CefMenuCommand)26615;
|
||||||
private const CefMenuCommand MenuSearchInColumn = (CefMenuCommand)26616;
|
private const CefMenuCommand MenuSearchInColumn = (CefMenuCommand)26616;
|
||||||
|
|
||||||
private const string TitleReloadBrowser = "Reload browser";
|
private const string TitleReloadBrowser = "Reload browser";
|
||||||
@@ -44,7 +44,7 @@ namespace TweetDuck.Core.Handling{
|
|||||||
if (isSelecting){
|
if (isSelecting){
|
||||||
if (isEditing){
|
if (isEditing){
|
||||||
model.AddSeparator();
|
model.AddSeparator();
|
||||||
model.AddItem(MenuInputApplyROT13, "Apply ROT13");
|
model.AddItem(MenuWriteApplyROT13, "Apply ROT13");
|
||||||
}
|
}
|
||||||
|
|
||||||
model.AddSeparator();
|
model.AddSeparator();
|
||||||
@@ -83,11 +83,8 @@ namespace TweetDuck.Core.Handling{
|
|||||||
globalMenu.AddItem(MenuSettings, TitleSettings);
|
globalMenu.AddItem(MenuSettings, TitleSettings);
|
||||||
globalMenu.AddItem(MenuPlugins, TitlePlugins);
|
globalMenu.AddItem(MenuPlugins, TitlePlugins);
|
||||||
globalMenu.AddItem(MenuAbout, TitleAboutProgram);
|
globalMenu.AddItem(MenuAbout, TitleAboutProgram);
|
||||||
|
|
||||||
if (HasDevTools){
|
AddDebugMenuItems(globalMenu);
|
||||||
globalMenu.AddSeparator();
|
|
||||||
AddDebugMenuItems(globalMenu);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RemoveSeparatorIfLast(model);
|
RemoveSeparatorIfLast(model);
|
||||||
@@ -141,7 +138,7 @@ namespace TweetDuck.Core.Handling{
|
|||||||
SetClipboardText(form, LastChirp.QuoteUrl);
|
SetClipboardText(form, LastChirp.QuoteUrl);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case MenuInputApplyROT13:
|
case MenuWriteApplyROT13:
|
||||||
form.InvokeAsyncSafe(form.ApplyROT13);
|
form.InvokeAsyncSafe(form.ApplyROT13);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
@@ -8,11 +8,7 @@ namespace TweetDuck.Core.Handling{
|
|||||||
public override void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model){
|
public override void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model){
|
||||||
model.Clear();
|
model.Clear();
|
||||||
base.OnBeforeContextMenu(browserControl, browser, frame, parameters, model);
|
base.OnBeforeContextMenu(browserControl, browser, frame, parameters, model);
|
||||||
|
AddDebugMenuItems(model);
|
||||||
if (HasDevTools){
|
|
||||||
AddSeparator(model);
|
|
||||||
AddDebugMenuItems(model);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -47,11 +47,7 @@ namespace TweetDuck.Core.Handling{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HasDevTools){
|
AddDebugMenuItems(model);
|
||||||
AddSeparator(model);
|
|
||||||
AddDebugMenuItems(model);
|
|
||||||
}
|
|
||||||
|
|
||||||
RemoveSeparatorIfLast(model);
|
RemoveSeparatorIfLast(model);
|
||||||
|
|
||||||
form.InvokeAsyncSafe(() => {
|
form.InvokeAsyncSafe(() => {
|
||||||
|
@@ -1,12 +1,21 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using CefSharp;
|
using CefSharp;
|
||||||
|
using CefSharp.Enums;
|
||||||
|
|
||||||
namespace TweetDuck.Core.Handling{
|
namespace TweetDuck.Core.Handling{
|
||||||
sealed class DragHandlerBrowser : IDragHandler{
|
sealed class DragHandlerBrowser : IDragHandler{
|
||||||
|
private readonly RequestHandlerBrowser requestHandler;
|
||||||
|
|
||||||
|
public DragHandlerBrowser(RequestHandlerBrowser requestHandler){
|
||||||
|
this.requestHandler = requestHandler;
|
||||||
|
}
|
||||||
|
|
||||||
public bool OnDragEnter(IWebBrowser browserControl, IBrowser browser, IDragData dragData, DragOperationsMask mask){
|
public bool OnDragEnter(IWebBrowser browserControl, IBrowser browser, IDragData dragData, DragOperationsMask mask){
|
||||||
void TriggerDragStart(string type, string data = null){
|
void TriggerDragStart(string type, string data = null){
|
||||||
browserControl.ExecuteScriptAsync("window.TDGF_onGlobalDragStart", type, data);
|
browserControl.ExecuteScriptAsync("window.TDGF_onGlobalDragStart", type, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
requestHandler.BlockNextUserNavUrl = dragData.LinkUrl; // empty if not a link
|
||||||
|
|
||||||
if (dragData.IsLink){
|
if (dragData.IsLink){
|
||||||
TriggerDragStart("link", dragData.LinkUrl);
|
TriggerDragStart("link", dragData.LinkUrl);
|
||||||
|
72
Core/Handling/Filters/ResponseFilterBase.cs
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
using CefSharp;
|
||||||
|
|
||||||
|
namespace TweetDuck.Core.Handling.Filters{
|
||||||
|
abstract class ResponseFilterBase : IResponseFilter{
|
||||||
|
private enum State{
|
||||||
|
Reading, Writing, Done
|
||||||
|
}
|
||||||
|
|
||||||
|
private readonly Encoding encoding;
|
||||||
|
private byte[] responseData;
|
||||||
|
|
||||||
|
private State state;
|
||||||
|
private int offset;
|
||||||
|
|
||||||
|
protected ResponseFilterBase(int totalBytes, Encoding encoding){
|
||||||
|
this.responseData = new byte[totalBytes];
|
||||||
|
this.encoding = encoding;
|
||||||
|
this.state = State.Reading;
|
||||||
|
}
|
||||||
|
|
||||||
|
FilterStatus IResponseFilter.Filter(Stream dataIn, out long dataInRead, Stream dataOut, out long dataOutWritten){
|
||||||
|
int responseLength = responseData.Length;
|
||||||
|
|
||||||
|
if (state == State.Reading){
|
||||||
|
int bytesToRead = Math.Min(responseLength-offset, (int)Math.Min(dataIn.Length, int.MaxValue));
|
||||||
|
|
||||||
|
dataIn.Read(responseData, offset, bytesToRead);
|
||||||
|
offset += bytesToRead;
|
||||||
|
|
||||||
|
dataInRead = bytesToRead;
|
||||||
|
dataOutWritten = 0;
|
||||||
|
|
||||||
|
if (offset >= responseLength){
|
||||||
|
responseData = encoding.GetBytes(ProcessResponse(encoding.GetString(responseData)));
|
||||||
|
state = State.Writing;
|
||||||
|
offset = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FilterStatus.NeedMoreData;
|
||||||
|
}
|
||||||
|
else if (state == State.Writing){
|
||||||
|
int bytesToWrite = Math.Min(responseLength-offset, (int)Math.Min(dataOut.Length, int.MaxValue));
|
||||||
|
|
||||||
|
if (bytesToWrite > 0){
|
||||||
|
dataOut.Write(responseData, offset, bytesToWrite);
|
||||||
|
offset += bytesToWrite;
|
||||||
|
}
|
||||||
|
|
||||||
|
dataOutWritten = bytesToWrite;
|
||||||
|
dataInRead = 0;
|
||||||
|
|
||||||
|
if (offset < responseLength){
|
||||||
|
return FilterStatus.NeedMoreData;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
state = State.Done;
|
||||||
|
return FilterStatus.Done;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
throw new InvalidOperationException("This resource filter cannot be reused.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract bool InitFilter();
|
||||||
|
protected abstract string ProcessResponse(string text);
|
||||||
|
public abstract void Dispose();
|
||||||
|
}
|
||||||
|
}
|
20
Core/Handling/Filters/ResponseFilterVendor.cs
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
namespace TweetDuck.Core.Handling.Filters{
|
||||||
|
sealed class ResponseFilterVendor : ResponseFilterBase{
|
||||||
|
private static readonly Regex RegexRestoreJQuery = new Regex(@"(\w+)\.fn=\1\.prototype", RegexOptions.Compiled);
|
||||||
|
|
||||||
|
public ResponseFilterVendor(int totalBytes) : base(totalBytes, Encoding.UTF8){}
|
||||||
|
|
||||||
|
public override bool InitFilter(){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string ProcessResponse(string text){
|
||||||
|
return RegexRestoreJQuery.Replace(text, "window.$$=$1;$&", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Dispose(){}
|
||||||
|
}
|
||||||
|
}
|
@@ -7,16 +7,14 @@ using CefSharp;
|
|||||||
|
|
||||||
namespace TweetDuck.Core.Handling.General{
|
namespace TweetDuck.Core.Handling.General{
|
||||||
sealed class FileDialogHandler : IDialogHandler{
|
sealed class FileDialogHandler : IDialogHandler{
|
||||||
public bool OnFileDialog(IWebBrowser browserControl, IBrowser browser, CefFileDialogMode mode, string title, string defaultFilePath, List<string> acceptFilters, int selectedAcceptFilter, IFileDialogCallback callback){
|
public bool OnFileDialog(IWebBrowser browserControl, IBrowser browser, CefFileDialogMode mode, CefFileDialogFlags flags, string title, string defaultFilePath, List<string> acceptFilters, int selectedAcceptFilter, IFileDialogCallback callback){
|
||||||
CefFileDialogMode dialogType = mode & CefFileDialogMode.TypeMask;
|
if (mode == CefFileDialogMode.Open || mode == CefFileDialogMode.OpenMultiple){
|
||||||
|
|
||||||
if (dialogType == CefFileDialogMode.Open || dialogType == CefFileDialogMode.OpenMultiple){
|
|
||||||
string allFilters = string.Join(";", acceptFilters.Select(filter => "*"+filter));
|
string allFilters = string.Join(";", acceptFilters.Select(filter => "*"+filter));
|
||||||
|
|
||||||
using(OpenFileDialog dialog = new OpenFileDialog{
|
using(OpenFileDialog dialog = new OpenFileDialog{
|
||||||
AutoUpgradeEnabled = true,
|
AutoUpgradeEnabled = true,
|
||||||
DereferenceLinks = true,
|
DereferenceLinks = true,
|
||||||
Multiselect = dialogType == CefFileDialogMode.OpenMultiple,
|
Multiselect = mode == CefFileDialogMode.OpenMultiple,
|
||||||
Title = "Open Files",
|
Title = "Open Files",
|
||||||
Filter = $"All Supported Formats ({allFilters})|{allFilters}|All Files (*.*)|*.*"
|
Filter = $"All Supported Formats ({allFilters})|{allFilters}|All Files (*.*)|*.*"
|
||||||
}){
|
}){
|
||||||
|
@@ -50,8 +50,9 @@ namespace TweetDuck.Core.Handling.General{
|
|||||||
|
|
||||||
input = new TextBox{
|
input = new TextBox{
|
||||||
Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom,
|
Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom,
|
||||||
|
Font = SystemFonts.MessageBoxFont,
|
||||||
Location = new Point(BrowserUtils.Scale(22+inputPad, dpiScale), form.ActionPanelY-BrowserUtils.Scale(46, dpiScale)),
|
Location = new Point(BrowserUtils.Scale(22+inputPad, dpiScale), form.ActionPanelY-BrowserUtils.Scale(46, dpiScale)),
|
||||||
Size = new Size(form.ClientSize.Width-BrowserUtils.Scale(44+inputPad, dpiScale), 20)
|
Size = new Size(form.ClientSize.Width-BrowserUtils.Scale(44+inputPad, dpiScale), BrowserUtils.Scale(23, dpiScale))
|
||||||
};
|
};
|
||||||
|
|
||||||
form.Controls.Add(input);
|
form.Controls.Add(input);
|
||||||
|
@@ -2,15 +2,22 @@
|
|||||||
using CefSharp;
|
using CefSharp;
|
||||||
using CefSharp.Handler;
|
using CefSharp.Handler;
|
||||||
using TweetDuck.Core.Handling.General;
|
using TweetDuck.Core.Handling.General;
|
||||||
|
using TweetDuck.Core.Utils;
|
||||||
|
|
||||||
namespace TweetDuck.Core.Handling{
|
namespace TweetDuck.Core.Handling{
|
||||||
class RequestHandlerBase : DefaultRequestHandler{
|
class RequestHandlerBase : DefaultRequestHandler{
|
||||||
|
private readonly bool autoReload;
|
||||||
|
|
||||||
|
public RequestHandlerBase(bool autoReload){
|
||||||
|
this.autoReload = autoReload;
|
||||||
|
}
|
||||||
|
|
||||||
public override bool OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture){
|
public override bool OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture){
|
||||||
return LifeSpanHandler.HandleLinkClick(browserControl, targetDisposition, targetUrl);
|
return LifeSpanHandler.HandleLinkClick(browserControl, targetDisposition, targetUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback){
|
public override CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback){
|
||||||
if (ContextMenuBase.HasDevTools){
|
if (BrowserUtils.HasDevTools){
|
||||||
NameValueCollection headers = request.Headers;
|
NameValueCollection headers = request.Headers;
|
||||||
headers.Remove("x-devtools-emulate-network-conditions-client-id");
|
headers.Remove("x-devtools-emulate-network-conditions-client-id");
|
||||||
request.Headers = headers;
|
request.Headers = headers;
|
||||||
@@ -18,5 +25,11 @@ namespace TweetDuck.Core.Handling{
|
|||||||
|
|
||||||
return base.OnBeforeResourceLoad(browserControl, browser, frame, request, callback);
|
return base.OnBeforeResourceLoad(browserControl, browser, frame, request, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void OnRenderProcessTerminated(IWebBrowser browserControl, IBrowser browser, CefTerminationStatus status){
|
||||||
|
if (autoReload){
|
||||||
|
browser.Reload();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,11 +1,21 @@
|
|||||||
using CefSharp;
|
// Uncomment to force TweetDeck to load a predefined version of the vendor/bundle scripts
|
||||||
|
// #define FREEZE_TWEETDECK_SCRIPTS
|
||||||
|
|
||||||
|
using System.Collections.Specialized;
|
||||||
|
using CefSharp;
|
||||||
|
using TweetDuck.Core.Handling.Filters;
|
||||||
using TweetDuck.Core.Utils;
|
using TweetDuck.Core.Utils;
|
||||||
|
|
||||||
|
#if FREEZE_TWEETDECK_SCRIPTS
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace TweetDuck.Core.Handling{
|
namespace TweetDuck.Core.Handling{
|
||||||
sealed class RequestHandlerBrowser : RequestHandlerBase{
|
sealed class RequestHandlerBrowser : RequestHandlerBase{
|
||||||
public override void OnRenderProcessTerminated(IWebBrowser browserControl, IBrowser browser, CefTerminationStatus status){
|
public string BlockNextUserNavUrl { get; set; }
|
||||||
browser.Reload();
|
|
||||||
}
|
public RequestHandlerBrowser() : base(true){}
|
||||||
|
|
||||||
public override CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback){
|
public override CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback){
|
||||||
if (request.ResourceType == ResourceType.Script && request.Url.Contains("analytics.")){
|
if (request.ResourceType == ResourceType.Script && request.Url.Contains("analytics.")){
|
||||||
@@ -16,13 +26,71 @@ namespace TweetDuck.Core.Handling{
|
|||||||
return base.OnBeforeResourceLoad(browserControl, browser, frame, request, callback);
|
return base.OnBeforeResourceLoad(browserControl, browser, frame, request, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool OnBeforeBrowse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, bool userGesture, bool isRedirect){
|
||||||
|
if (userGesture && request.TransitionType == TransitionType.LinkClicked){
|
||||||
|
bool block = request.Url == BlockNextUserNavUrl;
|
||||||
|
BlockNextUserNavUrl = string.Empty;
|
||||||
|
return block;
|
||||||
|
}
|
||||||
|
|
||||||
|
return base.OnBeforeBrowse(browserControl, browser, frame, request, userGesture, isRedirect);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if FREEZE_TWEETDECK_SCRIPTS
|
||||||
|
private static readonly Regex TweetDeckScriptUrl = new Regex(@"/dist/(.*?)\.(.*?)\.js$", RegexOptions.Compiled);
|
||||||
|
|
||||||
|
private static readonly SortedList<string, string> TweetDeckHashes = new SortedList<string, string>(2){
|
||||||
|
{ "vendor", "942c0a20e8" },
|
||||||
|
{ "bundle", "1bd75b5854" }
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
public override bool OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response){
|
public override bool OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response){
|
||||||
if (request.ResourceType == ResourceType.Image && request.Url.Contains("backgrounds/spinner_blue")){
|
if (request.ResourceType == ResourceType.Image && request.Url.Contains("/backgrounds/spinner_blue")){
|
||||||
request.Url = TwitterUtils.LoadingSpinner.Url;
|
request.Url = TwitterUtils.LoadingSpinner.Url;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#if FREEZE_TWEETDECK_SCRIPTS
|
||||||
|
else if (request.ResourceType == ResourceType.Script){
|
||||||
|
Match match = TweetDeckScriptUrl.Match(request.Url);
|
||||||
|
|
||||||
|
if (match.Success && TweetDeckHashes.TryGetValue(match.Groups[1].Value, out string hash)){
|
||||||
|
if (match.Groups[2].Value == hash){
|
||||||
|
System.Diagnostics.Debug.WriteLine($"accepting {request.Url}");
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
System.Diagnostics.Debug.WriteLine($"rewriting {request.Url} to {hash}");
|
||||||
|
request.Url = TweetDeckScriptUrl.Replace(request.Url, "/dist/$1."+hash+".js");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return base.OnResourceResponse(browserControl, browser, frame, request, response);
|
return base.OnResourceResponse(browserControl, browser, frame, request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override IResponseFilter GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response){
|
||||||
|
if (request.ResourceType == ResourceType.Script && request.Url.Contains("/dist/vendor")){
|
||||||
|
NameValueCollection headers = response.ResponseHeaders;
|
||||||
|
|
||||||
|
if (int.TryParse(headers["x-ton-expected-size"], out int totalBytes)){
|
||||||
|
return new ResponseFilterVendor(totalBytes);
|
||||||
|
}
|
||||||
|
#if DEBUG
|
||||||
|
else{
|
||||||
|
System.Diagnostics.Debug.WriteLine($"Missing uncompressed size header in {request.Url}");
|
||||||
|
|
||||||
|
foreach(string key in headers){
|
||||||
|
System.Diagnostics.Debug.WriteLine($" {key}: {headers[key]}");
|
||||||
|
}
|
||||||
|
|
||||||
|
System.Diagnostics.Debugger.Break();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
return base.GetResourceResponseFilter(browserControl, browser, frame, request, response);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +1,6 @@
|
|||||||
using System.Windows.Forms;
|
using System;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using CefSharp;
|
||||||
using TweetDuck.Core.Controls;
|
using TweetDuck.Core.Controls;
|
||||||
using TweetDuck.Plugins;
|
using TweetDuck.Plugins;
|
||||||
using TweetDuck.Resources;
|
using TweetDuck.Resources;
|
||||||
@@ -21,10 +23,14 @@ namespace TweetDuck.Core.Notification.Example{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public event EventHandler Ready;
|
||||||
|
|
||||||
private readonly TweetNotification exampleNotification;
|
private readonly TweetNotification exampleNotification;
|
||||||
|
|
||||||
public FormNotificationExample(FormBrowser owner, PluginManager pluginManager) : base(owner, pluginManager, false){
|
public FormNotificationExample(FormBrowser owner, PluginManager pluginManager) : base(owner, pluginManager, false){
|
||||||
string exampleTweetHTML = ScriptLoader.LoadResource("pages/example.html", true)?.Replace("{avatar}", TweetNotification.AppLogo.Url) ?? string.Empty;
|
browser.LoadingStateChanged += browser_LoadingStateChanged;
|
||||||
|
|
||||||
|
string exampleTweetHTML = ScriptLoader.LoadResourceSilent("pages/example.html")?.Replace("{avatar}", TweetNotification.AppLogo.Url) ?? string.Empty;
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
exampleTweetHTML = exampleTweetHTML.Replace("</p>", @"</p><div style='margin-top:256px'>Scrollbar test padding...</div>");
|
exampleTweetHTML = exampleTweetHTML.Replace("</p>", @"</p><div style='margin-top:256px'>Scrollbar test padding...</div>");
|
||||||
@@ -33,6 +39,13 @@ namespace TweetDuck.Core.Notification.Example{
|
|||||||
exampleNotification = TweetNotification.Example(exampleTweetHTML, 176);
|
exampleNotification = TweetNotification.Example(exampleTweetHTML, 176);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void browser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e){
|
||||||
|
if (!e.IsLoading){
|
||||||
|
Ready?.Invoke(this, EventArgs.Empty);
|
||||||
|
browser.LoadingStateChanged -= browser_LoadingStateChanged;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override void HideNotification(){
|
public override void HideNotification(){
|
||||||
Location = ControlExtensions.InvisibleLocation;
|
Location = ControlExtensions.InvisibleLocation;
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,4 @@
|
|||||||
using CefSharp;
|
using CefSharp.WinForms;
|
||||||
using CefSharp.WinForms;
|
|
||||||
using System;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using TweetDuck.Configuration;
|
using TweetDuck.Configuration;
|
||||||
@@ -65,7 +63,7 @@ namespace TweetDuck.Core.Notification{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsNotificationVisible => Location != ControlExtensions.InvisibleLocation;
|
protected bool IsNotificationVisible => Location != ControlExtensions.InvisibleLocation;
|
||||||
protected virtual bool CanDragWindow => true;
|
protected virtual bool CanDragWindow => true;
|
||||||
|
|
||||||
public new Point Location{
|
public new Point Location{
|
||||||
@@ -109,15 +107,13 @@ namespace TweetDuck.Core.Notification{
|
|||||||
public string CurrentQuoteUrl => currentNotification?.QuoteUrl;
|
public string CurrentQuoteUrl => currentNotification?.QuoteUrl;
|
||||||
|
|
||||||
public bool CanViewDetail => currentNotification != null && !string.IsNullOrEmpty(currentNotification.ColumnId) && !string.IsNullOrEmpty(currentNotification.ChirpId);
|
public bool CanViewDetail => currentNotification != null && !string.IsNullOrEmpty(currentNotification.ColumnId) && !string.IsNullOrEmpty(currentNotification.ChirpId);
|
||||||
public bool IsPaused => pauseCounter > 0;
|
|
||||||
|
|
||||||
|
protected bool IsPaused => pauseCounter > 0;
|
||||||
protected bool IsCursorOverBrowser => browser.Bounds.Contains(PointToClient(Cursor.Position));
|
protected bool IsCursorOverBrowser => browser.Bounds.Contains(PointToClient(Cursor.Position));
|
||||||
|
|
||||||
public bool FreezeTimer { get; set; }
|
public bool FreezeTimer { get; set; }
|
||||||
public bool ContextMenuOpen { get; set; }
|
public bool ContextMenuOpen { get; set; }
|
||||||
|
|
||||||
public event EventHandler Initialized;
|
|
||||||
|
|
||||||
protected FormNotificationBase(FormBrowser owner, bool enableContextMenu){
|
protected FormNotificationBase(FormBrowser owner, bool enableContextMenu){
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
@@ -128,12 +124,11 @@ namespace TweetDuck.Core.Notification{
|
|||||||
MenuHandler = new ContextMenuNotification(this, enableContextMenu),
|
MenuHandler = new ContextMenuNotification(this, enableContextMenu),
|
||||||
JsDialogHandler = new JavaScriptDialogHandler(),
|
JsDialogHandler = new JavaScriptDialogHandler(),
|
||||||
LifeSpanHandler = new LifeSpanHandler(),
|
LifeSpanHandler = new LifeSpanHandler(),
|
||||||
RequestHandler = new RequestHandlerBase()
|
RequestHandler = new RequestHandlerBase(false)
|
||||||
};
|
};
|
||||||
|
|
||||||
this.browser.Dock = DockStyle.None;
|
this.browser.Dock = DockStyle.None;
|
||||||
this.browser.ClientSize = ClientSize;
|
this.browser.ClientSize = ClientSize;
|
||||||
this.browser.IsBrowserInitializedChanged += browser_IsBrowserInitializedChanged;
|
|
||||||
|
|
||||||
browser.SetupResourceHandler(TwitterUtils.TweetDeckURL, this.resourceHandler);
|
browser.SetupResourceHandler(TwitterUtils.TweetDeckURL, this.resourceHandler);
|
||||||
browser.SetupResourceHandler(TweetNotification.AppLogo);
|
browser.SetupResourceHandler(TweetNotification.AppLogo);
|
||||||
@@ -165,12 +160,6 @@ namespace TweetDuck.Core.Notification{
|
|||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void browser_IsBrowserInitializedChanged(object sender, IsBrowserInitializedChangedEventArgs e){
|
|
||||||
if (e.IsBrowserInitialized){
|
|
||||||
Initialized?.Invoke(this, EventArgs.Empty);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// notification methods
|
// notification methods
|
||||||
|
|
||||||
public virtual void HideNotification(){
|
public virtual void HideNotification(){
|
||||||
@@ -196,7 +185,7 @@ namespace TweetDuck.Core.Notification{
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected virtual string GetTweetHTML(TweetNotification tweet){
|
protected virtual string GetTweetHTML(TweetNotification tweet){
|
||||||
return tweet.GenerateHtml(IsCursorOverBrowser ? "td-notification td-hover" : "td-notification");
|
return tweet.GenerateHtml(IsCursorOverBrowser ? "td-notification td-hover" : "td-notification", this);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void LoadTweet(TweetNotification tweet){
|
protected virtual void LoadTweet(TweetNotification tweet){
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using TweetDuck.Configuration;
|
||||||
using TweetDuck.Core.Bridge;
|
using TweetDuck.Core.Bridge;
|
||||||
using TweetDuck.Core.Controls;
|
using TweetDuck.Core.Controls;
|
||||||
using TweetDuck.Core.Handling;
|
using TweetDuck.Core.Handling;
|
||||||
@@ -14,11 +15,6 @@ using TweetDuck.Resources;
|
|||||||
|
|
||||||
namespace TweetDuck.Core.Notification{
|
namespace TweetDuck.Core.Notification{
|
||||||
abstract partial class FormNotificationMain : FormNotificationBase, ITweetDeckBrowser{
|
abstract partial class FormNotificationMain : FormNotificationBase, ITweetDeckBrowser{
|
||||||
private const string NotificationScriptFile = "notification.js";
|
|
||||||
|
|
||||||
private static readonly string NotificationScriptIdentifier = ScriptLoader.GetRootIdentifier(NotificationScriptFile);
|
|
||||||
private static readonly string NotificationJS = ScriptLoader.LoadResource(NotificationScriptFile);
|
|
||||||
|
|
||||||
private readonly PluginManager plugins;
|
private readonly PluginManager plugins;
|
||||||
private readonly int timerBarHeight;
|
private readonly int timerBarHeight;
|
||||||
|
|
||||||
@@ -65,7 +61,7 @@ namespace TweetDuck.Core.Notification{
|
|||||||
get{
|
get{
|
||||||
switch(Program.UserConfig.NotificationSize){
|
switch(Program.UserConfig.NotificationSize){
|
||||||
default:
|
default:
|
||||||
return BrowserUtils.Scale(122, SizeScale*(1.0+0.075*FontSizeLevel));
|
return BrowserUtils.Scale(122, SizeScale*(1.0+0.08*FontSizeLevel));
|
||||||
|
|
||||||
case TweetNotification.Size.Custom:
|
case TweetNotification.Size.Custom:
|
||||||
return Program.UserConfig.CustomNotificationSize.Height;
|
return Program.UserConfig.CustomNotificationSize.Height;
|
||||||
@@ -87,7 +83,7 @@ namespace TweetDuck.Core.Notification{
|
|||||||
browser.LoadingStateChanged += Browser_LoadingStateChanged;
|
browser.LoadingStateChanged += Browser_LoadingStateChanged;
|
||||||
browser.FrameLoadEnd += Browser_FrameLoadEnd;
|
browser.FrameLoadEnd += Browser_FrameLoadEnd;
|
||||||
|
|
||||||
plugins.Register(this, PluginEnvironment.Notification);
|
plugins.Register(this, PluginEnvironment.Notification, this);
|
||||||
|
|
||||||
mouseHookDelegate = MouseHookProc;
|
mouseHookDelegate = MouseHookProc;
|
||||||
Disposed += (sender, args) => StopMouseHook(true);
|
Disposed += (sender, args) => StopMouseHook(true);
|
||||||
@@ -105,7 +101,7 @@ namespace TweetDuck.Core.Notification{
|
|||||||
browser.FrameLoadEnd += (sender, args) => {
|
browser.FrameLoadEnd += (sender, args) => {
|
||||||
IFrame frame = args.Frame;
|
IFrame frame = args.Frame;
|
||||||
|
|
||||||
if (frame.IsMain && NotificationJS != null && browser.Address != "about:blank"){
|
if (frame.IsMain && browser.Address != "about:blank"){
|
||||||
callback(frame);
|
callback(frame);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -136,7 +132,14 @@ namespace TweetDuck.Core.Notification{
|
|||||||
int eventType = wParam.ToInt32();
|
int eventType = wParam.ToInt32();
|
||||||
|
|
||||||
if (eventType == NativeMethods.WM_MOUSEWHEEL && IsCursorOverBrowser){
|
if (eventType == NativeMethods.WM_MOUSEWHEEL && IsCursorOverBrowser){
|
||||||
browser.SendMouseWheelEvent(0, 0, 0, BrowserUtils.Scale(NativeMethods.GetMouseHookData(lParam), Program.UserConfig.NotificationScrollSpeed*0.01), CefEventFlags.None);
|
if (Arguments.HasFlag(Arguments.ArgNotificationScrollWA)){
|
||||||
|
int delta = BrowserUtils.Scale(NativeMethods.GetMouseHookData(lParam), Program.UserConfig.NotificationScrollSpeed*0.01);
|
||||||
|
browser.ExecuteScriptAsync("window.scrollBy", 0, -Math.Round(delta/0.72));
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
browser.SendMouseWheelEvent(0, 0, 0, BrowserUtils.Scale(NativeMethods.GetMouseHookData(lParam), Program.UserConfig.NotificationScrollSpeed*0.01), CefEventFlags.None);
|
||||||
|
}
|
||||||
|
|
||||||
return NativeMethods.HOOK_HANDLED;
|
return NativeMethods.HOOK_HANDLED;
|
||||||
}
|
}
|
||||||
else if (eventType == NativeMethods.WM_XBUTTONDOWN && DesktopBounds.Contains(Cursor.Position)){
|
else if (eventType == NativeMethods.WM_XBUTTONDOWN && DesktopBounds.Contains(Cursor.Position)){
|
||||||
@@ -186,9 +189,9 @@ namespace TweetDuck.Core.Notification{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e){
|
private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e){
|
||||||
if (e.Frame.IsMain && NotificationJS != null && browser.Address != "about:blank"){
|
if (e.Frame.IsMain && browser.Address != "about:blank"){
|
||||||
e.Frame.ExecuteJavaScriptAsync(PropertyBridge.GenerateScript(PropertyBridge.Environment.Notification));
|
e.Frame.ExecuteJavaScriptAsync(PropertyBridge.GenerateScript(PropertyBridge.Environment.Notification));
|
||||||
ScriptLoader.ExecuteScript(e.Frame, NotificationJS, NotificationScriptIdentifier);
|
ScriptLoader.ExecuteScript(e.Frame, ScriptLoader.LoadResource("notification.js", this), "root:notification");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -255,7 +258,7 @@ namespace TweetDuck.Core.Notification{
|
|||||||
string html = base.GetTweetHTML(tweet);
|
string html = base.GetTweetHTML(tweet);
|
||||||
|
|
||||||
foreach(InjectedHTML injection in plugins.NotificationInjections){
|
foreach(InjectedHTML injection in plugins.NotificationInjections){
|
||||||
html = injection.Inject(html);
|
html = injection.InjectInto(html);
|
||||||
}
|
}
|
||||||
|
|
||||||
return html;
|
return html;
|
||||||
|
@@ -15,55 +15,74 @@ namespace TweetDuck.Core.Notification.Screenshot{
|
|||||||
protected override bool CanDragWindow => false;
|
protected override bool CanDragWindow => false;
|
||||||
|
|
||||||
private readonly PluginManager plugins;
|
private readonly PluginManager plugins;
|
||||||
private readonly int width;
|
private int height;
|
||||||
|
|
||||||
public FormNotificationScreenshotable(Action callback, FormBrowser owner, PluginManager pluginManager, string html, int width) : base(owner, false){
|
public FormNotificationScreenshotable(Action callback, FormBrowser owner, PluginManager pluginManager, string html, int width) : base(owner, false){
|
||||||
this.plugins = pluginManager;
|
this.plugins = pluginManager;
|
||||||
this.width = width;
|
|
||||||
|
int realWidth = BrowserUtils.Scale(width, DpiScale);
|
||||||
|
|
||||||
browser.RegisterAsyncJsObject("$TD_NotificationScreenshot", new ScreenshotBridge(this, SetScreenshotHeight, callback));
|
browser.RegisterAsyncJsObject("$TD_NotificationScreenshot", new ScreenshotBridge(this, SetScreenshotHeight, callback));
|
||||||
|
|
||||||
browser.LoadingStateChanged += (sender, args) => {
|
browser.LoadingStateChanged += (sender, args) => {
|
||||||
if (!args.IsLoading){
|
if (args.IsLoading){
|
||||||
using(IFrame frame = args.Browser.MainFrame){
|
return;
|
||||||
if (!ScriptLoader.ExecuteFile(frame, "screenshot.js")){
|
}
|
||||||
this.InvokeAsyncSafe(callback);
|
|
||||||
}
|
string script = ScriptLoader.LoadResourceSilent("screenshot.js");
|
||||||
}
|
|
||||||
|
if (script == null){
|
||||||
|
this.InvokeAsyncSafe(callback);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
using(IFrame frame = args.Browser.MainFrame){
|
||||||
|
ScriptLoader.ExecuteScript(frame, script.Replace("{width}", realWidth.ToString()).Replace("{frames}", TweetScreenshotManager.WaitFrames.ToString()), "gen:screenshot");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
SetNotificationSize(realWidth, 1024);
|
||||||
LoadTweet(new TweetNotification(string.Empty, string.Empty, string.Empty, html, 0, string.Empty, string.Empty));
|
LoadTweet(new TweetNotification(string.Empty, string.Empty, string.Empty, html, 0, string.Empty, string.Empty));
|
||||||
SetScreenshotHeight(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override string GetTweetHTML(TweetNotification tweet){
|
protected override string GetTweetHTML(TweetNotification tweet){
|
||||||
string html = tweet.GenerateHtml("td-screenshot");
|
string html = tweet.GenerateHtml("td-screenshot", this);
|
||||||
|
|
||||||
foreach(InjectedHTML injection in plugins.NotificationInjections){
|
foreach(InjectedHTML injection in plugins.NotificationInjections){
|
||||||
html = injection.Inject(html);
|
html = injection.InjectInto(html);
|
||||||
}
|
}
|
||||||
|
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetScreenshotHeight(int height){
|
private void SetScreenshotHeight(int browserHeight){
|
||||||
SetNotificationSize(width, height);
|
this.height = BrowserUtils.Scale(browserHeight, SizeScale);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void TakeScreenshot(){
|
public bool TakeScreenshot(bool ignoreHeightError = false){
|
||||||
if (ClientSize.Height == 0){
|
if (!ignoreHeightError){
|
||||||
FormMessage.Error("Screenshot Failed", "Could not detect screenshot size.", FormMessage.OK);
|
if (height == 0){
|
||||||
return;
|
FormMessage.Error("Screenshot Failed", "Could not detect screenshot size.", FormMessage.OK);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (height > ClientSize.Height){
|
||||||
|
FormMessage.Error("Screenshot Failed", $"Screenshot is too large: {height}px > {ClientSize.Height}px", FormMessage.OK);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!WindowsUtils.IsAeroEnabled){
|
||||||
|
MoveToVisibleLocation(); // TODO make this look nicer I guess
|
||||||
}
|
}
|
||||||
|
|
||||||
IntPtr context = NativeMethods.GetDC(this.Handle);
|
IntPtr context = NativeMethods.GetDC(this.Handle);
|
||||||
|
|
||||||
if (context == IntPtr.Zero){
|
if (context == IntPtr.Zero){
|
||||||
FormMessage.Error("Screenshot Failed", "Could not retrieve a graphics context handle for the notification window to take the screenshot.", FormMessage.OK);
|
FormMessage.Error("Screenshot Failed", "Could not retrieve a graphics context handle for the notification window to take the screenshot.", FormMessage.OK);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
using(Bitmap bmp = new Bitmap(ClientSize.Width, ClientSize.Height, PixelFormat.Format32bppRgb)){
|
using(Bitmap bmp = new Bitmap(ClientSize.Width, Math.Max(1, height), PixelFormat.Format32bppRgb)){
|
||||||
try{
|
try{
|
||||||
NativeMethods.RenderSourceIntoBitmap(context, bmp);
|
NativeMethods.RenderSourceIntoBitmap(context, bmp);
|
||||||
}finally{
|
}finally{
|
||||||
@@ -71,6 +90,7 @@ namespace TweetDuck.Core.Notification.Screenshot{
|
|||||||
}
|
}
|
||||||
|
|
||||||
Clipboard.SetImage(bmp);
|
Clipboard.SetImage(bmp);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,17 +1,37 @@
|
|||||||
// Uncomment to keep screenshot windows visible for debugging
|
#if DEBUG
|
||||||
|
// Uncomment to keep screenshot windows visible for debugging
|
||||||
// #define NO_HIDE_SCREENSHOTS
|
// #define NO_HIDE_SCREENSHOTS
|
||||||
|
|
||||||
|
// Uncomment to generate screenshots of individual frames for at most 1 second
|
||||||
|
// #define GEN_SCREENSHOT_FRAMES
|
||||||
|
#endif
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using TweetDuck.Core.Controls;
|
using TweetDuck.Core.Controls;
|
||||||
using TweetDuck.Plugins;
|
using TweetDuck.Plugins;
|
||||||
|
|
||||||
|
#if GEN_SCREENSHOT_FRAMES
|
||||||
|
using System.Drawing.Imaging;
|
||||||
|
using System.IO;
|
||||||
|
using TweetDuck.Core.Utils;
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace TweetDuck.Core.Notification.Screenshot{
|
namespace TweetDuck.Core.Notification.Screenshot{
|
||||||
sealed class TweetScreenshotManager : IDisposable{
|
sealed class TweetScreenshotManager : IDisposable{
|
||||||
private readonly FormBrowser owner;
|
private readonly FormBrowser owner;
|
||||||
private readonly PluginManager plugins;
|
private readonly PluginManager plugins;
|
||||||
private readonly Timer timeout;
|
private readonly Timer timeout;
|
||||||
private readonly Timer disposer;
|
private readonly Timer disposer;
|
||||||
|
|
||||||
|
#if GEN_SCREENSHOT_FRAMES
|
||||||
|
private readonly Timer debugger;
|
||||||
|
private int frameCounter;
|
||||||
|
|
||||||
|
public const int WaitFrames = 60;
|
||||||
|
#else
|
||||||
|
public const int WaitFrames = 5;
|
||||||
|
#endif
|
||||||
|
|
||||||
private FormNotificationScreenshotable screenshot;
|
private FormNotificationScreenshotable screenshot;
|
||||||
|
|
||||||
@@ -24,6 +44,11 @@ namespace TweetDuck.Core.Notification.Screenshot{
|
|||||||
|
|
||||||
this.disposer = new Timer{ Interval = 1 };
|
this.disposer = new Timer{ Interval = 1 };
|
||||||
this.disposer.Tick += disposer_Tick;
|
this.disposer.Tick += disposer_Tick;
|
||||||
|
|
||||||
|
#if GEN_SCREENSHOT_FRAMES
|
||||||
|
this.debugger = new Timer{ Interval = 16 };
|
||||||
|
this.debugger.Tick += debugger_Tick;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
private void timeout_Tick(object sender, EventArgs e){
|
private void timeout_Tick(object sender, EventArgs e){
|
||||||
@@ -46,7 +71,11 @@ namespace TweetDuck.Core.Notification.Screenshot{
|
|||||||
screenshot.Show();
|
screenshot.Show();
|
||||||
timeout.Start();
|
timeout.Start();
|
||||||
|
|
||||||
#if !(DEBUG && NO_HIDE_SCREENSHOTS)
|
#if GEN_SCREENSHOT_FRAMES
|
||||||
|
StartDebugger();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !NO_HIDE_SCREENSHOTS
|
||||||
owner.IsWaiting = true;
|
owner.IsWaiting = true;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -58,8 +87,8 @@ namespace TweetDuck.Core.Notification.Screenshot{
|
|||||||
|
|
||||||
timeout.Stop();
|
timeout.Stop();
|
||||||
screenshot.TakeScreenshot();
|
screenshot.TakeScreenshot();
|
||||||
|
|
||||||
#if !(DEBUG && NO_HIDE_SCREENSHOTS)
|
#if !NO_HIDE_SCREENSHOTS
|
||||||
OnFinished();
|
OnFinished();
|
||||||
#else
|
#else
|
||||||
screenshot.MoveToVisibleLocation();
|
screenshot.MoveToVisibleLocation();
|
||||||
@@ -68,15 +97,52 @@ namespace TweetDuck.Core.Notification.Screenshot{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void OnFinished(){
|
private void OnFinished(){
|
||||||
|
#if GEN_SCREENSHOT_FRAMES
|
||||||
|
debugger.Stop();
|
||||||
|
#endif
|
||||||
|
|
||||||
screenshot.Location = ControlExtensions.InvisibleLocation;
|
screenshot.Location = ControlExtensions.InvisibleLocation;
|
||||||
owner.IsWaiting = false;
|
owner.IsWaiting = false;
|
||||||
disposer.Start();
|
disposer.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose(){
|
public void Dispose(){
|
||||||
|
#if GEN_SCREENSHOT_FRAMES
|
||||||
|
debugger.Dispose();
|
||||||
|
#endif
|
||||||
|
|
||||||
timeout.Dispose();
|
timeout.Dispose();
|
||||||
disposer.Dispose();
|
disposer.Dispose();
|
||||||
screenshot?.Dispose();
|
screenshot?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if GEN_SCREENSHOT_FRAMES
|
||||||
|
private static readonly string DebugScreenshotPath = Path.Combine(Program.StoragePath, "TD_Screenshots");
|
||||||
|
|
||||||
|
private void StartDebugger(){
|
||||||
|
frameCounter = 0;
|
||||||
|
|
||||||
|
try{
|
||||||
|
Directory.Delete(DebugScreenshotPath, true);
|
||||||
|
WindowsUtils.TrySleepUntil(() => !Directory.Exists(DebugScreenshotPath), 1000, 10);
|
||||||
|
}catch(DirectoryNotFoundException){}
|
||||||
|
|
||||||
|
Directory.CreateDirectory(DebugScreenshotPath);
|
||||||
|
debugger.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void debugger_Tick(object sender, EventArgs e){
|
||||||
|
if (frameCounter < 63 && screenshot.TakeScreenshot(true)){
|
||||||
|
try{
|
||||||
|
Clipboard.GetImage()?.Save(Path.Combine(DebugScreenshotPath, "frame_"+(++frameCounter)+".png"), ImageFormat.Png);
|
||||||
|
}catch{
|
||||||
|
System.Diagnostics.Debug.WriteLine("Failed generating frame "+frameCounter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
debugger.Stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Windows.Forms;
|
||||||
using CefSharp;
|
using CefSharp;
|
||||||
using TweetDuck.Core.Bridge;
|
using TweetDuck.Core.Bridge;
|
||||||
using TweetDuck.Data;
|
using TweetDuck.Data;
|
||||||
@@ -7,8 +8,7 @@ using TweetDuck.Resources;
|
|||||||
|
|
||||||
namespace TweetDuck.Core.Notification{
|
namespace TweetDuck.Core.Notification{
|
||||||
sealed class TweetNotification{
|
sealed class TweetNotification{
|
||||||
private const string DefaultHeadLayout = @"<html id='tduck' class='os-windows txt-size--14' data-td-font='medium' data-td-theme='dark'><head><meta charset='utf-8'><meta http-equiv='X-UA-Compatible' content='chrome=1'><link rel='stylesheet' href='https://ton.twimg.com/tweetdeck-web/web/css/font.5ef884f9f9.css'><link rel='stylesheet' href='https://ton.twimg.com/tweetdeck-web/web/css/app-dark.5631e0dd42.css'><style type='text/css'>body{background:#222426}</style>";
|
private const string DefaultHeadLayout = @"<html class=""scroll-v os-windows dark txt-size--14"" lang=""en-US"" id=""tduck"" data-td-font=""medium"" data-td-theme=""dark""><head><meta charset=""utf-8""><link href=""https://ton.twimg.com/tweetdeck-web/web/dist/bundle.4b1f87e09d.css"" rel=""stylesheet""><style type='text/css'>body { background: rgb(34, 36, 38) !important }</style>";
|
||||||
private static readonly string CustomCSS = ScriptLoader.LoadResource("styles/notification.css") ?? string.Empty;
|
|
||||||
public static readonly ResourceLink AppLogo = new ResourceLink("https://ton.twimg.com/tduck/avatar", ResourceHandler.FromByteArray(Properties.Resources.avatar, "image/png"));
|
public static readonly ResourceLink AppLogo = new ResourceLink("https://ton.twimg.com/tduck/avatar", ResourceHandler.FromByteArray(Properties.Resources.avatar, "image/png"));
|
||||||
|
|
||||||
public static TweetNotification Example(string html, int characters){
|
public static TweetNotification Example(string html, int characters){
|
||||||
@@ -53,11 +53,11 @@ namespace TweetDuck.Core.Notification{
|
|||||||
return 2000+Math.Max(1000, value*characters);
|
return 2000+Math.Max(1000, value*characters);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GenerateHtml(string bodyClasses){
|
public string GenerateHtml(string bodyClasses, Control sync){
|
||||||
StringBuilder build = new StringBuilder();
|
StringBuilder build = new StringBuilder();
|
||||||
build.Append("<!DOCTYPE html>");
|
build.Append("<!DOCTYPE html>");
|
||||||
build.Append(TweetDeckBridge.NotificationHeadLayout ?? DefaultHeadLayout);
|
build.Append(TweetDeckBridge.NotificationHeadLayout ?? DefaultHeadLayout);
|
||||||
build.Append("<style type='text/css'>").Append(CustomCSS).Append("</style>");
|
build.Append("<style type='text/css'>").Append(ScriptLoader.LoadResource("styles/notification.css", sync) ?? string.Empty).Append("</style>");
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(Program.UserConfig.CustomNotificationCSS)){
|
if (!string.IsNullOrEmpty(Program.UserConfig.CustomNotificationCSS)){
|
||||||
build.Append("<style type='text/css'>").Append(Program.UserConfig.CustomNotificationCSS).Append("</style>");
|
build.Append("<style type='text/css'>").Append(Program.UserConfig.CustomNotificationCSS).Append("</style>");
|
||||||
@@ -70,7 +70,7 @@ namespace TweetDuck.Core.Notification{
|
|||||||
build.Append(' ').Append(bodyClasses);
|
build.Append(' ').Append(bodyClasses);
|
||||||
}
|
}
|
||||||
|
|
||||||
build.Append('\'').Append(isExample ? " td-example-notification" : "").Append("><div class='column' style='width:100%!important;height:auto!important;overflow:initial!important;'>");
|
build.Append('\'').Append(isExample ? " td-example-notification" : "").Append("><div class='column' style='width:100%!important;min-height:100vh!important;height:auto!important;overflow:initial!important;'>");
|
||||||
build.Append(html);
|
build.Append(html);
|
||||||
build.Append("</div></body>");
|
build.Append("</div></body>");
|
||||||
build.Append("</html>");
|
build.Append("</html>");
|
||||||
|
@@ -8,7 +8,6 @@ using TweetDuck.Configuration;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Management;
|
using System.Management;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using TweetDuck.Core.Handling;
|
|
||||||
using TweetDuck.Core.Notification;
|
using TweetDuck.Core.Notification;
|
||||||
using TweetDuck.Core.Utils;
|
using TweetDuck.Core.Utils;
|
||||||
using TweetDuck.Plugins;
|
using TweetDuck.Plugins;
|
||||||
@@ -22,7 +21,7 @@ namespace TweetDuck.Core.Other.Analytics{
|
|||||||
return new AnalyticsReport{
|
return new AnalyticsReport{
|
||||||
{ "App Version" , Program.VersionTag },
|
{ "App Version" , Program.VersionTag },
|
||||||
{ "App Type" , Program.IsPortable ? "portable" : "installed" },
|
{ "App Type" , Program.IsPortable ? "portable" : "installed" },
|
||||||
{ "App Dev Tools" , Bool(ContextMenuBase.HasDevTools) },
|
{ "App Dev Tools" , Bool(BrowserUtils.HasDevTools) },
|
||||||
0,
|
0,
|
||||||
{ "System Name" , SystemName },
|
{ "System Name" , SystemName },
|
||||||
{ "System Edition" , SystemEdition },
|
{ "System Edition" , SystemEdition },
|
||||||
@@ -42,7 +41,6 @@ namespace TweetDuck.Core.Other.Analytics{
|
|||||||
{ "Clear Cache Threshold" , Exact(SysConfig.ClearCacheThreshold) },
|
{ "Clear Cache Threshold" , Exact(SysConfig.ClearCacheThreshold) },
|
||||||
0,
|
0,
|
||||||
{ "Expand Links" , Bool(UserConfig.ExpandLinksOnHover) },
|
{ "Expand Links" , Bool(UserConfig.ExpandLinksOnHover) },
|
||||||
{ "Switch Account Selectors" , Bool(false) }, // TODO remove in next major update
|
|
||||||
{ "Search In First Column" , Bool(UserConfig.OpenSearchInFirstColumn) },
|
{ "Search In First Column" , Bool(UserConfig.OpenSearchInFirstColumn) },
|
||||||
{ "Keep Like Follow Dialogs Open" , Bool(UserConfig.KeepLikeFollowDialogsOpen) },
|
{ "Keep Like Follow Dialogs Open" , Bool(UserConfig.KeepLikeFollowDialogsOpen) },
|
||||||
{ "Best Image Quality" , Bool(UserConfig.BestImageQuality) },
|
{ "Best Image Quality" , Bool(UserConfig.BestImageQuality) },
|
||||||
|
27
Core/Other/FormAbout.Designer.cs
generated
@@ -23,7 +23,6 @@ namespace TweetDuck.Core.Other {
|
|||||||
/// the contents of this method with the code editor.
|
/// the contents of this method with the code editor.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent() {
|
private void InitializeComponent() {
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAbout));
|
|
||||||
this.pictureLogo = new System.Windows.Forms.PictureBox();
|
this.pictureLogo = new System.Windows.Forms.PictureBox();
|
||||||
this.labelDescription = new System.Windows.Forms.Label();
|
this.labelDescription = new System.Windows.Forms.Label();
|
||||||
this.labelTips = new System.Windows.Forms.LinkLabel();
|
this.labelTips = new System.Windows.Forms.LinkLabel();
|
||||||
@@ -42,6 +41,7 @@ namespace TweetDuck.Core.Other {
|
|||||||
this.pictureLogo.Location = new System.Drawing.Point(12, 12);
|
this.pictureLogo.Location = new System.Drawing.Point(12, 12);
|
||||||
this.pictureLogo.Name = "pictureLogo";
|
this.pictureLogo.Name = "pictureLogo";
|
||||||
this.pictureLogo.Size = new System.Drawing.Size(96, 96);
|
this.pictureLogo.Size = new System.Drawing.Size(96, 96);
|
||||||
|
this.pictureLogo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||||
this.pictureLogo.TabIndex = 0;
|
this.pictureLogo.TabIndex = 0;
|
||||||
this.pictureLogo.TabStop = false;
|
this.pictureLogo.TabStop = false;
|
||||||
//
|
//
|
||||||
@@ -50,23 +50,22 @@ namespace TweetDuck.Core.Other {
|
|||||||
this.labelDescription.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
this.labelDescription.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
| System.Windows.Forms.AnchorStyles.Left)
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.labelDescription.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelDescription.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelDescription.Location = new System.Drawing.Point(114, 12);
|
this.labelDescription.Location = new System.Drawing.Point(114, 12);
|
||||||
this.labelDescription.Name = "labelDescription";
|
this.labelDescription.Name = "labelDescription";
|
||||||
this.labelDescription.Size = new System.Drawing.Size(232, 109);
|
this.labelDescription.Size = new System.Drawing.Size(232, 113);
|
||||||
this.labelDescription.TabIndex = 0;
|
this.labelDescription.TabIndex = 0;
|
||||||
//
|
//
|
||||||
// labelTips
|
// labelTips
|
||||||
//
|
//
|
||||||
this.labelTips.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.labelTips.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.labelTips.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelTips.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelTips.LinkArea = new System.Windows.Forms.LinkArea(0, 0);
|
this.labelTips.LinkArea = new System.Windows.Forms.LinkArea(0, 0);
|
||||||
this.labelTips.Location = new System.Drawing.Point(117, 0);
|
this.labelTips.Location = new System.Drawing.Point(117, 0);
|
||||||
this.labelTips.Margin = new System.Windows.Forms.Padding(0);
|
this.labelTips.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.labelTips.Name = "labelTips";
|
this.labelTips.Name = "labelTips";
|
||||||
this.labelTips.Size = new System.Drawing.Size(99, 16);
|
this.labelTips.Size = new System.Drawing.Size(99, 18);
|
||||||
this.labelTips.TabIndex = 1;
|
this.labelTips.TabIndex = 1;
|
||||||
this.labelTips.TabStop = true;
|
|
||||||
this.labelTips.Text = "Tips && Tricks";
|
this.labelTips.Text = "Tips && Tricks";
|
||||||
this.labelTips.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
this.labelTips.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
this.labelTips.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.OnLinkClicked);
|
this.labelTips.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.OnLinkClicked);
|
||||||
@@ -75,14 +74,13 @@ namespace TweetDuck.Core.Other {
|
|||||||
//
|
//
|
||||||
this.labelWebsite.AutoSize = true;
|
this.labelWebsite.AutoSize = true;
|
||||||
this.labelWebsite.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.labelWebsite.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.labelWebsite.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelWebsite.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelWebsite.LinkArea = new System.Windows.Forms.LinkArea(0, 0);
|
this.labelWebsite.LinkArea = new System.Windows.Forms.LinkArea(0, 0);
|
||||||
this.labelWebsite.Location = new System.Drawing.Point(0, 0);
|
this.labelWebsite.Location = new System.Drawing.Point(0, 0);
|
||||||
this.labelWebsite.Margin = new System.Windows.Forms.Padding(0);
|
this.labelWebsite.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.labelWebsite.Name = "labelWebsite";
|
this.labelWebsite.Name = "labelWebsite";
|
||||||
this.labelWebsite.Size = new System.Drawing.Size(117, 16);
|
this.labelWebsite.Size = new System.Drawing.Size(117, 18);
|
||||||
this.labelWebsite.TabIndex = 0;
|
this.labelWebsite.TabIndex = 0;
|
||||||
this.labelWebsite.TabStop = true;
|
|
||||||
this.labelWebsite.Text = "Official Website";
|
this.labelWebsite.Text = "Official Website";
|
||||||
this.labelWebsite.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
this.labelWebsite.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
this.labelWebsite.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.OnLinkClicked);
|
this.labelWebsite.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.OnLinkClicked);
|
||||||
@@ -98,24 +96,23 @@ namespace TweetDuck.Core.Other {
|
|||||||
this.tablePanelLinks.Controls.Add(this.labelIssues, 2, 0);
|
this.tablePanelLinks.Controls.Add(this.labelIssues, 2, 0);
|
||||||
this.tablePanelLinks.Controls.Add(this.labelWebsite, 0, 0);
|
this.tablePanelLinks.Controls.Add(this.labelWebsite, 0, 0);
|
||||||
this.tablePanelLinks.Controls.Add(this.labelTips, 1, 0);
|
this.tablePanelLinks.Controls.Add(this.labelTips, 1, 0);
|
||||||
this.tablePanelLinks.Location = new System.Drawing.Point(12, 124);
|
this.tablePanelLinks.Location = new System.Drawing.Point(12, 128);
|
||||||
this.tablePanelLinks.Name = "tablePanelLinks";
|
this.tablePanelLinks.Name = "tablePanelLinks";
|
||||||
this.tablePanelLinks.RowCount = 1;
|
this.tablePanelLinks.RowCount = 1;
|
||||||
this.tablePanelLinks.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
this.tablePanelLinks.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
this.tablePanelLinks.Size = new System.Drawing.Size(334, 16);
|
this.tablePanelLinks.Size = new System.Drawing.Size(334, 18);
|
||||||
this.tablePanelLinks.TabIndex = 1;
|
this.tablePanelLinks.TabIndex = 1;
|
||||||
//
|
//
|
||||||
// labelIssues
|
// labelIssues
|
||||||
//
|
//
|
||||||
this.labelIssues.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.labelIssues.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.labelIssues.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelIssues.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelIssues.LinkArea = new System.Windows.Forms.LinkArea(0, 0);
|
this.labelIssues.LinkArea = new System.Windows.Forms.LinkArea(0, 0);
|
||||||
this.labelIssues.Location = new System.Drawing.Point(216, 0);
|
this.labelIssues.Location = new System.Drawing.Point(216, 0);
|
||||||
this.labelIssues.Margin = new System.Windows.Forms.Padding(0);
|
this.labelIssues.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.labelIssues.Name = "labelIssues";
|
this.labelIssues.Name = "labelIssues";
|
||||||
this.labelIssues.Size = new System.Drawing.Size(118, 16);
|
this.labelIssues.Size = new System.Drawing.Size(118, 18);
|
||||||
this.labelIssues.TabIndex = 2;
|
this.labelIssues.TabIndex = 2;
|
||||||
this.labelIssues.TabStop = true;
|
|
||||||
this.labelIssues.Text = "Report an Issue";
|
this.labelIssues.Text = "Report an Issue";
|
||||||
this.labelIssues.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
this.labelIssues.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||||
this.labelIssues.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.OnLinkClicked);
|
this.labelIssues.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.OnLinkClicked);
|
||||||
@@ -125,7 +122,7 @@ namespace TweetDuck.Core.Other {
|
|||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.BackColor = System.Drawing.Color.White;
|
this.BackColor = System.Drawing.Color.White;
|
||||||
this.ClientSize = new System.Drawing.Size(358, 152);
|
this.ClientSize = new System.Drawing.Size(358, 156);
|
||||||
this.Controls.Add(this.tablePanelLinks);
|
this.Controls.Add(this.tablePanelLinks);
|
||||||
this.Controls.Add(this.labelDescription);
|
this.Controls.Add(this.labelDescription);
|
||||||
this.Controls.Add(this.pictureLogo);
|
this.Controls.Add(this.pictureLogo);
|
||||||
|
@@ -5,7 +5,7 @@ using System.Windows.Forms;
|
|||||||
using TweetDuck.Core.Utils;
|
using TweetDuck.Core.Utils;
|
||||||
|
|
||||||
namespace TweetDuck.Core.Other{
|
namespace TweetDuck.Core.Other{
|
||||||
sealed partial class FormAbout : Form{
|
sealed partial class FormAbout : Form, FormManager.IAppDialog{
|
||||||
private const string TipsLink = "https://github.com/chylex/TweetDuck/wiki";
|
private const string TipsLink = "https://github.com/chylex/TweetDuck/wiki";
|
||||||
private const string IssuesLink = "https://github.com/chylex/TweetDuck/issues";
|
private const string IssuesLink = "https://github.com/chylex/TweetDuck/issues";
|
||||||
|
|
||||||
|
@@ -8,13 +8,16 @@ using TweetDuck.Core.Handling;
|
|||||||
using TweetDuck.Core.Handling.General;
|
using TweetDuck.Core.Handling.General;
|
||||||
using TweetDuck.Core.Utils;
|
using TweetDuck.Core.Utils;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using TweetDuck.Data;
|
||||||
using TweetDuck.Resources;
|
using TweetDuck.Resources;
|
||||||
|
|
||||||
namespace TweetDuck.Core.Other{
|
namespace TweetDuck.Core.Other{
|
||||||
sealed partial class FormGuide : Form{
|
sealed partial class FormGuide : Form, FormManager.IAppDialog{
|
||||||
private const string GuideUrl = "https://tweetduck.chylex.com/guide/v2/";
|
private const string GuideUrl = "https://tweetduck.chylex.com/guide/v2/";
|
||||||
private const string GuidePathRegex = @"^guide(?:/v\d+)?(?:/(#.*))?";
|
private const string GuidePathRegex = @"^guide(?:/v\d+)?(?:/(#.*))?";
|
||||||
|
|
||||||
|
private static readonly ResourceLink DummyPage = new ResourceLink("http://td/dummy", ResourceHandler.FromString(""));
|
||||||
|
|
||||||
public static bool CheckGuideUrl(string url, out string hash){
|
public static bool CheckGuideUrl(string url, out string hash){
|
||||||
if (!url.Contains("//tweetduck.chylex.com/guide")){
|
if (!url.Contains("//tweetduck.chylex.com/guide")){
|
||||||
hash = null;
|
hash = null;
|
||||||
@@ -53,6 +56,7 @@ namespace TweetDuck.Core.Other{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private readonly ChromiumWebBrowser browser;
|
private readonly ChromiumWebBrowser browser;
|
||||||
|
private string nextUrl;
|
||||||
|
|
||||||
private FormGuide(string url, FormBrowser owner){
|
private FormGuide(string url, FormBrowser owner){
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
@@ -65,7 +69,7 @@ namespace TweetDuck.Core.Other{
|
|||||||
MenuHandler = new ContextMenuGuide(owner),
|
MenuHandler = new ContextMenuGuide(owner),
|
||||||
JsDialogHandler = new JavaScriptDialogHandler(),
|
JsDialogHandler = new JavaScriptDialogHandler(),
|
||||||
LifeSpanHandler = new LifeSpanHandler(),
|
LifeSpanHandler = new LifeSpanHandler(),
|
||||||
RequestHandler = new RequestHandlerBrowser()
|
RequestHandler = new RequestHandlerBase(true)
|
||||||
};
|
};
|
||||||
|
|
||||||
browser.LoadingStateChanged += browser_LoadingStateChanged;
|
browser.LoadingStateChanged += browser_LoadingStateChanged;
|
||||||
@@ -75,6 +79,9 @@ namespace TweetDuck.Core.Other{
|
|||||||
browser.BrowserSettings.BackgroundColor = (uint)BackColor.ToArgb();
|
browser.BrowserSettings.BackgroundColor = (uint)BackColor.ToArgb();
|
||||||
browser.Dock = DockStyle.None;
|
browser.Dock = DockStyle.None;
|
||||||
browser.Location = ControlExtensions.InvisibleLocation;
|
browser.Location = ControlExtensions.InvisibleLocation;
|
||||||
|
|
||||||
|
browser.SetupResourceHandler(DummyPage);
|
||||||
|
|
||||||
Controls.Add(browser);
|
Controls.Add(browser);
|
||||||
|
|
||||||
Disposed += (sender, args) => {
|
Disposed += (sender, args) => {
|
||||||
@@ -86,21 +93,26 @@ namespace TweetDuck.Core.Other{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void Reload(string url){
|
private void Reload(string url){
|
||||||
|
nextUrl = url;
|
||||||
browser.LoadingStateChanged += browser_LoadingStateChanged;
|
browser.LoadingStateChanged += browser_LoadingStateChanged;
|
||||||
browser.Dock = DockStyle.None;
|
browser.Dock = DockStyle.None;
|
||||||
browser.Location = ControlExtensions.InvisibleLocation;
|
browser.Location = ControlExtensions.InvisibleLocation;
|
||||||
browser.Load("about:blank");
|
browser.Load(DummyPage.Url);
|
||||||
browser.Load(url);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void browser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e){
|
private void browser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e){
|
||||||
if (!e.IsLoading && browser.Address != "about:blank"){
|
if (!e.IsLoading){
|
||||||
this.InvokeAsyncSafe(() => {
|
if (browser.Address == DummyPage.Url){
|
||||||
browser.Location = Point.Empty;
|
browser.Load(nextUrl);
|
||||||
browser.Dock = DockStyle.Fill;
|
}
|
||||||
});
|
else{
|
||||||
|
this.InvokeAsyncSafe(() => {
|
||||||
|
browser.Location = Point.Empty;
|
||||||
|
browser.Dock = DockStyle.Fill;
|
||||||
|
});
|
||||||
|
|
||||||
browser.LoadingStateChanged -= browser_LoadingStateChanged;
|
browser.LoadingStateChanged -= browser_LoadingStateChanged;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -109,7 +121,6 @@ namespace TweetDuck.Core.Other{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e){
|
private void browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e){
|
||||||
// idiot chromium
|
|
||||||
ScriptLoader.ExecuteScript(e.Frame, "Array.prototype.forEach.call(document.getElementsByTagName('A'), ele => ele.addEventListener('click', e => { e.preventDefault(); window.open(ele.getAttribute('href')); }))", "gen:links");
|
ScriptLoader.ExecuteScript(e.Frame, "Array.prototype.forEach.call(document.getElementsByTagName('A'), ele => ele.addEventListener('click', e => { e.preventDefault(); window.open(ele.getAttribute('href')); }))", "gen:links");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
37
Core/Other/FormPlugins.Designer.cs
generated
@@ -23,20 +23,23 @@
|
|||||||
/// the contents of this method with the code editor.
|
/// the contents of this method with the code editor.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent() {
|
private void InitializeComponent() {
|
||||||
|
this.components = new System.ComponentModel.Container();
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
this.btnClose = new System.Windows.Forms.Button();
|
||||||
this.btnReload = new System.Windows.Forms.Button();
|
this.btnReload = new System.Windows.Forms.Button();
|
||||||
this.btnOpenFolder = new System.Windows.Forms.Button();
|
this.btnOpenFolder = new System.Windows.Forms.Button();
|
||||||
this.flowLayoutPlugins = new TweetDuck.Plugins.Controls.PluginListFlowLayout();
|
this.flowLayoutPlugins = new TweetDuck.Plugins.Controls.PluginListFlowLayout();
|
||||||
|
this.timerLayout = new System.Windows.Forms.Timer(this.components);
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// btnClose
|
// btnClose
|
||||||
//
|
//
|
||||||
this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnClose.AutoSize = true;
|
this.btnClose.AutoSize = true;
|
||||||
this.btnClose.Location = new System.Drawing.Point(643, 439);
|
this.btnClose.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnClose.Location = new System.Drawing.Point(642, 433);
|
||||||
this.btnClose.Name = "btnClose";
|
this.btnClose.Name = "btnClose";
|
||||||
this.btnClose.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnClose.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnClose.Size = new System.Drawing.Size(49, 23);
|
this.btnClose.Size = new System.Drawing.Size(50, 25);
|
||||||
this.btnClose.TabIndex = 1;
|
this.btnClose.TabIndex = 1;
|
||||||
this.btnClose.Text = "Close";
|
this.btnClose.Text = "Close";
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
this.btnClose.UseVisualStyleBackColor = true;
|
||||||
@@ -46,10 +49,11 @@
|
|||||||
//
|
//
|
||||||
this.btnReload.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
this.btnReload.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
this.btnReload.AutoSize = true;
|
this.btnReload.AutoSize = true;
|
||||||
this.btnReload.Location = new System.Drawing.Point(131, 439);
|
this.btnReload.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnReload.Location = new System.Drawing.Point(141, 433);
|
||||||
this.btnReload.Name = "btnReload";
|
this.btnReload.Name = "btnReload";
|
||||||
this.btnReload.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnReload.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnReload.Size = new System.Drawing.Size(71, 23);
|
this.btnReload.Size = new System.Drawing.Size(74, 25);
|
||||||
this.btnReload.TabIndex = 2;
|
this.btnReload.TabIndex = 2;
|
||||||
this.btnReload.Text = "Reload All";
|
this.btnReload.Text = "Reload All";
|
||||||
this.btnReload.UseVisualStyleBackColor = true;
|
this.btnReload.UseVisualStyleBackColor = true;
|
||||||
@@ -59,10 +63,11 @@
|
|||||||
//
|
//
|
||||||
this.btnOpenFolder.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
this.btnOpenFolder.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
this.btnOpenFolder.AutoSize = true;
|
this.btnOpenFolder.AutoSize = true;
|
||||||
this.btnOpenFolder.Location = new System.Drawing.Point(12, 439);
|
this.btnOpenFolder.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnOpenFolder.Location = new System.Drawing.Point(12, 433);
|
||||||
this.btnOpenFolder.Name = "btnOpenFolder";
|
this.btnOpenFolder.Name = "btnOpenFolder";
|
||||||
this.btnOpenFolder.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnOpenFolder.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnOpenFolder.Size = new System.Drawing.Size(113, 23);
|
this.btnOpenFolder.Size = new System.Drawing.Size(123, 25);
|
||||||
this.btnOpenFolder.TabIndex = 3;
|
this.btnOpenFolder.TabIndex = 3;
|
||||||
this.btnOpenFolder.Text = "Open Plugin Folder";
|
this.btnOpenFolder.Text = "Open Plugin Folder";
|
||||||
this.btnOpenFolder.UseVisualStyleBackColor = true;
|
this.btnOpenFolder.UseVisualStyleBackColor = true;
|
||||||
@@ -77,22 +82,29 @@
|
|||||||
this.flowLayoutPlugins.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
this.flowLayoutPlugins.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
||||||
this.flowLayoutPlugins.Location = new System.Drawing.Point(12, 12);
|
this.flowLayoutPlugins.Location = new System.Drawing.Point(12, 12);
|
||||||
this.flowLayoutPlugins.Name = "flowLayoutPlugins";
|
this.flowLayoutPlugins.Name = "flowLayoutPlugins";
|
||||||
this.flowLayoutPlugins.Size = new System.Drawing.Size(680, 421);
|
this.flowLayoutPlugins.Size = new System.Drawing.Size(680, 415);
|
||||||
this.flowLayoutPlugins.TabIndex = 0;
|
this.flowLayoutPlugins.TabIndex = 0;
|
||||||
this.flowLayoutPlugins.WrapContents = false;
|
this.flowLayoutPlugins.WrapContents = false;
|
||||||
this.flowLayoutPlugins.Resize += new System.EventHandler(this.flowLayoutPlugins_Resize);
|
this.flowLayoutPlugins.Resize += new System.EventHandler(this.flowLayoutPlugins_Resize);
|
||||||
//
|
//
|
||||||
|
// timerLayout
|
||||||
|
//
|
||||||
|
this.timerLayout.Interval = 99;
|
||||||
|
this.timerLayout.Tick += new System.EventHandler(this.timerLayout_Tick);
|
||||||
|
//
|
||||||
// FormPlugins
|
// FormPlugins
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(704, 474);
|
this.ClientSize = new System.Drawing.Size(704, 470);
|
||||||
this.Controls.Add(this.flowLayoutPlugins);
|
this.Controls.Add(this.flowLayoutPlugins);
|
||||||
this.Controls.Add(this.btnOpenFolder);
|
this.Controls.Add(this.btnOpenFolder);
|
||||||
this.Controls.Add(this.btnReload);
|
this.Controls.Add(this.btnReload);
|
||||||
this.Controls.Add(this.btnClose);
|
this.Controls.Add(this.btnClose);
|
||||||
this.Icon = global::TweetDuck.Properties.Resources.icon;
|
this.Icon = global::TweetDuck.Properties.Resources.icon;
|
||||||
this.MinimumSize = new System.Drawing.Size(480, 320);
|
this.MaximizeBox = false;
|
||||||
|
this.MinimizeBox = false;
|
||||||
|
this.MinimumSize = new System.Drawing.Size(640, 360);
|
||||||
this.Name = "FormPlugins";
|
this.Name = "FormPlugins";
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
@@ -106,5 +118,6 @@
|
|||||||
private System.Windows.Forms.Button btnReload;
|
private System.Windows.Forms.Button btnReload;
|
||||||
private System.Windows.Forms.Button btnOpenFolder;
|
private System.Windows.Forms.Button btnOpenFolder;
|
||||||
private Plugins.Controls.PluginListFlowLayout flowLayoutPlugins;
|
private Plugins.Controls.PluginListFlowLayout flowLayoutPlugins;
|
||||||
|
private System.Windows.Forms.Timer timerLayout;
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -7,7 +7,7 @@ using TweetDuck.Plugins;
|
|||||||
using TweetDuck.Plugins.Controls;
|
using TweetDuck.Plugins.Controls;
|
||||||
|
|
||||||
namespace TweetDuck.Core.Other{
|
namespace TweetDuck.Core.Other{
|
||||||
sealed partial class FormPlugins : Form{
|
sealed partial class FormPlugins : Form, FormManager.IAppDialog{
|
||||||
private readonly PluginManager pluginManager;
|
private readonly PluginManager pluginManager;
|
||||||
|
|
||||||
public FormPlugins(){
|
public FormPlugins(){
|
||||||
@@ -19,15 +19,23 @@ namespace TweetDuck.Core.Other{
|
|||||||
public FormPlugins(PluginManager pluginManager) : this(){
|
public FormPlugins(PluginManager pluginManager) : this(){
|
||||||
this.pluginManager = pluginManager;
|
this.pluginManager = pluginManager;
|
||||||
|
|
||||||
|
if (!Program.UserConfig.PluginsWindowSize.IsEmpty){
|
||||||
|
Size targetSize = Program.UserConfig.PluginsWindowSize;
|
||||||
|
Size = new Size(Math.Max(MinimumSize.Width, targetSize.Width), Math.Max(MinimumSize.Height, targetSize.Height));
|
||||||
|
}
|
||||||
|
|
||||||
Shown += (sender, args) => {
|
Shown += (sender, args) => {
|
||||||
Program.UserConfig.PluginsWindow.Restore(this, false);
|
|
||||||
ReloadPluginList();
|
ReloadPluginList();
|
||||||
};
|
};
|
||||||
|
|
||||||
FormClosed += (sender, args) => {
|
FormClosed += (sender, args) => {
|
||||||
Program.UserConfig.PluginsWindow.Save(this);
|
Program.UserConfig.PluginsWindowSize = Size;
|
||||||
Program.UserConfig.Save();
|
Program.UserConfig.Save();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ResizeEnd += (sender, args) => {
|
||||||
|
timerLayout.Start();
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private int GetPluginOrderIndex(Plugin plugin){
|
private int GetPluginOrderIndex(Plugin plugin){
|
||||||
@@ -50,18 +58,26 @@ namespace TweetDuck.Core.Other{
|
|||||||
|
|
||||||
flowLayoutPlugins.ResumeLayout(true);
|
flowLayoutPlugins.ResumeLayout(true);
|
||||||
|
|
||||||
// sorry, I guess...
|
timerLayout_Tick(null, EventArgs.Empty);
|
||||||
Padding = new Padding(Padding.Left, Padding.Top, Padding.Right+1, Padding.Bottom);
|
timerLayout.Start();
|
||||||
Padding = new Padding(Padding.Left, Padding.Top, Padding.Right-1, Padding.Bottom);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void flowLayoutPlugins_Resize(object sender, EventArgs e){
|
private void timerLayout_Tick(object sender, EventArgs e){
|
||||||
if (flowLayoutPlugins.Controls.Count == 0){
|
timerLayout.Stop();
|
||||||
|
|
||||||
|
// stupid WinForms scrollbars and panels
|
||||||
|
Padding = new Padding(Padding.Left, Padding.Top, Padding.Right+1, Padding.Bottom+1);
|
||||||
|
Padding = new Padding(Padding.Left, Padding.Top, Padding.Right-1, Padding.Bottom-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void flowLayoutPlugins_Resize(object sender, EventArgs e){
|
||||||
|
Control lastPlugin = flowLayoutPlugins.Controls.OfType<PluginControl>().LastOrDefault();
|
||||||
|
|
||||||
|
if (lastPlugin == null){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Control lastControl = flowLayoutPlugins.Controls[flowLayoutPlugins.Controls.Count-1];
|
bool showScrollBar = lastPlugin.Location.Y+lastPlugin.Height+1 >= flowLayoutPlugins.Height;
|
||||||
bool showScrollBar = lastControl.Location.Y+lastControl.Height >= flowLayoutPlugins.Height;
|
|
||||||
int horizontalOffset = showScrollBar ? SystemInformation.VerticalScrollBarWidth : 0;
|
int horizontalOffset = showScrollBar ? SystemInformation.VerticalScrollBarWidth : 0;
|
||||||
|
|
||||||
flowLayoutPlugins.AutoScroll = showScrollBar;
|
flowLayoutPlugins.AutoScroll = showScrollBar;
|
||||||
@@ -71,7 +87,7 @@ namespace TweetDuck.Core.Other{
|
|||||||
control.Width = flowLayoutPlugins.Width-control.Margin.Horizontal-horizontalOffset;
|
control.Width = flowLayoutPlugins.Width-control.Margin.Horizontal-horizontalOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
lastControl.Visible = !showScrollBar;
|
flowLayoutPlugins.Controls[flowLayoutPlugins.Controls.Count-1].Visible = !showScrollBar;
|
||||||
flowLayoutPlugins.Focus();
|
flowLayoutPlugins.Focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
20
Core/Other/FormSettings.Designer.cs
generated
@@ -33,10 +33,11 @@
|
|||||||
//
|
//
|
||||||
this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnClose.AutoSize = true;
|
this.btnClose.AutoSize = true;
|
||||||
this.btnClose.Location = new System.Drawing.Point(449, 504);
|
this.btnClose.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnClose.Location = new System.Drawing.Point(448, 525);
|
||||||
this.btnClose.Name = "btnClose";
|
this.btnClose.Name = "btnClose";
|
||||||
this.btnClose.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnClose.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnClose.Size = new System.Drawing.Size(49, 23);
|
this.btnClose.Size = new System.Drawing.Size(50, 25);
|
||||||
this.btnClose.TabIndex = 3;
|
this.btnClose.TabIndex = 3;
|
||||||
this.btnClose.Text = "Close";
|
this.btnClose.Text = "Close";
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
this.btnClose.UseVisualStyleBackColor = true;
|
||||||
@@ -52,7 +53,7 @@
|
|||||||
this.panelContents.Location = new System.Drawing.Point(135, 12);
|
this.panelContents.Location = new System.Drawing.Point(135, 12);
|
||||||
this.panelContents.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
this.panelContents.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||||
this.panelContents.Name = "panelContents";
|
this.panelContents.Name = "panelContents";
|
||||||
this.panelContents.Size = new System.Drawing.Size(363, 486);
|
this.panelContents.Size = new System.Drawing.Size(363, 507);
|
||||||
this.panelContents.TabIndex = 1;
|
this.panelContents.TabIndex = 1;
|
||||||
//
|
//
|
||||||
// panelButtons
|
// panelButtons
|
||||||
@@ -63,17 +64,18 @@
|
|||||||
this.panelButtons.Location = new System.Drawing.Point(12, 12);
|
this.panelButtons.Location = new System.Drawing.Point(12, 12);
|
||||||
this.panelButtons.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3);
|
this.panelButtons.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3);
|
||||||
this.panelButtons.Name = "panelButtons";
|
this.panelButtons.Name = "panelButtons";
|
||||||
this.panelButtons.Size = new System.Drawing.Size(124, 486);
|
this.panelButtons.Size = new System.Drawing.Size(124, 507);
|
||||||
this.panelButtons.TabIndex = 0;
|
this.panelButtons.TabIndex = 0;
|
||||||
//
|
//
|
||||||
// btnManageOptions
|
// btnManageOptions
|
||||||
//
|
//
|
||||||
this.btnManageOptions.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
this.btnManageOptions.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
this.btnManageOptions.AutoSize = true;
|
this.btnManageOptions.AutoSize = true;
|
||||||
this.btnManageOptions.Location = new System.Drawing.Point(12, 504);
|
this.btnManageOptions.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnManageOptions.Location = new System.Drawing.Point(12, 525);
|
||||||
this.btnManageOptions.Name = "btnManageOptions";
|
this.btnManageOptions.Name = "btnManageOptions";
|
||||||
this.btnManageOptions.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnManageOptions.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnManageOptions.Size = new System.Drawing.Size(101, 23);
|
this.btnManageOptions.Size = new System.Drawing.Size(109, 25);
|
||||||
this.btnManageOptions.TabIndex = 4;
|
this.btnManageOptions.TabIndex = 4;
|
||||||
this.btnManageOptions.Text = "Manage Options";
|
this.btnManageOptions.Text = "Manage Options";
|
||||||
this.btnManageOptions.UseVisualStyleBackColor = true;
|
this.btnManageOptions.UseVisualStyleBackColor = true;
|
||||||
@@ -83,7 +85,7 @@
|
|||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(510, 539);
|
this.ClientSize = new System.Drawing.Size(510, 562);
|
||||||
this.Controls.Add(this.btnManageOptions);
|
this.Controls.Add(this.btnManageOptions);
|
||||||
this.Controls.Add(this.panelContents);
|
this.Controls.Add(this.panelContents);
|
||||||
this.Controls.Add(this.panelButtons);
|
this.Controls.Add(this.panelButtons);
|
||||||
|
@@ -13,7 +13,7 @@ using TweetDuck.Plugins;
|
|||||||
using TweetDuck.Updates;
|
using TweetDuck.Updates;
|
||||||
|
|
||||||
namespace TweetDuck.Core.Other{
|
namespace TweetDuck.Core.Other{
|
||||||
sealed partial class FormSettings : Form{
|
sealed partial class FormSettings : Form, FormManager.IAppDialog{
|
||||||
private readonly FormBrowser browser;
|
private readonly FormBrowser browser;
|
||||||
private readonly PluginManager plugins;
|
private readonly PluginManager plugins;
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ namespace TweetDuck.Core.Other{
|
|||||||
AddButton("Notifications", () => new TabSettingsNotifications(new FormNotificationExample(this.browser, this.plugins)));
|
AddButton("Notifications", () => new TabSettingsNotifications(new FormNotificationExample(this.browser, this.plugins)));
|
||||||
AddButton("Sounds", () => new TabSettingsSounds(this.browser.PlaySoundNotification));
|
AddButton("Sounds", () => new TabSettingsSounds(this.browser.PlaySoundNotification));
|
||||||
AddButton("Feedback", () => new TabSettingsFeedback(analytics, AnalyticsReportGenerator.ExternalInfo.From(this.browser), this.plugins));
|
AddButton("Feedback", () => new TabSettingsFeedback(analytics, AnalyticsReportGenerator.ExternalInfo.From(this.browser), this.plugins));
|
||||||
AddButton("Advanced", () => new TabSettingsAdvanced(this.browser.ReinjectCustomCSS));
|
AddButton("Advanced", () => new TabSettingsAdvanced(this.browser.ReinjectCustomCSS, this.browser.OpenDevTools));
|
||||||
|
|
||||||
SelectTab(tabs[startTab ?? typeof(TabSettingsGeneral)]);
|
SelectTab(tabs[startTab ?? typeof(TabSettingsGeneral)]);
|
||||||
}
|
}
|
||||||
@@ -90,6 +90,7 @@ namespace TweetDuck.Core.Other{
|
|||||||
FlatButton btn = new FlatButton{
|
FlatButton btn = new FlatButton{
|
||||||
BackColor = SystemColors.Control,
|
BackColor = SystemColors.Control,
|
||||||
FlatStyle = FlatStyle.Flat,
|
FlatStyle = FlatStyle.Flat,
|
||||||
|
Font = SystemFonts.MessageBoxFont,
|
||||||
Location = new Point(0, (buttonHeight+1)*(panelButtons.Controls.Count/2)),
|
Location = new Point(0, (buttonHeight+1)*(panelButtons.Controls.Count/2)),
|
||||||
Margin = new Padding(0),
|
Margin = new Padding(0),
|
||||||
Size = new Size(panelButtons.Width, buttonHeight),
|
Size = new Size(panelButtons.Width, buttonHeight),
|
||||||
|
@@ -34,21 +34,23 @@
|
|||||||
| System.Windows.Forms.AnchorStyles.Left)
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.textBoxReport.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.textBoxReport.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.textBoxReport.Location = new System.Drawing.Point(12, 41);
|
this.textBoxReport.Location = new System.Drawing.Point(12, 45);
|
||||||
this.textBoxReport.Multiline = true;
|
this.textBoxReport.Multiline = true;
|
||||||
this.textBoxReport.Name = "textBoxReport";
|
this.textBoxReport.Name = "textBoxReport";
|
||||||
this.textBoxReport.ReadOnly = true;
|
this.textBoxReport.ReadOnly = true;
|
||||||
this.textBoxReport.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
this.textBoxReport.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||||
this.textBoxReport.Size = new System.Drawing.Size(460, 480);
|
this.textBoxReport.Size = new System.Drawing.Size(435, 474);
|
||||||
this.textBoxReport.TabIndex = 1;
|
this.textBoxReport.TabIndex = 1;
|
||||||
//
|
//
|
||||||
// btnClose
|
// btnClose
|
||||||
//
|
//
|
||||||
this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnClose.Location = new System.Drawing.Point(416, 527);
|
this.btnClose.AutoSize = true;
|
||||||
|
this.btnClose.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnClose.Location = new System.Drawing.Point(397, 525);
|
||||||
this.btnClose.Name = "btnClose";
|
this.btnClose.Name = "btnClose";
|
||||||
this.btnClose.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnClose.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnClose.Size = new System.Drawing.Size(56, 23);
|
this.btnClose.Size = new System.Drawing.Size(50, 25);
|
||||||
this.btnClose.TabIndex = 2;
|
this.btnClose.TabIndex = 2;
|
||||||
this.btnClose.Text = "Close";
|
this.btnClose.Text = "Close";
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
this.btnClose.UseVisualStyleBackColor = true;
|
||||||
@@ -56,23 +58,25 @@
|
|||||||
//
|
//
|
||||||
// labelInfo
|
// labelInfo
|
||||||
//
|
//
|
||||||
|
this.labelInfo.AutoSize = true;
|
||||||
|
this.labelInfo.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelInfo.Location = new System.Drawing.Point(12, 9);
|
this.labelInfo.Location = new System.Drawing.Point(12, 9);
|
||||||
this.labelInfo.Margin = new System.Windows.Forms.Padding(3, 0, 3, 3);
|
this.labelInfo.Margin = new System.Windows.Forms.Padding(3, 0, 3, 3);
|
||||||
this.labelInfo.Name = "labelInfo";
|
this.labelInfo.Name = "labelInfo";
|
||||||
this.labelInfo.Size = new System.Drawing.Size(460, 26);
|
this.labelInfo.Size = new System.Drawing.Size(434, 30);
|
||||||
this.labelInfo.TabIndex = 0;
|
this.labelInfo.TabIndex = 0;
|
||||||
this.labelInfo.Text = "When enabled, this data will be sent over a secure network roughly once every wee" +
|
this.labelInfo.Text = "When enabled, this data will be sent over a secure network roughly every 14 days." +
|
||||||
"k.\r\nSome numbers in the report were made imprecise on purpose.";
|
"\r\nSome numbers in the report were made imprecise on purpose.";
|
||||||
//
|
//
|
||||||
// DialogSettingsAnalytics
|
// DialogSettingsAnalytics
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(484, 562);
|
this.ClientSize = new System.Drawing.Size(459, 562);
|
||||||
this.Controls.Add(this.labelInfo);
|
this.Controls.Add(this.labelInfo);
|
||||||
this.Controls.Add(this.btnClose);
|
this.Controls.Add(this.btnClose);
|
||||||
this.Controls.Add(this.textBoxReport);
|
this.Controls.Add(this.textBoxReport);
|
||||||
this.MinimumSize = new System.Drawing.Size(450, 340);
|
this.MinimumSize = new System.Drawing.Size(475, 340);
|
||||||
this.Name = "DialogSettingsAnalytics";
|
this.Name = "DialogSettingsAnalytics";
|
||||||
this.ShowIcon = false;
|
this.ShowIcon = false;
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
|
@@ -27,40 +27,41 @@
|
|||||||
this.textBoxBrowserCSS = new System.Windows.Forms.TextBox();
|
this.textBoxBrowserCSS = new System.Windows.Forms.TextBox();
|
||||||
this.btnCancel = new System.Windows.Forms.Button();
|
this.btnCancel = new System.Windows.Forms.Button();
|
||||||
this.btnApply = new System.Windows.Forms.Button();
|
this.btnApply = new System.Windows.Forms.Button();
|
||||||
this.splitContainer = new System.Windows.Forms.SplitContainer();
|
|
||||||
this.labelBrowser = new System.Windows.Forms.Label();
|
|
||||||
this.labelNotification = new System.Windows.Forms.Label();
|
|
||||||
this.textBoxNotificationCSS = new System.Windows.Forms.TextBox();
|
this.textBoxNotificationCSS = new System.Windows.Forms.TextBox();
|
||||||
this.labelWarning = new System.Windows.Forms.Label();
|
this.btnOpenDevTools = new System.Windows.Forms.Button();
|
||||||
this.btnOpenWiki = new System.Windows.Forms.Button();
|
|
||||||
this.timerTestBrowser = new System.Windows.Forms.Timer(this.components);
|
this.timerTestBrowser = new System.Windows.Forms.Timer(this.components);
|
||||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
|
this.tabPanel = new System.Windows.Forms.TabControl();
|
||||||
this.splitContainer.Panel1.SuspendLayout();
|
this.tabPageBrowser = new System.Windows.Forms.TabPage();
|
||||||
this.splitContainer.Panel2.SuspendLayout();
|
this.tabPageNotification = new System.Windows.Forms.TabPage();
|
||||||
this.splitContainer.SuspendLayout();
|
this.tabPanel.SuspendLayout();
|
||||||
|
this.tabPageBrowser.SuspendLayout();
|
||||||
|
this.tabPageNotification.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// textBoxBrowserCSS
|
// textBoxBrowserCSS
|
||||||
//
|
//
|
||||||
this.textBoxBrowserCSS.Dock = System.Windows.Forms.DockStyle.Bottom;
|
this.textBoxBrowserCSS.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.textBoxBrowserCSS.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.textBoxBrowserCSS.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.textBoxBrowserCSS.Location = new System.Drawing.Point(0, 16);
|
this.textBoxBrowserCSS.Location = new System.Drawing.Point(3, 3);
|
||||||
this.textBoxBrowserCSS.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0);
|
this.textBoxBrowserCSS.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0);
|
||||||
this.textBoxBrowserCSS.Multiline = true;
|
this.textBoxBrowserCSS.Multiline = true;
|
||||||
this.textBoxBrowserCSS.Name = "textBoxBrowserCSS";
|
this.textBoxBrowserCSS.Name = "textBoxBrowserCSS";
|
||||||
this.textBoxBrowserCSS.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
this.textBoxBrowserCSS.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||||
this.textBoxBrowserCSS.Size = new System.Drawing.Size(378, 253);
|
this.textBoxBrowserCSS.Size = new System.Drawing.Size(426, 332);
|
||||||
this.textBoxBrowserCSS.TabIndex = 1;
|
this.textBoxBrowserCSS.TabIndex = 0;
|
||||||
this.textBoxBrowserCSS.WordWrap = false;
|
this.textBoxBrowserCSS.WordWrap = false;
|
||||||
|
this.textBoxBrowserCSS.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBoxCSS_KeyDown);
|
||||||
this.textBoxBrowserCSS.KeyUp += new System.Windows.Forms.KeyEventHandler(this.textBoxBrowserCSS_KeyUp);
|
this.textBoxBrowserCSS.KeyUp += new System.Windows.Forms.KeyEventHandler(this.textBoxBrowserCSS_KeyUp);
|
||||||
//
|
//
|
||||||
// btnCancel
|
// btnCancel
|
||||||
//
|
//
|
||||||
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnCancel.Location = new System.Drawing.Point(654, 287);
|
this.btnCancel.AutoSize = true;
|
||||||
|
this.btnCancel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.btnCancel.Location = new System.Drawing.Point(337, 384);
|
||||||
this.btnCancel.Name = "btnCancel";
|
this.btnCancel.Name = "btnCancel";
|
||||||
this.btnCancel.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnCancel.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnCancel.Size = new System.Drawing.Size(56, 23);
|
this.btnCancel.Size = new System.Drawing.Size(57, 25);
|
||||||
this.btnCancel.TabIndex = 2;
|
this.btnCancel.TabIndex = 2;
|
||||||
this.btnCancel.Text = "Cancel";
|
this.btnCancel.Text = "Cancel";
|
||||||
this.btnCancel.UseVisualStyleBackColor = true;
|
this.btnCancel.UseVisualStyleBackColor = true;
|
||||||
@@ -69,119 +70,105 @@
|
|||||||
// btnApply
|
// btnApply
|
||||||
//
|
//
|
||||||
this.btnApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnApply.Location = new System.Drawing.Point(716, 287);
|
this.btnApply.AutoSize = true;
|
||||||
|
this.btnApply.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.btnApply.Location = new System.Drawing.Point(400, 384);
|
||||||
this.btnApply.Name = "btnApply";
|
this.btnApply.Name = "btnApply";
|
||||||
this.btnApply.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnApply.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnApply.Size = new System.Drawing.Size(56, 23);
|
this.btnApply.Size = new System.Drawing.Size(52, 25);
|
||||||
this.btnApply.TabIndex = 1;
|
this.btnApply.TabIndex = 1;
|
||||||
this.btnApply.Text = "Apply";
|
this.btnApply.Text = "Apply";
|
||||||
this.btnApply.UseVisualStyleBackColor = true;
|
this.btnApply.UseVisualStyleBackColor = true;
|
||||||
this.btnApply.Click += new System.EventHandler(this.btnApply_Click);
|
this.btnApply.Click += new System.EventHandler(this.btnApply_Click);
|
||||||
//
|
//
|
||||||
// splitContainer
|
|
||||||
//
|
|
||||||
this.splitContainer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
|
||||||
| System.Windows.Forms.AnchorStyles.Left)
|
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
|
||||||
this.splitContainer.Location = new System.Drawing.Point(12, 12);
|
|
||||||
this.splitContainer.Name = "splitContainer";
|
|
||||||
//
|
|
||||||
// splitContainer.Panel1
|
|
||||||
//
|
|
||||||
this.splitContainer.Panel1.Controls.Add(this.labelBrowser);
|
|
||||||
this.splitContainer.Panel1.Controls.Add(this.textBoxBrowserCSS);
|
|
||||||
this.splitContainer.Panel1MinSize = 64;
|
|
||||||
//
|
|
||||||
// splitContainer.Panel2
|
|
||||||
//
|
|
||||||
this.splitContainer.Panel2.Controls.Add(this.labelNotification);
|
|
||||||
this.splitContainer.Panel2.Controls.Add(this.textBoxNotificationCSS);
|
|
||||||
this.splitContainer.Panel2MinSize = 64;
|
|
||||||
this.splitContainer.Size = new System.Drawing.Size(760, 269);
|
|
||||||
this.splitContainer.SplitterDistance = 378;
|
|
||||||
this.splitContainer.SplitterWidth = 5;
|
|
||||||
this.splitContainer.TabIndex = 0;
|
|
||||||
//
|
|
||||||
// labelBrowser
|
|
||||||
//
|
|
||||||
this.labelBrowser.AutoSize = true;
|
|
||||||
this.labelBrowser.Location = new System.Drawing.Point(-3, 0);
|
|
||||||
this.labelBrowser.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
|
||||||
this.labelBrowser.Name = "labelBrowser";
|
|
||||||
this.labelBrowser.Size = new System.Drawing.Size(45, 13);
|
|
||||||
this.labelBrowser.TabIndex = 0;
|
|
||||||
this.labelBrowser.Text = "Browser";
|
|
||||||
//
|
|
||||||
// labelNotification
|
|
||||||
//
|
|
||||||
this.labelNotification.AutoSize = true;
|
|
||||||
this.labelNotification.Location = new System.Drawing.Point(-3, 0);
|
|
||||||
this.labelNotification.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
|
||||||
this.labelNotification.Name = "labelNotification";
|
|
||||||
this.labelNotification.Size = new System.Drawing.Size(60, 13);
|
|
||||||
this.labelNotification.TabIndex = 0;
|
|
||||||
this.labelNotification.Text = "Notification";
|
|
||||||
//
|
|
||||||
// textBoxNotificationCSS
|
// textBoxNotificationCSS
|
||||||
//
|
//
|
||||||
this.textBoxNotificationCSS.Dock = System.Windows.Forms.DockStyle.Bottom;
|
this.textBoxNotificationCSS.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.textBoxNotificationCSS.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.textBoxNotificationCSS.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.textBoxNotificationCSS.Location = new System.Drawing.Point(0, 16);
|
this.textBoxNotificationCSS.Location = new System.Drawing.Point(3, 3);
|
||||||
this.textBoxNotificationCSS.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0);
|
this.textBoxNotificationCSS.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0);
|
||||||
this.textBoxNotificationCSS.Multiline = true;
|
this.textBoxNotificationCSS.Multiline = true;
|
||||||
this.textBoxNotificationCSS.Name = "textBoxNotificationCSS";
|
this.textBoxNotificationCSS.Name = "textBoxNotificationCSS";
|
||||||
this.textBoxNotificationCSS.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
this.textBoxNotificationCSS.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||||
this.textBoxNotificationCSS.Size = new System.Drawing.Size(377, 253);
|
this.textBoxNotificationCSS.Size = new System.Drawing.Size(426, 332);
|
||||||
this.textBoxNotificationCSS.TabIndex = 1;
|
this.textBoxNotificationCSS.TabIndex = 0;
|
||||||
this.textBoxNotificationCSS.WordWrap = false;
|
this.textBoxNotificationCSS.WordWrap = false;
|
||||||
|
this.textBoxNotificationCSS.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBoxCSS_KeyDown);
|
||||||
//
|
//
|
||||||
// labelWarning
|
// btnOpenDevTools
|
||||||
//
|
//
|
||||||
this.labelWarning.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
this.btnOpenDevTools.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
this.labelWarning.AutoSize = true;
|
this.btnOpenDevTools.AutoSize = true;
|
||||||
this.labelWarning.Location = new System.Drawing.Point(91, 292);
|
this.btnOpenDevTools.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.labelWarning.Name = "labelWarning";
|
this.btnOpenDevTools.Location = new System.Drawing.Point(12, 384);
|
||||||
this.labelWarning.Size = new System.Drawing.Size(341, 13);
|
this.btnOpenDevTools.Name = "btnOpenDevTools";
|
||||||
this.labelWarning.TabIndex = 3;
|
this.btnOpenDevTools.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.labelWarning.Text = "The code is not validated, please make sure there are no syntax errors.";
|
this.btnOpenDevTools.Size = new System.Drawing.Size(104, 25);
|
||||||
//
|
this.btnOpenDevTools.TabIndex = 3;
|
||||||
// btnOpenWiki
|
this.btnOpenDevTools.Text = "Open Dev Tools";
|
||||||
//
|
this.btnOpenDevTools.UseVisualStyleBackColor = true;
|
||||||
this.btnOpenWiki.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
this.btnOpenDevTools.Click += new System.EventHandler(this.btnOpenDevTools_Click);
|
||||||
this.btnOpenWiki.Location = new System.Drawing.Point(12, 287);
|
|
||||||
this.btnOpenWiki.Name = "btnOpenWiki";
|
|
||||||
this.btnOpenWiki.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
|
||||||
this.btnOpenWiki.Size = new System.Drawing.Size(73, 23);
|
|
||||||
this.btnOpenWiki.TabIndex = 4;
|
|
||||||
this.btnOpenWiki.Text = "Open Wiki";
|
|
||||||
this.btnOpenWiki.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOpenWiki.Click += new System.EventHandler(this.btnOpenWiki_Click);
|
|
||||||
//
|
//
|
||||||
// timerTestBrowser
|
// timerTestBrowser
|
||||||
//
|
//
|
||||||
this.timerTestBrowser.Interval = 500;
|
this.timerTestBrowser.Interval = 400;
|
||||||
this.timerTestBrowser.Tick += new System.EventHandler(this.timerTestBrowser_Tick);
|
this.timerTestBrowser.Tick += new System.EventHandler(this.timerTestBrowser_Tick);
|
||||||
//
|
//
|
||||||
|
// tabPanel
|
||||||
|
//
|
||||||
|
this.tabPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.tabPanel.Controls.Add(this.tabPageBrowser);
|
||||||
|
this.tabPanel.Controls.Add(this.tabPageNotification);
|
||||||
|
this.tabPanel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.tabPanel.Location = new System.Drawing.Point(12, 12);
|
||||||
|
this.tabPanel.Name = "tabPanel";
|
||||||
|
this.tabPanel.SelectedIndex = 0;
|
||||||
|
this.tabPanel.Size = new System.Drawing.Size(440, 366);
|
||||||
|
this.tabPanel.TabIndex = 0;
|
||||||
|
this.tabPanel.SelectedIndexChanged += new System.EventHandler(this.tabPanel_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// tabPageBrowser
|
||||||
|
//
|
||||||
|
this.tabPageBrowser.Controls.Add(this.textBoxBrowserCSS);
|
||||||
|
this.tabPageBrowser.Location = new System.Drawing.Point(4, 24);
|
||||||
|
this.tabPageBrowser.Name = "tabPageBrowser";
|
||||||
|
this.tabPageBrowser.Padding = new System.Windows.Forms.Padding(3);
|
||||||
|
this.tabPageBrowser.Size = new System.Drawing.Size(432, 338);
|
||||||
|
this.tabPageBrowser.TabIndex = 0;
|
||||||
|
this.tabPageBrowser.Text = "Browser";
|
||||||
|
this.tabPageBrowser.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// tabPageNotification
|
||||||
|
//
|
||||||
|
this.tabPageNotification.Controls.Add(this.textBoxNotificationCSS);
|
||||||
|
this.tabPageNotification.Location = new System.Drawing.Point(4, 24);
|
||||||
|
this.tabPageNotification.Name = "tabPageNotification";
|
||||||
|
this.tabPageNotification.Padding = new System.Windows.Forms.Padding(3);
|
||||||
|
this.tabPageNotification.Size = new System.Drawing.Size(432, 338);
|
||||||
|
this.tabPageNotification.TabIndex = 1;
|
||||||
|
this.tabPageNotification.Text = "Notification";
|
||||||
|
this.tabPageNotification.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
// DialogSettingsCSS
|
// DialogSettingsCSS
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(784, 322);
|
this.ClientSize = new System.Drawing.Size(464, 421);
|
||||||
this.Controls.Add(this.btnOpenWiki);
|
this.Controls.Add(this.tabPanel);
|
||||||
this.Controls.Add(this.labelWarning);
|
this.Controls.Add(this.btnOpenDevTools);
|
||||||
this.Controls.Add(this.splitContainer);
|
|
||||||
this.Controls.Add(this.btnApply);
|
this.Controls.Add(this.btnApply);
|
||||||
this.Controls.Add(this.btnCancel);
|
this.Controls.Add(this.btnCancel);
|
||||||
this.MinimumSize = new System.Drawing.Size(600, 160);
|
this.MinimumSize = new System.Drawing.Size(320, 240);
|
||||||
this.Name = "DialogSettingsCSS";
|
this.Name = "DialogSettingsCSS";
|
||||||
this.ShowIcon = false;
|
this.ShowIcon = false;
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
this.splitContainer.Panel1.ResumeLayout(false);
|
this.tabPanel.ResumeLayout(false);
|
||||||
this.splitContainer.Panel1.PerformLayout();
|
this.tabPageBrowser.ResumeLayout(false);
|
||||||
this.splitContainer.Panel2.ResumeLayout(false);
|
this.tabPageBrowser.PerformLayout();
|
||||||
this.splitContainer.Panel2.PerformLayout();
|
this.tabPageNotification.ResumeLayout(false);
|
||||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit();
|
this.tabPageNotification.PerformLayout();
|
||||||
this.splitContainer.ResumeLayout(false);
|
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
this.PerformLayout();
|
||||||
|
|
||||||
@@ -192,12 +179,11 @@
|
|||||||
private System.Windows.Forms.TextBox textBoxBrowserCSS;
|
private System.Windows.Forms.TextBox textBoxBrowserCSS;
|
||||||
private System.Windows.Forms.Button btnCancel;
|
private System.Windows.Forms.Button btnCancel;
|
||||||
private System.Windows.Forms.Button btnApply;
|
private System.Windows.Forms.Button btnApply;
|
||||||
private System.Windows.Forms.SplitContainer splitContainer;
|
|
||||||
private System.Windows.Forms.TextBox textBoxNotificationCSS;
|
private System.Windows.Forms.TextBox textBoxNotificationCSS;
|
||||||
private System.Windows.Forms.Label labelBrowser;
|
private System.Windows.Forms.Button btnOpenDevTools;
|
||||||
private System.Windows.Forms.Label labelNotification;
|
|
||||||
private System.Windows.Forms.Label labelWarning;
|
|
||||||
private System.Windows.Forms.Button btnOpenWiki;
|
|
||||||
private System.Windows.Forms.Timer timerTestBrowser;
|
private System.Windows.Forms.Timer timerTestBrowser;
|
||||||
|
private System.Windows.Forms.TabControl tabPanel;
|
||||||
|
private System.Windows.Forms.TabPage tabPageBrowser;
|
||||||
|
private System.Windows.Forms.TabPage tabPageNotification;
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,4 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using TweetDuck.Core.Controls;
|
using TweetDuck.Core.Controls;
|
||||||
using TweetDuck.Core.Utils;
|
using TweetDuck.Core.Utils;
|
||||||
@@ -9,19 +11,108 @@ namespace TweetDuck.Core.Other.Settings.Dialogs{
|
|||||||
public string NotificationCSS => textBoxNotificationCSS.Text;
|
public string NotificationCSS => textBoxNotificationCSS.Text;
|
||||||
|
|
||||||
private readonly Action<string> reinjectBrowserCSS;
|
private readonly Action<string> reinjectBrowserCSS;
|
||||||
|
private readonly Action openDevTools;
|
||||||
|
|
||||||
public DialogSettingsCSS(Action<string> reinjectBrowserCSS){
|
public DialogSettingsCSS(Action<string> reinjectBrowserCSS, Action openDevTools){
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
Text = Program.BrandName+" Options - CSS";
|
Text = Program.BrandName+" Options - CSS";
|
||||||
|
|
||||||
this.reinjectBrowserCSS = reinjectBrowserCSS;
|
this.reinjectBrowserCSS = reinjectBrowserCSS;
|
||||||
|
this.openDevTools = openDevTools;
|
||||||
|
|
||||||
textBoxBrowserCSS.EnableMultilineShortcuts();
|
textBoxBrowserCSS.EnableMultilineShortcuts();
|
||||||
textBoxBrowserCSS.Text = Program.UserConfig.CustomBrowserCSS ?? "";
|
textBoxBrowserCSS.Text = Program.UserConfig.CustomBrowserCSS ?? "";
|
||||||
|
|
||||||
textBoxNotificationCSS.EnableMultilineShortcuts();
|
textBoxNotificationCSS.EnableMultilineShortcuts();
|
||||||
textBoxNotificationCSS.Text = Program.UserConfig.CustomNotificationCSS ?? "";
|
textBoxNotificationCSS.Text = Program.UserConfig.CustomNotificationCSS ?? "";
|
||||||
|
|
||||||
|
if (!BrowserUtils.HasDevTools){
|
||||||
|
btnOpenDevTools.Enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
ActiveControl = textBoxBrowserCSS;
|
||||||
|
textBoxBrowserCSS.Select(textBoxBrowserCSS.TextLength, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tabPanel_SelectedIndexChanged(object sender, EventArgs e){
|
||||||
|
TextBox tb = tabPanel.SelectedTab.Controls.OfType<TextBox>().FirstOrDefault();
|
||||||
|
|
||||||
|
if (tb != null){
|
||||||
|
tb.Focus();
|
||||||
|
tb.Select(tb.TextLength, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void textBoxCSS_KeyDown(object sender, KeyEventArgs e){
|
||||||
|
TextBox tb = (TextBox)sender;
|
||||||
|
string text = tb.Text;
|
||||||
|
|
||||||
|
if (e.KeyCode == Keys.Back && e.Modifiers == Keys.Control){
|
||||||
|
e.SuppressKeyPress = true;
|
||||||
|
|
||||||
|
int deleteTo = tb.SelectionStart;
|
||||||
|
|
||||||
|
if (deleteTo > 0){
|
||||||
|
char initialChar = text[--deleteTo];
|
||||||
|
bool shouldDeleteAlphanumeric = char.IsLetterOrDigit(initialChar);
|
||||||
|
|
||||||
|
while(--deleteTo >= 0){
|
||||||
|
if ((shouldDeleteAlphanumeric && !char.IsLetterOrDigit(text[deleteTo])) ||
|
||||||
|
(!shouldDeleteAlphanumeric && text[deleteTo] != initialChar)){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(deleteTo < text.Length-1 && text[deleteTo] == '\r' && text[deleteTo+1] == '\n')){
|
||||||
|
++deleteTo;
|
||||||
|
}
|
||||||
|
|
||||||
|
tb.Select(deleteTo, tb.SelectionLength+tb.SelectionStart-deleteTo);
|
||||||
|
tb.SelectedText = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (e.KeyCode == Keys.Back && e.Modifiers == Keys.None){
|
||||||
|
int deleteTo = tb.SelectionStart;
|
||||||
|
|
||||||
|
if (deleteTo > 1 && text[deleteTo-1] == ' ' && text[deleteTo-2] == ' '){
|
||||||
|
e.SuppressKeyPress = true;
|
||||||
|
|
||||||
|
tb.Select(deleteTo-2, 2);
|
||||||
|
tb.SelectedText = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (e.KeyCode == Keys.Enter && e.Modifiers == Keys.None && tb.SelectionLength == 0){
|
||||||
|
int insertAt = tb.SelectionStart, cursorOffset = 0;
|
||||||
|
string insertText;
|
||||||
|
|
||||||
|
if (insertAt == 0){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (text[insertAt-1] == '{'){
|
||||||
|
insertText = Environment.NewLine+" ";
|
||||||
|
|
||||||
|
int nextBracket = insertAt < text.Length ? text.IndexOfAny(new char[]{ '{', '}' }, insertAt+1) : -1;
|
||||||
|
|
||||||
|
if (nextBracket == -1 || text[nextBracket] == '{'){
|
||||||
|
string insertExtra = Environment.NewLine+"}";
|
||||||
|
insertText += insertExtra;
|
||||||
|
cursorOffset -= insertExtra.Length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
int lineStart = text.LastIndexOf('\n', tb.SelectionStart-1);
|
||||||
|
|
||||||
|
Match match = Regex.Match(text.Substring(lineStart == -1 ? 0 : lineStart+1), "^([ \t]+)");
|
||||||
|
insertText = match.Success ? Environment.NewLine+match.Groups[1].Value : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(insertText)){
|
||||||
|
e.SuppressKeyPress = true;
|
||||||
|
tb.Text = text.Insert(insertAt, insertText);
|
||||||
|
tb.SelectionStart = insertAt+cursorOffset+insertText.Length;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void textBoxBrowserCSS_KeyUp(object sender, KeyEventArgs e){
|
private void textBoxBrowserCSS_KeyUp(object sender, KeyEventArgs e){
|
||||||
@@ -34,8 +125,8 @@ namespace TweetDuck.Core.Other.Settings.Dialogs{
|
|||||||
timerTestBrowser.Stop();
|
timerTestBrowser.Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnOpenWiki_Click(object sender, EventArgs e){
|
private void btnOpenDevTools_Click(object sender, EventArgs e){
|
||||||
BrowserUtils.OpenExternalBrowser("https://github.com/chylex/TweetDuck/wiki");
|
openDevTools();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnApply_Click(object sender, EventArgs e){
|
private void btnApply_Click(object sender, EventArgs e){
|
||||||
|
@@ -36,19 +36,21 @@
|
|||||||
| System.Windows.Forms.AnchorStyles.Left)
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.textBoxArgs.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.textBoxArgs.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.textBoxArgs.Location = new System.Drawing.Point(12, 28);
|
this.textBoxArgs.Location = new System.Drawing.Point(12, 30);
|
||||||
this.textBoxArgs.Multiline = true;
|
this.textBoxArgs.Multiline = true;
|
||||||
this.textBoxArgs.Name = "textBoxArgs";
|
this.textBoxArgs.Name = "textBoxArgs";
|
||||||
this.textBoxArgs.Size = new System.Drawing.Size(460, 193);
|
this.textBoxArgs.Size = new System.Drawing.Size(480, 189);
|
||||||
this.textBoxArgs.TabIndex = 1;
|
this.textBoxArgs.TabIndex = 1;
|
||||||
//
|
//
|
||||||
// btnCancel
|
// btnCancel
|
||||||
//
|
//
|
||||||
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnCancel.Location = new System.Drawing.Point(354, 227);
|
this.btnCancel.AutoSize = true;
|
||||||
|
this.btnCancel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnCancel.Location = new System.Drawing.Point(377, 225);
|
||||||
this.btnCancel.Name = "btnCancel";
|
this.btnCancel.Name = "btnCancel";
|
||||||
this.btnCancel.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnCancel.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnCancel.Size = new System.Drawing.Size(56, 23);
|
this.btnCancel.Size = new System.Drawing.Size(57, 25);
|
||||||
this.btnCancel.TabIndex = 3;
|
this.btnCancel.TabIndex = 3;
|
||||||
this.btnCancel.Text = "Cancel";
|
this.btnCancel.Text = "Cancel";
|
||||||
this.btnCancel.UseVisualStyleBackColor = true;
|
this.btnCancel.UseVisualStyleBackColor = true;
|
||||||
@@ -57,10 +59,12 @@
|
|||||||
// btnApply
|
// btnApply
|
||||||
//
|
//
|
||||||
this.btnApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnApply.Location = new System.Drawing.Point(416, 227);
|
this.btnApply.AutoSize = true;
|
||||||
|
this.btnApply.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnApply.Location = new System.Drawing.Point(440, 225);
|
||||||
this.btnApply.Name = "btnApply";
|
this.btnApply.Name = "btnApply";
|
||||||
this.btnApply.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnApply.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnApply.Size = new System.Drawing.Size(56, 23);
|
this.btnApply.Size = new System.Drawing.Size(52, 25);
|
||||||
this.btnApply.TabIndex = 2;
|
this.btnApply.TabIndex = 2;
|
||||||
this.btnApply.Text = "Apply";
|
this.btnApply.Text = "Apply";
|
||||||
this.btnApply.UseVisualStyleBackColor = true;
|
this.btnApply.UseVisualStyleBackColor = true;
|
||||||
@@ -69,10 +73,12 @@
|
|||||||
// btnHelp
|
// btnHelp
|
||||||
//
|
//
|
||||||
this.btnHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
this.btnHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
this.btnHelp.Location = new System.Drawing.Point(12, 227);
|
this.btnHelp.AutoSize = true;
|
||||||
|
this.btnHelp.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnHelp.Location = new System.Drawing.Point(12, 225);
|
||||||
this.btnHelp.Name = "btnHelp";
|
this.btnHelp.Name = "btnHelp";
|
||||||
this.btnHelp.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnHelp.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnHelp.Size = new System.Drawing.Size(124, 23);
|
this.btnHelp.Size = new System.Drawing.Size(141, 25);
|
||||||
this.btnHelp.TabIndex = 4;
|
this.btnHelp.TabIndex = 4;
|
||||||
this.btnHelp.Text = "List of Chromium Args";
|
this.btnHelp.Text = "List of Chromium Args";
|
||||||
this.btnHelp.UseVisualStyleBackColor = true;
|
this.btnHelp.UseVisualStyleBackColor = true;
|
||||||
@@ -81,10 +87,11 @@
|
|||||||
// labelWarning
|
// labelWarning
|
||||||
//
|
//
|
||||||
this.labelWarning.AutoSize = true;
|
this.labelWarning.AutoSize = true;
|
||||||
|
this.labelWarning.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelWarning.Location = new System.Drawing.Point(12, 9);
|
this.labelWarning.Location = new System.Drawing.Point(12, 9);
|
||||||
this.labelWarning.Margin = new System.Windows.Forms.Padding(3, 0, 3, 3);
|
this.labelWarning.Margin = new System.Windows.Forms.Padding(3, 0, 3, 3);
|
||||||
this.labelWarning.Name = "labelWarning";
|
this.labelWarning.Name = "labelWarning";
|
||||||
this.labelWarning.Size = new System.Drawing.Size(423, 13);
|
this.labelWarning.Size = new System.Drawing.Size(478, 15);
|
||||||
this.labelWarning.TabIndex = 0;
|
this.labelWarning.TabIndex = 0;
|
||||||
this.labelWarning.Text = "Warning: Some arguments may cause the program to stop working, edit at your own r" +
|
this.labelWarning.Text = "Warning: Some arguments may cause the program to stop working, edit at your own r" +
|
||||||
"isk.";
|
"isk.";
|
||||||
@@ -93,13 +100,13 @@
|
|||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(484, 262);
|
this.ClientSize = new System.Drawing.Size(504, 262);
|
||||||
this.Controls.Add(this.labelWarning);
|
this.Controls.Add(this.labelWarning);
|
||||||
this.Controls.Add(this.btnHelp);
|
this.Controls.Add(this.btnHelp);
|
||||||
this.Controls.Add(this.btnApply);
|
this.Controls.Add(this.btnApply);
|
||||||
this.Controls.Add(this.btnCancel);
|
this.Controls.Add(this.btnCancel);
|
||||||
this.Controls.Add(this.textBoxArgs);
|
this.Controls.Add(this.textBoxArgs);
|
||||||
this.MinimumSize = new System.Drawing.Size(500, 160);
|
this.MinimumSize = new System.Drawing.Size(520, 160);
|
||||||
this.Name = "DialogSettingsCefArgs";
|
this.Name = "DialogSettingsCefArgs";
|
||||||
this.ShowIcon = false;
|
this.ShowIcon = false;
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
|
@@ -43,10 +43,12 @@
|
|||||||
// btnCancel
|
// btnCancel
|
||||||
//
|
//
|
||||||
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnCancel.Location = new System.Drawing.Point(176, 97);
|
this.btnCancel.AutoSize = true;
|
||||||
|
this.btnCancel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnCancel.Location = new System.Drawing.Point(165, 92);
|
||||||
this.btnCancel.Name = "btnCancel";
|
this.btnCancel.Name = "btnCancel";
|
||||||
this.btnCancel.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnCancel.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnCancel.Size = new System.Drawing.Size(56, 23);
|
this.btnCancel.Size = new System.Drawing.Size(57, 25);
|
||||||
this.btnCancel.TabIndex = 4;
|
this.btnCancel.TabIndex = 4;
|
||||||
this.btnCancel.Text = "Cancel";
|
this.btnCancel.Text = "Cancel";
|
||||||
this.btnCancel.UseVisualStyleBackColor = true;
|
this.btnCancel.UseVisualStyleBackColor = true;
|
||||||
@@ -57,10 +59,11 @@
|
|||||||
this.btnContinue.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnContinue.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnContinue.AutoSize = true;
|
this.btnContinue.AutoSize = true;
|
||||||
this.btnContinue.Enabled = false;
|
this.btnContinue.Enabled = false;
|
||||||
this.btnContinue.Location = new System.Drawing.Point(119, 97);
|
this.btnContinue.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnContinue.Location = new System.Drawing.Point(114, 92);
|
||||||
this.btnContinue.Name = "btnContinue";
|
this.btnContinue.Name = "btnContinue";
|
||||||
this.btnContinue.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnContinue.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnContinue.Size = new System.Drawing.Size(51, 23);
|
this.btnContinue.Size = new System.Drawing.Size(45, 25);
|
||||||
this.btnContinue.TabIndex = 3;
|
this.btnContinue.TabIndex = 3;
|
||||||
this.btnContinue.Text = "Next";
|
this.btnContinue.Text = "Next";
|
||||||
this.btnContinue.UseVisualStyleBackColor = true;
|
this.btnContinue.UseVisualStyleBackColor = true;
|
||||||
@@ -69,9 +72,11 @@
|
|||||||
// cbProgramConfig
|
// cbProgramConfig
|
||||||
//
|
//
|
||||||
this.cbProgramConfig.AutoSize = true;
|
this.cbProgramConfig.AutoSize = true;
|
||||||
|
this.cbProgramConfig.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.cbProgramConfig.Location = new System.Drawing.Point(3, 3);
|
this.cbProgramConfig.Location = new System.Drawing.Point(3, 3);
|
||||||
|
this.cbProgramConfig.Margin = new System.Windows.Forms.Padding(3, 3, 3, 2);
|
||||||
this.cbProgramConfig.Name = "cbProgramConfig";
|
this.cbProgramConfig.Name = "cbProgramConfig";
|
||||||
this.cbProgramConfig.Size = new System.Drawing.Size(104, 17);
|
this.cbProgramConfig.Size = new System.Drawing.Size(117, 19);
|
||||||
this.cbProgramConfig.TabIndex = 0;
|
this.cbProgramConfig.TabIndex = 0;
|
||||||
this.cbProgramConfig.Text = "Program Options";
|
this.cbProgramConfig.Text = "Program Options";
|
||||||
this.toolTip.SetToolTip(this.cbProgramConfig, "Interface, notification, and update options.");
|
this.toolTip.SetToolTip(this.cbProgramConfig, "Interface, notification, and update options.");
|
||||||
@@ -81,9 +86,11 @@
|
|||||||
// cbSession
|
// cbSession
|
||||||
//
|
//
|
||||||
this.cbSession.AutoSize = true;
|
this.cbSession.AutoSize = true;
|
||||||
this.cbSession.Location = new System.Drawing.Point(3, 49);
|
this.cbSession.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.cbSession.Location = new System.Drawing.Point(3, 51);
|
||||||
|
this.cbSession.Margin = new System.Windows.Forms.Padding(3, 3, 3, 2);
|
||||||
this.cbSession.Name = "cbSession";
|
this.cbSession.Name = "cbSession";
|
||||||
this.cbSession.Size = new System.Drawing.Size(92, 17);
|
this.cbSession.Size = new System.Drawing.Size(98, 19);
|
||||||
this.cbSession.TabIndex = 2;
|
this.cbSession.TabIndex = 2;
|
||||||
this.cbSession.Text = "Login Session";
|
this.cbSession.Text = "Login Session";
|
||||||
this.toolTip.SetToolTip(this.cbSession, "A token that allows logging into the\r\ncurrent TweetDeck account.");
|
this.toolTip.SetToolTip(this.cbSession, "A token that allows logging into the\r\ncurrent TweetDeck account.");
|
||||||
@@ -93,9 +100,11 @@
|
|||||||
// cbPluginData
|
// cbPluginData
|
||||||
//
|
//
|
||||||
this.cbPluginData.AutoSize = true;
|
this.cbPluginData.AutoSize = true;
|
||||||
this.cbPluginData.Location = new System.Drawing.Point(3, 72);
|
this.cbPluginData.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.cbPluginData.Location = new System.Drawing.Point(3, 75);
|
||||||
|
this.cbPluginData.Margin = new System.Windows.Forms.Padding(3, 3, 3, 2);
|
||||||
this.cbPluginData.Name = "cbPluginData";
|
this.cbPluginData.Name = "cbPluginData";
|
||||||
this.cbPluginData.Size = new System.Drawing.Size(81, 17);
|
this.cbPluginData.Size = new System.Drawing.Size(87, 19);
|
||||||
this.cbPluginData.TabIndex = 3;
|
this.cbPluginData.TabIndex = 3;
|
||||||
this.cbPluginData.Text = "Plugin Data";
|
this.cbPluginData.Text = "Plugin Data";
|
||||||
this.toolTip.SetToolTip(this.cbPluginData, "Data files generated by plugins.\r\nDoes not include the plugins themselves.");
|
this.toolTip.SetToolTip(this.cbPluginData, "Data files generated by plugins.\r\nDoes not include the plugins themselves.");
|
||||||
@@ -105,9 +114,11 @@
|
|||||||
// cbSystemConfig
|
// cbSystemConfig
|
||||||
//
|
//
|
||||||
this.cbSystemConfig.AutoSize = true;
|
this.cbSystemConfig.AutoSize = true;
|
||||||
this.cbSystemConfig.Location = new System.Drawing.Point(3, 26);
|
this.cbSystemConfig.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.cbSystemConfig.Location = new System.Drawing.Point(3, 27);
|
||||||
|
this.cbSystemConfig.Margin = new System.Windows.Forms.Padding(3, 3, 3, 2);
|
||||||
this.cbSystemConfig.Name = "cbSystemConfig";
|
this.cbSystemConfig.Name = "cbSystemConfig";
|
||||||
this.cbSystemConfig.Size = new System.Drawing.Size(99, 17);
|
this.cbSystemConfig.Size = new System.Drawing.Size(109, 19);
|
||||||
this.cbSystemConfig.TabIndex = 1;
|
this.cbSystemConfig.TabIndex = 1;
|
||||||
this.cbSystemConfig.Text = "System Options";
|
this.cbSystemConfig.Text = "System Options";
|
||||||
this.toolTip.SetToolTip(this.cbSystemConfig, "Hardware acceleration and cache options.");
|
this.toolTip.SetToolTip(this.cbSystemConfig, "Hardware acceleration and cache options.");
|
||||||
@@ -125,7 +136,7 @@
|
|||||||
this.panelSelection.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
this.panelSelection.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
||||||
this.panelSelection.Location = new System.Drawing.Point(12, 12);
|
this.panelSelection.Location = new System.Drawing.Point(12, 12);
|
||||||
this.panelSelection.Name = "panelSelection";
|
this.panelSelection.Name = "panelSelection";
|
||||||
this.panelSelection.Size = new System.Drawing.Size(220, 89);
|
this.panelSelection.Size = new System.Drawing.Size(210, 97);
|
||||||
this.panelSelection.TabIndex = 2;
|
this.panelSelection.TabIndex = 2;
|
||||||
this.panelSelection.Visible = false;
|
this.panelSelection.Visible = false;
|
||||||
this.panelSelection.WrapContents = false;
|
this.panelSelection.WrapContents = false;
|
||||||
@@ -140,16 +151,18 @@
|
|||||||
this.panelDecision.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
this.panelDecision.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
||||||
this.panelDecision.Location = new System.Drawing.Point(12, 12);
|
this.panelDecision.Location = new System.Drawing.Point(12, 12);
|
||||||
this.panelDecision.Name = "panelDecision";
|
this.panelDecision.Name = "panelDecision";
|
||||||
this.panelDecision.Size = new System.Drawing.Size(220, 71);
|
this.panelDecision.Size = new System.Drawing.Size(210, 75);
|
||||||
this.panelDecision.TabIndex = 0;
|
this.panelDecision.TabIndex = 0;
|
||||||
this.panelDecision.WrapContents = false;
|
this.panelDecision.WrapContents = false;
|
||||||
//
|
//
|
||||||
// radioImport
|
// radioImport
|
||||||
//
|
//
|
||||||
this.radioImport.AutoSize = true;
|
this.radioImport.AutoSize = true;
|
||||||
|
this.radioImport.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.radioImport.Location = new System.Drawing.Point(3, 3);
|
this.radioImport.Location = new System.Drawing.Point(3, 3);
|
||||||
|
this.radioImport.Margin = new System.Windows.Forms.Padding(3, 3, 3, 2);
|
||||||
this.radioImport.Name = "radioImport";
|
this.radioImport.Name = "radioImport";
|
||||||
this.radioImport.Size = new System.Drawing.Size(86, 17);
|
this.radioImport.Size = new System.Drawing.Size(98, 19);
|
||||||
this.radioImport.TabIndex = 0;
|
this.radioImport.TabIndex = 0;
|
||||||
this.radioImport.TabStop = true;
|
this.radioImport.TabStop = true;
|
||||||
this.radioImport.Text = "Import Profile";
|
this.radioImport.Text = "Import Profile";
|
||||||
@@ -159,9 +172,11 @@
|
|||||||
// radioExport
|
// radioExport
|
||||||
//
|
//
|
||||||
this.radioExport.AutoSize = true;
|
this.radioExport.AutoSize = true;
|
||||||
this.radioExport.Location = new System.Drawing.Point(3, 26);
|
this.radioExport.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.radioExport.Location = new System.Drawing.Point(3, 27);
|
||||||
|
this.radioExport.Margin = new System.Windows.Forms.Padding(3, 3, 3, 2);
|
||||||
this.radioExport.Name = "radioExport";
|
this.radioExport.Name = "radioExport";
|
||||||
this.radioExport.Size = new System.Drawing.Size(87, 17);
|
this.radioExport.Size = new System.Drawing.Size(95, 19);
|
||||||
this.radioExport.TabIndex = 1;
|
this.radioExport.TabIndex = 1;
|
||||||
this.radioExport.TabStop = true;
|
this.radioExport.TabStop = true;
|
||||||
this.radioExport.Text = "Export Profile";
|
this.radioExport.Text = "Export Profile";
|
||||||
@@ -171,9 +186,11 @@
|
|||||||
// radioReset
|
// radioReset
|
||||||
//
|
//
|
||||||
this.radioReset.AutoSize = true;
|
this.radioReset.AutoSize = true;
|
||||||
this.radioReset.Location = new System.Drawing.Point(3, 49);
|
this.radioReset.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.radioReset.Location = new System.Drawing.Point(3, 51);
|
||||||
|
this.radioReset.Margin = new System.Windows.Forms.Padding(3, 3, 3, 2);
|
||||||
this.radioReset.Name = "radioReset";
|
this.radioReset.Name = "radioReset";
|
||||||
this.radioReset.Size = new System.Drawing.Size(104, 17);
|
this.radioReset.Size = new System.Drawing.Size(110, 19);
|
||||||
this.radioReset.TabIndex = 2;
|
this.radioReset.TabIndex = 2;
|
||||||
this.radioReset.TabStop = true;
|
this.radioReset.TabStop = true;
|
||||||
this.radioReset.Text = "Restore Defaults";
|
this.radioReset.Text = "Restore Defaults";
|
||||||
@@ -184,7 +201,7 @@
|
|||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(244, 132);
|
this.ClientSize = new System.Drawing.Size(234, 129);
|
||||||
this.Controls.Add(this.btnContinue);
|
this.Controls.Add(this.btnContinue);
|
||||||
this.Controls.Add(this.btnCancel);
|
this.Controls.Add(this.btnCancel);
|
||||||
this.Controls.Add(this.panelDecision);
|
this.Controls.Add(this.panelDecision);
|
||||||
@@ -192,7 +209,7 @@
|
|||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||||
this.MaximizeBox = false;
|
this.MaximizeBox = false;
|
||||||
this.MinimizeBox = false;
|
this.MinimizeBox = false;
|
||||||
this.MinimumSize = new System.Drawing.Size(260, 170);
|
this.MinimumSize = new System.Drawing.Size(250, 167);
|
||||||
this.Name = "DialogSettingsManage";
|
this.Name = "DialogSettingsManage";
|
||||||
this.ShowIcon = false;
|
this.ShowIcon = false;
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
|
@@ -34,7 +34,7 @@ namespace TweetDuck.Core.Other.Settings.Dialogs{
|
|||||||
|
|
||||||
private ProfileManager.Items _selectedItems = ProfileManager.Items.None;
|
private ProfileManager.Items _selectedItems = ProfileManager.Items.None;
|
||||||
|
|
||||||
public DialogSettingsManage(PluginManager plugins){
|
public DialogSettingsManage(PluginManager plugins, bool openImportImmediately = false){
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
this.plugins = plugins;
|
this.plugins = plugins;
|
||||||
@@ -44,6 +44,11 @@ namespace TweetDuck.Core.Other.Settings.Dialogs{
|
|||||||
this.checkBoxMap[cbSystemConfig] = ProfileManager.Items.SystemConfig;
|
this.checkBoxMap[cbSystemConfig] = ProfileManager.Items.SystemConfig;
|
||||||
this.checkBoxMap[cbSession] = ProfileManager.Items.Session;
|
this.checkBoxMap[cbSession] = ProfileManager.Items.Session;
|
||||||
this.checkBoxMap[cbPluginData] = ProfileManager.Items.PluginData;
|
this.checkBoxMap[cbPluginData] = ProfileManager.Items.PluginData;
|
||||||
|
|
||||||
|
if (openImportImmediately){
|
||||||
|
radioImport.Checked = true;
|
||||||
|
btnContinue_Click(null, EventArgs.Empty);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void radioDecision_CheckedChanged(object sender, EventArgs e){
|
private void radioDecision_CheckedChanged(object sender, EventArgs e){
|
||||||
|
@@ -28,21 +28,24 @@
|
|||||||
this.btnRestart = new System.Windows.Forms.Button();
|
this.btnRestart = new System.Windows.Forms.Button();
|
||||||
this.cbLogging = new System.Windows.Forms.CheckBox();
|
this.cbLogging = new System.Windows.Forms.CheckBox();
|
||||||
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
|
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
|
||||||
this.cbDebugUpdates = new System.Windows.Forms.CheckBox();
|
|
||||||
this.tbDataFolder = new System.Windows.Forms.TextBox();
|
this.tbDataFolder = new System.Windows.Forms.TextBox();
|
||||||
this.tbShortcutTarget = new System.Windows.Forms.TextBox();
|
this.tbShortcutTarget = new System.Windows.Forms.TextBox();
|
||||||
this.labelDataFolder = new System.Windows.Forms.Label();
|
this.labelDataFolder = new System.Windows.Forms.Label();
|
||||||
this.labelShortcutTarget = new System.Windows.Forms.Label();
|
this.labelShortcutTarget = new System.Windows.Forms.Label();
|
||||||
|
this.flowPanel = new System.Windows.Forms.FlowLayoutPanel();
|
||||||
|
this.flowPanel.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// btnCancel
|
// btnCancel
|
||||||
//
|
//
|
||||||
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnCancel.Location = new System.Drawing.Point(215, 163);
|
this.btnCancel.AutoSize = true;
|
||||||
|
this.btnCancel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnCancel.Location = new System.Drawing.Point(215, 146);
|
||||||
this.btnCancel.Name = "btnCancel";
|
this.btnCancel.Name = "btnCancel";
|
||||||
this.btnCancel.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnCancel.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnCancel.Size = new System.Drawing.Size(56, 23);
|
this.btnCancel.Size = new System.Drawing.Size(57, 25);
|
||||||
this.btnCancel.TabIndex = 9;
|
this.btnCancel.TabIndex = 2;
|
||||||
this.btnCancel.Text = "Cancel";
|
this.btnCancel.Text = "Cancel";
|
||||||
this.btnCancel.UseVisualStyleBackColor = true;
|
this.btnCancel.UseVisualStyleBackColor = true;
|
||||||
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
|
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
|
||||||
@@ -50,11 +53,13 @@
|
|||||||
// btnRestart
|
// btnRestart
|
||||||
//
|
//
|
||||||
this.btnRestart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnRestart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnRestart.Location = new System.Drawing.Point(152, 163);
|
this.btnRestart.AutoSize = true;
|
||||||
|
this.btnRestart.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnRestart.Location = new System.Drawing.Point(152, 146);
|
||||||
this.btnRestart.Name = "btnRestart";
|
this.btnRestart.Name = "btnRestart";
|
||||||
this.btnRestart.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnRestart.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnRestart.Size = new System.Drawing.Size(57, 23);
|
this.btnRestart.Size = new System.Drawing.Size(57, 25);
|
||||||
this.btnRestart.TabIndex = 8;
|
this.btnRestart.TabIndex = 1;
|
||||||
this.btnRestart.Text = "Restart";
|
this.btnRestart.Text = "Restart";
|
||||||
this.btnRestart.UseVisualStyleBackColor = true;
|
this.btnRestart.UseVisualStyleBackColor = true;
|
||||||
this.btnRestart.Click += new System.EventHandler(this.btnRestart_Click);
|
this.btnRestart.Click += new System.EventHandler(this.btnRestart_Click);
|
||||||
@@ -62,33 +67,23 @@
|
|||||||
// cbLogging
|
// cbLogging
|
||||||
//
|
//
|
||||||
this.cbLogging.AutoSize = true;
|
this.cbLogging.AutoSize = true;
|
||||||
this.cbLogging.Location = new System.Drawing.Point(12, 12);
|
this.cbLogging.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.cbLogging.Location = new System.Drawing.Point(3, 3);
|
||||||
|
this.cbLogging.Margin = new System.Windows.Forms.Padding(3, 3, 3, 2);
|
||||||
this.cbLogging.Name = "cbLogging";
|
this.cbLogging.Name = "cbLogging";
|
||||||
this.cbLogging.Size = new System.Drawing.Size(64, 17);
|
this.cbLogging.Size = new System.Drawing.Size(70, 19);
|
||||||
this.cbLogging.TabIndex = 0;
|
this.cbLogging.TabIndex = 0;
|
||||||
this.cbLogging.Text = "Logging";
|
this.cbLogging.Text = "Logging";
|
||||||
this.toolTip.SetToolTip(this.cbLogging, "Logging JavaScript output into TD_Console.txt file in the data folder.");
|
this.toolTip.SetToolTip(this.cbLogging, "Logs JavaScript output into TD_Console.txt file in the data folder.");
|
||||||
this.cbLogging.UseVisualStyleBackColor = true;
|
this.cbLogging.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// cbDebugUpdates
|
|
||||||
//
|
|
||||||
this.cbDebugUpdates.AutoSize = true;
|
|
||||||
this.cbDebugUpdates.Location = new System.Drawing.Point(12, 35);
|
|
||||||
this.cbDebugUpdates.Name = "cbDebugUpdates";
|
|
||||||
this.cbDebugUpdates.Size = new System.Drawing.Size(127, 17);
|
|
||||||
this.cbDebugUpdates.TabIndex = 1;
|
|
||||||
this.cbDebugUpdates.Text = "Pre-Release Updates";
|
|
||||||
this.toolTip.SetToolTip(this.cbDebugUpdates, "Allows updating to pre-releases.");
|
|
||||||
this.cbDebugUpdates.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// tbDataFolder
|
// tbDataFolder
|
||||||
//
|
//
|
||||||
this.tbDataFolder.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.tbDataFolder.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
this.tbDataFolder.Location = new System.Drawing.Point(3, 54);
|
||||||
this.tbDataFolder.Location = new System.Drawing.Point(15, 83);
|
|
||||||
this.tbDataFolder.Name = "tbDataFolder";
|
this.tbDataFolder.Name = "tbDataFolder";
|
||||||
this.tbDataFolder.Size = new System.Drawing.Size(257, 20);
|
this.tbDataFolder.Size = new System.Drawing.Size(260, 23);
|
||||||
this.tbDataFolder.TabIndex = 5;
|
this.tbDataFolder.TabIndex = 2;
|
||||||
this.toolTip.SetToolTip(this.tbDataFolder, "Path to the data folder. Must be either an absolute path,\r\nor a simple folder nam" +
|
this.toolTip.SetToolTip(this.tbDataFolder, "Path to the data folder. Must be either an absolute path,\r\nor a simple folder nam" +
|
||||||
"e that will be created in LocalAppData.");
|
"e that will be created in LocalAppData.");
|
||||||
//
|
//
|
||||||
@@ -97,44 +92,60 @@
|
|||||||
this.tbShortcutTarget.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.tbShortcutTarget.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.tbShortcutTarget.Cursor = System.Windows.Forms.Cursors.Hand;
|
this.tbShortcutTarget.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
this.tbShortcutTarget.Location = new System.Drawing.Point(15, 134);
|
this.tbShortcutTarget.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.tbShortcutTarget.Location = new System.Drawing.Point(3, 110);
|
||||||
this.tbShortcutTarget.Name = "tbShortcutTarget";
|
this.tbShortcutTarget.Name = "tbShortcutTarget";
|
||||||
this.tbShortcutTarget.ReadOnly = true;
|
this.tbShortcutTarget.ReadOnly = true;
|
||||||
this.tbShortcutTarget.Size = new System.Drawing.Size(257, 20);
|
this.tbShortcutTarget.Size = new System.Drawing.Size(260, 23);
|
||||||
this.tbShortcutTarget.TabIndex = 7;
|
this.tbShortcutTarget.TabIndex = 4;
|
||||||
this.tbShortcutTarget.Click += new System.EventHandler(this.tbShortcutTarget_Click);
|
this.tbShortcutTarget.Click += new System.EventHandler(this.tbShortcutTarget_Click);
|
||||||
//
|
//
|
||||||
// labelDataFolder
|
// labelDataFolder
|
||||||
//
|
//
|
||||||
this.labelDataFolder.AutoSize = true;
|
this.labelDataFolder.AutoSize = true;
|
||||||
this.labelDataFolder.Location = new System.Drawing.Point(12, 67);
|
this.labelDataFolder.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelDataFolder.Location = new System.Drawing.Point(3, 36);
|
||||||
this.labelDataFolder.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
this.labelDataFolder.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
||||||
this.labelDataFolder.Name = "labelDataFolder";
|
this.labelDataFolder.Name = "labelDataFolder";
|
||||||
this.labelDataFolder.Size = new System.Drawing.Size(62, 13);
|
this.labelDataFolder.Size = new System.Drawing.Size(67, 15);
|
||||||
this.labelDataFolder.TabIndex = 4;
|
this.labelDataFolder.TabIndex = 1;
|
||||||
this.labelDataFolder.Text = "Data Folder";
|
this.labelDataFolder.Text = "Data Folder";
|
||||||
//
|
//
|
||||||
// labelShortcutTarget
|
// labelShortcutTarget
|
||||||
//
|
//
|
||||||
this.labelShortcutTarget.AutoSize = true;
|
this.labelShortcutTarget.AutoSize = true;
|
||||||
this.labelShortcutTarget.Location = new System.Drawing.Point(12, 118);
|
this.labelShortcutTarget.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelShortcutTarget.Location = new System.Drawing.Point(3, 92);
|
||||||
this.labelShortcutTarget.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
this.labelShortcutTarget.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
||||||
this.labelShortcutTarget.Name = "labelShortcutTarget";
|
this.labelShortcutTarget.Name = "labelShortcutTarget";
|
||||||
this.labelShortcutTarget.Size = new System.Drawing.Size(155, 13);
|
this.labelShortcutTarget.Size = new System.Drawing.Size(171, 15);
|
||||||
this.labelShortcutTarget.TabIndex = 6;
|
this.labelShortcutTarget.TabIndex = 3;
|
||||||
this.labelShortcutTarget.Text = "Shortcut Target (click to select)";
|
this.labelShortcutTarget.Text = "Shortcut Target (click to select)";
|
||||||
//
|
//
|
||||||
|
// flowPanel
|
||||||
|
//
|
||||||
|
this.flowPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.flowPanel.Controls.Add(this.cbLogging);
|
||||||
|
this.flowPanel.Controls.Add(this.labelDataFolder);
|
||||||
|
this.flowPanel.Controls.Add(this.tbDataFolder);
|
||||||
|
this.flowPanel.Controls.Add(this.labelShortcutTarget);
|
||||||
|
this.flowPanel.Controls.Add(this.tbShortcutTarget);
|
||||||
|
this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
||||||
|
this.flowPanel.Location = new System.Drawing.Point(9, 9);
|
||||||
|
this.flowPanel.Margin = new System.Windows.Forms.Padding(0);
|
||||||
|
this.flowPanel.Name = "flowPanel";
|
||||||
|
this.flowPanel.Size = new System.Drawing.Size(266, 136);
|
||||||
|
this.flowPanel.TabIndex = 0;
|
||||||
|
this.flowPanel.WrapContents = false;
|
||||||
|
//
|
||||||
// DialogSettingsRestart
|
// DialogSettingsRestart
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(284, 198);
|
this.ClientSize = new System.Drawing.Size(284, 183);
|
||||||
this.Controls.Add(this.tbShortcutTarget);
|
this.Controls.Add(this.flowPanel);
|
||||||
this.Controls.Add(this.labelShortcutTarget);
|
|
||||||
this.Controls.Add(this.tbDataFolder);
|
|
||||||
this.Controls.Add(this.labelDataFolder);
|
|
||||||
this.Controls.Add(this.cbDebugUpdates);
|
|
||||||
this.Controls.Add(this.cbLogging);
|
|
||||||
this.Controls.Add(this.btnRestart);
|
this.Controls.Add(this.btnRestart);
|
||||||
this.Controls.Add(this.btnCancel);
|
this.Controls.Add(this.btnCancel);
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||||
@@ -143,6 +154,8 @@
|
|||||||
this.Name = "DialogSettingsRestart";
|
this.Name = "DialogSettingsRestart";
|
||||||
this.ShowIcon = false;
|
this.ShowIcon = false;
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
|
this.flowPanel.ResumeLayout(false);
|
||||||
|
this.flowPanel.PerformLayout();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
this.PerformLayout();
|
||||||
|
|
||||||
@@ -154,10 +167,10 @@
|
|||||||
private System.Windows.Forms.Button btnRestart;
|
private System.Windows.Forms.Button btnRestart;
|
||||||
private System.Windows.Forms.CheckBox cbLogging;
|
private System.Windows.Forms.CheckBox cbLogging;
|
||||||
private System.Windows.Forms.ToolTip toolTip;
|
private System.Windows.Forms.ToolTip toolTip;
|
||||||
private System.Windows.Forms.CheckBox cbDebugUpdates;
|
|
||||||
private System.Windows.Forms.Label labelDataFolder;
|
private System.Windows.Forms.Label labelDataFolder;
|
||||||
private System.Windows.Forms.TextBox tbDataFolder;
|
private System.Windows.Forms.TextBox tbDataFolder;
|
||||||
private System.Windows.Forms.TextBox tbShortcutTarget;
|
private System.Windows.Forms.TextBox tbShortcutTarget;
|
||||||
private System.Windows.Forms.Label labelShortcutTarget;
|
private System.Windows.Forms.Label labelShortcutTarget;
|
||||||
|
private System.Windows.Forms.FlowLayoutPanel flowPanel;
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -11,11 +11,8 @@ namespace TweetDuck.Core.Other.Settings.Dialogs{
|
|||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
cbLogging.Checked = currentArgs.HasFlag(Arguments.ArgLogging);
|
cbLogging.Checked = currentArgs.HasFlag(Arguments.ArgLogging);
|
||||||
cbDebugUpdates.Checked = currentArgs.HasFlag(Arguments.ArgDebugUpdates);
|
|
||||||
|
|
||||||
cbLogging.CheckedChanged += control_Change;
|
cbLogging.CheckedChanged += control_Change;
|
||||||
cbDebugUpdates.CheckedChanged += control_Change;
|
|
||||||
|
|
||||||
if (Program.IsPortable){
|
if (Program.IsPortable){
|
||||||
tbDataFolder.Text = "Not available in portable version";
|
tbDataFolder.Text = "Not available in portable version";
|
||||||
tbDataFolder.Enabled = false;
|
tbDataFolder.Enabled = false;
|
||||||
@@ -37,10 +34,6 @@ namespace TweetDuck.Core.Other.Settings.Dialogs{
|
|||||||
Args.AddFlag(Arguments.ArgLogging);
|
Args.AddFlag(Arguments.ArgLogging);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cbDebugUpdates.Checked){
|
|
||||||
Args.AddFlag(Arguments.ArgDebugUpdates);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(tbDataFolder.Text) && tbDataFolder.Enabled){
|
if (!string.IsNullOrWhiteSpace(tbDataFolder.Text) && tbDataFolder.Enabled){
|
||||||
Args.SetValue(Arguments.ArgDataFolder, tbDataFolder.Text);
|
Args.SetValue(Arguments.ArgDataFolder, tbDataFolder.Text);
|
||||||
}
|
}
|
||||||
|
@@ -34,18 +34,21 @@
|
|||||||
this.textBoxUrl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
this.textBoxUrl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
| System.Windows.Forms.AnchorStyles.Left)
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.textBoxUrl.Location = new System.Drawing.Point(12, 28);
|
this.textBoxUrl.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.textBoxUrl.Location = new System.Drawing.Point(12, 30);
|
||||||
this.textBoxUrl.Name = "textBoxUrl";
|
this.textBoxUrl.Name = "textBoxUrl";
|
||||||
this.textBoxUrl.Size = new System.Drawing.Size(310, 20);
|
this.textBoxUrl.Size = new System.Drawing.Size(310, 23);
|
||||||
this.textBoxUrl.TabIndex = 1;
|
this.textBoxUrl.TabIndex = 1;
|
||||||
//
|
//
|
||||||
// btnCancel
|
// btnCancel
|
||||||
//
|
//
|
||||||
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnCancel.Location = new System.Drawing.Point(204, 56);
|
this.btnCancel.AutoSize = true;
|
||||||
|
this.btnCancel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnCancel.Location = new System.Drawing.Point(207, 59);
|
||||||
this.btnCancel.Name = "btnCancel";
|
this.btnCancel.Name = "btnCancel";
|
||||||
this.btnCancel.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnCancel.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnCancel.Size = new System.Drawing.Size(56, 23);
|
this.btnCancel.Size = new System.Drawing.Size(57, 25);
|
||||||
this.btnCancel.TabIndex = 3;
|
this.btnCancel.TabIndex = 3;
|
||||||
this.btnCancel.Text = "Cancel";
|
this.btnCancel.Text = "Cancel";
|
||||||
this.btnCancel.UseVisualStyleBackColor = true;
|
this.btnCancel.UseVisualStyleBackColor = true;
|
||||||
@@ -54,10 +57,12 @@
|
|||||||
// btnApply
|
// btnApply
|
||||||
//
|
//
|
||||||
this.btnApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnApply.Location = new System.Drawing.Point(266, 56);
|
this.btnApply.AutoSize = true;
|
||||||
|
this.btnApply.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnApply.Location = new System.Drawing.Point(270, 59);
|
||||||
this.btnApply.Name = "btnApply";
|
this.btnApply.Name = "btnApply";
|
||||||
this.btnApply.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnApply.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnApply.Size = new System.Drawing.Size(56, 23);
|
this.btnApply.Size = new System.Drawing.Size(52, 25);
|
||||||
this.btnApply.TabIndex = 2;
|
this.btnApply.TabIndex = 2;
|
||||||
this.btnApply.Text = "Apply";
|
this.btnApply.Text = "Apply";
|
||||||
this.btnApply.UseVisualStyleBackColor = true;
|
this.btnApply.UseVisualStyleBackColor = true;
|
||||||
@@ -66,10 +71,11 @@
|
|||||||
// labelInfo
|
// labelInfo
|
||||||
//
|
//
|
||||||
this.labelInfo.AutoSize = true;
|
this.labelInfo.AutoSize = true;
|
||||||
|
this.labelInfo.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelInfo.Location = new System.Drawing.Point(12, 9);
|
this.labelInfo.Location = new System.Drawing.Point(12, 9);
|
||||||
this.labelInfo.Margin = new System.Windows.Forms.Padding(3, 0, 3, 3);
|
this.labelInfo.Margin = new System.Windows.Forms.Padding(3, 0, 3, 3);
|
||||||
this.labelInfo.Name = "labelInfo";
|
this.labelInfo.Name = "labelInfo";
|
||||||
this.labelInfo.Size = new System.Drawing.Size(264, 13);
|
this.labelInfo.Size = new System.Drawing.Size(287, 15);
|
||||||
this.labelInfo.TabIndex = 0;
|
this.labelInfo.TabIndex = 0;
|
||||||
this.labelInfo.Text = "The search query will be added at the end of the URL.";
|
this.labelInfo.Text = "The search query will be added at the end of the URL.";
|
||||||
//
|
//
|
||||||
@@ -77,7 +83,7 @@
|
|||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(334, 91);
|
this.ClientSize = new System.Drawing.Size(334, 96);
|
||||||
this.Controls.Add(this.labelInfo);
|
this.Controls.Add(this.labelInfo);
|
||||||
this.Controls.Add(this.btnApply);
|
this.Controls.Add(this.btnApply);
|
||||||
this.Controls.Add(this.btnCancel);
|
this.Controls.Add(this.btnCancel);
|
||||||
|
102
Core/Other/Settings/TabSettingsAdvanced.Designer.cs
generated
@@ -52,101 +52,128 @@
|
|||||||
//
|
//
|
||||||
// btnClearCache
|
// btnClearCache
|
||||||
//
|
//
|
||||||
this.btnClearCache.Location = new System.Drawing.Point(5, 172);
|
this.btnClearCache.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnClearCache.Location = new System.Drawing.Point(5, 179);
|
||||||
this.btnClearCache.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
this.btnClearCache.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
||||||
this.btnClearCache.Name = "btnClearCache";
|
this.btnClearCache.Name = "btnClearCache";
|
||||||
this.btnClearCache.Size = new System.Drawing.Size(144, 23);
|
this.btnClearCache.Size = new System.Drawing.Size(144, 25);
|
||||||
this.btnClearCache.TabIndex = 5;
|
this.btnClearCache.TabIndex = 5;
|
||||||
this.btnClearCache.Text = "Clear Cache (calculating)";
|
this.btnClearCache.Text = "Clear Cache (...)";
|
||||||
this.btnClearCache.UseVisualStyleBackColor = true;
|
this.btnClearCache.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// checkHardwareAcceleration
|
// checkHardwareAcceleration
|
||||||
//
|
//
|
||||||
this.checkHardwareAcceleration.AutoSize = true;
|
this.checkHardwareAcceleration.AutoSize = true;
|
||||||
this.checkHardwareAcceleration.Location = new System.Drawing.Point(6, 124);
|
this.checkHardwareAcceleration.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkHardwareAcceleration.Margin = new System.Windows.Forms.Padding(6, 6, 3, 3);
|
this.checkHardwareAcceleration.Location = new System.Drawing.Point(6, 128);
|
||||||
|
this.checkHardwareAcceleration.Margin = new System.Windows.Forms.Padding(6, 6, 3, 2);
|
||||||
this.checkHardwareAcceleration.Name = "checkHardwareAcceleration";
|
this.checkHardwareAcceleration.Name = "checkHardwareAcceleration";
|
||||||
this.checkHardwareAcceleration.Size = new System.Drawing.Size(134, 17);
|
this.checkHardwareAcceleration.Size = new System.Drawing.Size(146, 19);
|
||||||
this.checkHardwareAcceleration.TabIndex = 3;
|
this.checkHardwareAcceleration.TabIndex = 3;
|
||||||
this.checkHardwareAcceleration.Text = "Hardware Acceleration";
|
this.checkHardwareAcceleration.Text = "Hardware Acceleration";
|
||||||
this.checkHardwareAcceleration.UseVisualStyleBackColor = true;
|
this.checkHardwareAcceleration.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// btnEditCefArgs
|
// btnEditCefArgs
|
||||||
//
|
//
|
||||||
|
this.btnEditCefArgs.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.btnEditCefArgs.Location = new System.Drawing.Point(5, 3);
|
this.btnEditCefArgs.Location = new System.Drawing.Point(5, 3);
|
||||||
this.btnEditCefArgs.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
this.btnEditCefArgs.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
||||||
this.btnEditCefArgs.Name = "btnEditCefArgs";
|
this.btnEditCefArgs.Name = "btnEditCefArgs";
|
||||||
this.btnEditCefArgs.Size = new System.Drawing.Size(144, 23);
|
this.btnEditCefArgs.Size = new System.Drawing.Size(144, 25);
|
||||||
this.btnEditCefArgs.TabIndex = 0;
|
this.btnEditCefArgs.TabIndex = 0;
|
||||||
this.btnEditCefArgs.Text = "Edit CEF Arguments";
|
this.btnEditCefArgs.Text = "Edit CEF Arguments";
|
||||||
this.btnEditCefArgs.UseVisualStyleBackColor = true;
|
this.btnEditCefArgs.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// btnEditCSS
|
// btnEditCSS
|
||||||
//
|
//
|
||||||
|
this.btnEditCSS.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.btnEditCSS.Location = new System.Drawing.Point(155, 3);
|
this.btnEditCSS.Location = new System.Drawing.Point(155, 3);
|
||||||
this.btnEditCSS.Name = "btnEditCSS";
|
this.btnEditCSS.Name = "btnEditCSS";
|
||||||
this.btnEditCSS.Size = new System.Drawing.Size(144, 23);
|
this.btnEditCSS.Size = new System.Drawing.Size(144, 25);
|
||||||
this.btnEditCSS.TabIndex = 1;
|
this.btnEditCSS.TabIndex = 1;
|
||||||
this.btnEditCSS.Text = "Edit CSS";
|
this.btnEditCSS.Text = "Edit CSS";
|
||||||
this.btnEditCSS.UseVisualStyleBackColor = true;
|
this.btnEditCSS.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// btnRestartArgs
|
// btnRestartArgs
|
||||||
//
|
//
|
||||||
|
this.btnRestartArgs.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.btnRestartArgs.Location = new System.Drawing.Point(155, 32);
|
this.btnRestartArgs.Location = new System.Drawing.Point(155, 32);
|
||||||
this.btnRestartArgs.Name = "btnRestartArgs";
|
this.btnRestartArgs.Name = "btnRestartArgs";
|
||||||
this.btnRestartArgs.Size = new System.Drawing.Size(144, 23);
|
this.btnRestartArgs.Size = new System.Drawing.Size(144, 25);
|
||||||
this.btnRestartArgs.TabIndex = 3;
|
this.btnRestartArgs.TabIndex = 3;
|
||||||
this.btnRestartArgs.Text = "Restart with Arguments";
|
this.btnRestartArgs.Text = "Restart with Arguments";
|
||||||
this.btnRestartArgs.UseVisualStyleBackColor = true;
|
this.btnRestartArgs.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// btnRestart
|
// btnRestart
|
||||||
//
|
//
|
||||||
|
this.btnRestart.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.btnRestart.Location = new System.Drawing.Point(155, 3);
|
this.btnRestart.Location = new System.Drawing.Point(155, 3);
|
||||||
this.btnRestart.Name = "btnRestart";
|
this.btnRestart.Name = "btnRestart";
|
||||||
this.btnRestart.Size = new System.Drawing.Size(144, 23);
|
this.btnRestart.Size = new System.Drawing.Size(144, 25);
|
||||||
this.btnRestart.TabIndex = 2;
|
this.btnRestart.TabIndex = 2;
|
||||||
this.btnRestart.Text = "Restart the Program";
|
this.btnRestart.Text = "Restart the Program";
|
||||||
this.btnRestart.UseVisualStyleBackColor = true;
|
this.btnRestart.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// btnOpenAppFolder
|
// btnOpenAppFolder
|
||||||
//
|
//
|
||||||
|
this.btnOpenAppFolder.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.btnOpenAppFolder.Location = new System.Drawing.Point(5, 3);
|
this.btnOpenAppFolder.Location = new System.Drawing.Point(5, 3);
|
||||||
this.btnOpenAppFolder.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
this.btnOpenAppFolder.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
||||||
this.btnOpenAppFolder.Name = "btnOpenAppFolder";
|
this.btnOpenAppFolder.Name = "btnOpenAppFolder";
|
||||||
this.btnOpenAppFolder.Size = new System.Drawing.Size(144, 23);
|
this.btnOpenAppFolder.Size = new System.Drawing.Size(144, 25);
|
||||||
this.btnOpenAppFolder.TabIndex = 0;
|
this.btnOpenAppFolder.TabIndex = 0;
|
||||||
this.btnOpenAppFolder.Text = "Open Program Folder";
|
this.btnOpenAppFolder.Text = "Open Program Folder";
|
||||||
this.btnOpenAppFolder.UseVisualStyleBackColor = true;
|
this.btnOpenAppFolder.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// btnOpenDataFolder
|
// btnOpenDataFolder
|
||||||
//
|
//
|
||||||
|
this.btnOpenDataFolder.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.btnOpenDataFolder.Location = new System.Drawing.Point(5, 32);
|
this.btnOpenDataFolder.Location = new System.Drawing.Point(5, 32);
|
||||||
this.btnOpenDataFolder.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
this.btnOpenDataFolder.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
||||||
this.btnOpenDataFolder.Name = "btnOpenDataFolder";
|
this.btnOpenDataFolder.Name = "btnOpenDataFolder";
|
||||||
this.btnOpenDataFolder.Size = new System.Drawing.Size(144, 23);
|
this.btnOpenDataFolder.Size = new System.Drawing.Size(144, 25);
|
||||||
this.btnOpenDataFolder.TabIndex = 1;
|
this.btnOpenDataFolder.TabIndex = 1;
|
||||||
this.btnOpenDataFolder.Text = "Open Data Folder";
|
this.btnOpenDataFolder.Text = "Open Data Folder";
|
||||||
this.btnOpenDataFolder.UseVisualStyleBackColor = true;
|
this.btnOpenDataFolder.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// numClearCacheThreshold
|
// numClearCacheThreshold
|
||||||
//
|
//
|
||||||
this.numClearCacheThreshold.Increment = 50;
|
this.numClearCacheThreshold.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.numClearCacheThreshold.Location = new System.Drawing.Point(227, 4);
|
this.numClearCacheThreshold.Increment = new decimal(new int[] {
|
||||||
this.numClearCacheThreshold.Maximum = 1000;
|
50,
|
||||||
this.numClearCacheThreshold.Minimum = 100;
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
|
this.numClearCacheThreshold.Location = new System.Drawing.Point(246, 5);
|
||||||
|
this.numClearCacheThreshold.Maximum = new decimal(new int[] {
|
||||||
|
1000,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
|
this.numClearCacheThreshold.Minimum = new decimal(new int[] {
|
||||||
|
100,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
this.numClearCacheThreshold.Name = "numClearCacheThreshold";
|
this.numClearCacheThreshold.Name = "numClearCacheThreshold";
|
||||||
this.numClearCacheThreshold.Size = new System.Drawing.Size(72, 20);
|
this.numClearCacheThreshold.Size = new System.Drawing.Size(68, 23);
|
||||||
this.numClearCacheThreshold.TabIndex = 1;
|
this.numClearCacheThreshold.TabIndex = 1;
|
||||||
|
this.numClearCacheThreshold.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
|
||||||
this.numClearCacheThreshold.TextSuffix = " MB";
|
this.numClearCacheThreshold.TextSuffix = " MB";
|
||||||
this.numClearCacheThreshold.Value = 250;
|
this.numClearCacheThreshold.Value = new decimal(new int[] {
|
||||||
|
250,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
//
|
//
|
||||||
// checkClearCacheAuto
|
// checkClearCacheAuto
|
||||||
//
|
//
|
||||||
this.checkClearCacheAuto.AutoSize = true;
|
this.checkClearCacheAuto.AutoSize = true;
|
||||||
|
this.checkClearCacheAuto.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkClearCacheAuto.Location = new System.Drawing.Point(6, 6);
|
this.checkClearCacheAuto.Location = new System.Drawing.Point(6, 6);
|
||||||
this.checkClearCacheAuto.Margin = new System.Windows.Forms.Padding(6, 6, 3, 3);
|
this.checkClearCacheAuto.Margin = new System.Windows.Forms.Padding(6, 6, 0, 2);
|
||||||
this.checkClearCacheAuto.Name = "checkClearCacheAuto";
|
this.checkClearCacheAuto.Name = "checkClearCacheAuto";
|
||||||
this.checkClearCacheAuto.Size = new System.Drawing.Size(215, 17);
|
this.checkClearCacheAuto.Size = new System.Drawing.Size(237, 19);
|
||||||
this.checkClearCacheAuto.TabIndex = 0;
|
this.checkClearCacheAuto.TabIndex = 0;
|
||||||
this.checkClearCacheAuto.Text = "Clear Cache Automatically When Above";
|
this.checkClearCacheAuto.Text = "Clear Cache Automatically When Above";
|
||||||
this.checkClearCacheAuto.UseVisualStyleBackColor = true;
|
this.checkClearCacheAuto.UseVisualStyleBackColor = true;
|
||||||
@@ -154,11 +181,11 @@
|
|||||||
// labelApp
|
// labelApp
|
||||||
//
|
//
|
||||||
this.labelApp.AutoSize = true;
|
this.labelApp.AutoSize = true;
|
||||||
this.labelApp.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelApp.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelApp.Location = new System.Drawing.Point(0, 0);
|
this.labelApp.Location = new System.Drawing.Point(0, 0);
|
||||||
this.labelApp.Margin = new System.Windows.Forms.Padding(0);
|
this.labelApp.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.labelApp.Name = "labelApp";
|
this.labelApp.Name = "labelApp";
|
||||||
this.labelApp.Size = new System.Drawing.Size(38, 20);
|
this.labelApp.Size = new System.Drawing.Size(37, 20);
|
||||||
this.labelApp.TabIndex = 0;
|
this.labelApp.TabIndex = 0;
|
||||||
this.labelApp.Text = "App";
|
this.labelApp.Text = "App";
|
||||||
//
|
//
|
||||||
@@ -172,17 +199,17 @@
|
|||||||
this.panelAppButtons.Location = new System.Drawing.Point(0, 20);
|
this.panelAppButtons.Location = new System.Drawing.Point(0, 20);
|
||||||
this.panelAppButtons.Margin = new System.Windows.Forms.Padding(0);
|
this.panelAppButtons.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.panelAppButtons.Name = "panelAppButtons";
|
this.panelAppButtons.Name = "panelAppButtons";
|
||||||
this.panelAppButtons.Size = new System.Drawing.Size(322, 58);
|
this.panelAppButtons.Size = new System.Drawing.Size(322, 62);
|
||||||
this.panelAppButtons.TabIndex = 1;
|
this.panelAppButtons.TabIndex = 1;
|
||||||
//
|
//
|
||||||
// labelPerformance
|
// labelPerformance
|
||||||
//
|
//
|
||||||
this.labelPerformance.AutoSize = true;
|
this.labelPerformance.AutoSize = true;
|
||||||
this.labelPerformance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelPerformance.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelPerformance.Location = new System.Drawing.Point(0, 98);
|
this.labelPerformance.Location = new System.Drawing.Point(0, 102);
|
||||||
this.labelPerformance.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
this.labelPerformance.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
||||||
this.labelPerformance.Name = "labelPerformance";
|
this.labelPerformance.Name = "labelPerformance";
|
||||||
this.labelPerformance.Size = new System.Drawing.Size(100, 20);
|
this.labelPerformance.Size = new System.Drawing.Size(93, 20);
|
||||||
this.labelPerformance.TabIndex = 2;
|
this.labelPerformance.TabIndex = 2;
|
||||||
this.labelPerformance.Text = "Performance";
|
this.labelPerformance.Text = "Performance";
|
||||||
//
|
//
|
||||||
@@ -191,19 +218,20 @@
|
|||||||
this.panelClearCacheAuto.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
this.panelClearCacheAuto.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
||||||
this.panelClearCacheAuto.Controls.Add(this.checkClearCacheAuto);
|
this.panelClearCacheAuto.Controls.Add(this.checkClearCacheAuto);
|
||||||
this.panelClearCacheAuto.Controls.Add(this.numClearCacheThreshold);
|
this.panelClearCacheAuto.Controls.Add(this.numClearCacheThreshold);
|
||||||
this.panelClearCacheAuto.Location = new System.Drawing.Point(0, 198);
|
this.panelClearCacheAuto.Location = new System.Drawing.Point(0, 207);
|
||||||
this.panelClearCacheAuto.Margin = new System.Windows.Forms.Padding(0);
|
this.panelClearCacheAuto.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.panelClearCacheAuto.Name = "panelClearCacheAuto";
|
this.panelClearCacheAuto.Name = "panelClearCacheAuto";
|
||||||
this.panelClearCacheAuto.Size = new System.Drawing.Size(322, 26);
|
this.panelClearCacheAuto.Size = new System.Drawing.Size(322, 28);
|
||||||
this.panelClearCacheAuto.TabIndex = 6;
|
this.panelClearCacheAuto.TabIndex = 6;
|
||||||
//
|
//
|
||||||
// labelCache
|
// labelCache
|
||||||
//
|
//
|
||||||
this.labelCache.AutoSize = true;
|
this.labelCache.AutoSize = true;
|
||||||
this.labelCache.Location = new System.Drawing.Point(3, 156);
|
this.labelCache.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelCache.Location = new System.Drawing.Point(3, 161);
|
||||||
this.labelCache.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
this.labelCache.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
||||||
this.labelCache.Name = "labelCache";
|
this.labelCache.Name = "labelCache";
|
||||||
this.labelCache.Size = new System.Drawing.Size(38, 13);
|
this.labelCache.Size = new System.Drawing.Size(40, 15);
|
||||||
this.labelCache.TabIndex = 4;
|
this.labelCache.TabIndex = 4;
|
||||||
this.labelCache.Text = "Cache";
|
this.labelCache.Text = "Cache";
|
||||||
//
|
//
|
||||||
@@ -212,20 +240,20 @@
|
|||||||
this.panelConfiguration.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
this.panelConfiguration.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
||||||
this.panelConfiguration.Controls.Add(this.btnEditCSS);
|
this.panelConfiguration.Controls.Add(this.btnEditCSS);
|
||||||
this.panelConfiguration.Controls.Add(this.btnEditCefArgs);
|
this.panelConfiguration.Controls.Add(this.btnEditCefArgs);
|
||||||
this.panelConfiguration.Location = new System.Drawing.Point(0, 264);
|
this.panelConfiguration.Location = new System.Drawing.Point(0, 275);
|
||||||
this.panelConfiguration.Margin = new System.Windows.Forms.Padding(0);
|
this.panelConfiguration.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.panelConfiguration.Name = "panelConfiguration";
|
this.panelConfiguration.Name = "panelConfiguration";
|
||||||
this.panelConfiguration.Size = new System.Drawing.Size(322, 29);
|
this.panelConfiguration.Size = new System.Drawing.Size(322, 31);
|
||||||
this.panelConfiguration.TabIndex = 8;
|
this.panelConfiguration.TabIndex = 8;
|
||||||
//
|
//
|
||||||
// labelConfiguration
|
// labelConfiguration
|
||||||
//
|
//
|
||||||
this.labelConfiguration.AutoSize = true;
|
this.labelConfiguration.AutoSize = true;
|
||||||
this.labelConfiguration.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelConfiguration.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelConfiguration.Location = new System.Drawing.Point(0, 244);
|
this.labelConfiguration.Location = new System.Drawing.Point(0, 255);
|
||||||
this.labelConfiguration.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
this.labelConfiguration.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
||||||
this.labelConfiguration.Name = "labelConfiguration";
|
this.labelConfiguration.Name = "labelConfiguration";
|
||||||
this.labelConfiguration.Size = new System.Drawing.Size(104, 20);
|
this.labelConfiguration.Size = new System.Drawing.Size(100, 20);
|
||||||
this.labelConfiguration.TabIndex = 7;
|
this.labelConfiguration.TabIndex = 7;
|
||||||
this.labelConfiguration.Text = "Configuration";
|
this.labelConfiguration.Text = "Configuration";
|
||||||
//
|
//
|
||||||
@@ -246,7 +274,7 @@
|
|||||||
this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
||||||
this.flowPanel.Location = new System.Drawing.Point(9, 9);
|
this.flowPanel.Location = new System.Drawing.Point(9, 9);
|
||||||
this.flowPanel.Name = "flowPanel";
|
this.flowPanel.Name = "flowPanel";
|
||||||
this.flowPanel.Size = new System.Drawing.Size(322, 295);
|
this.flowPanel.Size = new System.Drawing.Size(322, 307);
|
||||||
this.flowPanel.TabIndex = 0;
|
this.flowPanel.TabIndex = 0;
|
||||||
this.flowPanel.WrapContents = false;
|
this.flowPanel.WrapContents = false;
|
||||||
//
|
//
|
||||||
@@ -256,7 +284,7 @@
|
|||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.Controls.Add(this.flowPanel);
|
this.Controls.Add(this.flowPanel);
|
||||||
this.Name = "TabSettingsAdvanced";
|
this.Name = "TabSettingsAdvanced";
|
||||||
this.Size = new System.Drawing.Size(340, 313);
|
this.Size = new System.Drawing.Size(340, 325);
|
||||||
((System.ComponentModel.ISupportInitialize)(this.numClearCacheThreshold)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.numClearCacheThreshold)).EndInit();
|
||||||
this.panelAppButtons.ResumeLayout(false);
|
this.panelAppButtons.ResumeLayout(false);
|
||||||
this.panelClearCacheAuto.ResumeLayout(false);
|
this.panelClearCacheAuto.ResumeLayout(false);
|
||||||
|
@@ -13,18 +13,20 @@ namespace TweetDuck.Core.Other.Settings{
|
|||||||
private static SystemConfig SysConfig => Program.SystemConfig;
|
private static SystemConfig SysConfig => Program.SystemConfig;
|
||||||
|
|
||||||
private readonly Action<string> reinjectBrowserCSS;
|
private readonly Action<string> reinjectBrowserCSS;
|
||||||
|
private readonly Action openDevTools;
|
||||||
|
|
||||||
public TabSettingsAdvanced(Action<string> reinjectBrowserCSS){
|
public TabSettingsAdvanced(Action<string> reinjectBrowserCSS, Action openDevTools){
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
this.reinjectBrowserCSS = reinjectBrowserCSS;
|
this.reinjectBrowserCSS = reinjectBrowserCSS;
|
||||||
|
this.openDevTools = openDevTools;
|
||||||
|
|
||||||
toolTip.SetToolTip(btnOpenAppFolder, "Opens the folder where the app is located.");
|
toolTip.SetToolTip(btnOpenAppFolder, "Opens the folder where the app is located.");
|
||||||
toolTip.SetToolTip(btnOpenDataFolder, "Opens the folder where your profile data is located.");
|
toolTip.SetToolTip(btnOpenDataFolder, "Opens the folder where your profile data is located.");
|
||||||
toolTip.SetToolTip(btnRestart, "Restarts the program using the same command\r\nline arguments that were used at launch.");
|
toolTip.SetToolTip(btnRestart, "Restarts the program using the same command\r\nline arguments that were used at launch.");
|
||||||
toolTip.SetToolTip(btnRestartArgs, "Restarts the program with customizable\r\ncommand line arguments.");
|
toolTip.SetToolTip(btnRestartArgs, "Restarts the program with customizable\r\ncommand line arguments.");
|
||||||
|
|
||||||
toolTip.SetToolTip(checkHardwareAcceleration, "Uses graphics card to improve performance. Disable if you experience\r\nvisual glitches. This option will not be exported in a profile.");
|
toolTip.SetToolTip(checkHardwareAcceleration, "Uses graphics card to improve performance. Disable if you experience visual glitches, or to save a small amount of RAM.");
|
||||||
|
|
||||||
toolTip.SetToolTip(btnClearCache, "Clearing cache will free up space taken by downloaded images and other resources.");
|
toolTip.SetToolTip(btnClearCache, "Clearing cache will free up space taken by downloaded images and other resources.");
|
||||||
toolTip.SetToolTip(checkClearCacheAuto, "Automatically clears cache when its size exceeds the set threshold. Note that cache can only be cleared when closing TweetDuck.");
|
toolTip.SetToolTip(checkClearCacheAuto, "Automatically clears cache when its size exceeds the set threshold. Note that cache can only be cleared when closing TweetDuck.");
|
||||||
@@ -32,13 +34,7 @@ namespace TweetDuck.Core.Other.Settings{
|
|||||||
toolTip.SetToolTip(btnEditCefArgs, "Set custom command line arguments for Chromium Embedded Framework.");
|
toolTip.SetToolTip(btnEditCefArgs, "Set custom command line arguments for Chromium Embedded Framework.");
|
||||||
toolTip.SetToolTip(btnEditCSS, "Set custom CSS for browser and notification windows.");
|
toolTip.SetToolTip(btnEditCSS, "Set custom CSS for browser and notification windows.");
|
||||||
|
|
||||||
if (SystemConfig.IsHardwareAccelerationSupported){
|
checkHardwareAcceleration.Checked = SysConfig.HardwareAcceleration;
|
||||||
checkHardwareAcceleration.Checked = SysConfig.HardwareAcceleration;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
checkHardwareAcceleration.Enabled = false;
|
|
||||||
checkHardwareAcceleration.Checked = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
checkClearCacheAuto.Checked = SysConfig.ClearCacheAutomatically;
|
checkClearCacheAuto.Checked = SysConfig.ClearCacheAutomatically;
|
||||||
numClearCacheThreshold.Enabled = checkClearCacheAuto.Checked;
|
numClearCacheThreshold.Enabled = checkClearCacheAuto.Checked;
|
||||||
@@ -109,7 +105,7 @@ namespace TweetDuck.Core.Other.Settings{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void btnEditCSS_Click(object sender, EventArgs e){
|
private void btnEditCSS_Click(object sender, EventArgs e){
|
||||||
DialogSettingsCSS form = new DialogSettingsCSS(reinjectBrowserCSS);
|
DialogSettingsCSS form = new DialogSettingsCSS(reinjectBrowserCSS, openDevTools);
|
||||||
|
|
||||||
form.VisibleChanged += (sender2, args2) => {
|
form.VisibleChanged += (sender2, args2) => {
|
||||||
form.MoveToCenter(ParentForm);
|
form.MoveToCenter(ParentForm);
|
||||||
|
43
Core/Other/Settings/TabSettingsFeedback.Designer.cs
generated
@@ -43,21 +43,22 @@
|
|||||||
this.panelDataCollection.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
this.panelDataCollection.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
||||||
this.panelDataCollection.Controls.Add(this.labelDataCollectionLink);
|
this.panelDataCollection.Controls.Add(this.labelDataCollectionLink);
|
||||||
this.panelDataCollection.Controls.Add(this.checkDataCollection);
|
this.panelDataCollection.Controls.Add(this.checkDataCollection);
|
||||||
this.panelDataCollection.Location = new System.Drawing.Point(0, 74);
|
this.panelDataCollection.Location = new System.Drawing.Point(0, 78);
|
||||||
this.panelDataCollection.Margin = new System.Windows.Forms.Padding(0);
|
this.panelDataCollection.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.panelDataCollection.Name = "panelDataCollection";
|
this.panelDataCollection.Name = "panelDataCollection";
|
||||||
this.panelDataCollection.Size = new System.Drawing.Size(322, 26);
|
this.panelDataCollection.Size = new System.Drawing.Size(322, 28);
|
||||||
this.panelDataCollection.TabIndex = 3;
|
this.panelDataCollection.TabIndex = 3;
|
||||||
//
|
//
|
||||||
// labelDataCollectionLink
|
// labelDataCollectionLink
|
||||||
//
|
//
|
||||||
this.labelDataCollectionLink.AutoSize = true;
|
this.labelDataCollectionLink.AutoSize = true;
|
||||||
|
this.labelDataCollectionLink.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelDataCollectionLink.LinkArea = new System.Windows.Forms.LinkArea(1, 10);
|
this.labelDataCollectionLink.LinkArea = new System.Windows.Forms.LinkArea(1, 10);
|
||||||
this.labelDataCollectionLink.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
this.labelDataCollectionLink.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
||||||
this.labelDataCollectionLink.Location = new System.Drawing.Point(141, 6);
|
this.labelDataCollectionLink.Location = new System.Drawing.Point(153, 4);
|
||||||
this.labelDataCollectionLink.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
this.labelDataCollectionLink.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.labelDataCollectionLink.Name = "labelDataCollectionLink";
|
this.labelDataCollectionLink.Name = "labelDataCollectionLink";
|
||||||
this.labelDataCollectionLink.Size = new System.Drawing.Size(66, 17);
|
this.labelDataCollectionLink.Size = new System.Drawing.Size(71, 21);
|
||||||
this.labelDataCollectionLink.TabIndex = 1;
|
this.labelDataCollectionLink.TabIndex = 1;
|
||||||
this.labelDataCollectionLink.TabStop = true;
|
this.labelDataCollectionLink.TabStop = true;
|
||||||
this.labelDataCollectionLink.Text = "(learn more)";
|
this.labelDataCollectionLink.Text = "(learn more)";
|
||||||
@@ -67,17 +68,19 @@
|
|||||||
// checkDataCollection
|
// checkDataCollection
|
||||||
//
|
//
|
||||||
this.checkDataCollection.AutoSize = true;
|
this.checkDataCollection.AutoSize = true;
|
||||||
|
this.checkDataCollection.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkDataCollection.Location = new System.Drawing.Point(6, 6);
|
this.checkDataCollection.Location = new System.Drawing.Point(6, 6);
|
||||||
this.checkDataCollection.Margin = new System.Windows.Forms.Padding(6, 6, 0, 3);
|
this.checkDataCollection.Margin = new System.Windows.Forms.Padding(6, 6, 0, 2);
|
||||||
this.checkDataCollection.Name = "checkDataCollection";
|
this.checkDataCollection.Name = "checkDataCollection";
|
||||||
this.checkDataCollection.Size = new System.Drawing.Size(135, 17);
|
this.checkDataCollection.Size = new System.Drawing.Size(147, 19);
|
||||||
this.checkDataCollection.TabIndex = 0;
|
this.checkDataCollection.TabIndex = 0;
|
||||||
this.checkDataCollection.Text = "Send Anonymous Data";
|
this.checkDataCollection.Text = "Send Anonymous Data";
|
||||||
this.checkDataCollection.UseVisualStyleBackColor = true;
|
this.checkDataCollection.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// labelDataCollectionMessage
|
// labelDataCollectionMessage
|
||||||
//
|
//
|
||||||
this.labelDataCollectionMessage.Location = new System.Drawing.Point(6, 135);
|
this.labelDataCollectionMessage.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelDataCollectionMessage.Location = new System.Drawing.Point(6, 143);
|
||||||
this.labelDataCollectionMessage.Margin = new System.Windows.Forms.Padding(6);
|
this.labelDataCollectionMessage.Margin = new System.Windows.Forms.Padding(6);
|
||||||
this.labelDataCollectionMessage.Name = "labelDataCollectionMessage";
|
this.labelDataCollectionMessage.Name = "labelDataCollectionMessage";
|
||||||
this.labelDataCollectionMessage.Size = new System.Drawing.Size(310, 67);
|
this.labelDataCollectionMessage.Size = new System.Drawing.Size(310, 67);
|
||||||
@@ -86,10 +89,12 @@
|
|||||||
// btnViewReport
|
// btnViewReport
|
||||||
//
|
//
|
||||||
this.btnViewReport.AutoSize = true;
|
this.btnViewReport.AutoSize = true;
|
||||||
this.btnViewReport.Location = new System.Drawing.Point(5, 103);
|
this.btnViewReport.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnViewReport.Location = new System.Drawing.Point(5, 109);
|
||||||
this.btnViewReport.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
this.btnViewReport.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
||||||
this.btnViewReport.Name = "btnViewReport";
|
this.btnViewReport.Name = "btnViewReport";
|
||||||
this.btnViewReport.Size = new System.Drawing.Size(144, 23);
|
this.btnViewReport.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
|
this.btnViewReport.Size = new System.Drawing.Size(155, 25);
|
||||||
this.btnViewReport.TabIndex = 4;
|
this.btnViewReport.TabIndex = 4;
|
||||||
this.btnViewReport.Text = "View My Analytics Report";
|
this.btnViewReport.Text = "View My Analytics Report";
|
||||||
this.btnViewReport.UseVisualStyleBackColor = true;
|
this.btnViewReport.UseVisualStyleBackColor = true;
|
||||||
@@ -97,11 +102,12 @@
|
|||||||
// btnSendFeedback
|
// btnSendFeedback
|
||||||
//
|
//
|
||||||
this.btnSendFeedback.AutoSize = true;
|
this.btnSendFeedback.AutoSize = true;
|
||||||
|
this.btnSendFeedback.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.btnSendFeedback.Location = new System.Drawing.Point(5, 23);
|
this.btnSendFeedback.Location = new System.Drawing.Point(5, 23);
|
||||||
this.btnSendFeedback.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
this.btnSendFeedback.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
||||||
this.btnSendFeedback.Name = "btnSendFeedback";
|
this.btnSendFeedback.Name = "btnSendFeedback";
|
||||||
this.btnSendFeedback.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnSendFeedback.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnSendFeedback.Size = new System.Drawing.Size(164, 23);
|
this.btnSendFeedback.Size = new System.Drawing.Size(170, 25);
|
||||||
this.btnSendFeedback.TabIndex = 1;
|
this.btnSendFeedback.TabIndex = 1;
|
||||||
this.btnSendFeedback.Text = "Send Feedback / Bug Report";
|
this.btnSendFeedback.Text = "Send Feedback / Bug Report";
|
||||||
this.btnSendFeedback.UseVisualStyleBackColor = true;
|
this.btnSendFeedback.UseVisualStyleBackColor = true;
|
||||||
@@ -109,21 +115,22 @@
|
|||||||
// labelDataCollection
|
// labelDataCollection
|
||||||
//
|
//
|
||||||
this.labelDataCollection.AutoSize = true;
|
this.labelDataCollection.AutoSize = true;
|
||||||
this.labelDataCollection.Location = new System.Drawing.Point(3, 61);
|
this.labelDataCollection.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelDataCollection.Location = new System.Drawing.Point(3, 63);
|
||||||
this.labelDataCollection.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
this.labelDataCollection.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
||||||
this.labelDataCollection.Name = "labelDataCollection";
|
this.labelDataCollection.Name = "labelDataCollection";
|
||||||
this.labelDataCollection.Size = new System.Drawing.Size(79, 13);
|
this.labelDataCollection.Size = new System.Drawing.Size(88, 15);
|
||||||
this.labelDataCollection.TabIndex = 2;
|
this.labelDataCollection.TabIndex = 2;
|
||||||
this.labelDataCollection.Text = "Data Collection";
|
this.labelDataCollection.Text = "Data Collection";
|
||||||
//
|
//
|
||||||
// labelFeedback
|
// labelFeedback
|
||||||
//
|
//
|
||||||
this.labelFeedback.AutoSize = true;
|
this.labelFeedback.AutoSize = true;
|
||||||
this.labelFeedback.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelFeedback.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelFeedback.Location = new System.Drawing.Point(0, 0);
|
this.labelFeedback.Location = new System.Drawing.Point(0, 0);
|
||||||
this.labelFeedback.Margin = new System.Windows.Forms.Padding(0);
|
this.labelFeedback.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.labelFeedback.Name = "labelFeedback";
|
this.labelFeedback.Name = "labelFeedback";
|
||||||
this.labelFeedback.Size = new System.Drawing.Size(80, 20);
|
this.labelFeedback.Size = new System.Drawing.Size(72, 20);
|
||||||
this.labelFeedback.TabIndex = 0;
|
this.labelFeedback.TabIndex = 0;
|
||||||
this.labelFeedback.Text = "Feedback";
|
this.labelFeedback.Text = "Feedback";
|
||||||
//
|
//
|
||||||
@@ -141,7 +148,7 @@
|
|||||||
this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
||||||
this.flowPanel.Location = new System.Drawing.Point(9, 9);
|
this.flowPanel.Location = new System.Drawing.Point(9, 9);
|
||||||
this.flowPanel.Name = "flowPanel";
|
this.flowPanel.Name = "flowPanel";
|
||||||
this.flowPanel.Size = new System.Drawing.Size(322, 209);
|
this.flowPanel.Size = new System.Drawing.Size(322, 212);
|
||||||
this.flowPanel.TabIndex = 0;
|
this.flowPanel.TabIndex = 0;
|
||||||
this.flowPanel.WrapContents = false;
|
this.flowPanel.WrapContents = false;
|
||||||
//
|
//
|
||||||
@@ -151,7 +158,7 @@
|
|||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.Controls.Add(this.flowPanel);
|
this.Controls.Add(this.flowPanel);
|
||||||
this.Name = "TabSettingsFeedback";
|
this.Name = "TabSettingsFeedback";
|
||||||
this.Size = new System.Drawing.Size(340, 227);
|
this.Size = new System.Drawing.Size(340, 230);
|
||||||
this.panelDataCollection.ResumeLayout(false);
|
this.panelDataCollection.ResumeLayout(false);
|
||||||
this.panelDataCollection.PerformLayout();
|
this.panelDataCollection.PerformLayout();
|
||||||
this.flowPanel.ResumeLayout(false);
|
this.flowPanel.ResumeLayout(false);
|
||||||
|
102
Core/Other/Settings/TabSettingsGeneral.Designer.cs
generated
@@ -54,10 +54,11 @@
|
|||||||
// checkExpandLinks
|
// checkExpandLinks
|
||||||
//
|
//
|
||||||
this.checkExpandLinks.AutoSize = true;
|
this.checkExpandLinks.AutoSize = true;
|
||||||
|
this.checkExpandLinks.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkExpandLinks.Location = new System.Drawing.Point(6, 26);
|
this.checkExpandLinks.Location = new System.Drawing.Point(6, 26);
|
||||||
this.checkExpandLinks.Margin = new System.Windows.Forms.Padding(6, 6, 3, 3);
|
this.checkExpandLinks.Margin = new System.Windows.Forms.Padding(6, 6, 3, 2);
|
||||||
this.checkExpandLinks.Name = "checkExpandLinks";
|
this.checkExpandLinks.Name = "checkExpandLinks";
|
||||||
this.checkExpandLinks.Size = new System.Drawing.Size(166, 17);
|
this.checkExpandLinks.Size = new System.Drawing.Size(176, 19);
|
||||||
this.checkExpandLinks.TabIndex = 1;
|
this.checkExpandLinks.TabIndex = 1;
|
||||||
this.checkExpandLinks.Text = "Expand Links When Hovered";
|
this.checkExpandLinks.Text = "Expand Links When Hovered";
|
||||||
this.checkExpandLinks.UseVisualStyleBackColor = true;
|
this.checkExpandLinks.UseVisualStyleBackColor = true;
|
||||||
@@ -65,20 +66,24 @@
|
|||||||
// checkUpdateNotifications
|
// checkUpdateNotifications
|
||||||
//
|
//
|
||||||
this.checkUpdateNotifications.AutoSize = true;
|
this.checkUpdateNotifications.AutoSize = true;
|
||||||
this.checkUpdateNotifications.Location = new System.Drawing.Point(6, 415);
|
this.checkUpdateNotifications.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkUpdateNotifications.Margin = new System.Windows.Forms.Padding(6, 6, 3, 3);
|
this.checkUpdateNotifications.Location = new System.Drawing.Point(6, 427);
|
||||||
|
this.checkUpdateNotifications.Margin = new System.Windows.Forms.Padding(6, 6, 3, 2);
|
||||||
this.checkUpdateNotifications.Name = "checkUpdateNotifications";
|
this.checkUpdateNotifications.Name = "checkUpdateNotifications";
|
||||||
this.checkUpdateNotifications.Size = new System.Drawing.Size(165, 17);
|
this.checkUpdateNotifications.Size = new System.Drawing.Size(182, 19);
|
||||||
this.checkUpdateNotifications.TabIndex = 15;
|
this.checkUpdateNotifications.TabIndex = 15;
|
||||||
this.checkUpdateNotifications.Text = "Check Updates Automatically";
|
this.checkUpdateNotifications.Text = "Check Updates Automatically";
|
||||||
this.checkUpdateNotifications.UseVisualStyleBackColor = true;
|
this.checkUpdateNotifications.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// btnCheckUpdates
|
// btnCheckUpdates
|
||||||
//
|
//
|
||||||
this.btnCheckUpdates.Location = new System.Drawing.Point(5, 438);
|
this.btnCheckUpdates.AutoSize = true;
|
||||||
|
this.btnCheckUpdates.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnCheckUpdates.Location = new System.Drawing.Point(5, 451);
|
||||||
this.btnCheckUpdates.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
this.btnCheckUpdates.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
||||||
this.btnCheckUpdates.Name = "btnCheckUpdates";
|
this.btnCheckUpdates.Name = "btnCheckUpdates";
|
||||||
this.btnCheckUpdates.Size = new System.Drawing.Size(144, 23);
|
this.btnCheckUpdates.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
|
this.btnCheckUpdates.Size = new System.Drawing.Size(128, 25);
|
||||||
this.btnCheckUpdates.TabIndex = 16;
|
this.btnCheckUpdates.TabIndex = 16;
|
||||||
this.btnCheckUpdates.Text = "Check Updates Now";
|
this.btnCheckUpdates.Text = "Check Updates Now";
|
||||||
this.btnCheckUpdates.UseVisualStyleBackColor = true;
|
this.btnCheckUpdates.UseVisualStyleBackColor = true;
|
||||||
@@ -86,6 +91,7 @@
|
|||||||
// labelZoomValue
|
// labelZoomValue
|
||||||
//
|
//
|
||||||
this.labelZoomValue.BackColor = System.Drawing.Color.Transparent;
|
this.labelZoomValue.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.labelZoomValue.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelZoomValue.Location = new System.Drawing.Point(147, 4);
|
this.labelZoomValue.Location = new System.Drawing.Point(147, 4);
|
||||||
this.labelZoomValue.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
this.labelZoomValue.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
||||||
this.labelZoomValue.Name = "labelZoomValue";
|
this.labelZoomValue.Name = "labelZoomValue";
|
||||||
@@ -97,10 +103,11 @@
|
|||||||
// checkBestImageQuality
|
// checkBestImageQuality
|
||||||
//
|
//
|
||||||
this.checkBestImageQuality.AutoSize = true;
|
this.checkBestImageQuality.AutoSize = true;
|
||||||
this.checkBestImageQuality.Location = new System.Drawing.Point(6, 95);
|
this.checkBestImageQuality.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkBestImageQuality.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
|
this.checkBestImageQuality.Location = new System.Drawing.Point(6, 98);
|
||||||
|
this.checkBestImageQuality.Margin = new System.Windows.Forms.Padding(6, 3, 3, 2);
|
||||||
this.checkBestImageQuality.Name = "checkBestImageQuality";
|
this.checkBestImageQuality.Name = "checkBestImageQuality";
|
||||||
this.checkBestImageQuality.Size = new System.Drawing.Size(114, 17);
|
this.checkBestImageQuality.Size = new System.Drawing.Size(125, 19);
|
||||||
this.checkBestImageQuality.TabIndex = 4;
|
this.checkBestImageQuality.TabIndex = 4;
|
||||||
this.checkBestImageQuality.Text = "Best Image Quality";
|
this.checkBestImageQuality.Text = "Best Image Quality";
|
||||||
this.checkBestImageQuality.UseVisualStyleBackColor = true;
|
this.checkBestImageQuality.UseVisualStyleBackColor = true;
|
||||||
@@ -108,10 +115,11 @@
|
|||||||
// checkOpenSearchInFirstColumn
|
// checkOpenSearchInFirstColumn
|
||||||
//
|
//
|
||||||
this.checkOpenSearchInFirstColumn.AutoSize = true;
|
this.checkOpenSearchInFirstColumn.AutoSize = true;
|
||||||
this.checkOpenSearchInFirstColumn.Location = new System.Drawing.Point(6, 49);
|
this.checkOpenSearchInFirstColumn.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkOpenSearchInFirstColumn.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
|
this.checkOpenSearchInFirstColumn.Location = new System.Drawing.Point(6, 50);
|
||||||
|
this.checkOpenSearchInFirstColumn.Margin = new System.Windows.Forms.Padding(6, 3, 3, 2);
|
||||||
this.checkOpenSearchInFirstColumn.Name = "checkOpenSearchInFirstColumn";
|
this.checkOpenSearchInFirstColumn.Name = "checkOpenSearchInFirstColumn";
|
||||||
this.checkOpenSearchInFirstColumn.Size = new System.Drawing.Size(219, 17);
|
this.checkOpenSearchInFirstColumn.Size = new System.Drawing.Size(245, 19);
|
||||||
this.checkOpenSearchInFirstColumn.TabIndex = 2;
|
this.checkOpenSearchInFirstColumn.TabIndex = 2;
|
||||||
this.checkOpenSearchInFirstColumn.Text = "Add Search Columns Before First Column";
|
this.checkOpenSearchInFirstColumn.Text = "Add Search Columns Before First Column";
|
||||||
this.checkOpenSearchInFirstColumn.UseVisualStyleBackColor = true;
|
this.checkOpenSearchInFirstColumn.UseVisualStyleBackColor = true;
|
||||||
@@ -134,10 +142,11 @@
|
|||||||
// labelZoom
|
// labelZoom
|
||||||
//
|
//
|
||||||
this.labelZoom.AutoSize = true;
|
this.labelZoom.AutoSize = true;
|
||||||
this.labelZoom.Location = new System.Drawing.Point(3, 320);
|
this.labelZoom.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelZoom.Location = new System.Drawing.Point(3, 330);
|
||||||
this.labelZoom.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
this.labelZoom.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
||||||
this.labelZoom.Name = "labelZoom";
|
this.labelZoom.Name = "labelZoom";
|
||||||
this.labelZoom.Size = new System.Drawing.Size(34, 13);
|
this.labelZoom.Size = new System.Drawing.Size(39, 15);
|
||||||
this.labelZoom.TabIndex = 12;
|
this.labelZoom.TabIndex = 12;
|
||||||
this.labelZoom.Text = "Zoom";
|
this.labelZoom.Text = "Zoom";
|
||||||
//
|
//
|
||||||
@@ -149,11 +158,11 @@
|
|||||||
// labelUI
|
// labelUI
|
||||||
//
|
//
|
||||||
this.labelUI.AutoSize = true;
|
this.labelUI.AutoSize = true;
|
||||||
this.labelUI.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelUI.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelUI.Location = new System.Drawing.Point(0, 0);
|
this.labelUI.Location = new System.Drawing.Point(0, 0);
|
||||||
this.labelUI.Margin = new System.Windows.Forms.Padding(0);
|
this.labelUI.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.labelUI.Name = "labelUI";
|
this.labelUI.Name = "labelUI";
|
||||||
this.labelUI.Size = new System.Drawing.Size(111, 20);
|
this.labelUI.Size = new System.Drawing.Size(100, 20);
|
||||||
this.labelUI.TabIndex = 0;
|
this.labelUI.TabIndex = 0;
|
||||||
this.labelUI.Text = "User Interface";
|
this.labelUI.Text = "User Interface";
|
||||||
//
|
//
|
||||||
@@ -162,7 +171,7 @@
|
|||||||
this.panelZoom.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
this.panelZoom.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
||||||
this.panelZoom.Controls.Add(this.trackBarZoom);
|
this.panelZoom.Controls.Add(this.trackBarZoom);
|
||||||
this.panelZoom.Controls.Add(this.labelZoomValue);
|
this.panelZoom.Controls.Add(this.labelZoomValue);
|
||||||
this.panelZoom.Location = new System.Drawing.Point(0, 333);
|
this.panelZoom.Location = new System.Drawing.Point(0, 345);
|
||||||
this.panelZoom.Margin = new System.Windows.Forms.Padding(0);
|
this.panelZoom.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.panelZoom.Name = "panelZoom";
|
this.panelZoom.Name = "panelZoom";
|
||||||
this.panelZoom.Size = new System.Drawing.Size(322, 36);
|
this.panelZoom.Size = new System.Drawing.Size(322, 36);
|
||||||
@@ -171,10 +180,11 @@
|
|||||||
// checkAnimatedAvatars
|
// checkAnimatedAvatars
|
||||||
//
|
//
|
||||||
this.checkAnimatedAvatars.AutoSize = true;
|
this.checkAnimatedAvatars.AutoSize = true;
|
||||||
this.checkAnimatedAvatars.Location = new System.Drawing.Point(6, 118);
|
this.checkAnimatedAvatars.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkAnimatedAvatars.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
|
this.checkAnimatedAvatars.Location = new System.Drawing.Point(6, 122);
|
||||||
|
this.checkAnimatedAvatars.Margin = new System.Windows.Forms.Padding(6, 3, 3, 2);
|
||||||
this.checkAnimatedAvatars.Name = "checkAnimatedAvatars";
|
this.checkAnimatedAvatars.Name = "checkAnimatedAvatars";
|
||||||
this.checkAnimatedAvatars.Size = new System.Drawing.Size(145, 17);
|
this.checkAnimatedAvatars.Size = new System.Drawing.Size(158, 19);
|
||||||
this.checkAnimatedAvatars.TabIndex = 5;
|
this.checkAnimatedAvatars.TabIndex = 5;
|
||||||
this.checkAnimatedAvatars.Text = "Enable Animated Avatars";
|
this.checkAnimatedAvatars.Text = "Enable Animated Avatars";
|
||||||
this.checkAnimatedAvatars.UseVisualStyleBackColor = true;
|
this.checkAnimatedAvatars.UseVisualStyleBackColor = true;
|
||||||
@@ -182,11 +192,11 @@
|
|||||||
// labelUpdates
|
// labelUpdates
|
||||||
//
|
//
|
||||||
this.labelUpdates.AutoSize = true;
|
this.labelUpdates.AutoSize = true;
|
||||||
this.labelUpdates.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelUpdates.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelUpdates.Location = new System.Drawing.Point(0, 389);
|
this.labelUpdates.Location = new System.Drawing.Point(0, 401);
|
||||||
this.labelUpdates.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
this.labelUpdates.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
||||||
this.labelUpdates.Name = "labelUpdates";
|
this.labelUpdates.Name = "labelUpdates";
|
||||||
this.labelUpdates.Size = new System.Drawing.Size(70, 20);
|
this.labelUpdates.Size = new System.Drawing.Size(64, 20);
|
||||||
this.labelUpdates.TabIndex = 14;
|
this.labelUpdates.TabIndex = 14;
|
||||||
this.labelUpdates.Text = "Updates";
|
this.labelUpdates.Text = "Updates";
|
||||||
//
|
//
|
||||||
@@ -215,17 +225,18 @@
|
|||||||
this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
||||||
this.flowPanel.Location = new System.Drawing.Point(9, 9);
|
this.flowPanel.Location = new System.Drawing.Point(9, 9);
|
||||||
this.flowPanel.Name = "flowPanel";
|
this.flowPanel.Name = "flowPanel";
|
||||||
this.flowPanel.Size = new System.Drawing.Size(322, 462);
|
this.flowPanel.Size = new System.Drawing.Size(322, 486);
|
||||||
this.flowPanel.TabIndex = 0;
|
this.flowPanel.TabIndex = 0;
|
||||||
this.flowPanel.WrapContents = false;
|
this.flowPanel.WrapContents = false;
|
||||||
//
|
//
|
||||||
// checkKeepLikeFollowDialogsOpen
|
// checkKeepLikeFollowDialogsOpen
|
||||||
//
|
//
|
||||||
this.checkKeepLikeFollowDialogsOpen.AutoSize = true;
|
this.checkKeepLikeFollowDialogsOpen.AutoSize = true;
|
||||||
this.checkKeepLikeFollowDialogsOpen.Location = new System.Drawing.Point(6, 72);
|
this.checkKeepLikeFollowDialogsOpen.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkKeepLikeFollowDialogsOpen.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
|
this.checkKeepLikeFollowDialogsOpen.Location = new System.Drawing.Point(6, 74);
|
||||||
|
this.checkKeepLikeFollowDialogsOpen.Margin = new System.Windows.Forms.Padding(6, 3, 3, 2);
|
||||||
this.checkKeepLikeFollowDialogsOpen.Name = "checkKeepLikeFollowDialogsOpen";
|
this.checkKeepLikeFollowDialogsOpen.Name = "checkKeepLikeFollowDialogsOpen";
|
||||||
this.checkKeepLikeFollowDialogsOpen.Size = new System.Drawing.Size(176, 17);
|
this.checkKeepLikeFollowDialogsOpen.Size = new System.Drawing.Size(190, 19);
|
||||||
this.checkKeepLikeFollowDialogsOpen.TabIndex = 3;
|
this.checkKeepLikeFollowDialogsOpen.TabIndex = 3;
|
||||||
this.checkKeepLikeFollowDialogsOpen.Text = "Keep Like/Follow Dialogs Open";
|
this.checkKeepLikeFollowDialogsOpen.Text = "Keep Like/Follow Dialogs Open";
|
||||||
this.checkKeepLikeFollowDialogsOpen.UseVisualStyleBackColor = true;
|
this.checkKeepLikeFollowDialogsOpen.UseVisualStyleBackColor = true;
|
||||||
@@ -233,21 +244,22 @@
|
|||||||
// labelBrowserSettings
|
// labelBrowserSettings
|
||||||
//
|
//
|
||||||
this.labelBrowserSettings.AutoSize = true;
|
this.labelBrowserSettings.AutoSize = true;
|
||||||
this.labelBrowserSettings.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelBrowserSettings.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelBrowserSettings.Location = new System.Drawing.Point(0, 158);
|
this.labelBrowserSettings.Location = new System.Drawing.Point(0, 163);
|
||||||
this.labelBrowserSettings.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
this.labelBrowserSettings.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
||||||
this.labelBrowserSettings.Name = "labelBrowserSettings";
|
this.labelBrowserSettings.Name = "labelBrowserSettings";
|
||||||
this.labelBrowserSettings.Size = new System.Drawing.Size(130, 20);
|
this.labelBrowserSettings.Size = new System.Drawing.Size(119, 20);
|
||||||
this.labelBrowserSettings.TabIndex = 6;
|
this.labelBrowserSettings.TabIndex = 6;
|
||||||
this.labelBrowserSettings.Text = "Browser Settings";
|
this.labelBrowserSettings.Text = "Browser Settings";
|
||||||
//
|
//
|
||||||
// checkSmoothScrolling
|
// checkSmoothScrolling
|
||||||
//
|
//
|
||||||
this.checkSmoothScrolling.AutoSize = true;
|
this.checkSmoothScrolling.AutoSize = true;
|
||||||
this.checkSmoothScrolling.Location = new System.Drawing.Point(6, 184);
|
this.checkSmoothScrolling.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkSmoothScrolling.Margin = new System.Windows.Forms.Padding(6, 6, 3, 3);
|
this.checkSmoothScrolling.Location = new System.Drawing.Point(6, 189);
|
||||||
|
this.checkSmoothScrolling.Margin = new System.Windows.Forms.Padding(6, 6, 3, 2);
|
||||||
this.checkSmoothScrolling.Name = "checkSmoothScrolling";
|
this.checkSmoothScrolling.Name = "checkSmoothScrolling";
|
||||||
this.checkSmoothScrolling.Size = new System.Drawing.Size(105, 17);
|
this.checkSmoothScrolling.Size = new System.Drawing.Size(117, 19);
|
||||||
this.checkSmoothScrolling.TabIndex = 7;
|
this.checkSmoothScrolling.TabIndex = 7;
|
||||||
this.checkSmoothScrolling.Text = "Smooth Scrolling";
|
this.checkSmoothScrolling.Text = "Smooth Scrolling";
|
||||||
this.checkSmoothScrolling.UseVisualStyleBackColor = true;
|
this.checkSmoothScrolling.UseVisualStyleBackColor = true;
|
||||||
@@ -255,41 +267,45 @@
|
|||||||
// labelBrowserPath
|
// labelBrowserPath
|
||||||
//
|
//
|
||||||
this.labelBrowserPath.AutoSize = true;
|
this.labelBrowserPath.AutoSize = true;
|
||||||
this.labelBrowserPath.Location = new System.Drawing.Point(3, 216);
|
this.labelBrowserPath.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelBrowserPath.Location = new System.Drawing.Point(3, 222);
|
||||||
this.labelBrowserPath.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
this.labelBrowserPath.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
||||||
this.labelBrowserPath.Name = "labelBrowserPath";
|
this.labelBrowserPath.Name = "labelBrowserPath";
|
||||||
this.labelBrowserPath.Size = new System.Drawing.Size(95, 13);
|
this.labelBrowserPath.Size = new System.Drawing.Size(103, 15);
|
||||||
this.labelBrowserPath.TabIndex = 8;
|
this.labelBrowserPath.TabIndex = 8;
|
||||||
this.labelBrowserPath.Text = "Open Links With...";
|
this.labelBrowserPath.Text = "Open Links With...";
|
||||||
//
|
//
|
||||||
// comboBoxBrowserPath
|
// comboBoxBrowserPath
|
||||||
//
|
//
|
||||||
this.comboBoxBrowserPath.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.comboBoxBrowserPath.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.comboBoxBrowserPath.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.comboBoxBrowserPath.FormattingEnabled = true;
|
this.comboBoxBrowserPath.FormattingEnabled = true;
|
||||||
this.comboBoxBrowserPath.Location = new System.Drawing.Point(5, 232);
|
this.comboBoxBrowserPath.Location = new System.Drawing.Point(5, 240);
|
||||||
this.comboBoxBrowserPath.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
this.comboBoxBrowserPath.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
||||||
this.comboBoxBrowserPath.Name = "comboBoxBrowserPath";
|
this.comboBoxBrowserPath.Name = "comboBoxBrowserPath";
|
||||||
this.comboBoxBrowserPath.Size = new System.Drawing.Size(173, 21);
|
this.comboBoxBrowserPath.Size = new System.Drawing.Size(173, 23);
|
||||||
this.comboBoxBrowserPath.TabIndex = 9;
|
this.comboBoxBrowserPath.TabIndex = 9;
|
||||||
//
|
//
|
||||||
// labelSearchEngine
|
// labelSearchEngine
|
||||||
//
|
//
|
||||||
this.labelSearchEngine.AutoSize = true;
|
this.labelSearchEngine.AutoSize = true;
|
||||||
this.labelSearchEngine.Location = new System.Drawing.Point(3, 268);
|
this.labelSearchEngine.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelSearchEngine.Location = new System.Drawing.Point(3, 276);
|
||||||
this.labelSearchEngine.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
this.labelSearchEngine.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
||||||
this.labelSearchEngine.Name = "labelSearchEngine";
|
this.labelSearchEngine.Name = "labelSearchEngine";
|
||||||
this.labelSearchEngine.Size = new System.Drawing.Size(77, 13);
|
this.labelSearchEngine.Size = new System.Drawing.Size(81, 15);
|
||||||
this.labelSearchEngine.TabIndex = 10;
|
this.labelSearchEngine.TabIndex = 10;
|
||||||
this.labelSearchEngine.Text = "Search Engine";
|
this.labelSearchEngine.Text = "Search Engine";
|
||||||
//
|
//
|
||||||
// comboBoxSearchEngine
|
// comboBoxSearchEngine
|
||||||
//
|
//
|
||||||
this.comboBoxSearchEngine.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.comboBoxSearchEngine.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.comboBoxSearchEngine.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.comboBoxSearchEngine.FormattingEnabled = true;
|
this.comboBoxSearchEngine.FormattingEnabled = true;
|
||||||
this.comboBoxSearchEngine.Location = new System.Drawing.Point(5, 284);
|
this.comboBoxSearchEngine.Location = new System.Drawing.Point(5, 294);
|
||||||
this.comboBoxSearchEngine.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
this.comboBoxSearchEngine.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
||||||
this.comboBoxSearchEngine.Name = "comboBoxSearchEngine";
|
this.comboBoxSearchEngine.Name = "comboBoxSearchEngine";
|
||||||
this.comboBoxSearchEngine.Size = new System.Drawing.Size(173, 21);
|
this.comboBoxSearchEngine.Size = new System.Drawing.Size(173, 23);
|
||||||
this.comboBoxSearchEngine.TabIndex = 11;
|
this.comboBoxSearchEngine.TabIndex = 11;
|
||||||
//
|
//
|
||||||
// TabSettingsGeneral
|
// TabSettingsGeneral
|
||||||
@@ -298,7 +314,7 @@
|
|||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.Controls.Add(this.flowPanel);
|
this.Controls.Add(this.flowPanel);
|
||||||
this.Name = "TabSettingsGeneral";
|
this.Name = "TabSettingsGeneral";
|
||||||
this.Size = new System.Drawing.Size(340, 480);
|
this.Size = new System.Drawing.Size(340, 504);
|
||||||
((System.ComponentModel.ISupportInitialize)(this.trackBarZoom)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.trackBarZoom)).EndInit();
|
||||||
this.panelZoom.ResumeLayout(false);
|
this.panelZoom.ResumeLayout(false);
|
||||||
this.flowPanel.ResumeLayout(false);
|
this.flowPanel.ResumeLayout(false);
|
||||||
|
@@ -218,15 +218,17 @@ namespace TweetDuck.Core.Other.Settings{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updates_CheckFinished(object sender, UpdateCheckEventArgs e){
|
private void updates_CheckFinished(object sender, UpdateCheckEventArgs e){
|
||||||
this.InvokeAsyncSafe(() => {
|
if (e.EventId == updateCheckEventId){
|
||||||
if (e.EventId == updateCheckEventId){
|
btnCheckUpdates.Enabled = true;
|
||||||
btnCheckUpdates.Enabled = true;
|
|
||||||
|
|
||||||
if (!e.IsUpdateAvailable){
|
e.Result.Handle(update => {
|
||||||
|
if (update.VersionTag == Program.VersionTag){
|
||||||
FormMessage.Information("No Updates Available", "Your version of TweetDuck is up to date.", FormMessage.OK);
|
FormMessage.Information("No Updates Available", "Your version of TweetDuck is up to date.", FormMessage.OK);
|
||||||
}
|
}
|
||||||
}
|
}, ex => {
|
||||||
});
|
Program.Reporter.HandleException("Update Check Error", "An error occurred while checking for updates.", true, ex);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void zoomUpdateTimer_Tick(object sender, EventArgs e){
|
private void zoomUpdateTimer_Tick(object sender, EventArgs e){
|
||||||
|
39
Core/Other/Settings/TabSettingsLocales.Designer.cs
generated
@@ -39,10 +39,11 @@
|
|||||||
// checkSpellCheck
|
// checkSpellCheck
|
||||||
//
|
//
|
||||||
this.checkSpellCheck.AutoSize = true;
|
this.checkSpellCheck.AutoSize = true;
|
||||||
|
this.checkSpellCheck.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkSpellCheck.Location = new System.Drawing.Point(6, 26);
|
this.checkSpellCheck.Location = new System.Drawing.Point(6, 26);
|
||||||
this.checkSpellCheck.Margin = new System.Windows.Forms.Padding(6, 6, 3, 3);
|
this.checkSpellCheck.Margin = new System.Windows.Forms.Padding(6, 6, 3, 2);
|
||||||
this.checkSpellCheck.Name = "checkSpellCheck";
|
this.checkSpellCheck.Name = "checkSpellCheck";
|
||||||
this.checkSpellCheck.Size = new System.Drawing.Size(119, 17);
|
this.checkSpellCheck.Size = new System.Drawing.Size(125, 19);
|
||||||
this.checkSpellCheck.TabIndex = 1;
|
this.checkSpellCheck.TabIndex = 1;
|
||||||
this.checkSpellCheck.Text = "Enable Spell Check";
|
this.checkSpellCheck.Text = "Enable Spell Check";
|
||||||
this.checkSpellCheck.UseVisualStyleBackColor = true;
|
this.checkSpellCheck.UseVisualStyleBackColor = true;
|
||||||
@@ -50,11 +51,11 @@
|
|||||||
// labelLocales
|
// labelLocales
|
||||||
//
|
//
|
||||||
this.labelLocales.AutoSize = true;
|
this.labelLocales.AutoSize = true;
|
||||||
this.labelLocales.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelLocales.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelLocales.Location = new System.Drawing.Point(0, 0);
|
this.labelLocales.Location = new System.Drawing.Point(0, 0);
|
||||||
this.labelLocales.Margin = new System.Windows.Forms.Padding(0);
|
this.labelLocales.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.labelLocales.Name = "labelLocales";
|
this.labelLocales.Name = "labelLocales";
|
||||||
this.labelLocales.Size = new System.Drawing.Size(64, 20);
|
this.labelLocales.Size = new System.Drawing.Size(58, 20);
|
||||||
this.labelLocales.TabIndex = 0;
|
this.labelLocales.TabIndex = 0;
|
||||||
this.labelLocales.Text = "Locales";
|
this.labelLocales.Text = "Locales";
|
||||||
//
|
//
|
||||||
@@ -73,59 +74,63 @@
|
|||||||
this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
||||||
this.flowPanel.Location = new System.Drawing.Point(9, 9);
|
this.flowPanel.Location = new System.Drawing.Point(9, 9);
|
||||||
this.flowPanel.Name = "flowPanel";
|
this.flowPanel.Name = "flowPanel";
|
||||||
this.flowPanel.Size = new System.Drawing.Size(322, 193);
|
this.flowPanel.Size = new System.Drawing.Size(322, 201);
|
||||||
this.flowPanel.TabIndex = 0;
|
this.flowPanel.TabIndex = 0;
|
||||||
this.flowPanel.WrapContents = false;
|
this.flowPanel.WrapContents = false;
|
||||||
//
|
//
|
||||||
// labelSpellCheckLanguage
|
// labelSpellCheckLanguage
|
||||||
//
|
//
|
||||||
this.labelSpellCheckLanguage.AutoSize = true;
|
this.labelSpellCheckLanguage.AutoSize = true;
|
||||||
this.labelSpellCheckLanguage.Location = new System.Drawing.Point(3, 58);
|
this.labelSpellCheckLanguage.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelSpellCheckLanguage.Location = new System.Drawing.Point(3, 59);
|
||||||
this.labelSpellCheckLanguage.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
this.labelSpellCheckLanguage.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
||||||
this.labelSpellCheckLanguage.Name = "labelSpellCheckLanguage";
|
this.labelSpellCheckLanguage.Name = "labelSpellCheckLanguage";
|
||||||
this.labelSpellCheckLanguage.Size = new System.Drawing.Size(115, 13);
|
this.labelSpellCheckLanguage.Size = new System.Drawing.Size(123, 15);
|
||||||
this.labelSpellCheckLanguage.TabIndex = 2;
|
this.labelSpellCheckLanguage.TabIndex = 2;
|
||||||
this.labelSpellCheckLanguage.Text = "Spell Check Language";
|
this.labelSpellCheckLanguage.Text = "Spell Check Language";
|
||||||
//
|
//
|
||||||
// comboBoxSpellCheckLanguage
|
// comboBoxSpellCheckLanguage
|
||||||
//
|
//
|
||||||
this.comboBoxSpellCheckLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.comboBoxSpellCheckLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.comboBoxSpellCheckLanguage.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.comboBoxSpellCheckLanguage.FormattingEnabled = true;
|
this.comboBoxSpellCheckLanguage.FormattingEnabled = true;
|
||||||
this.comboBoxSpellCheckLanguage.Location = new System.Drawing.Point(5, 74);
|
this.comboBoxSpellCheckLanguage.Location = new System.Drawing.Point(5, 77);
|
||||||
this.comboBoxSpellCheckLanguage.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
this.comboBoxSpellCheckLanguage.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
||||||
this.comboBoxSpellCheckLanguage.Name = "comboBoxSpellCheckLanguage";
|
this.comboBoxSpellCheckLanguage.Name = "comboBoxSpellCheckLanguage";
|
||||||
this.comboBoxSpellCheckLanguage.Size = new System.Drawing.Size(311, 21);
|
this.comboBoxSpellCheckLanguage.Size = new System.Drawing.Size(311, 23);
|
||||||
this.comboBoxSpellCheckLanguage.TabIndex = 3;
|
this.comboBoxSpellCheckLanguage.TabIndex = 3;
|
||||||
//
|
//
|
||||||
// labelTranslations
|
// labelTranslations
|
||||||
//
|
//
|
||||||
this.labelTranslations.AutoSize = true;
|
this.labelTranslations.AutoSize = true;
|
||||||
this.labelTranslations.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelTranslations.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelTranslations.Location = new System.Drawing.Point(0, 118);
|
this.labelTranslations.Location = new System.Drawing.Point(0, 123);
|
||||||
this.labelTranslations.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
this.labelTranslations.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
||||||
this.labelTranslations.Name = "labelTranslations";
|
this.labelTranslations.Name = "labelTranslations";
|
||||||
this.labelTranslations.Size = new System.Drawing.Size(116, 20);
|
this.labelTranslations.Size = new System.Drawing.Size(109, 20);
|
||||||
this.labelTranslations.TabIndex = 4;
|
this.labelTranslations.TabIndex = 4;
|
||||||
this.labelTranslations.Text = "Bing Translator";
|
this.labelTranslations.Text = "Bing Translator";
|
||||||
//
|
//
|
||||||
// labelTranslationTarget
|
// labelTranslationTarget
|
||||||
//
|
//
|
||||||
this.labelTranslationTarget.AutoSize = true;
|
this.labelTranslationTarget.AutoSize = true;
|
||||||
this.labelTranslationTarget.Location = new System.Drawing.Point(3, 150);
|
this.labelTranslationTarget.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelTranslationTarget.Location = new System.Drawing.Point(3, 155);
|
||||||
this.labelTranslationTarget.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
this.labelTranslationTarget.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
||||||
this.labelTranslationTarget.Name = "labelTranslationTarget";
|
this.labelTranslationTarget.Name = "labelTranslationTarget";
|
||||||
this.labelTranslationTarget.Size = new System.Drawing.Size(89, 13);
|
this.labelTranslationTarget.Size = new System.Drawing.Size(96, 15);
|
||||||
this.labelTranslationTarget.TabIndex = 5;
|
this.labelTranslationTarget.TabIndex = 5;
|
||||||
this.labelTranslationTarget.Text = "Target Language";
|
this.labelTranslationTarget.Text = "Target Language";
|
||||||
//
|
//
|
||||||
// comboBoxTranslationTarget
|
// comboBoxTranslationTarget
|
||||||
//
|
//
|
||||||
this.comboBoxTranslationTarget.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.comboBoxTranslationTarget.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.comboBoxTranslationTarget.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.comboBoxTranslationTarget.FormattingEnabled = true;
|
this.comboBoxTranslationTarget.FormattingEnabled = true;
|
||||||
this.comboBoxTranslationTarget.Location = new System.Drawing.Point(5, 166);
|
this.comboBoxTranslationTarget.Location = new System.Drawing.Point(5, 173);
|
||||||
this.comboBoxTranslationTarget.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
this.comboBoxTranslationTarget.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
||||||
this.comboBoxTranslationTarget.Name = "comboBoxTranslationTarget";
|
this.comboBoxTranslationTarget.Name = "comboBoxTranslationTarget";
|
||||||
this.comboBoxTranslationTarget.Size = new System.Drawing.Size(311, 21);
|
this.comboBoxTranslationTarget.Size = new System.Drawing.Size(311, 23);
|
||||||
this.comboBoxTranslationTarget.TabIndex = 6;
|
this.comboBoxTranslationTarget.TabIndex = 6;
|
||||||
//
|
//
|
||||||
// TabSettingsLocales
|
// TabSettingsLocales
|
||||||
@@ -134,7 +139,7 @@
|
|||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.Controls.Add(this.flowPanel);
|
this.Controls.Add(this.flowPanel);
|
||||||
this.Name = "TabSettingsLocales";
|
this.Name = "TabSettingsLocales";
|
||||||
this.Size = new System.Drawing.Size(340, 211);
|
this.Size = new System.Drawing.Size(340, 219);
|
||||||
this.flowPanel.ResumeLayout(false);
|
this.flowPanel.ResumeLayout(false);
|
||||||
this.flowPanel.PerformLayout();
|
this.flowPanel.PerformLayout();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
162
Core/Other/Settings/TabSettingsNotifications.Designer.cs
generated
@@ -80,10 +80,11 @@
|
|||||||
//
|
//
|
||||||
// labelEdgeDistanceValue
|
// labelEdgeDistanceValue
|
||||||
//
|
//
|
||||||
|
this.labelEdgeDistanceValue.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelEdgeDistanceValue.Location = new System.Drawing.Point(145, 4);
|
this.labelEdgeDistanceValue.Location = new System.Drawing.Point(145, 4);
|
||||||
this.labelEdgeDistanceValue.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
this.labelEdgeDistanceValue.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
||||||
this.labelEdgeDistanceValue.Name = "labelEdgeDistanceValue";
|
this.labelEdgeDistanceValue.Name = "labelEdgeDistanceValue";
|
||||||
this.labelEdgeDistanceValue.Size = new System.Drawing.Size(40, 13);
|
this.labelEdgeDistanceValue.Size = new System.Drawing.Size(40, 15);
|
||||||
this.labelEdgeDistanceValue.TabIndex = 1;
|
this.labelEdgeDistanceValue.TabIndex = 1;
|
||||||
this.labelEdgeDistanceValue.Text = "0 px";
|
this.labelEdgeDistanceValue.Text = "0 px";
|
||||||
this.labelEdgeDistanceValue.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
this.labelEdgeDistanceValue.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||||
@@ -91,39 +92,43 @@
|
|||||||
// labelDisplay
|
// labelDisplay
|
||||||
//
|
//
|
||||||
this.labelDisplay.AutoSize = true;
|
this.labelDisplay.AutoSize = true;
|
||||||
this.labelDisplay.Location = new System.Drawing.Point(3, 451);
|
this.labelDisplay.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelDisplay.Location = new System.Drawing.Point(3, 465);
|
||||||
this.labelDisplay.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
this.labelDisplay.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
||||||
this.labelDisplay.Name = "labelDisplay";
|
this.labelDisplay.Name = "labelDisplay";
|
||||||
this.labelDisplay.Size = new System.Drawing.Size(41, 13);
|
this.labelDisplay.Size = new System.Drawing.Size(45, 15);
|
||||||
this.labelDisplay.TabIndex = 15;
|
this.labelDisplay.TabIndex = 15;
|
||||||
this.labelDisplay.Text = "Display";
|
this.labelDisplay.Text = "Display";
|
||||||
//
|
//
|
||||||
// comboBoxDisplay
|
// comboBoxDisplay
|
||||||
//
|
//
|
||||||
this.comboBoxDisplay.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.comboBoxDisplay.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.comboBoxDisplay.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.comboBoxDisplay.FormattingEnabled = true;
|
this.comboBoxDisplay.FormattingEnabled = true;
|
||||||
this.comboBoxDisplay.Location = new System.Drawing.Point(5, 467);
|
this.comboBoxDisplay.Location = new System.Drawing.Point(5, 483);
|
||||||
this.comboBoxDisplay.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
this.comboBoxDisplay.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
||||||
this.comboBoxDisplay.Name = "comboBoxDisplay";
|
this.comboBoxDisplay.Name = "comboBoxDisplay";
|
||||||
this.comboBoxDisplay.Size = new System.Drawing.Size(144, 21);
|
this.comboBoxDisplay.Size = new System.Drawing.Size(144, 23);
|
||||||
this.comboBoxDisplay.TabIndex = 16;
|
this.comboBoxDisplay.TabIndex = 16;
|
||||||
//
|
//
|
||||||
// labelEdgeDistance
|
// labelEdgeDistance
|
||||||
//
|
//
|
||||||
this.labelEdgeDistance.AutoSize = true;
|
this.labelEdgeDistance.AutoSize = true;
|
||||||
this.labelEdgeDistance.Location = new System.Drawing.Point(3, 503);
|
this.labelEdgeDistance.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelEdgeDistance.Location = new System.Drawing.Point(3, 521);
|
||||||
this.labelEdgeDistance.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
this.labelEdgeDistance.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
||||||
this.labelEdgeDistance.Name = "labelEdgeDistance";
|
this.labelEdgeDistance.Name = "labelEdgeDistance";
|
||||||
this.labelEdgeDistance.Size = new System.Drawing.Size(103, 13);
|
this.labelEdgeDistance.Size = new System.Drawing.Size(112, 15);
|
||||||
this.labelEdgeDistance.TabIndex = 17;
|
this.labelEdgeDistance.TabIndex = 17;
|
||||||
this.labelEdgeDistance.Text = "Distance From Edge";
|
this.labelEdgeDistance.Text = "Distance From Edge";
|
||||||
//
|
//
|
||||||
// radioLocCustom
|
// radioLocCustom
|
||||||
//
|
//
|
||||||
|
this.radioLocCustom.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.radioLocCustom.Location = new System.Drawing.Point(205, 4);
|
this.radioLocCustom.Location = new System.Drawing.Point(205, 4);
|
||||||
this.radioLocCustom.Margin = new System.Windows.Forms.Padding(5, 4, 3, 3);
|
this.radioLocCustom.Margin = new System.Windows.Forms.Padding(5, 4, 3, 3);
|
||||||
this.radioLocCustom.Name = "radioLocCustom";
|
this.radioLocCustom.Name = "radioLocCustom";
|
||||||
this.radioLocCustom.Size = new System.Drawing.Size(65, 41);
|
this.radioLocCustom.Size = new System.Drawing.Size(70, 43);
|
||||||
this.radioLocCustom.TabIndex = 4;
|
this.radioLocCustom.TabIndex = 4;
|
||||||
this.radioLocCustom.TabStop = true;
|
this.radioLocCustom.TabStop = true;
|
||||||
this.radioLocCustom.Text = "Custom";
|
this.radioLocCustom.Text = "Custom";
|
||||||
@@ -131,10 +136,11 @@
|
|||||||
//
|
//
|
||||||
// radioLocBR
|
// radioLocBR
|
||||||
//
|
//
|
||||||
|
this.radioLocBR.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.radioLocBR.Location = new System.Drawing.Point(105, 28);
|
this.radioLocBR.Location = new System.Drawing.Point(105, 28);
|
||||||
this.radioLocBR.Margin = new System.Windows.Forms.Padding(5, 4, 3, 3);
|
this.radioLocBR.Margin = new System.Windows.Forms.Padding(5, 4, 3, 3);
|
||||||
this.radioLocBR.Name = "radioLocBR";
|
this.radioLocBR.Name = "radioLocBR";
|
||||||
this.radioLocBR.Size = new System.Drawing.Size(92, 17);
|
this.radioLocBR.Size = new System.Drawing.Size(92, 19);
|
||||||
this.radioLocBR.TabIndex = 3;
|
this.radioLocBR.TabIndex = 3;
|
||||||
this.radioLocBR.TabStop = true;
|
this.radioLocBR.TabStop = true;
|
||||||
this.radioLocBR.Text = "Bottom Right";
|
this.radioLocBR.Text = "Bottom Right";
|
||||||
@@ -142,10 +148,11 @@
|
|||||||
//
|
//
|
||||||
// radioLocBL
|
// radioLocBL
|
||||||
//
|
//
|
||||||
|
this.radioLocBL.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.radioLocBL.Location = new System.Drawing.Point(5, 28);
|
this.radioLocBL.Location = new System.Drawing.Point(5, 28);
|
||||||
this.radioLocBL.Margin = new System.Windows.Forms.Padding(5, 4, 3, 3);
|
this.radioLocBL.Margin = new System.Windows.Forms.Padding(5, 4, 3, 3);
|
||||||
this.radioLocBL.Name = "radioLocBL";
|
this.radioLocBL.Name = "radioLocBL";
|
||||||
this.radioLocBL.Size = new System.Drawing.Size(92, 17);
|
this.radioLocBL.Size = new System.Drawing.Size(92, 19);
|
||||||
this.radioLocBL.TabIndex = 2;
|
this.radioLocBL.TabIndex = 2;
|
||||||
this.radioLocBL.TabStop = true;
|
this.radioLocBL.TabStop = true;
|
||||||
this.radioLocBL.Text = "Bottom Left";
|
this.radioLocBL.Text = "Bottom Left";
|
||||||
@@ -153,10 +160,11 @@
|
|||||||
//
|
//
|
||||||
// radioLocTR
|
// radioLocTR
|
||||||
//
|
//
|
||||||
|
this.radioLocTR.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.radioLocTR.Location = new System.Drawing.Point(105, 4);
|
this.radioLocTR.Location = new System.Drawing.Point(105, 4);
|
||||||
this.radioLocTR.Margin = new System.Windows.Forms.Padding(5, 4, 3, 3);
|
this.radioLocTR.Margin = new System.Windows.Forms.Padding(5, 4, 3, 3);
|
||||||
this.radioLocTR.Name = "radioLocTR";
|
this.radioLocTR.Name = "radioLocTR";
|
||||||
this.radioLocTR.Size = new System.Drawing.Size(92, 17);
|
this.radioLocTR.Size = new System.Drawing.Size(92, 19);
|
||||||
this.radioLocTR.TabIndex = 1;
|
this.radioLocTR.TabIndex = 1;
|
||||||
this.radioLocTR.TabStop = true;
|
this.radioLocTR.TabStop = true;
|
||||||
this.radioLocTR.Text = "Top Right";
|
this.radioLocTR.Text = "Top Right";
|
||||||
@@ -164,10 +172,11 @@
|
|||||||
//
|
//
|
||||||
// radioLocTL
|
// radioLocTL
|
||||||
//
|
//
|
||||||
|
this.radioLocTL.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.radioLocTL.Location = new System.Drawing.Point(5, 4);
|
this.radioLocTL.Location = new System.Drawing.Point(5, 4);
|
||||||
this.radioLocTL.Margin = new System.Windows.Forms.Padding(5, 4, 3, 3);
|
this.radioLocTL.Margin = new System.Windows.Forms.Padding(5, 4, 3, 3);
|
||||||
this.radioLocTL.Name = "radioLocTL";
|
this.radioLocTL.Name = "radioLocTL";
|
||||||
this.radioLocTL.Size = new System.Drawing.Size(92, 17);
|
this.radioLocTL.Size = new System.Drawing.Size(92, 19);
|
||||||
this.radioLocTL.TabIndex = 0;
|
this.radioLocTL.TabIndex = 0;
|
||||||
this.radioLocTL.TabStop = true;
|
this.radioLocTL.TabStop = true;
|
||||||
this.radioLocTL.Text = "Top Left";
|
this.radioLocTL.Text = "Top Left";
|
||||||
@@ -196,11 +205,11 @@
|
|||||||
this.tableLayoutDurationButtons.Controls.Add(this.btnDurationMedium, 0, 0);
|
this.tableLayoutDurationButtons.Controls.Add(this.btnDurationMedium, 0, 0);
|
||||||
this.tableLayoutDurationButtons.Controls.Add(this.btnDurationLong, 1, 0);
|
this.tableLayoutDurationButtons.Controls.Add(this.btnDurationLong, 1, 0);
|
||||||
this.tableLayoutDurationButtons.Controls.Add(this.btnDurationShort, 0, 0);
|
this.tableLayoutDurationButtons.Controls.Add(this.btnDurationShort, 0, 0);
|
||||||
this.tableLayoutDurationButtons.Location = new System.Drawing.Point(3, 320);
|
this.tableLayoutDurationButtons.Location = new System.Drawing.Point(3, 332);
|
||||||
this.tableLayoutDurationButtons.Name = "tableLayoutDurationButtons";
|
this.tableLayoutDurationButtons.Name = "tableLayoutDurationButtons";
|
||||||
this.tableLayoutDurationButtons.RowCount = 1;
|
this.tableLayoutDurationButtons.RowCount = 1;
|
||||||
this.tableLayoutDurationButtons.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
this.tableLayoutDurationButtons.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
this.tableLayoutDurationButtons.Size = new System.Drawing.Size(171, 27);
|
this.tableLayoutDurationButtons.Size = new System.Drawing.Size(180, 27);
|
||||||
this.tableLayoutDurationButtons.TabIndex = 12;
|
this.tableLayoutDurationButtons.TabIndex = 12;
|
||||||
//
|
//
|
||||||
// btnDurationMedium
|
// btnDurationMedium
|
||||||
@@ -210,10 +219,11 @@
|
|||||||
this.btnDurationMedium.FlatAppearance.MouseDownBackColor = System.Drawing.SystemColors.ControlLight;
|
this.btnDurationMedium.FlatAppearance.MouseDownBackColor = System.Drawing.SystemColors.ControlLight;
|
||||||
this.btnDurationMedium.FlatAppearance.MouseOverBackColor = System.Drawing.Color.White;
|
this.btnDurationMedium.FlatAppearance.MouseOverBackColor = System.Drawing.Color.White;
|
||||||
this.btnDurationMedium.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
this.btnDurationMedium.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
this.btnDurationMedium.Location = new System.Drawing.Point(55, 1);
|
this.btnDurationMedium.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnDurationMedium.Location = new System.Drawing.Point(58, 1);
|
||||||
this.btnDurationMedium.Margin = new System.Windows.Forms.Padding(1);
|
this.btnDurationMedium.Margin = new System.Windows.Forms.Padding(1);
|
||||||
this.btnDurationMedium.Name = "btnDurationMedium";
|
this.btnDurationMedium.Name = "btnDurationMedium";
|
||||||
this.btnDurationMedium.Size = new System.Drawing.Size(59, 25);
|
this.btnDurationMedium.Size = new System.Drawing.Size(62, 25);
|
||||||
this.btnDurationMedium.TabIndex = 1;
|
this.btnDurationMedium.TabIndex = 1;
|
||||||
this.btnDurationMedium.Text = "Medium";
|
this.btnDurationMedium.Text = "Medium";
|
||||||
this.btnDurationMedium.UseVisualStyleBackColor = true;
|
this.btnDurationMedium.UseVisualStyleBackColor = true;
|
||||||
@@ -225,10 +235,11 @@
|
|||||||
this.btnDurationLong.FlatAppearance.MouseDownBackColor = System.Drawing.SystemColors.ControlLight;
|
this.btnDurationLong.FlatAppearance.MouseDownBackColor = System.Drawing.SystemColors.ControlLight;
|
||||||
this.btnDurationLong.FlatAppearance.MouseOverBackColor = System.Drawing.Color.White;
|
this.btnDurationLong.FlatAppearance.MouseOverBackColor = System.Drawing.Color.White;
|
||||||
this.btnDurationLong.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
this.btnDurationLong.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
this.btnDurationLong.Location = new System.Drawing.Point(116, 1);
|
this.btnDurationLong.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnDurationLong.Location = new System.Drawing.Point(122, 1);
|
||||||
this.btnDurationLong.Margin = new System.Windows.Forms.Padding(1);
|
this.btnDurationLong.Margin = new System.Windows.Forms.Padding(1);
|
||||||
this.btnDurationLong.Name = "btnDurationLong";
|
this.btnDurationLong.Name = "btnDurationLong";
|
||||||
this.btnDurationLong.Size = new System.Drawing.Size(54, 25);
|
this.btnDurationLong.Size = new System.Drawing.Size(57, 25);
|
||||||
this.btnDurationLong.TabIndex = 2;
|
this.btnDurationLong.TabIndex = 2;
|
||||||
this.btnDurationLong.Text = "Long";
|
this.btnDurationLong.Text = "Long";
|
||||||
this.btnDurationLong.UseVisualStyleBackColor = true;
|
this.btnDurationLong.UseVisualStyleBackColor = true;
|
||||||
@@ -240,10 +251,11 @@
|
|||||||
this.btnDurationShort.FlatAppearance.MouseDownBackColor = System.Drawing.SystemColors.ControlLight;
|
this.btnDurationShort.FlatAppearance.MouseDownBackColor = System.Drawing.SystemColors.ControlLight;
|
||||||
this.btnDurationShort.FlatAppearance.MouseOverBackColor = System.Drawing.Color.White;
|
this.btnDurationShort.FlatAppearance.MouseOverBackColor = System.Drawing.Color.White;
|
||||||
this.btnDurationShort.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
this.btnDurationShort.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.btnDurationShort.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.btnDurationShort.Location = new System.Drawing.Point(1, 1);
|
this.btnDurationShort.Location = new System.Drawing.Point(1, 1);
|
||||||
this.btnDurationShort.Margin = new System.Windows.Forms.Padding(1);
|
this.btnDurationShort.Margin = new System.Windows.Forms.Padding(1);
|
||||||
this.btnDurationShort.Name = "btnDurationShort";
|
this.btnDurationShort.Name = "btnDurationShort";
|
||||||
this.btnDurationShort.Size = new System.Drawing.Size(52, 25);
|
this.btnDurationShort.Size = new System.Drawing.Size(55, 25);
|
||||||
this.btnDurationShort.TabIndex = 0;
|
this.btnDurationShort.TabIndex = 0;
|
||||||
this.btnDurationShort.Text = "Short";
|
this.btnDurationShort.Text = "Short";
|
||||||
this.btnDurationShort.UseVisualStyleBackColor = true;
|
this.btnDurationShort.UseVisualStyleBackColor = true;
|
||||||
@@ -251,10 +263,11 @@
|
|||||||
// labelDurationValue
|
// labelDurationValue
|
||||||
//
|
//
|
||||||
this.labelDurationValue.BackColor = System.Drawing.Color.Transparent;
|
this.labelDurationValue.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.labelDurationValue.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelDurationValue.Location = new System.Drawing.Point(147, 4);
|
this.labelDurationValue.Location = new System.Drawing.Point(147, 4);
|
||||||
this.labelDurationValue.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
this.labelDurationValue.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
||||||
this.labelDurationValue.Name = "labelDurationValue";
|
this.labelDurationValue.Name = "labelDurationValue";
|
||||||
this.labelDurationValue.Size = new System.Drawing.Size(52, 13);
|
this.labelDurationValue.Size = new System.Drawing.Size(52, 15);
|
||||||
this.labelDurationValue.TabIndex = 1;
|
this.labelDurationValue.TabIndex = 1;
|
||||||
this.labelDurationValue.Text = "0 ms/c";
|
this.labelDurationValue.Text = "0 ms/c";
|
||||||
this.labelDurationValue.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
this.labelDurationValue.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||||
@@ -274,10 +287,11 @@
|
|||||||
// checkSkipOnLinkClick
|
// checkSkipOnLinkClick
|
||||||
//
|
//
|
||||||
this.checkSkipOnLinkClick.AutoSize = true;
|
this.checkSkipOnLinkClick.AutoSize = true;
|
||||||
this.checkSkipOnLinkClick.Location = new System.Drawing.Point(6, 72);
|
this.checkSkipOnLinkClick.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkSkipOnLinkClick.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
|
this.checkSkipOnLinkClick.Location = new System.Drawing.Point(6, 74);
|
||||||
|
this.checkSkipOnLinkClick.Margin = new System.Windows.Forms.Padding(6, 3, 3, 2);
|
||||||
this.checkSkipOnLinkClick.Name = "checkSkipOnLinkClick";
|
this.checkSkipOnLinkClick.Name = "checkSkipOnLinkClick";
|
||||||
this.checkSkipOnLinkClick.Size = new System.Drawing.Size(113, 17);
|
this.checkSkipOnLinkClick.Size = new System.Drawing.Size(121, 19);
|
||||||
this.checkSkipOnLinkClick.TabIndex = 3;
|
this.checkSkipOnLinkClick.TabIndex = 3;
|
||||||
this.checkSkipOnLinkClick.Text = "Skip On Link Click";
|
this.checkSkipOnLinkClick.Text = "Skip On Link Click";
|
||||||
this.checkSkipOnLinkClick.UseVisualStyleBackColor = true;
|
this.checkSkipOnLinkClick.UseVisualStyleBackColor = true;
|
||||||
@@ -285,10 +299,11 @@
|
|||||||
// checkColumnName
|
// checkColumnName
|
||||||
//
|
//
|
||||||
this.checkColumnName.AutoSize = true;
|
this.checkColumnName.AutoSize = true;
|
||||||
|
this.checkColumnName.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkColumnName.Location = new System.Drawing.Point(6, 26);
|
this.checkColumnName.Location = new System.Drawing.Point(6, 26);
|
||||||
this.checkColumnName.Margin = new System.Windows.Forms.Padding(6, 6, 3, 3);
|
this.checkColumnName.Margin = new System.Windows.Forms.Padding(6, 6, 3, 2);
|
||||||
this.checkColumnName.Name = "checkColumnName";
|
this.checkColumnName.Name = "checkColumnName";
|
||||||
this.checkColumnName.Size = new System.Drawing.Size(129, 17);
|
this.checkColumnName.Size = new System.Drawing.Size(145, 19);
|
||||||
this.checkColumnName.TabIndex = 1;
|
this.checkColumnName.TabIndex = 1;
|
||||||
this.checkColumnName.Text = "Display Column Name";
|
this.checkColumnName.Text = "Display Column Name";
|
||||||
this.checkColumnName.UseVisualStyleBackColor = true;
|
this.checkColumnName.UseVisualStyleBackColor = true;
|
||||||
@@ -296,30 +311,33 @@
|
|||||||
// labelIdlePause
|
// labelIdlePause
|
||||||
//
|
//
|
||||||
this.labelIdlePause.AutoSize = true;
|
this.labelIdlePause.AutoSize = true;
|
||||||
this.labelIdlePause.Location = new System.Drawing.Point(3, 127);
|
this.labelIdlePause.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelIdlePause.Location = new System.Drawing.Point(3, 131);
|
||||||
this.labelIdlePause.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
this.labelIdlePause.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
||||||
this.labelIdlePause.Name = "labelIdlePause";
|
this.labelIdlePause.Name = "labelIdlePause";
|
||||||
this.labelIdlePause.Size = new System.Drawing.Size(89, 13);
|
this.labelIdlePause.Size = new System.Drawing.Size(94, 15);
|
||||||
this.labelIdlePause.TabIndex = 5;
|
this.labelIdlePause.TabIndex = 5;
|
||||||
this.labelIdlePause.Text = "Pause When Idle";
|
this.labelIdlePause.Text = "Pause When Idle";
|
||||||
//
|
//
|
||||||
// comboBoxIdlePause
|
// comboBoxIdlePause
|
||||||
//
|
//
|
||||||
this.comboBoxIdlePause.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.comboBoxIdlePause.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.comboBoxIdlePause.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.comboBoxIdlePause.FormattingEnabled = true;
|
this.comboBoxIdlePause.FormattingEnabled = true;
|
||||||
this.comboBoxIdlePause.Location = new System.Drawing.Point(5, 143);
|
this.comboBoxIdlePause.Location = new System.Drawing.Point(5, 149);
|
||||||
this.comboBoxIdlePause.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
this.comboBoxIdlePause.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3);
|
||||||
this.comboBoxIdlePause.Name = "comboBoxIdlePause";
|
this.comboBoxIdlePause.Name = "comboBoxIdlePause";
|
||||||
this.comboBoxIdlePause.Size = new System.Drawing.Size(144, 21);
|
this.comboBoxIdlePause.Size = new System.Drawing.Size(144, 23);
|
||||||
this.comboBoxIdlePause.TabIndex = 6;
|
this.comboBoxIdlePause.TabIndex = 6;
|
||||||
//
|
//
|
||||||
// checkNonIntrusive
|
// checkNonIntrusive
|
||||||
//
|
//
|
||||||
this.checkNonIntrusive.AutoSize = true;
|
this.checkNonIntrusive.AutoSize = true;
|
||||||
this.checkNonIntrusive.Location = new System.Drawing.Point(6, 95);
|
this.checkNonIntrusive.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkNonIntrusive.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
|
this.checkNonIntrusive.Location = new System.Drawing.Point(6, 98);
|
||||||
|
this.checkNonIntrusive.Margin = new System.Windows.Forms.Padding(6, 3, 3, 2);
|
||||||
this.checkNonIntrusive.Name = "checkNonIntrusive";
|
this.checkNonIntrusive.Name = "checkNonIntrusive";
|
||||||
this.checkNonIntrusive.Size = new System.Drawing.Size(128, 17);
|
this.checkNonIntrusive.Size = new System.Drawing.Size(142, 19);
|
||||||
this.checkNonIntrusive.TabIndex = 4;
|
this.checkNonIntrusive.TabIndex = 4;
|
||||||
this.checkNonIntrusive.Text = "Non-Intrusive Popups";
|
this.checkNonIntrusive.Text = "Non-Intrusive Popups";
|
||||||
this.checkNonIntrusive.UseVisualStyleBackColor = true;
|
this.checkNonIntrusive.UseVisualStyleBackColor = true;
|
||||||
@@ -327,10 +345,11 @@
|
|||||||
// checkTimerCountDown
|
// checkTimerCountDown
|
||||||
//
|
//
|
||||||
this.checkTimerCountDown.AutoSize = true;
|
this.checkTimerCountDown.AutoSize = true;
|
||||||
this.checkTimerCountDown.Location = new System.Drawing.Point(6, 236);
|
this.checkTimerCountDown.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkTimerCountDown.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
|
this.checkTimerCountDown.Location = new System.Drawing.Point(6, 245);
|
||||||
|
this.checkTimerCountDown.Margin = new System.Windows.Forms.Padding(6, 3, 3, 2);
|
||||||
this.checkTimerCountDown.Name = "checkTimerCountDown";
|
this.checkTimerCountDown.Name = "checkTimerCountDown";
|
||||||
this.checkTimerCountDown.Size = new System.Drawing.Size(119, 17);
|
this.checkTimerCountDown.Size = new System.Drawing.Size(132, 19);
|
||||||
this.checkTimerCountDown.TabIndex = 9;
|
this.checkTimerCountDown.TabIndex = 9;
|
||||||
this.checkTimerCountDown.Text = "Timer Counts Down";
|
this.checkTimerCountDown.Text = "Timer Counts Down";
|
||||||
this.checkTimerCountDown.UseVisualStyleBackColor = true;
|
this.checkTimerCountDown.UseVisualStyleBackColor = true;
|
||||||
@@ -338,20 +357,22 @@
|
|||||||
// checkNotificationTimer
|
// checkNotificationTimer
|
||||||
//
|
//
|
||||||
this.checkNotificationTimer.AutoSize = true;
|
this.checkNotificationTimer.AutoSize = true;
|
||||||
this.checkNotificationTimer.Location = new System.Drawing.Point(6, 213);
|
this.checkNotificationTimer.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkNotificationTimer.Margin = new System.Windows.Forms.Padding(6, 6, 3, 3);
|
this.checkNotificationTimer.Location = new System.Drawing.Point(6, 221);
|
||||||
|
this.checkNotificationTimer.Margin = new System.Windows.Forms.Padding(6, 6, 3, 2);
|
||||||
this.checkNotificationTimer.Name = "checkNotificationTimer";
|
this.checkNotificationTimer.Name = "checkNotificationTimer";
|
||||||
this.checkNotificationTimer.Size = new System.Drawing.Size(145, 17);
|
this.checkNotificationTimer.Size = new System.Drawing.Size(164, 19);
|
||||||
this.checkNotificationTimer.TabIndex = 8;
|
this.checkNotificationTimer.TabIndex = 8;
|
||||||
this.checkNotificationTimer.Text = "Display Notification Timer";
|
this.checkNotificationTimer.Text = "Display Notification Timer";
|
||||||
this.checkNotificationTimer.UseVisualStyleBackColor = true;
|
this.checkNotificationTimer.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// radioSizeAuto
|
// radioSizeAuto
|
||||||
//
|
//
|
||||||
|
this.radioSizeAuto.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.radioSizeAuto.Location = new System.Drawing.Point(5, 4);
|
this.radioSizeAuto.Location = new System.Drawing.Point(5, 4);
|
||||||
this.radioSizeAuto.Margin = new System.Windows.Forms.Padding(5, 4, 3, 3);
|
this.radioSizeAuto.Margin = new System.Windows.Forms.Padding(5, 4, 3, 3);
|
||||||
this.radioSizeAuto.Name = "radioSizeAuto";
|
this.radioSizeAuto.Name = "radioSizeAuto";
|
||||||
this.radioSizeAuto.Size = new System.Drawing.Size(92, 17);
|
this.radioSizeAuto.Size = new System.Drawing.Size(92, 19);
|
||||||
this.radioSizeAuto.TabIndex = 0;
|
this.radioSizeAuto.TabIndex = 0;
|
||||||
this.radioSizeAuto.TabStop = true;
|
this.radioSizeAuto.TabStop = true;
|
||||||
this.radioSizeAuto.Text = "Auto";
|
this.radioSizeAuto.Text = "Auto";
|
||||||
@@ -359,10 +380,11 @@
|
|||||||
//
|
//
|
||||||
// radioSizeCustom
|
// radioSizeCustom
|
||||||
//
|
//
|
||||||
|
this.radioSizeCustom.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.radioSizeCustom.Location = new System.Drawing.Point(105, 4);
|
this.radioSizeCustom.Location = new System.Drawing.Point(105, 4);
|
||||||
this.radioSizeCustom.Margin = new System.Windows.Forms.Padding(5, 4, 3, 3);
|
this.radioSizeCustom.Margin = new System.Windows.Forms.Padding(5, 4, 3, 3);
|
||||||
this.radioSizeCustom.Name = "radioSizeCustom";
|
this.radioSizeCustom.Name = "radioSizeCustom";
|
||||||
this.radioSizeCustom.Size = new System.Drawing.Size(92, 17);
|
this.radioSizeCustom.Size = new System.Drawing.Size(92, 19);
|
||||||
this.radioSizeCustom.TabIndex = 1;
|
this.radioSizeCustom.TabIndex = 1;
|
||||||
this.radioSizeCustom.TabStop = true;
|
this.radioSizeCustom.TabStop = true;
|
||||||
this.radioSizeCustom.Text = "Custom";
|
this.radioSizeCustom.Text = "Custom";
|
||||||
@@ -371,11 +393,11 @@
|
|||||||
// labelGeneral
|
// labelGeneral
|
||||||
//
|
//
|
||||||
this.labelGeneral.AutoSize = true;
|
this.labelGeneral.AutoSize = true;
|
||||||
this.labelGeneral.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelGeneral.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelGeneral.Location = new System.Drawing.Point(0, 0);
|
this.labelGeneral.Location = new System.Drawing.Point(0, 0);
|
||||||
this.labelGeneral.Margin = new System.Windows.Forms.Padding(0);
|
this.labelGeneral.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.labelGeneral.Name = "labelGeneral";
|
this.labelGeneral.Name = "labelGeneral";
|
||||||
this.labelGeneral.Size = new System.Drawing.Size(66, 20);
|
this.labelGeneral.Size = new System.Drawing.Size(60, 20);
|
||||||
this.labelGeneral.TabIndex = 0;
|
this.labelGeneral.TabIndex = 0;
|
||||||
this.labelGeneral.Text = "General";
|
this.labelGeneral.Text = "General";
|
||||||
//
|
//
|
||||||
@@ -384,7 +406,7 @@
|
|||||||
this.panelEdgeDistance.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
this.panelEdgeDistance.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
||||||
this.panelEdgeDistance.Controls.Add(this.trackBarEdgeDistance);
|
this.panelEdgeDistance.Controls.Add(this.trackBarEdgeDistance);
|
||||||
this.panelEdgeDistance.Controls.Add(this.labelEdgeDistanceValue);
|
this.panelEdgeDistance.Controls.Add(this.labelEdgeDistanceValue);
|
||||||
this.panelEdgeDistance.Location = new System.Drawing.Point(0, 516);
|
this.panelEdgeDistance.Location = new System.Drawing.Point(0, 536);
|
||||||
this.panelEdgeDistance.Margin = new System.Windows.Forms.Padding(0);
|
this.panelEdgeDistance.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.panelEdgeDistance.Name = "panelEdgeDistance";
|
this.panelEdgeDistance.Name = "panelEdgeDistance";
|
||||||
this.panelEdgeDistance.Size = new System.Drawing.Size(322, 36);
|
this.panelEdgeDistance.Size = new System.Drawing.Size(322, 36);
|
||||||
@@ -393,20 +415,22 @@
|
|||||||
// checkMediaPreviews
|
// checkMediaPreviews
|
||||||
//
|
//
|
||||||
this.checkMediaPreviews.AutoSize = true;
|
this.checkMediaPreviews.AutoSize = true;
|
||||||
this.checkMediaPreviews.Location = new System.Drawing.Point(6, 49);
|
this.checkMediaPreviews.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkMediaPreviews.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
|
this.checkMediaPreviews.Location = new System.Drawing.Point(6, 50);
|
||||||
|
this.checkMediaPreviews.Margin = new System.Windows.Forms.Padding(6, 3, 3, 2);
|
||||||
this.checkMediaPreviews.Name = "checkMediaPreviews";
|
this.checkMediaPreviews.Name = "checkMediaPreviews";
|
||||||
this.checkMediaPreviews.Size = new System.Drawing.Size(131, 17);
|
this.checkMediaPreviews.Size = new System.Drawing.Size(140, 19);
|
||||||
this.checkMediaPreviews.TabIndex = 2;
|
this.checkMediaPreviews.TabIndex = 2;
|
||||||
this.checkMediaPreviews.Text = "Show Media Previews";
|
this.checkMediaPreviews.Text = "Show Media Previews";
|
||||||
this.checkMediaPreviews.UseVisualStyleBackColor = true;
|
this.checkMediaPreviews.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// labelScrollSpeedValue
|
// labelScrollSpeedValue
|
||||||
//
|
//
|
||||||
|
this.labelScrollSpeedValue.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelScrollSpeedValue.Location = new System.Drawing.Point(145, 4);
|
this.labelScrollSpeedValue.Location = new System.Drawing.Point(145, 4);
|
||||||
this.labelScrollSpeedValue.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
this.labelScrollSpeedValue.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
||||||
this.labelScrollSpeedValue.Name = "labelScrollSpeedValue";
|
this.labelScrollSpeedValue.Name = "labelScrollSpeedValue";
|
||||||
this.labelScrollSpeedValue.Size = new System.Drawing.Size(38, 13);
|
this.labelScrollSpeedValue.Size = new System.Drawing.Size(38, 15);
|
||||||
this.labelScrollSpeedValue.TabIndex = 1;
|
this.labelScrollSpeedValue.TabIndex = 1;
|
||||||
this.labelScrollSpeedValue.Text = "100%";
|
this.labelScrollSpeedValue.Text = "100%";
|
||||||
this.labelScrollSpeedValue.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
this.labelScrollSpeedValue.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||||
@@ -428,21 +452,22 @@
|
|||||||
// labelScrollSpeed
|
// labelScrollSpeed
|
||||||
//
|
//
|
||||||
this.labelScrollSpeed.AutoSize = true;
|
this.labelScrollSpeed.AutoSize = true;
|
||||||
this.labelScrollSpeed.Location = new System.Drawing.Point(3, 629);
|
this.labelScrollSpeed.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelScrollSpeed.Location = new System.Drawing.Point(3, 651);
|
||||||
this.labelScrollSpeed.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
this.labelScrollSpeed.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
||||||
this.labelScrollSpeed.Name = "labelScrollSpeed";
|
this.labelScrollSpeed.Name = "labelScrollSpeed";
|
||||||
this.labelScrollSpeed.Size = new System.Drawing.Size(67, 13);
|
this.labelScrollSpeed.Size = new System.Drawing.Size(71, 15);
|
||||||
this.labelScrollSpeed.TabIndex = 21;
|
this.labelScrollSpeed.TabIndex = 21;
|
||||||
this.labelScrollSpeed.Text = "Scroll Speed";
|
this.labelScrollSpeed.Text = "Scroll Speed";
|
||||||
//
|
//
|
||||||
// labelLocation
|
// labelLocation
|
||||||
//
|
//
|
||||||
this.labelLocation.AutoSize = true;
|
this.labelLocation.AutoSize = true;
|
||||||
this.labelLocation.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelLocation.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelLocation.Location = new System.Drawing.Point(0, 370);
|
this.labelLocation.Location = new System.Drawing.Point(0, 382);
|
||||||
this.labelLocation.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
this.labelLocation.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
||||||
this.labelLocation.Name = "labelLocation";
|
this.labelLocation.Name = "labelLocation";
|
||||||
this.labelLocation.Size = new System.Drawing.Size(70, 20);
|
this.labelLocation.Size = new System.Drawing.Size(66, 20);
|
||||||
this.labelLocation.TabIndex = 13;
|
this.labelLocation.TabIndex = 13;
|
||||||
this.labelLocation.Text = "Location";
|
this.labelLocation.Text = "Location";
|
||||||
//
|
//
|
||||||
@@ -454,10 +479,10 @@
|
|||||||
this.panelLocation.Controls.Add(this.radioLocBL);
|
this.panelLocation.Controls.Add(this.radioLocBL);
|
||||||
this.panelLocation.Controls.Add(this.radioLocCustom);
|
this.panelLocation.Controls.Add(this.radioLocCustom);
|
||||||
this.panelLocation.Controls.Add(this.radioLocBR);
|
this.panelLocation.Controls.Add(this.radioLocBR);
|
||||||
this.panelLocation.Location = new System.Drawing.Point(0, 390);
|
this.panelLocation.Location = new System.Drawing.Point(0, 402);
|
||||||
this.panelLocation.Margin = new System.Windows.Forms.Padding(0);
|
this.panelLocation.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.panelLocation.Name = "panelLocation";
|
this.panelLocation.Name = "panelLocation";
|
||||||
this.panelLocation.Size = new System.Drawing.Size(322, 49);
|
this.panelLocation.Size = new System.Drawing.Size(322, 51);
|
||||||
this.panelLocation.TabIndex = 14;
|
this.panelLocation.TabIndex = 14;
|
||||||
//
|
//
|
||||||
// panelTimer
|
// panelTimer
|
||||||
@@ -465,7 +490,7 @@
|
|||||||
this.panelTimer.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
this.panelTimer.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
||||||
this.panelTimer.Controls.Add(this.labelDurationValue);
|
this.panelTimer.Controls.Add(this.labelDurationValue);
|
||||||
this.panelTimer.Controls.Add(this.trackBarDuration);
|
this.panelTimer.Controls.Add(this.trackBarDuration);
|
||||||
this.panelTimer.Location = new System.Drawing.Point(0, 281);
|
this.panelTimer.Location = new System.Drawing.Point(0, 293);
|
||||||
this.panelTimer.Margin = new System.Windows.Forms.Padding(0);
|
this.panelTimer.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.panelTimer.Name = "panelTimer";
|
this.panelTimer.Name = "panelTimer";
|
||||||
this.panelTimer.Size = new System.Drawing.Size(322, 36);
|
this.panelTimer.Size = new System.Drawing.Size(322, 36);
|
||||||
@@ -474,32 +499,33 @@
|
|||||||
// labelDuration
|
// labelDuration
|
||||||
//
|
//
|
||||||
this.labelDuration.AutoSize = true;
|
this.labelDuration.AutoSize = true;
|
||||||
this.labelDuration.Location = new System.Drawing.Point(3, 268);
|
this.labelDuration.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelDuration.Location = new System.Drawing.Point(3, 278);
|
||||||
this.labelDuration.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
this.labelDuration.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
||||||
this.labelDuration.Name = "labelDuration";
|
this.labelDuration.Name = "labelDuration";
|
||||||
this.labelDuration.Size = new System.Drawing.Size(47, 13);
|
this.labelDuration.Size = new System.Drawing.Size(53, 15);
|
||||||
this.labelDuration.TabIndex = 10;
|
this.labelDuration.TabIndex = 10;
|
||||||
this.labelDuration.Text = "Duration";
|
this.labelDuration.Text = "Duration";
|
||||||
//
|
//
|
||||||
// labelTimer
|
// labelTimer
|
||||||
//
|
//
|
||||||
this.labelTimer.AutoSize = true;
|
this.labelTimer.AutoSize = true;
|
||||||
this.labelTimer.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelTimer.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelTimer.Location = new System.Drawing.Point(0, 187);
|
this.labelTimer.Location = new System.Drawing.Point(0, 195);
|
||||||
this.labelTimer.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
this.labelTimer.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
||||||
this.labelTimer.Name = "labelTimer";
|
this.labelTimer.Name = "labelTimer";
|
||||||
this.labelTimer.Size = new System.Drawing.Size(48, 20);
|
this.labelTimer.Size = new System.Drawing.Size(47, 20);
|
||||||
this.labelTimer.TabIndex = 7;
|
this.labelTimer.TabIndex = 7;
|
||||||
this.labelTimer.Text = "Timer";
|
this.labelTimer.Text = "Timer";
|
||||||
//
|
//
|
||||||
// labelSize
|
// labelSize
|
||||||
//
|
//
|
||||||
this.labelSize.AutoSize = true;
|
this.labelSize.AutoSize = true;
|
||||||
this.labelSize.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelSize.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelSize.Location = new System.Drawing.Point(0, 572);
|
this.labelSize.Location = new System.Drawing.Point(0, 592);
|
||||||
this.labelSize.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
this.labelSize.Margin = new System.Windows.Forms.Padding(0, 20, 0, 0);
|
||||||
this.labelSize.Name = "labelSize";
|
this.labelSize.Name = "labelSize";
|
||||||
this.labelSize.Size = new System.Drawing.Size(40, 20);
|
this.labelSize.Size = new System.Drawing.Size(36, 20);
|
||||||
this.labelSize.TabIndex = 19;
|
this.labelSize.TabIndex = 19;
|
||||||
this.labelSize.Text = "Size";
|
this.labelSize.Text = "Size";
|
||||||
//
|
//
|
||||||
@@ -509,10 +535,10 @@
|
|||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.panelSize.Controls.Add(this.radioSizeCustom);
|
this.panelSize.Controls.Add(this.radioSizeCustom);
|
||||||
this.panelSize.Controls.Add(this.radioSizeAuto);
|
this.panelSize.Controls.Add(this.radioSizeAuto);
|
||||||
this.panelSize.Location = new System.Drawing.Point(0, 592);
|
this.panelSize.Location = new System.Drawing.Point(0, 612);
|
||||||
this.panelSize.Margin = new System.Windows.Forms.Padding(0);
|
this.panelSize.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.panelSize.Name = "panelSize";
|
this.panelSize.Name = "panelSize";
|
||||||
this.panelSize.Size = new System.Drawing.Size(322, 25);
|
this.panelSize.Size = new System.Drawing.Size(322, 27);
|
||||||
this.panelSize.TabIndex = 20;
|
this.panelSize.TabIndex = 20;
|
||||||
//
|
//
|
||||||
// durationUpdateTimer
|
// durationUpdateTimer
|
||||||
@@ -551,7 +577,7 @@
|
|||||||
this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
||||||
this.flowPanel.Location = new System.Drawing.Point(9, 9);
|
this.flowPanel.Location = new System.Drawing.Point(9, 9);
|
||||||
this.flowPanel.Name = "flowPanel";
|
this.flowPanel.Name = "flowPanel";
|
||||||
this.flowPanel.Size = new System.Drawing.Size(322, 678);
|
this.flowPanel.Size = new System.Drawing.Size(322, 698);
|
||||||
this.flowPanel.TabIndex = 0;
|
this.flowPanel.TabIndex = 0;
|
||||||
this.flowPanel.WrapContents = false;
|
this.flowPanel.WrapContents = false;
|
||||||
//
|
//
|
||||||
@@ -560,7 +586,7 @@
|
|||||||
this.panelScrollSpeed.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
this.panelScrollSpeed.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
||||||
this.panelScrollSpeed.Controls.Add(this.trackBarScrollSpeed);
|
this.panelScrollSpeed.Controls.Add(this.trackBarScrollSpeed);
|
||||||
this.panelScrollSpeed.Controls.Add(this.labelScrollSpeedValue);
|
this.panelScrollSpeed.Controls.Add(this.labelScrollSpeedValue);
|
||||||
this.panelScrollSpeed.Location = new System.Drawing.Point(0, 642);
|
this.panelScrollSpeed.Location = new System.Drawing.Point(0, 666);
|
||||||
this.panelScrollSpeed.Margin = new System.Windows.Forms.Padding(0);
|
this.panelScrollSpeed.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.panelScrollSpeed.Name = "panelScrollSpeed";
|
this.panelScrollSpeed.Name = "panelScrollSpeed";
|
||||||
this.panelScrollSpeed.Size = new System.Drawing.Size(322, 36);
|
this.panelScrollSpeed.Size = new System.Drawing.Size(322, 36);
|
||||||
@@ -572,7 +598,7 @@
|
|||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.Controls.Add(this.flowPanel);
|
this.Controls.Add(this.flowPanel);
|
||||||
this.Name = "TabSettingsNotifications";
|
this.Name = "TabSettingsNotifications";
|
||||||
this.Size = new System.Drawing.Size(340, 697);
|
this.Size = new System.Drawing.Size(340, 717);
|
||||||
this.ParentChanged += new System.EventHandler(this.TabSettingsNotifications_ParentChanged);
|
this.ParentChanged += new System.EventHandler(this.TabSettingsNotifications_ParentChanged);
|
||||||
((System.ComponentModel.ISupportInitialize)(this.trackBarEdgeDistance)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.trackBarEdgeDistance)).EndInit();
|
||||||
this.tableLayoutDurationButtons.ResumeLayout(false);
|
this.tableLayoutDurationButtons.ResumeLayout(false);
|
||||||
|
@@ -15,7 +15,7 @@ namespace TweetDuck.Core.Other.Settings{
|
|||||||
|
|
||||||
this.notification = notification;
|
this.notification = notification;
|
||||||
|
|
||||||
this.notification.Initialized += (sender, args) => {
|
this.notification.Ready += (sender, args) => {
|
||||||
this.InvokeAsyncSafe(() => {
|
this.InvokeAsyncSafe(() => {
|
||||||
this.notification.ShowExampleNotification(true);
|
this.notification.ShowExampleNotification(true);
|
||||||
this.notification.Move += notification_Move;
|
this.notification.Move += notification_Move;
|
||||||
|
44
Core/Other/Settings/TabSettingsSounds.Designer.cs
generated
@@ -47,18 +47,20 @@
|
|||||||
//
|
//
|
||||||
this.tbCustomSound.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.tbCustomSound.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.tbCustomSound.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.tbCustomSound.Location = new System.Drawing.Point(3, 3);
|
this.tbCustomSound.Location = new System.Drawing.Point(3, 3);
|
||||||
this.tbCustomSound.Name = "tbCustomSound";
|
this.tbCustomSound.Name = "tbCustomSound";
|
||||||
this.tbCustomSound.Size = new System.Drawing.Size(316, 20);
|
this.tbCustomSound.Size = new System.Drawing.Size(316, 23);
|
||||||
this.tbCustomSound.TabIndex = 0;
|
this.tbCustomSound.TabIndex = 0;
|
||||||
//
|
//
|
||||||
// labelVolumeValue
|
// labelVolumeValue
|
||||||
//
|
//
|
||||||
this.labelVolumeValue.BackColor = System.Drawing.Color.Transparent;
|
this.labelVolumeValue.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.labelVolumeValue.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelVolumeValue.Location = new System.Drawing.Point(147, 4);
|
this.labelVolumeValue.Location = new System.Drawing.Point(147, 4);
|
||||||
this.labelVolumeValue.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
this.labelVolumeValue.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
||||||
this.labelVolumeValue.Name = "labelVolumeValue";
|
this.labelVolumeValue.Name = "labelVolumeValue";
|
||||||
this.labelVolumeValue.Size = new System.Drawing.Size(38, 13);
|
this.labelVolumeValue.Size = new System.Drawing.Size(38, 15);
|
||||||
this.labelVolumeValue.TabIndex = 1;
|
this.labelVolumeValue.TabIndex = 1;
|
||||||
this.labelVolumeValue.Text = "100%";
|
this.labelVolumeValue.Text = "100%";
|
||||||
this.labelVolumeValue.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
this.labelVolumeValue.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||||
@@ -67,10 +69,11 @@
|
|||||||
//
|
//
|
||||||
this.btnPlaySound.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnPlaySound.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnPlaySound.AutoSize = true;
|
this.btnPlaySound.AutoSize = true;
|
||||||
this.btnPlaySound.Location = new System.Drawing.Point(203, 29);
|
this.btnPlaySound.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnPlaySound.Location = new System.Drawing.Point(202, 32);
|
||||||
this.btnPlaySound.Name = "btnPlaySound";
|
this.btnPlaySound.Name = "btnPlaySound";
|
||||||
this.btnPlaySound.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnPlaySound.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnPlaySound.Size = new System.Drawing.Size(43, 23);
|
this.btnPlaySound.Size = new System.Drawing.Size(43, 25);
|
||||||
this.btnPlaySound.TabIndex = 2;
|
this.btnPlaySound.TabIndex = 2;
|
||||||
this.btnPlaySound.Text = "Play";
|
this.btnPlaySound.Text = "Play";
|
||||||
this.btnPlaySound.UseVisualStyleBackColor = true;
|
this.btnPlaySound.UseVisualStyleBackColor = true;
|
||||||
@@ -78,10 +81,11 @@
|
|||||||
// btnResetSound
|
// btnResetSound
|
||||||
//
|
//
|
||||||
this.btnResetSound.AutoSize = true;
|
this.btnResetSound.AutoSize = true;
|
||||||
this.btnResetSound.Location = new System.Drawing.Point(3, 29);
|
this.btnResetSound.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnResetSound.Location = new System.Drawing.Point(3, 32);
|
||||||
this.btnResetSound.Name = "btnResetSound";
|
this.btnResetSound.Name = "btnResetSound";
|
||||||
this.btnResetSound.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnResetSound.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnResetSound.Size = new System.Drawing.Size(51, 23);
|
this.btnResetSound.Size = new System.Drawing.Size(49, 25);
|
||||||
this.btnResetSound.TabIndex = 3;
|
this.btnResetSound.TabIndex = 3;
|
||||||
this.btnResetSound.Text = "Reset";
|
this.btnResetSound.Text = "Reset";
|
||||||
this.btnResetSound.UseVisualStyleBackColor = true;
|
this.btnResetSound.UseVisualStyleBackColor = true;
|
||||||
@@ -90,10 +94,11 @@
|
|||||||
//
|
//
|
||||||
this.btnBrowseSound.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnBrowseSound.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnBrowseSound.AutoSize = true;
|
this.btnBrowseSound.AutoSize = true;
|
||||||
this.btnBrowseSound.Location = new System.Drawing.Point(252, 29);
|
this.btnBrowseSound.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnBrowseSound.Location = new System.Drawing.Point(251, 32);
|
||||||
this.btnBrowseSound.Name = "btnBrowseSound";
|
this.btnBrowseSound.Name = "btnBrowseSound";
|
||||||
this.btnBrowseSound.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
this.btnBrowseSound.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
this.btnBrowseSound.Size = new System.Drawing.Size(67, 23);
|
this.btnBrowseSound.Size = new System.Drawing.Size(68, 25);
|
||||||
this.btnBrowseSound.TabIndex = 1;
|
this.btnBrowseSound.TabIndex = 1;
|
||||||
this.btnBrowseSound.Text = "Browse...";
|
this.btnBrowseSound.Text = "Browse...";
|
||||||
this.btnBrowseSound.UseVisualStyleBackColor = true;
|
this.btnBrowseSound.UseVisualStyleBackColor = true;
|
||||||
@@ -101,11 +106,11 @@
|
|||||||
// labelSoundNotification
|
// labelSoundNotification
|
||||||
//
|
//
|
||||||
this.labelSoundNotification.AutoSize = true;
|
this.labelSoundNotification.AutoSize = true;
|
||||||
this.labelSoundNotification.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelSoundNotification.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelSoundNotification.Location = new System.Drawing.Point(0, 0);
|
this.labelSoundNotification.Location = new System.Drawing.Point(0, 0);
|
||||||
this.labelSoundNotification.Margin = new System.Windows.Forms.Padding(0);
|
this.labelSoundNotification.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.labelSoundNotification.Name = "labelSoundNotification";
|
this.labelSoundNotification.Name = "labelSoundNotification";
|
||||||
this.labelSoundNotification.Size = new System.Drawing.Size(198, 20);
|
this.labelSoundNotification.Size = new System.Drawing.Size(188, 20);
|
||||||
this.labelSoundNotification.TabIndex = 0;
|
this.labelSoundNotification.TabIndex = 0;
|
||||||
this.labelSoundNotification.Text = "Custom Sound Notification";
|
this.labelSoundNotification.Text = "Custom Sound Notification";
|
||||||
//
|
//
|
||||||
@@ -119,16 +124,17 @@
|
|||||||
this.panelSoundNotification.Location = new System.Drawing.Point(0, 20);
|
this.panelSoundNotification.Location = new System.Drawing.Point(0, 20);
|
||||||
this.panelSoundNotification.Margin = new System.Windows.Forms.Padding(0);
|
this.panelSoundNotification.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.panelSoundNotification.Name = "panelSoundNotification";
|
this.panelSoundNotification.Name = "panelSoundNotification";
|
||||||
this.panelSoundNotification.Size = new System.Drawing.Size(322, 55);
|
this.panelSoundNotification.Size = new System.Drawing.Size(322, 59);
|
||||||
this.panelSoundNotification.TabIndex = 1;
|
this.panelSoundNotification.TabIndex = 1;
|
||||||
//
|
//
|
||||||
// labelVolume
|
// labelVolume
|
||||||
//
|
//
|
||||||
this.labelVolume.AutoSize = true;
|
this.labelVolume.AutoSize = true;
|
||||||
this.labelVolume.Location = new System.Drawing.Point(3, 87);
|
this.labelVolume.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelVolume.Location = new System.Drawing.Point(3, 91);
|
||||||
this.labelVolume.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
this.labelVolume.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
|
||||||
this.labelVolume.Name = "labelVolume";
|
this.labelVolume.Name = "labelVolume";
|
||||||
this.labelVolume.Size = new System.Drawing.Size(42, 13);
|
this.labelVolume.Size = new System.Drawing.Size(48, 15);
|
||||||
this.labelVolume.TabIndex = 2;
|
this.labelVolume.TabIndex = 2;
|
||||||
this.labelVolume.Text = "Volume";
|
this.labelVolume.Text = "Volume";
|
||||||
//
|
//
|
||||||
@@ -157,7 +163,7 @@
|
|||||||
this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
||||||
this.flowPanel.Location = new System.Drawing.Point(9, 9);
|
this.flowPanel.Location = new System.Drawing.Point(9, 9);
|
||||||
this.flowPanel.Name = "flowPanel";
|
this.flowPanel.Name = "flowPanel";
|
||||||
this.flowPanel.Size = new System.Drawing.Size(322, 136);
|
this.flowPanel.Size = new System.Drawing.Size(322, 142);
|
||||||
this.flowPanel.TabIndex = 0;
|
this.flowPanel.TabIndex = 0;
|
||||||
this.flowPanel.WrapContents = false;
|
this.flowPanel.WrapContents = false;
|
||||||
//
|
//
|
||||||
@@ -165,7 +171,7 @@
|
|||||||
//
|
//
|
||||||
this.panelVolume.Controls.Add(this.trackBarVolume);
|
this.panelVolume.Controls.Add(this.trackBarVolume);
|
||||||
this.panelVolume.Controls.Add(this.labelVolumeValue);
|
this.panelVolume.Controls.Add(this.labelVolumeValue);
|
||||||
this.panelVolume.Location = new System.Drawing.Point(0, 100);
|
this.panelVolume.Location = new System.Drawing.Point(0, 106);
|
||||||
this.panelVolume.Margin = new System.Windows.Forms.Padding(0);
|
this.panelVolume.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.panelVolume.Name = "panelVolume";
|
this.panelVolume.Name = "panelVolume";
|
||||||
this.panelVolume.Size = new System.Drawing.Size(322, 36);
|
this.panelVolume.Size = new System.Drawing.Size(322, 36);
|
||||||
@@ -182,7 +188,7 @@
|
|||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.Controls.Add(this.flowPanel);
|
this.Controls.Add(this.flowPanel);
|
||||||
this.Name = "TabSettingsSounds";
|
this.Name = "TabSettingsSounds";
|
||||||
this.Size = new System.Drawing.Size(340, 154);
|
this.Size = new System.Drawing.Size(340, 160);
|
||||||
this.panelSoundNotification.ResumeLayout(false);
|
this.panelSoundNotification.ResumeLayout(false);
|
||||||
this.panelSoundNotification.PerformLayout();
|
this.panelSoundNotification.PerformLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.trackBarVolume)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.trackBarVolume)).EndInit();
|
||||||
|
23
Core/Other/Settings/TabSettingsTray.Designer.cs
generated
@@ -36,10 +36,11 @@
|
|||||||
// checkTrayHighlight
|
// checkTrayHighlight
|
||||||
//
|
//
|
||||||
this.checkTrayHighlight.AutoSize = true;
|
this.checkTrayHighlight.AutoSize = true;
|
||||||
this.checkTrayHighlight.Location = new System.Drawing.Point(6, 77);
|
this.checkTrayHighlight.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.checkTrayHighlight.Margin = new System.Windows.Forms.Padding(6, 6, 3, 3);
|
this.checkTrayHighlight.Location = new System.Drawing.Point(6, 81);
|
||||||
|
this.checkTrayHighlight.Margin = new System.Windows.Forms.Padding(6, 6, 3, 2);
|
||||||
this.checkTrayHighlight.Name = "checkTrayHighlight";
|
this.checkTrayHighlight.Name = "checkTrayHighlight";
|
||||||
this.checkTrayHighlight.Size = new System.Drawing.Size(103, 17);
|
this.checkTrayHighlight.Size = new System.Drawing.Size(114, 19);
|
||||||
this.checkTrayHighlight.TabIndex = 3;
|
this.checkTrayHighlight.TabIndex = 3;
|
||||||
this.checkTrayHighlight.Text = "Enable Highlight";
|
this.checkTrayHighlight.Text = "Enable Highlight";
|
||||||
this.checkTrayHighlight.UseVisualStyleBackColor = true;
|
this.checkTrayHighlight.UseVisualStyleBackColor = true;
|
||||||
@@ -47,31 +48,33 @@
|
|||||||
// comboBoxTrayType
|
// comboBoxTrayType
|
||||||
//
|
//
|
||||||
this.comboBoxTrayType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.comboBoxTrayType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.comboBoxTrayType.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.comboBoxTrayType.FormattingEnabled = true;
|
this.comboBoxTrayType.FormattingEnabled = true;
|
||||||
this.comboBoxTrayType.Location = new System.Drawing.Point(5, 25);
|
this.comboBoxTrayType.Location = new System.Drawing.Point(5, 25);
|
||||||
this.comboBoxTrayType.Margin = new System.Windows.Forms.Padding(5, 5, 3, 3);
|
this.comboBoxTrayType.Margin = new System.Windows.Forms.Padding(5, 5, 3, 3);
|
||||||
this.comboBoxTrayType.Name = "comboBoxTrayType";
|
this.comboBoxTrayType.Name = "comboBoxTrayType";
|
||||||
this.comboBoxTrayType.Size = new System.Drawing.Size(144, 21);
|
this.comboBoxTrayType.Size = new System.Drawing.Size(144, 23);
|
||||||
this.comboBoxTrayType.TabIndex = 1;
|
this.comboBoxTrayType.TabIndex = 1;
|
||||||
//
|
//
|
||||||
// labelTrayIcon
|
// labelTrayIcon
|
||||||
//
|
//
|
||||||
this.labelTrayIcon.AutoSize = true;
|
this.labelTrayIcon.AutoSize = true;
|
||||||
this.labelTrayIcon.Location = new System.Drawing.Point(3, 58);
|
this.labelTrayIcon.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelTrayIcon.Location = new System.Drawing.Point(3, 60);
|
||||||
this.labelTrayIcon.Margin = new System.Windows.Forms.Padding(3, 9, 3, 0);
|
this.labelTrayIcon.Margin = new System.Windows.Forms.Padding(3, 9, 3, 0);
|
||||||
this.labelTrayIcon.Name = "labelTrayIcon";
|
this.labelTrayIcon.Name = "labelTrayIcon";
|
||||||
this.labelTrayIcon.Size = new System.Drawing.Size(52, 13);
|
this.labelTrayIcon.Size = new System.Drawing.Size(56, 15);
|
||||||
this.labelTrayIcon.TabIndex = 2;
|
this.labelTrayIcon.TabIndex = 2;
|
||||||
this.labelTrayIcon.Text = "Tray Icon";
|
this.labelTrayIcon.Text = "Tray Icon";
|
||||||
//
|
//
|
||||||
// labelTray
|
// labelTray
|
||||||
//
|
//
|
||||||
this.labelTray.AutoSize = true;
|
this.labelTray.AutoSize = true;
|
||||||
this.labelTray.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelTray.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelTray.Location = new System.Drawing.Point(0, 0);
|
this.labelTray.Location = new System.Drawing.Point(0, 0);
|
||||||
this.labelTray.Margin = new System.Windows.Forms.Padding(0);
|
this.labelTray.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.labelTray.Name = "labelTray";
|
this.labelTray.Name = "labelTray";
|
||||||
this.labelTray.Size = new System.Drawing.Size(96, 20);
|
this.labelTray.Size = new System.Drawing.Size(88, 20);
|
||||||
this.labelTray.TabIndex = 0;
|
this.labelTray.TabIndex = 0;
|
||||||
this.labelTray.Text = "System Tray";
|
this.labelTray.Text = "System Tray";
|
||||||
//
|
//
|
||||||
@@ -87,7 +90,7 @@
|
|||||||
this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
this.flowPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
||||||
this.flowPanel.Location = new System.Drawing.Point(9, 9);
|
this.flowPanel.Location = new System.Drawing.Point(9, 9);
|
||||||
this.flowPanel.Name = "flowPanel";
|
this.flowPanel.Name = "flowPanel";
|
||||||
this.flowPanel.Size = new System.Drawing.Size(322, 97);
|
this.flowPanel.Size = new System.Drawing.Size(322, 102);
|
||||||
this.flowPanel.TabIndex = 0;
|
this.flowPanel.TabIndex = 0;
|
||||||
this.flowPanel.WrapContents = false;
|
this.flowPanel.WrapContents = false;
|
||||||
//
|
//
|
||||||
@@ -97,7 +100,7 @@
|
|||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.Controls.Add(this.flowPanel);
|
this.Controls.Add(this.flowPanel);
|
||||||
this.Name = "TabSettingsTray";
|
this.Name = "TabSettingsTray";
|
||||||
this.Size = new System.Drawing.Size(340, 115);
|
this.Size = new System.Drawing.Size(340, 120);
|
||||||
this.flowPanel.ResumeLayout(false);
|
this.flowPanel.ResumeLayout(false);
|
||||||
this.flowPanel.PerformLayout();
|
this.flowPanel.PerformLayout();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
@@ -1,6 +1,8 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using TweetDuck.Configuration;
|
||||||
|
using Res = TweetDuck.Properties.Resources;
|
||||||
|
|
||||||
namespace TweetDuck.Core.Other{
|
namespace TweetDuck.Core.Other{
|
||||||
sealed partial class TrayIcon : Component{
|
sealed partial class TrayIcon : Component{
|
||||||
@@ -8,6 +10,8 @@ namespace TweetDuck.Core.Other{
|
|||||||
Disabled, DisplayOnly, MinimizeToTray, CloseToTray, Combined
|
Disabled, DisplayOnly, MinimizeToTray, CloseToTray, Combined
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static UserConfig Config => Program.UserConfig;
|
||||||
|
|
||||||
public event EventHandler ClickRestore;
|
public event EventHandler ClickRestore;
|
||||||
public event EventHandler ClickClose;
|
public event EventHandler ClickClose;
|
||||||
|
|
||||||
@@ -17,12 +21,9 @@ namespace TweetDuck.Core.Other{
|
|||||||
}
|
}
|
||||||
|
|
||||||
set{
|
set{
|
||||||
if (value){
|
|
||||||
notifyIcon.Icon = Properties.Resources.icon_tray;
|
|
||||||
}
|
|
||||||
|
|
||||||
notifyIcon.Visible = value;
|
notifyIcon.Visible = value;
|
||||||
hasNotifications = false;
|
hasNotifications = false;
|
||||||
|
UpdateIcon();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,9 +33,9 @@ namespace TweetDuck.Core.Other{
|
|||||||
}
|
}
|
||||||
|
|
||||||
set{
|
set{
|
||||||
if (hasNotifications != value && Visible){
|
if (hasNotifications != value){
|
||||||
notifyIcon.Icon = value ? Properties.Resources.icon_tray_new : Properties.Resources.icon_tray;
|
|
||||||
hasNotifications = value;
|
hasNotifications = value;
|
||||||
|
UpdateIcon();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -53,14 +54,26 @@ namespace TweetDuck.Core.Other{
|
|||||||
|
|
||||||
this.notifyIcon.ContextMenu = contextMenu;
|
this.notifyIcon.ContextMenu = contextMenu;
|
||||||
this.notifyIcon.Text = Program.BrandName;
|
this.notifyIcon.Text = Program.BrandName;
|
||||||
|
|
||||||
|
Config.MuteToggled += Config_MuteToggled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TrayIcon(IContainer container) : this(){
|
public TrayIcon(IContainer container) : this(){
|
||||||
container.Add(this);
|
container.Add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void UpdateIcon(){
|
||||||
|
if (Visible){
|
||||||
|
notifyIcon.Icon = hasNotifications ? Res.icon_tray_new : Config.MuteNotifications ? Res.icon_tray_muted : Res.icon_tray;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// event handlers
|
// event handlers
|
||||||
|
|
||||||
|
private void Config_MuteToggled(object sender, EventArgs e){
|
||||||
|
UpdateIcon();
|
||||||
|
}
|
||||||
|
|
||||||
private void trayIcon_MouseClick(object sender, MouseEventArgs e){
|
private void trayIcon_MouseClick(object sender, MouseEventArgs e){
|
||||||
if (e.Button == MouseButtons.Left){
|
if (e.Button == MouseButtons.Left){
|
||||||
menuItemRestore_Click(sender, e);
|
menuItemRestore_Click(sender, e);
|
||||||
@@ -68,7 +81,7 @@ namespace TweetDuck.Core.Other{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void contextMenu_Popup(object sender, EventArgs e){
|
private void contextMenu_Popup(object sender, EventArgs e){
|
||||||
contextMenu.MenuItems[1].Checked = Program.UserConfig.MuteNotifications;
|
contextMenu.MenuItems[1].Checked = Config.MuteNotifications;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuItemRestore_Click(object sender, EventArgs e){
|
private void menuItemRestore_Click(object sender, EventArgs e){
|
||||||
@@ -76,8 +89,8 @@ namespace TweetDuck.Core.Other{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void menuItemMuteNotifications_Click(object sender, EventArgs e){
|
private void menuItemMuteNotifications_Click(object sender, EventArgs e){
|
||||||
Program.UserConfig.MuteNotifications = !contextMenu.MenuItems[1].Checked;
|
Config.MuteNotifications = !contextMenu.MenuItems[1].Checked;
|
||||||
Program.UserConfig.Save();
|
Config.Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuItemClose_Click(object sender, EventArgs e){
|
private void menuItemClose_Click(object sender, EventArgs e){
|
||||||
|
@@ -1,12 +1,15 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Text;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using CefSharp;
|
using CefSharp;
|
||||||
using CefSharp.WinForms;
|
using CefSharp.WinForms;
|
||||||
|
using TweetDuck.Configuration;
|
||||||
using TweetDuck.Core.Bridge;
|
using TweetDuck.Core.Bridge;
|
||||||
using TweetDuck.Core.Controls;
|
using TweetDuck.Core.Controls;
|
||||||
using TweetDuck.Core.Handling;
|
using TweetDuck.Core.Handling;
|
||||||
using TweetDuck.Core.Handling.General;
|
using TweetDuck.Core.Handling.General;
|
||||||
|
using TweetDuck.Core.Management;
|
||||||
using TweetDuck.Core.Notification;
|
using TweetDuck.Core.Notification;
|
||||||
using TweetDuck.Core.Other.Interfaces;
|
using TweetDuck.Core.Other.Interfaces;
|
||||||
using TweetDuck.Core.Utils;
|
using TweetDuck.Core.Utils;
|
||||||
@@ -38,14 +41,16 @@ namespace TweetDuck.Core{
|
|||||||
private string prevSoundNotificationPath = null;
|
private string prevSoundNotificationPath = null;
|
||||||
|
|
||||||
public TweetDeckBrowser(FormBrowser owner, TweetDeckBridge bridge){
|
public TweetDeckBrowser(FormBrowser owner, TweetDeckBridge bridge){
|
||||||
|
RequestHandlerBrowser requestHandler = new RequestHandlerBrowser();
|
||||||
|
|
||||||
this.browser = new ChromiumWebBrowser(TwitterUtils.TweetDeckURL){
|
this.browser = new ChromiumWebBrowser(TwitterUtils.TweetDeckURL){
|
||||||
DialogHandler = new FileDialogHandler(),
|
DialogHandler = new FileDialogHandler(),
|
||||||
DragHandler = new DragHandlerBrowser(),
|
DragHandler = new DragHandlerBrowser(requestHandler),
|
||||||
MenuHandler = new ContextMenuBrowser(owner),
|
MenuHandler = new ContextMenuBrowser(owner),
|
||||||
JsDialogHandler = new JavaScriptDialogHandler(),
|
JsDialogHandler = new JavaScriptDialogHandler(),
|
||||||
KeyboardHandler = new KeyboardHandlerBrowser(owner),
|
KeyboardHandler = new KeyboardHandlerBrowser(owner),
|
||||||
LifeSpanHandler = new LifeSpanHandler(),
|
LifeSpanHandler = new LifeSpanHandler(),
|
||||||
RequestHandler = new RequestHandlerBrowser()
|
RequestHandler = requestHandler
|
||||||
};
|
};
|
||||||
|
|
||||||
this.browser.LoadingStateChanged += browser_LoadingStateChanged;
|
this.browser.LoadingStateChanged += browser_LoadingStateChanged;
|
||||||
@@ -145,12 +150,18 @@ namespace TweetDuck.Core{
|
|||||||
UpdateProperties();
|
UpdateProperties();
|
||||||
TweetDeckBridge.RestoreSessionData(frame);
|
TweetDeckBridge.RestoreSessionData(frame);
|
||||||
ScriptLoader.ExecuteFile(frame, "code.js", browser);
|
ScriptLoader.ExecuteFile(frame, "code.js", browser);
|
||||||
|
ScriptLoader.ExecuteFile(frame, "update.js", browser);
|
||||||
|
|
||||||
InjectBrowserCSS();
|
InjectBrowserCSS();
|
||||||
ReinjectCustomCSS(Program.UserConfig.CustomBrowserCSS);
|
ReinjectCustomCSS(Program.UserConfig.CustomBrowserCSS);
|
||||||
UserConfig_SoundNotificationInfoChanged(null, EventArgs.Empty);
|
UserConfig_SoundNotificationInfoChanged(null, EventArgs.Empty);
|
||||||
|
|
||||||
TweetDeckBridge.ResetStaticProperties();
|
TweetDeckBridge.ResetStaticProperties();
|
||||||
|
|
||||||
|
if (Arguments.HasFlag(Arguments.ArgIgnoreGDPR)){
|
||||||
|
ScriptLoader.ExecuteScript(frame, "TD.storage.Account.prototype.requiresConsent = function(){ return false; }", "gen:gdpr");
|
||||||
|
}
|
||||||
|
|
||||||
if (Program.UserConfig.FirstRun){
|
if (Program.UserConfig.FirstRun){
|
||||||
ScriptLoader.ExecuteFile(frame, "introduction.js", browser);
|
ScriptLoader.ExecuteFile(frame, "introduction.js", browser);
|
||||||
}
|
}
|
||||||
@@ -163,7 +174,7 @@ namespace TweetDuck.Core{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!e.FailedUrl.StartsWith("http://td/", StringComparison.Ordinal)){
|
if (!e.FailedUrl.StartsWith("http://td/", StringComparison.Ordinal)){
|
||||||
string errorPage = ScriptLoader.LoadResource("pages/error.html", true);
|
string errorPage = ScriptLoader.LoadResourceSilent("pages/error.html");
|
||||||
|
|
||||||
if (errorPage != null){
|
if (errorPage != null){
|
||||||
browser.LoadHtml(errorPage.Replace("{err}", BrowserUtils.GetErrorName(e.ErrorCode)), "http://td/error");
|
browser.LoadHtml(errorPage.Replace("{err}", BrowserUtils.GetErrorName(e.ErrorCode)), "http://td/error");
|
||||||
@@ -212,7 +223,7 @@ namespace TweetDuck.Core{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void InjectBrowserCSS(){
|
public void InjectBrowserCSS(){
|
||||||
browser.ExecuteScriptAsync("TDGF_injectBrowserCSS", ScriptLoader.LoadResource("styles/browser.css", false, browser)?.TrimEnd() ?? string.Empty);
|
browser.ExecuteScriptAsync("TDGF_injectBrowserCSS", ScriptLoader.LoadResource("styles/browser.css", browser)?.TrimEnd() ?? string.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ReinjectCustomCSS(string css){
|
public void ReinjectCustomCSS(string css){
|
||||||
@@ -246,5 +257,13 @@ namespace TweetDuck.Core{
|
|||||||
public void ApplyROT13(){
|
public void ApplyROT13(){
|
||||||
browser.ExecuteScriptAsync("TDGF_applyROT13()");
|
browser.ExecuteScriptAsync("TDGF_applyROT13()");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ShowUpdateNotification(string versionTag, string releaseNotes){
|
||||||
|
browser.ExecuteScriptAsync("TDUF_displayNotification", versionTag, Convert.ToBase64String(Encoding.GetEncoding("iso-8859-1").GetBytes(releaseNotes)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OpenDevTools(){
|
||||||
|
browser.ShowDevTools();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -11,8 +11,11 @@ using TweetDuck.Data;
|
|||||||
|
|
||||||
namespace TweetDuck.Core.Utils{
|
namespace TweetDuck.Core.Utils{
|
||||||
static class BrowserUtils{
|
static class BrowserUtils{
|
||||||
public static string HeaderUserAgent => Program.BrandName+" "+Application.ProductVersion;
|
public static string UserAgentVanilla => Program.BrandName+" "+Application.ProductVersion;
|
||||||
|
public static string UserAgentChrome => "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/"+Cef.ChromiumVersion+" Safari/537.36";
|
||||||
|
|
||||||
|
public static readonly bool HasDevTools = File.Exists(Path.Combine(Program.ProgramPath, "devtools_resources.pak"));
|
||||||
|
|
||||||
public static void SetupCefArgs(IDictionary<string, string> args){
|
public static void SetupCefArgs(IDictionary<string, string> args){
|
||||||
if (!Program.SystemConfig.HardwareAcceleration){
|
if (!Program.SystemConfig.HardwareAcceleration){
|
||||||
args["disable-gpu"] = "1";
|
args["disable-gpu"] = "1";
|
||||||
@@ -167,7 +170,7 @@ namespace TweetDuck.Core.Utils{
|
|||||||
WindowsUtils.EnsureTLS12();
|
WindowsUtils.EnsureTLS12();
|
||||||
|
|
||||||
WebClient client = new WebClient{ Proxy = null };
|
WebClient client = new WebClient{ Proxy = null };
|
||||||
client.Headers[HttpRequestHeader.UserAgent] = HeaderUserAgent;
|
client.Headers[HttpRequestHeader.UserAgent] = UserAgentVanilla;
|
||||||
return client;
|
return client;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -71,6 +71,9 @@ namespace TweetDuck.Core.Utils{
|
|||||||
[return: MarshalAs(UnmanagedType.Bool)]
|
[return: MarshalAs(UnmanagedType.Bool)]
|
||||||
private static extern bool BitBlt(IntPtr hdc, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, uint dwRop);
|
private static extern bool BitBlt(IntPtr hdc, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, uint dwRop);
|
||||||
|
|
||||||
|
[DllImport("dwmapi.dll")]
|
||||||
|
public static extern int DwmIsCompositionEnabled(out bool enabled);
|
||||||
|
|
||||||
[DllImport("user32.dll")]
|
[DllImport("user32.dll")]
|
||||||
[return: MarshalAs(UnmanagedType.Bool)]
|
[return: MarshalAs(UnmanagedType.Bool)]
|
||||||
public static extern bool ShowScrollBar(IntPtr hWnd, int wBar, bool bShow);
|
public static extern bool ShowScrollBar(IntPtr hWnd, int wBar, bool bShow);
|
||||||
|
@@ -19,11 +19,23 @@ namespace TweetDuck.Core.Utils{
|
|||||||
return Regex.Replace(str, @"(\p{Ll})(\P{Ll})|(\P{Ll})(\P{Ll}\p{Ll})", "$1$3_$2$4").ToUpper();
|
return Regex.Replace(str, @"(\p{Ll})(\P{Ll})|(\P{Ll})(\P{Ll}\p{Ll})", "$1$3_$2$4").ToUpper();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string ConvertRot13(string str){
|
||||||
|
return Regex.Replace(str, @"[a-zA-Z]", match => {
|
||||||
|
int code = match.Value[0];
|
||||||
|
int start = code <= 90 ? 65 : 97;
|
||||||
|
return ((char)(start+(code-start+13)%26)).ToString();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public static int CountOccurrences(string source, string substring){
|
public static int CountOccurrences(string source, string substring){
|
||||||
int count = 0, index = 0;
|
if (substring.Length == 0){
|
||||||
|
throw new ArgumentOutOfRangeException(nameof(substring), "Searched substring must not be empty.");
|
||||||
|
}
|
||||||
|
|
||||||
|
int count = 0, index = 0, length = substring.Length;
|
||||||
|
|
||||||
while((index = source.IndexOf(substring, index)) != -1){
|
while((index = source.IndexOf(substring, index)) != -1){
|
||||||
index += substring.Length;
|
index += length;
|
||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -15,10 +15,12 @@ namespace TweetDuck.Core.Utils{
|
|||||||
private static readonly Lazy<Regex> RegexStripHtmlStyles = new Lazy<Regex>(() => new Regex(@"\s?(?:style|class)="".*?"""), false);
|
private static readonly Lazy<Regex> RegexStripHtmlStyles = new Lazy<Regex>(() => new Regex(@"\s?(?:style|class)="".*?"""), false);
|
||||||
private static readonly Lazy<Regex> RegexOffsetClipboardHtml = new Lazy<Regex>(() => new Regex(@"(?<=EndHTML:|EndFragment:)(\d+)"), false);
|
private static readonly Lazy<Regex> RegexOffsetClipboardHtml = new Lazy<Regex>(() => new Regex(@"(?<=EndHTML:|EndFragment:)(\d+)"), false);
|
||||||
|
|
||||||
|
private static readonly bool IsWindows8OrNewer;
|
||||||
|
private static bool HasMicrosoftBeenBroughtTo2008Yet;
|
||||||
|
|
||||||
public static int CurrentProcessID { get; }
|
public static int CurrentProcessID { get; }
|
||||||
public static bool ShouldAvoidToolWindow { get; }
|
public static bool ShouldAvoidToolWindow { get; }
|
||||||
|
public static bool IsAeroEnabled => IsWindows8OrNewer || (NativeMethods.DwmIsCompositionEnabled(out bool isCompositionEnabled) == 0 && isCompositionEnabled);
|
||||||
private static bool HasMicrosoftBeenBroughtTo2008Yet;
|
|
||||||
|
|
||||||
static WindowsUtils(){
|
static WindowsUtils(){
|
||||||
using(Process me = Process.GetCurrentProcess()){
|
using(Process me = Process.GetCurrentProcess()){
|
||||||
@@ -26,7 +28,9 @@ namespace TweetDuck.Core.Utils{
|
|||||||
}
|
}
|
||||||
|
|
||||||
Version ver = Environment.OSVersion.Version;
|
Version ver = Environment.OSVersion.Version;
|
||||||
ShouldAvoidToolWindow = ver.Major == 6 && ver.Minor == 2; // windows 8/10
|
IsWindows8OrNewer = ver.Major == 6 && ver.Minor == 2; // windows 8/10
|
||||||
|
|
||||||
|
ShouldAvoidToolWindow = IsWindows8OrNewer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void EnsureTLS12(){
|
public static void EnsureTLS12(){
|
||||||
|
@@ -16,7 +16,7 @@ namespace TweetDuck.Data{
|
|||||||
this.html = html;
|
this.html = html;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Inject(string targetHTML){
|
public string InjectInto(string targetHTML){
|
||||||
int index = targetHTML.IndexOf(search, StringComparison.Ordinal);
|
int index = targetHTML.IndexOf(search, StringComparison.Ordinal);
|
||||||
|
|
||||||
if (index == -1){
|
if (index == -1){
|
||||||
|
36
Data/Result.cs
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace TweetDuck.Data{
|
||||||
|
sealed class Result<T>{
|
||||||
|
public bool HasValue => exception == null;
|
||||||
|
|
||||||
|
public T Value => HasValue ? value : throw new InvalidOperationException("Requested value from a failed result.");
|
||||||
|
public Exception Exception => exception ?? throw new InvalidOperationException("Requested exception from a successful result.");
|
||||||
|
|
||||||
|
private readonly T value;
|
||||||
|
private readonly Exception exception;
|
||||||
|
|
||||||
|
public Result(T value){
|
||||||
|
this.value = value;
|
||||||
|
this.exception = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result(Exception exception){
|
||||||
|
this.value = default(T);
|
||||||
|
this.exception = exception ?? throw new ArgumentNullException(nameof(exception));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Handle(Action<T> onSuccess, Action<Exception> onException){
|
||||||
|
if (HasValue){
|
||||||
|
onSuccess(value);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
onException(exception);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result<R> Select<R>(Func<T, R> map){
|
||||||
|
return HasValue ? new Result<R>(map(value)) : new Result<R>(exception);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
108
Plugins/Controls/PluginControl.Designer.cs
generated
@@ -23,6 +23,7 @@
|
|||||||
/// the contents of this method with the code editor.
|
/// the contents of this method with the code editor.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent() {
|
private void InitializeComponent() {
|
||||||
|
this.components = new System.ComponentModel.Container();
|
||||||
this.btnToggleState = new System.Windows.Forms.Button();
|
this.btnToggleState = new System.Windows.Forms.Button();
|
||||||
this.labelName = new System.Windows.Forms.Label();
|
this.labelName = new System.Windows.Forms.Label();
|
||||||
this.panelDescription = new System.Windows.Forms.Panel();
|
this.panelDescription = new System.Windows.Forms.Panel();
|
||||||
@@ -33,6 +34,8 @@
|
|||||||
this.labelVersion = new System.Windows.Forms.Label();
|
this.labelVersion = new System.Windows.Forms.Label();
|
||||||
this.btnConfigure = new System.Windows.Forms.Button();
|
this.btnConfigure = new System.Windows.Forms.Button();
|
||||||
this.labelType = new TweetDuck.Core.Controls.LabelVertical();
|
this.labelType = new TweetDuck.Core.Controls.LabelVertical();
|
||||||
|
this.timerLayout = new System.Windows.Forms.Timer(this.components);
|
||||||
|
this.panelBorder = new System.Windows.Forms.Panel();
|
||||||
this.panelDescription.SuspendLayout();
|
this.panelDescription.SuspendLayout();
|
||||||
this.flowLayoutInfo.SuspendLayout();
|
this.flowLayoutInfo.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
@@ -40,21 +43,24 @@
|
|||||||
// btnToggleState
|
// btnToggleState
|
||||||
//
|
//
|
||||||
this.btnToggleState.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnToggleState.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnToggleState.Location = new System.Drawing.Point(456, 80);
|
this.btnToggleState.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnToggleState.Location = new System.Drawing.Point(451, 59);
|
||||||
this.btnToggleState.Name = "btnToggleState";
|
this.btnToggleState.Name = "btnToggleState";
|
||||||
this.btnToggleState.Size = new System.Drawing.Size(65, 23);
|
this.btnToggleState.Size = new System.Drawing.Size(70, 23);
|
||||||
this.btnToggleState.TabIndex = 5;
|
this.btnToggleState.TabIndex = 6;
|
||||||
this.btnToggleState.Text = "Disable";
|
this.btnToggleState.Text = "Disable";
|
||||||
this.btnToggleState.UseVisualStyleBackColor = true;
|
this.btnToggleState.UseVisualStyleBackColor = true;
|
||||||
this.btnToggleState.Click += new System.EventHandler(this.btnToggleState_Click);
|
this.btnToggleState.Click += new System.EventHandler(this.btnToggleState_Click);
|
||||||
//
|
//
|
||||||
// labelName
|
// labelName
|
||||||
//
|
//
|
||||||
|
this.labelName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
this.labelName.AutoSize = true;
|
this.labelName.AutoSize = true;
|
||||||
this.labelName.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelName.Font = new System.Drawing.Font("Segoe UI Semibold", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelName.Location = new System.Drawing.Point(24, 7);
|
this.labelName.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.labelName.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.labelName.Name = "labelName";
|
this.labelName.Name = "labelName";
|
||||||
this.labelName.Size = new System.Drawing.Size(61, 24);
|
this.labelName.Size = new System.Drawing.Size(53, 21);
|
||||||
this.labelName.TabIndex = 0;
|
this.labelName.TabIndex = 0;
|
||||||
this.labelName.Text = "Name";
|
this.labelName.Text = "Name";
|
||||||
this.labelName.UseMnemonic = false;
|
this.labelName.UseMnemonic = false;
|
||||||
@@ -66,10 +72,11 @@
|
|||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.panelDescription.AutoScroll = true;
|
this.panelDescription.AutoScroll = true;
|
||||||
this.panelDescription.Controls.Add(this.labelDescription);
|
this.panelDescription.Controls.Add(this.labelDescription);
|
||||||
this.panelDescription.Location = new System.Drawing.Point(28, 35);
|
this.panelDescription.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.panelDescription.Location = new System.Drawing.Point(28, 33);
|
||||||
this.panelDescription.Name = "panelDescription";
|
this.panelDescription.Name = "panelDescription";
|
||||||
this.panelDescription.Size = new System.Drawing.Size(493, 39);
|
this.panelDescription.Size = new System.Drawing.Size(410, 47);
|
||||||
this.panelDescription.TabIndex = 2;
|
this.panelDescription.TabIndex = 4;
|
||||||
this.panelDescription.Resize += new System.EventHandler(this.panelDescription_Resize);
|
this.panelDescription.Resize += new System.EventHandler(this.panelDescription_Resize);
|
||||||
//
|
//
|
||||||
// labelDescription
|
// labelDescription
|
||||||
@@ -80,44 +87,51 @@
|
|||||||
this.labelDescription.Location = new System.Drawing.Point(0, 0);
|
this.labelDescription.Location = new System.Drawing.Point(0, 0);
|
||||||
this.labelDescription.Margin = new System.Windows.Forms.Padding(0);
|
this.labelDescription.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.labelDescription.Name = "labelDescription";
|
this.labelDescription.Name = "labelDescription";
|
||||||
this.labelDescription.Size = new System.Drawing.Size(13, 39);
|
this.labelDescription.Size = new System.Drawing.Size(14, 45);
|
||||||
this.labelDescription.TabIndex = 0;
|
this.labelDescription.TabIndex = 0;
|
||||||
this.labelDescription.Text = "a\r\nb\r\nc";
|
this.labelDescription.Text = "a\r\nb\r\nc";
|
||||||
this.labelDescription.UseMnemonic = false;
|
this.labelDescription.UseMnemonic = false;
|
||||||
//
|
//
|
||||||
// labelAuthor
|
// labelAuthor
|
||||||
//
|
//
|
||||||
|
this.labelAuthor.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
this.labelAuthor.AutoSize = true;
|
this.labelAuthor.AutoSize = true;
|
||||||
this.labelAuthor.Location = new System.Drawing.Point(3, 0);
|
this.labelAuthor.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelAuthor.Margin = new System.Windows.Forms.Padding(3, 0, 32, 0);
|
this.labelAuthor.Location = new System.Drawing.Point(53, 5);
|
||||||
|
this.labelAuthor.Margin = new System.Windows.Forms.Padding(0, 0, 0, 1);
|
||||||
this.labelAuthor.Name = "labelAuthor";
|
this.labelAuthor.Name = "labelAuthor";
|
||||||
this.labelAuthor.Size = new System.Drawing.Size(38, 13);
|
this.labelAuthor.Size = new System.Drawing.Size(44, 15);
|
||||||
this.labelAuthor.TabIndex = 0;
|
this.labelAuthor.TabIndex = 1;
|
||||||
this.labelAuthor.Text = "Author";
|
this.labelAuthor.Text = "Author";
|
||||||
this.labelAuthor.UseMnemonic = false;
|
this.labelAuthor.UseMnemonic = false;
|
||||||
//
|
//
|
||||||
// flowLayoutInfo
|
// flowLayoutInfo
|
||||||
//
|
//
|
||||||
this.flowLayoutInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
this.flowLayoutInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.flowLayoutInfo.Controls.Add(this.labelName);
|
||||||
this.flowLayoutInfo.Controls.Add(this.labelAuthor);
|
this.flowLayoutInfo.Controls.Add(this.labelAuthor);
|
||||||
this.flowLayoutInfo.Controls.Add(this.labelWebsite);
|
this.flowLayoutInfo.Controls.Add(this.labelWebsite);
|
||||||
this.flowLayoutInfo.Location = new System.Drawing.Point(28, 85);
|
this.flowLayoutInfo.Location = new System.Drawing.Point(24, 6);
|
||||||
|
this.flowLayoutInfo.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.flowLayoutInfo.Name = "flowLayoutInfo";
|
this.flowLayoutInfo.Name = "flowLayoutInfo";
|
||||||
this.flowLayoutInfo.Size = new System.Drawing.Size(348, 18);
|
this.flowLayoutInfo.Size = new System.Drawing.Size(414, 21);
|
||||||
this.flowLayoutInfo.TabIndex = 3;
|
this.flowLayoutInfo.TabIndex = 2;
|
||||||
this.flowLayoutInfo.WrapContents = false;
|
this.flowLayoutInfo.WrapContents = false;
|
||||||
//
|
//
|
||||||
// labelWebsite
|
// labelWebsite
|
||||||
//
|
//
|
||||||
|
this.labelWebsite.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.labelWebsite.AutoEllipsis = true;
|
||||||
this.labelWebsite.AutoSize = true;
|
this.labelWebsite.AutoSize = true;
|
||||||
this.labelWebsite.Cursor = System.Windows.Forms.Cursors.Hand;
|
this.labelWebsite.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
this.labelWebsite.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelWebsite.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelWebsite.ForeColor = System.Drawing.Color.Blue;
|
this.labelWebsite.ForeColor = System.Drawing.Color.Blue;
|
||||||
this.labelWebsite.Location = new System.Drawing.Point(76, 0);
|
this.labelWebsite.Location = new System.Drawing.Point(100, 5);
|
||||||
|
this.labelWebsite.Margin = new System.Windows.Forms.Padding(3, 0, 0, 1);
|
||||||
this.labelWebsite.Name = "labelWebsite";
|
this.labelWebsite.Name = "labelWebsite";
|
||||||
this.labelWebsite.Size = new System.Drawing.Size(46, 13);
|
this.labelWebsite.Size = new System.Drawing.Size(49, 15);
|
||||||
this.labelWebsite.TabIndex = 1;
|
this.labelWebsite.TabIndex = 2;
|
||||||
this.labelWebsite.Text = "Website";
|
this.labelWebsite.Text = "Website";
|
||||||
this.labelWebsite.UseMnemonic = false;
|
this.labelWebsite.UseMnemonic = false;
|
||||||
this.labelWebsite.Click += new System.EventHandler(this.labelWebsite_Click);
|
this.labelWebsite.Click += new System.EventHandler(this.labelWebsite_Click);
|
||||||
@@ -126,22 +140,25 @@
|
|||||||
//
|
//
|
||||||
this.labelVersion.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.labelVersion.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.labelVersion.Location = new System.Drawing.Point(14, 12);
|
this.labelVersion.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
this.labelVersion.Margin = new System.Windows.Forms.Padding(3, 9, 3, 0);
|
this.labelVersion.Location = new System.Drawing.Point(88, 6);
|
||||||
|
this.labelVersion.Margin = new System.Windows.Forms.Padding(0, 0, 1, 0);
|
||||||
this.labelVersion.Name = "labelVersion";
|
this.labelVersion.Name = "labelVersion";
|
||||||
this.labelVersion.Size = new System.Drawing.Size(510, 13);
|
this.labelVersion.Padding = new System.Windows.Forms.Padding(0, 0, 0, 3);
|
||||||
this.labelVersion.TabIndex = 1;
|
this.labelVersion.Size = new System.Drawing.Size(436, 21);
|
||||||
|
this.labelVersion.TabIndex = 3;
|
||||||
this.labelVersion.Text = "Version";
|
this.labelVersion.Text = "Version";
|
||||||
this.labelVersion.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
this.labelVersion.TextAlign = System.Drawing.ContentAlignment.BottomRight;
|
||||||
this.labelVersion.UseMnemonic = false;
|
this.labelVersion.UseMnemonic = false;
|
||||||
//
|
//
|
||||||
// btnConfigure
|
// btnConfigure
|
||||||
//
|
//
|
||||||
this.btnConfigure.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnConfigure.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnConfigure.Location = new System.Drawing.Point(382, 80);
|
this.btnConfigure.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.btnConfigure.Location = new System.Drawing.Point(451, 30);
|
||||||
this.btnConfigure.Name = "btnConfigure";
|
this.btnConfigure.Name = "btnConfigure";
|
||||||
this.btnConfigure.Size = new System.Drawing.Size(68, 23);
|
this.btnConfigure.Size = new System.Drawing.Size(70, 23);
|
||||||
this.btnConfigure.TabIndex = 4;
|
this.btnConfigure.TabIndex = 5;
|
||||||
this.btnConfigure.Text = "Configure";
|
this.btnConfigure.Text = "Configure";
|
||||||
this.btnConfigure.UseVisualStyleBackColor = true;
|
this.btnConfigure.UseVisualStyleBackColor = true;
|
||||||
this.btnConfigure.Click += new System.EventHandler(this.btnConfigure_Click);
|
this.btnConfigure.Click += new System.EventHandler(this.btnConfigure_Click);
|
||||||
@@ -152,12 +169,29 @@
|
|||||||
| System.Windows.Forms.AnchorStyles.Left)));
|
| System.Windows.Forms.AnchorStyles.Left)));
|
||||||
this.labelType.BackColor = System.Drawing.Color.DarkGray;
|
this.labelType.BackColor = System.Drawing.Color.DarkGray;
|
||||||
this.labelType.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
this.labelType.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||||
|
this.labelType.LineHeight = 0;
|
||||||
this.labelType.Location = new System.Drawing.Point(0, 0);
|
this.labelType.Location = new System.Drawing.Point(0, 0);
|
||||||
this.labelType.Name = "labelType";
|
this.labelType.Name = "labelType";
|
||||||
this.labelType.Size = new System.Drawing.Size(18, 109);
|
this.labelType.Size = new System.Drawing.Size(18, 88);
|
||||||
this.labelType.TabIndex = 6;
|
this.labelType.TabIndex = 0;
|
||||||
this.labelType.Text = "TYPE";
|
this.labelType.Text = "TYPE";
|
||||||
//
|
//
|
||||||
|
// timerLayout
|
||||||
|
//
|
||||||
|
this.timerLayout.Interval = 1;
|
||||||
|
this.timerLayout.Tick += new System.EventHandler(this.timerLayout_Tick);
|
||||||
|
//
|
||||||
|
// panelBorder
|
||||||
|
//
|
||||||
|
this.panelBorder.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.panelBorder.BackColor = System.Drawing.Color.DimGray;
|
||||||
|
this.panelBorder.Location = new System.Drawing.Point(18, 0);
|
||||||
|
this.panelBorder.Margin = new System.Windows.Forms.Padding(0);
|
||||||
|
this.panelBorder.Name = "panelBorder";
|
||||||
|
this.panelBorder.Size = new System.Drawing.Size(1, 88);
|
||||||
|
this.panelBorder.TabIndex = 1;
|
||||||
|
//
|
||||||
// PluginControl
|
// PluginControl
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
@@ -165,22 +199,20 @@
|
|||||||
this.Controls.Add(this.labelType);
|
this.Controls.Add(this.labelType);
|
||||||
this.Controls.Add(this.btnConfigure);
|
this.Controls.Add(this.btnConfigure);
|
||||||
this.Controls.Add(this.flowLayoutInfo);
|
this.Controls.Add(this.flowLayoutInfo);
|
||||||
|
this.Controls.Add(this.panelBorder);
|
||||||
this.Controls.Add(this.panelDescription);
|
this.Controls.Add(this.panelDescription);
|
||||||
this.Controls.Add(this.labelName);
|
|
||||||
this.Controls.Add(this.btnToggleState);
|
this.Controls.Add(this.btnToggleState);
|
||||||
this.Controls.Add(this.labelVersion);
|
this.Controls.Add(this.labelVersion);
|
||||||
this.Margin = new System.Windows.Forms.Padding(0);
|
this.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.MaximumSize = new System.Drawing.Size(65535, 109);
|
this.MaximumSize = new System.Drawing.Size(65535, 88);
|
||||||
this.MinimumSize = new System.Drawing.Size(0, 61);
|
|
||||||
this.Name = "PluginControl";
|
this.Name = "PluginControl";
|
||||||
this.Padding = new System.Windows.Forms.Padding(3, 3, 6, 3);
|
this.Padding = new System.Windows.Forms.Padding(3, 3, 6, 3);
|
||||||
this.Size = new System.Drawing.Size(530, 109);
|
this.Size = new System.Drawing.Size(530, 88);
|
||||||
this.panelDescription.ResumeLayout(false);
|
this.panelDescription.ResumeLayout(false);
|
||||||
this.panelDescription.PerformLayout();
|
this.panelDescription.PerformLayout();
|
||||||
this.flowLayoutInfo.ResumeLayout(false);
|
this.flowLayoutInfo.ResumeLayout(false);
|
||||||
this.flowLayoutInfo.PerformLayout();
|
this.flowLayoutInfo.PerformLayout();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,5 +228,7 @@
|
|||||||
private System.Windows.Forms.Label labelVersion;
|
private System.Windows.Forms.Label labelVersion;
|
||||||
private System.Windows.Forms.Button btnConfigure;
|
private System.Windows.Forms.Button btnConfigure;
|
||||||
private Core.Controls.LabelVertical labelType;
|
private Core.Controls.LabelVertical labelType;
|
||||||
|
private System.Windows.Forms.Timer timerLayout;
|
||||||
|
private System.Windows.Forms.Panel panelBorder;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -9,8 +9,9 @@ namespace TweetDuck.Plugins.Controls{
|
|||||||
sealed partial class PluginControl : UserControl{
|
sealed partial class PluginControl : UserControl{
|
||||||
private readonly PluginManager pluginManager;
|
private readonly PluginManager pluginManager;
|
||||||
private readonly Plugin plugin;
|
private readonly Plugin plugin;
|
||||||
|
private readonly bool isConfigurable;
|
||||||
private readonly float dpiScale;
|
|
||||||
|
private int nextHeight;
|
||||||
|
|
||||||
public PluginControl(){
|
public PluginControl(){
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
@@ -20,32 +21,59 @@ namespace TweetDuck.Plugins.Controls{
|
|||||||
this.pluginManager = pluginManager;
|
this.pluginManager = pluginManager;
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
|
|
||||||
this.dpiScale = this.GetDPIScale();
|
this.isConfigurable = pluginManager.IsPluginConfigurable(plugin);
|
||||||
|
|
||||||
this.labelName.Text = plugin.Name;
|
float dpiScale = this.GetDPIScale();
|
||||||
this.labelDescription.Text = plugin.CanRun ? plugin.Description : "This plugin requires TweetDuck "+plugin.RequiredVersion+" or newer.";
|
|
||||||
this.labelVersion.Text = plugin.Version;
|
if (dpiScale > 1F){
|
||||||
this.labelAuthor.Text = plugin.Author;
|
Size = MaximumSize = new Size(MaximumSize.Width, MaximumSize.Height+3);
|
||||||
this.labelWebsite.Text = plugin.Website;
|
}
|
||||||
|
|
||||||
this.labelType.LineHeight = BrowserUtils.Scale(9, dpiScale);
|
this.labelName.Text = plugin.Name;
|
||||||
|
this.labelDescription.Text = plugin.CanRun ? plugin.Description : $"This plugin requires TweetDuck {plugin.RequiredVersion} or newer.";
|
||||||
|
this.labelAuthor.Text = string.IsNullOrWhiteSpace(plugin.Author) ? string.Empty : $"by {plugin.Author}";
|
||||||
|
this.labelWebsite.Text = plugin.Website;
|
||||||
|
this.labelVersion.Text = plugin.Version;
|
||||||
|
|
||||||
|
this.labelType.LineHeight = BrowserUtils.Scale(11, dpiScale);
|
||||||
|
|
||||||
UpdatePluginState();
|
UpdatePluginState();
|
||||||
|
|
||||||
if (labelDescription.Text.Length == 0){
|
if (labelDescription.Text.Length == 0){
|
||||||
labelDescription.Visible = false;
|
labelDescription.Visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
panelDescription_Resize(panelDescription, EventArgs.Empty);
|
panelDescription_Resize(panelDescription, EventArgs.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void timerLayout_Tick(object sender, EventArgs e){
|
||||||
|
timerLayout.Stop();
|
||||||
|
Height = nextHeight;
|
||||||
|
ResumeLayout();
|
||||||
|
}
|
||||||
|
|
||||||
private void panelDescription_Resize(object sender, EventArgs e){
|
private void panelDescription_Resize(object sender, EventArgs e){
|
||||||
if (labelDescription.Text.Length == 0){
|
SuspendLayout();
|
||||||
Height = MinimumSize.Height;
|
|
||||||
|
int maxWidth = panelDescription.Width-(panelDescription.VerticalScroll.Visible ? SystemInformation.VerticalScrollBarWidth : 0);
|
||||||
|
labelDescription.MaximumSize = new Size(maxWidth, int.MaxValue);
|
||||||
|
|
||||||
|
Font font = labelDescription.Font;
|
||||||
|
int descriptionLines = TextRenderer.MeasureText(labelDescription.Text, font, new Size(maxWidth, int.MaxValue), TextFormatFlags.WordBreak).Height/(font.Height-1);
|
||||||
|
|
||||||
|
int requiredLines = Math.Max(descriptionLines, 1+(string.IsNullOrEmpty(labelVersion.Text) ? 0 : 1)+(isConfigurable ? 1 : 0));
|
||||||
|
|
||||||
|
switch(requiredLines){
|
||||||
|
case 1: nextHeight = MaximumSize.Height-2*(font.Height-1); break;
|
||||||
|
case 2: nextHeight = MaximumSize.Height-(font.Height-1); break;
|
||||||
|
default: nextHeight = MaximumSize.Height; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nextHeight != Height){
|
||||||
|
timerLayout.Start();
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
labelDescription.MaximumSize = new Size(panelDescription.Width-SystemInformation.VerticalScrollBarWidth, 0);
|
ResumeLayout();
|
||||||
Height = Math.Min(MinimumSize.Height+BrowserUtils.Scale(9, dpiScale)+labelDescription.Height, MaximumSize.Height);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,11 +102,11 @@ namespace TweetDuck.Plugins.Controls{
|
|||||||
labelWebsite.ForeColor = isEnabled ? Color.Blue : Color.FromArgb(90, 90, 249);
|
labelWebsite.ForeColor = isEnabled ? Color.Blue : Color.FromArgb(90, 90, 249);
|
||||||
|
|
||||||
if (plugin.Group == PluginGroup.Official){
|
if (plugin.Group == PluginGroup.Official){
|
||||||
labelType.Text = "OFFICIAL";
|
labelType.Text = "CORE";
|
||||||
labelType.BackColor = isEnabled ? Color.FromArgb(154, 195, 217) : Color.FromArgb(185, 185, 185);
|
labelType.BackColor = isEnabled ? Color.FromArgb(154, 195, 217) : Color.FromArgb(185, 185, 185);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
labelType.Text = "CUSTOM";
|
labelType.Text = "USER";
|
||||||
labelType.BackColor = isEnabled ? Color.FromArgb(208, 154, 217) : Color.FromArgb(185, 185, 185);
|
labelType.BackColor = isEnabled ? Color.FromArgb(208, 154, 217) : Color.FromArgb(185, 185, 185);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,7 +114,8 @@ namespace TweetDuck.Plugins.Controls{
|
|||||||
labelName.ForeColor = textColor;
|
labelName.ForeColor = textColor;
|
||||||
labelDescription.ForeColor = textColor;
|
labelDescription.ForeColor = textColor;
|
||||||
btnToggleState.Text = isEnabled ? "Disable" : "Enable";
|
btnToggleState.Text = isEnabled ? "Disable" : "Enable";
|
||||||
btnConfigure.Visible = isEnabled && pluginManager.IsPluginConfigurable(plugin);
|
btnConfigure.Visible = isConfigurable;
|
||||||
|
btnConfigure.Enabled = isEnabled;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
labelName.ForeColor = Color.DarkRed;
|
labelName.ForeColor = Color.DarkRed;
|
||||||
|
@@ -9,7 +9,10 @@ namespace TweetDuck.Plugins.Controls{
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected override void WndProc(ref Message m){
|
protected override void WndProc(ref Message m){
|
||||||
NativeMethods.ShowScrollBar(Handle, NativeMethods.SB_HORZ, false); // basically fuck the horizontal scrollbar very much
|
if (m.Msg == 0x85){ // WM_NCPAINT
|
||||||
|
NativeMethods.ShowScrollBar(Handle, NativeMethods.SB_HORZ, false); // basically fuck the horizontal scrollbar very much
|
||||||
|
}
|
||||||
|
|
||||||
base.WndProc(ref m);
|
base.WndProc(ref m);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -24,15 +24,6 @@ namespace TweetDuck.Plugins.Enums{
|
|||||||
return environment == PluginEnvironment.Browser;
|
return environment == PluginEnvironment.Browser;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetScriptIdentifier(this PluginEnvironment environment){
|
|
||||||
switch(environment){
|
|
||||||
case PluginEnvironment.None: return "root:plugins";
|
|
||||||
case PluginEnvironment.Browser: return "root:plugins.browser";
|
|
||||||
case PluginEnvironment.Notification: return "root:plugins.notification";
|
|
||||||
default: return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string GetPluginScriptFile(this PluginEnvironment environment){
|
public static string GetPluginScriptFile(this PluginEnvironment environment){
|
||||||
switch(environment){
|
switch(environment){
|
||||||
case PluginEnvironment.Browser: return "browser.js";
|
case PluginEnvironment.Browser: return "browser.js";
|
||||||
|
@@ -4,7 +4,6 @@ using TweetDuck.Plugins.Enums;
|
|||||||
|
|
||||||
namespace TweetDuck.Plugins{
|
namespace TweetDuck.Plugins{
|
||||||
sealed class Plugin{
|
sealed class Plugin{
|
||||||
private const string VersionWildcard = "*";
|
|
||||||
private static readonly Version AppVersion = new Version(Program.VersionTag);
|
private static readonly Version AppVersion = new Version(Program.VersionTag);
|
||||||
|
|
||||||
public string Identifier { get; }
|
public string Identifier { get; }
|
||||||
@@ -85,14 +84,20 @@ namespace TweetDuck.Plugins{
|
|||||||
|
|
||||||
try{
|
try{
|
||||||
string folderPathName = new DirectoryInfo(rootFolder).FullName;
|
string folderPathName = new DirectoryInfo(rootFolder).FullName;
|
||||||
DirectoryInfo currentInfo = new DirectoryInfo(fullPath);
|
DirectoryInfo currentInfo = new DirectoryInfo(fullPath); // initially points to the file, which is convenient for the Attributes check below
|
||||||
|
DirectoryInfo parentInfo = currentInfo.Parent;
|
||||||
|
|
||||||
while(currentInfo.Parent != null){
|
while(parentInfo != null){
|
||||||
if (currentInfo.Parent.FullName == folderPathName){
|
if (currentInfo.Exists && currentInfo.Attributes.HasFlag(FileAttributes.ReparsePoint)){
|
||||||
|
return string.Empty; // no reason why a plugin should have files/folders with symlinks, junctions, or any other crap
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parentInfo.FullName == folderPathName){
|
||||||
return fullPath;
|
return fullPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
currentInfo = currentInfo.Parent;
|
currentInfo = parentInfo;
|
||||||
|
parentInfo = currentInfo.Parent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch{
|
catch{
|
||||||
@@ -119,14 +124,14 @@ namespace TweetDuck.Plugins{
|
|||||||
public sealed class Builder{
|
public sealed class Builder{
|
||||||
private static readonly Version DefaultRequiredVersion = new Version(0, 0, 0, 0);
|
private static readonly Version DefaultRequiredVersion = new Version(0, 0, 0, 0);
|
||||||
|
|
||||||
public string Name { get; private set; }
|
public string Name { get; set; }
|
||||||
public string Description { get; private set; } = string.Empty;
|
public string Description { get; set; } = string.Empty;
|
||||||
public string Author { get; private set; } = "(anonymous)";
|
public string Author { get; set; } = "(anonymous)";
|
||||||
public string Version { get; private set; } = "(unknown)";
|
public string Version { get; set; } = string.Empty;
|
||||||
public string Website { get; private set; } = string.Empty;
|
public string Website { get; set; } = string.Empty;
|
||||||
public string ConfigFile { get; private set; } = string.Empty;
|
public string ConfigFile { get; set; } = string.Empty;
|
||||||
public string ConfigDefault { get; private set; } = string.Empty;
|
public string ConfigDefault { get; set; } = string.Empty;
|
||||||
public Version RequiredVersion { get; private set; } = DefaultRequiredVersion;
|
public Version RequiredVersion { get; set; } = DefaultRequiredVersion;
|
||||||
|
|
||||||
public PluginEnvironment Environments { get; private set; } = PluginEnvironment.None;
|
public PluginEnvironment Environments { get; private set; } = PluginEnvironment.None;
|
||||||
|
|
||||||
@@ -142,36 +147,10 @@ namespace TweetDuck.Plugins{
|
|||||||
this.identifier = group.GetIdentifierPrefix()+name;
|
this.identifier = group.GetIdentifierPrefix()+name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetFromTag(string tag, string value){
|
|
||||||
switch(tag){
|
|
||||||
case "NAME": this.Name = value; break;
|
|
||||||
case "DESCRIPTION": this.Description = value; break;
|
|
||||||
case "AUTHOR": this.Author = value; break;
|
|
||||||
case "VERSION": this.Version = value; break;
|
|
||||||
case "WEBSITE": this.Website = value; break;
|
|
||||||
case "CONFIGFILE": this.ConfigFile = value; break;
|
|
||||||
case "CONFIGDEFAULT": this.ConfigDefault = value; break;
|
|
||||||
case "REQUIRES": SetRequiredVersion(value); break;
|
|
||||||
default: throw new FormatException("Invalid metadata tag: "+tag);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AddEnvironment(PluginEnvironment environment){
|
public void AddEnvironment(PluginEnvironment environment){
|
||||||
this.Environments |= environment;
|
this.Environments |= environment;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetRequiredVersion(string versionStr){
|
|
||||||
if (System.Version.TryParse(versionStr, out Version version)){
|
|
||||||
this.RequiredVersion = version;
|
|
||||||
}
|
|
||||||
else if (versionStr == VersionWildcard){
|
|
||||||
this.RequiredVersion = DefaultRequiredVersion;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
throw new FormatException("Plugin contains invalid minimum version: "+versionStr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Plugin BuildAndSetup(){
|
public Plugin BuildAndSetup(){
|
||||||
Plugin plugin = new Plugin(group, identifier, pathRoot, pathData, this);
|
Plugin plugin = new Plugin(group, identifier, pathRoot, pathData, this);
|
||||||
|
|
||||||
@@ -183,6 +162,15 @@ namespace TweetDuck.Plugins{
|
|||||||
throw new InvalidOperationException("Plugin has no script files");
|
throw new InvalidOperationException("Plugin has no script files");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (plugin.Group == PluginGroup.Official){
|
||||||
|
if (plugin.RequiredVersion != AppVersion){
|
||||||
|
throw new InvalidOperationException("Plugin is not supported in this version of TweetDuck, this may indicate a failed update or an unsupported plugin that was not removed automatically");
|
||||||
|
}
|
||||||
|
else if (!string.IsNullOrEmpty(plugin.Version)){
|
||||||
|
throw new InvalidOperationException("Official plugins cannot have a version identifier");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// setup
|
// setup
|
||||||
|
|
||||||
string configPath = plugin.ConfigPath, defaultConfigPath = plugin.DefaultConfigPath;
|
string configPath = plugin.ConfigPath, defaultConfigPath = plugin.DefaultConfigPath;
|
||||||
|
@@ -32,7 +32,7 @@ namespace TweetDuck.Plugins{
|
|||||||
foreach(string line in File.ReadAllLines(metaFile, Encoding.UTF8).Concat(EndTag).Select(line => line.TrimEnd()).Where(line => line.Length > 0)){
|
foreach(string line in File.ReadAllLines(metaFile, Encoding.UTF8).Concat(EndTag).Select(line => line.TrimEnd()).Where(line => line.Length > 0)){
|
||||||
if (line[0] == '[' && line[line.Length-1] == ']'){
|
if (line[0] == '[' && line[line.Length-1] == ']'){
|
||||||
if (currentTag != null){
|
if (currentTag != null){
|
||||||
builder.SetFromTag(currentTag, currentContents);
|
SetProperty(builder, currentTag, currentContents);
|
||||||
}
|
}
|
||||||
|
|
||||||
currentTag = line.Substring(1, line.Length-2).ToUpper();
|
currentTag = line.Substring(1, line.Length-2).ToUpper();
|
||||||
@@ -52,5 +52,19 @@ namespace TweetDuck.Plugins{
|
|||||||
|
|
||||||
return builder.BuildAndSetup();
|
return builder.BuildAndSetup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void SetProperty(Plugin.Builder builder, string tag, string value){
|
||||||
|
switch(tag){
|
||||||
|
case "NAME": builder.Name = value; break;
|
||||||
|
case "DESCRIPTION": builder.Description = value; break;
|
||||||
|
case "AUTHOR": builder.Author = value; break;
|
||||||
|
case "VERSION": builder.Version = value; break;
|
||||||
|
case "WEBSITE": builder.Website = value; break;
|
||||||
|
case "CONFIGFILE": builder.ConfigFile = value; break;
|
||||||
|
case "CONFIGDEFAULT": builder.ConfigDefault = value; break;
|
||||||
|
case "REQUIRES": builder.RequiredVersion = Version.TryParse(value, out Version version) ? version : throw new FormatException("Invalid required minimum version: "+value); break;
|
||||||
|
default: throw new FormatException("Invalid metadata tag: "+tag);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -4,6 +4,7 @@ using System.Collections.Generic;
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Windows.Forms;
|
||||||
using TweetDuck.Core.Other.Interfaces;
|
using TweetDuck.Core.Other.Interfaces;
|
||||||
using TweetDuck.Data;
|
using TweetDuck.Data;
|
||||||
using TweetDuck.Plugins.Enums;
|
using TweetDuck.Plugins.Enums;
|
||||||
@@ -12,15 +13,7 @@ using TweetDuck.Resources;
|
|||||||
|
|
||||||
namespace TweetDuck.Plugins{
|
namespace TweetDuck.Plugins{
|
||||||
sealed class PluginManager{
|
sealed class PluginManager{
|
||||||
private static IReadOnlyDictionary<PluginEnvironment, string> LoadSetupScripts(){
|
private static readonly IReadOnlyDictionary<PluginEnvironment, string> PluginSetupScriptNames = PluginEnvironmentExtensions.Map(null, "plugins.browser.js", "plugins.notification.js");
|
||||||
return PluginEnvironmentExtensions.Map(
|
|
||||||
ScriptLoader.LoadResource("plugins.js"),
|
|
||||||
ScriptLoader.LoadResource("plugins.browser.js"),
|
|
||||||
ScriptLoader.LoadResource("plugins.notification.js")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static readonly IReadOnlyDictionary<PluginEnvironment, string> PluginSetupScripts = LoadSetupScripts();
|
|
||||||
|
|
||||||
public string PathOfficialPlugins => Path.Combine(rootPath, "official");
|
public string PathOfficialPlugins => Path.Combine(rootPath, "official");
|
||||||
public string PathCustomPlugins => Path.Combine(rootPath, "user");
|
public string PathCustomPlugins => Path.Combine(rootPath, "user");
|
||||||
@@ -54,8 +47,8 @@ namespace TweetDuck.Plugins{
|
|||||||
Config.PluginChangedState += Config_PluginChangedState;
|
Config.PluginChangedState += Config_PluginChangedState;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Register(ITweetDeckBrowser browser, PluginEnvironment environment, bool asMainBrowser = false){
|
public void Register(ITweetDeckBrowser browser, PluginEnvironment environment, Control sync, bool asMainBrowser = false){
|
||||||
browser.OnFrameLoaded(frame => ExecutePlugins(frame, environment));
|
browser.OnFrameLoaded(frame => ExecutePlugins(frame, environment, sync));
|
||||||
browser.RegisterBridge("$TDP", bridge);
|
browser.RegisterBridge("$TDP", bridge);
|
||||||
|
|
||||||
if (asMainBrowser){
|
if (asMainBrowser){
|
||||||
@@ -152,14 +145,11 @@ namespace TweetDuck.Plugins{
|
|||||||
Reloaded?.Invoke(this, new PluginErrorEventArgs(loadErrors));
|
Reloaded?.Invoke(this, new PluginErrorEventArgs(loadErrors));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ExecutePlugins(IFrame frame, PluginEnvironment environment){
|
private void ExecutePlugins(IFrame frame, PluginEnvironment environment, Control sync){
|
||||||
if (!HasAnyPlugin(environment)){
|
if (!HasAnyPlugin(environment) || !ScriptLoader.ExecuteFile(frame, PluginSetupScriptNames[environment], sync)){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ScriptLoader.ExecuteScript(frame, PluginSetupScripts[environment], environment.GetScriptIdentifier());
|
|
||||||
ScriptLoader.ExecuteScript(frame, PluginSetupScripts[PluginEnvironment.None], PluginEnvironment.None.GetScriptIdentifier());
|
|
||||||
|
|
||||||
bool includeDisabled = environment.IncludesDisabledPlugins();
|
bool includeDisabled = environment.IncludesDisabledPlugins();
|
||||||
|
|
||||||
if (includeDisabled){
|
if (includeDisabled){
|
||||||
|
26
Program.cs
@@ -13,25 +13,24 @@ using TweetDuck.Core.Other;
|
|||||||
using TweetDuck.Core.Management;
|
using TweetDuck.Core.Management;
|
||||||
using TweetDuck.Core.Utils;
|
using TweetDuck.Core.Utils;
|
||||||
using TweetDuck.Data;
|
using TweetDuck.Data;
|
||||||
using TweetDuck.Updates;
|
|
||||||
|
|
||||||
namespace TweetDuck{
|
namespace TweetDuck{
|
||||||
static class Program{
|
static class Program{
|
||||||
public const string BrandName = "TweetDuck";
|
public const string BrandName = "TweetDuck";
|
||||||
public const string Website = "https://tweetduck.chylex.com";
|
public const string Website = "https://tweetduck.chylex.com";
|
||||||
|
|
||||||
public const string VersionTag = "1.13.3";
|
public const string VersionTag = "1.15";
|
||||||
|
|
||||||
public static readonly bool IsPortable = File.Exists("makeportable");
|
|
||||||
|
|
||||||
public static readonly string ProgramPath = AppDomain.CurrentDomain.BaseDirectory;
|
public static readonly string ProgramPath = AppDomain.CurrentDomain.BaseDirectory;
|
||||||
public static readonly string StoragePath = IsPortable ? Path.Combine(ProgramPath, "portable", "storage") : GetDataStoragePath();
|
public static readonly bool IsPortable = File.Exists(Path.Combine(ProgramPath, "makeportable"));
|
||||||
|
|
||||||
public static readonly string ScriptPath = Path.Combine(ProgramPath, "scripts");
|
public static readonly string ScriptPath = Path.Combine(ProgramPath, "scripts");
|
||||||
public static readonly string PluginPath = Path.Combine(ProgramPath, "plugins");
|
public static readonly string PluginPath = Path.Combine(ProgramPath, "plugins");
|
||||||
|
|
||||||
|
public static readonly string StoragePath = IsPortable ? Path.Combine(ProgramPath, "portable", "storage") : GetDataStoragePath();
|
||||||
|
|
||||||
public static readonly string PluginDataPath = Path.Combine(StoragePath, "TD_Plugins");
|
public static readonly string PluginDataPath = Path.Combine(StoragePath, "TD_Plugins");
|
||||||
private static readonly string InstallerPath = Path.Combine(StoragePath, "TD_Updates");
|
public static readonly string InstallerPath = Path.Combine(StoragePath, "TD_Updates");
|
||||||
private static readonly string CefDataPath = Path.Combine(StoragePath, "TD_Chromium");
|
private static readonly string CefDataPath = Path.Combine(StoragePath, "TD_Chromium");
|
||||||
|
|
||||||
public static string UserConfigFilePath => Path.Combine(StoragePath, "TD_UserConfig.cfg");
|
public static string UserConfigFilePath => Path.Combine(StoragePath, "TD_UserConfig.cfg");
|
||||||
@@ -134,7 +133,7 @@ namespace TweetDuck{
|
|||||||
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
|
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
|
||||||
|
|
||||||
CefSettings settings = new CefSettings{
|
CefSettings settings = new CefSettings{
|
||||||
UserAgent = BrowserUtils.HeaderUserAgent,
|
UserAgent = BrowserUtils.UserAgentChrome,
|
||||||
BrowserSubprocessPath = BrandName+".Browser.exe",
|
BrowserSubprocessPath = BrandName+".Browser.exe",
|
||||||
CachePath = StoragePath,
|
CachePath = StoragePath,
|
||||||
UserDataPath = CefDataPath,
|
UserDataPath = CefDataPath,
|
||||||
@@ -143,27 +142,22 @@ namespace TweetDuck{
|
|||||||
LogSeverity = Arguments.HasFlag(Arguments.ArgLogging) ? LogSeverity.Info : LogSeverity.Disable
|
LogSeverity = Arguments.HasFlag(Arguments.ArgLogging) ? LogSeverity.Info : LogSeverity.Disable
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
CommandLineArgs.ReadCefArguments(UserConfig.CustomCefArgs).ToDictionary(settings.CefCommandLineArgs);
|
CommandLineArgs.ReadCefArguments(UserConfig.CustomCefArgs).ToDictionary(settings.CefCommandLineArgs);
|
||||||
BrowserUtils.SetupCefArgs(settings.CefCommandLineArgs);
|
BrowserUtils.SetupCefArgs(settings.CefCommandLineArgs);
|
||||||
|
|
||||||
Cef.Initialize(settings, false, new BrowserProcessHandler());
|
Cef.Initialize(settings, false, new BrowserProcessHandler());
|
||||||
|
|
||||||
Application.ApplicationExit += (sender, args) => ExitCleanup();
|
Application.ApplicationExit += (sender, args) => ExitCleanup();
|
||||||
|
|
||||||
UpdaterSettings updaterSettings = new UpdaterSettings(InstallerPath){
|
FormBrowser mainForm = new FormBrowser();
|
||||||
AllowPreReleases = Arguments.HasFlag(Arguments.ArgDebugUpdates),
|
|
||||||
DismissedUpdate = UserConfig.DismissedUpdate
|
|
||||||
};
|
|
||||||
|
|
||||||
FormBrowser mainForm = new FormBrowser(updaterSettings);
|
|
||||||
Application.Run(mainForm);
|
Application.Run(mainForm);
|
||||||
|
|
||||||
if (mainForm.UpdateInstallerPath != null){
|
if (mainForm.UpdateInstallerPath != null){
|
||||||
ExitCleanup();
|
ExitCleanup();
|
||||||
|
|
||||||
// ProgramPath has a trailing backslash
|
// ProgramPath has a trailing backslash
|
||||||
string updaterArgs = "/SP- /SILENT /CLOSEAPPLICATIONS /UPDATEPATH=\""+ProgramPath+"\" /RUNARGS=\""+Arguments.GetCurrentForInstallerCmd()+"\""+(IsPortable ? " /PORTABLE=1" : "");
|
string updaterArgs = "/SP- /SILENT /FORCECLOSEAPPLICATIONS /UPDATEPATH=\""+ProgramPath+"\" /RUNARGS=\""+Arguments.GetCurrentForInstallerCmd()+"\""+(IsPortable ? " /PORTABLE=1" : "");
|
||||||
bool runElevated = !IsPortable || !WindowsUtils.CheckFolderWritePermission(ProgramPath);
|
bool runElevated = !IsPortable || !WindowsUtils.CheckFolderWritePermission(ProgramPath);
|
||||||
|
|
||||||
if (WindowsUtils.OpenAssociatedProgram(mainForm.UpdateInstallerPath, updaterArgs, runElevated)){
|
if (WindowsUtils.OpenAssociatedProgram(mainForm.UpdateInstallerPath, updaterArgs, runElevated)){
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Resources;
|
using System.Resources;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
@@ -42,5 +42,6 @@ using TweetDuck;
|
|||||||
[assembly: CLSCompliant(true)]
|
[assembly: CLSCompliant(true)]
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("UnitTests")]
|
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("TweetTest.System")]
|
||||||
|
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("TweetTest.Unit")]
|
||||||
#endif
|
#endif
|
||||||
|
20
Properties/Resources.Designer.cs
generated
@@ -80,6 +80,16 @@ namespace TweetDuck.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Icon icon_muted {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("icon_muted", resourceCulture);
|
||||||
|
return ((System.Drawing.Icon)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -90,6 +100,16 @@ namespace TweetDuck.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Icon icon_tray_muted {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("icon_tray_muted", resourceCulture);
|
||||||
|
return ((System.Drawing.Icon)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@@ -119,18 +119,24 @@
|
|||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="avatar" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="avatar" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\avatar.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>..\Resources\Images\avatar.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Images\icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="icon_muted" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Images\icon-muted.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="icon_tray" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="icon_tray" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\icon-tray.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Images\icon-tray.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="icon_tray_muted" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Images\icon-tray-muted.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="icon_tray_new" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="icon_tray_new" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\icon-tray-new.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Images\icon-tray-new.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="spinner" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="spinner" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\spinner.apng;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>..\Resources\Images\spinner.apng;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
49
README.md
@@ -9,53 +9,48 @@
|
|||||||
The program was built using Visual Studio 2017. Before opening the solution, please make sure you have the following workloads and components installed (optional components that are not listed can be deselected to save space):
|
The program was built using Visual Studio 2017. Before opening the solution, please make sure you have the following workloads and components installed (optional components that are not listed can be deselected to save space):
|
||||||
* **.NET desktop development**
|
* **.NET desktop development**
|
||||||
* .NET Framework 4 – 4.6 development tools
|
* .NET Framework 4 – 4.6 development tools
|
||||||
|
* F# desktop language support
|
||||||
* **Desktop development with C++**
|
* **Desktop development with C++**
|
||||||
* VC++ 2017 v141 toolset
|
* VC++ 2017 latest v141 tools
|
||||||
|
|
||||||
After opening the solution, download the following NuGet packages by right-clicking on the solution and selecting **Restore NuGet Packages**, or manually running this command in the **Package Manager Console**:
|
After opening the solution, right-click the solution and select **Restore NuGet Packages**, or manually run this command in the **Package Manager Console**:
|
||||||
```
|
```
|
||||||
PM> Install-Package CefSharp.WinForms -Version 64.0.0-CI2508 -Source https://www.myget.org/F/cefsharp/api/v3/index.json
|
PM> Install-Package CefSharp.WinForms -Version 67.0.0-CI2662 -Source https://www.myget.org/F/cefsharp/api/v3/index.json
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that some pre-release builds of CefSharp are not available on NuGet. To correctly restore packages in that case, open **Package Manager Settings**, and add `https://www.myget.org/F/cefsharp/api/v3/index.json` to the list of package sources.
|
Note that some pre-release builds of CefSharp are not available on NuGet. To correctly restore packages in that case, open **Package Manager Settings**, and add `https://www.myget.org/F/cefsharp/api/v3/index.json` to the list of package sources.
|
||||||
|
|
||||||
### Debug
|
### Debug
|
||||||
|
|
||||||
It is recommended to create a separate data folder for debugging, otherwise you will not be able to run TweetDuck while debugging the solution.
|
The `Debug` configuration uses a separate data folder by default (`%LOCALAPPDATA%\TweetDuckDebug`) to avoid affecting an existing installation of TweetDuck. You can modify this by opening **TweetDuck Properties** in Visual Studio, clicking the **Debug** tab, and changing the **Command line arguments** field.
|
||||||
|
|
||||||
To do that, open **TweetDuck Properties**, click the **Debug** tab, make sure your **Configuration** is set to `Active (Debug)` (or just `Debug`), and insert this into the **Command line arguments** field:
|
While debugging, opening the main menu and clicking **Reload browser** automatically rebuilds all resources in the `Resources/Scripts` and `Resources/Plugins` folders. This allows editing HTML/CSS/JS files and applying the changes without restarting the program, but it will cause a short delay between browser reloads.
|
||||||
```
|
|
||||||
-datafolder TweetDuckDebug
|
|
||||||
```
|
|
||||||
|
|
||||||
### Build
|
### Release
|
||||||
|
|
||||||
To make a release build of TweetDuck, open **Batch Build**, tick all `Release` configurations except for the `UnitTest` project (otherwise the build will fail), and click **Rebuild**. Check the status bar to make sure it says **Rebuild All succeeded**; if not, see the [Troubleshooting](#troubleshooting) section.
|
Open **Batch Build**, tick all `Release` configurations with `x86` platform, and click **Rebuild**. Check the status bar to make sure it says **Rebuild All succeeded**; if not, see the [Troubleshooting](#troubleshooting) section.
|
||||||
|
|
||||||
After the build succeeds, the `bin/x86/Release` folder will contain files intended for distribution (no debug symbols or other unnecessary files). You may package these files yourself, or see the [Installers](#installers) section for automated installer generation.
|
After the build succeeds, the `bin/x86/Release` folder will contain files intended for distribution (no debug symbols or other unnecessary files). You may package these files yourself, or see the [Installers](#installers) section for automated installer generation.
|
||||||
|
|
||||||
If you decide to release a custom version publicly, please make it clear that it is not an official release of TweetDuck.
|
The `Release` configuration omits debug symbols and other unnecessary files. You can modify this behavior by opening `TweetDuck.csproj`, and editing the `<Target Name="AfterBuild" Condition="$(ConfigurationName) == Release">` section.
|
||||||
|
|
||||||
|
If you decide to publicly release a custom version, please make it clear that it is not an official release of TweetDuck. There are many references to the official website and this repository, especially in the update system, so search for `chylex.com` and `github.com` in all files and replace them appropriately.
|
||||||
|
|
||||||
### Troubleshooting
|
### Troubleshooting
|
||||||
|
|
||||||
There are a few quirks in the build process that may catch you off guard:
|
#### Error: The command (...) exited with code 1
|
||||||
|
- This indicates a failed post-build event, open the **Output** tab for logs
|
||||||
- **Plugin files are not updated automatically**
|
- Determine if there was an IO error from the `rmdir` commands, or whether the error was in the **PostBuild.ps1** script (`Encountered an error while running PostBuild.ps1 on line <xyz>`)
|
||||||
- Since official plugins (`Resources/Plugins`) are not included in the project, Visual Studio will not automatically detect changes in the files
|
- Some files are checked for invalid characters:
|
||||||
- To ensure plugins are updated when testing the app, click **Rebuild Solution** before clicking **Start**
|
- `Resources/Plugins/emoji-keyboard/emoji-ordering.txt` line endings must be LF (line feed); any CR (carriage return) in the file will cause a failed build, and you will need to ensure correct line endings in your text editor
|
||||||
- **Error: The command (...) exited with code 1**
|
|
||||||
- If the post-build event fails, open the **Output** tab and look for the cause
|
|
||||||
- Determine if there was an IO error while copying files or modifying folders, or whether the final .ps1 script failed (`Encountered an error while running PostBuild.ps1 on line xyz`)
|
|
||||||
- Some files are checked for invalid characters:
|
|
||||||
- `Resources/Plugins/emoji-keyboard/emoji-ordering.txt` line endings must be LF (line feed); any CR (carriage return) in the file will cause a failed build, and you will need to ensure correct line endings in your text editor
|
|
||||||
|
|
||||||
### Installers
|
### Installers
|
||||||
|
|
||||||
TweetDuck uses **Inno Setup** to automate the creation of installers. First, download and install [InnoSetup QuickStart Pack](http://www.jrsoftware.org/isdl.php) (non-unicode; editor and encryption support not required) and the [Inno Download Plugin](https://code.google.com/archive/p/inno-download-plugin).
|
TweetDuck uses **Inno Setup** for installers and updates. First, download and install [InnoSetup QuickStart Pack](http://www.jrsoftware.org/isdl.php) (non-unicode; editor and encryption support not required) and the [Inno Download Plugin](https://code.google.com/archive/p/inno-download-plugin).
|
||||||
|
|
||||||
Next, add the Inno Setup installation folder (usually `C:\Program Files (x86)\Inno Setup 5`) into your **PATH** environment variable. You may need to restart File Explorer for the change to take place.
|
Next, add the Inno Setup installation folder (usually `C:\Program Files (x86)\Inno Setup 5`) into your **PATH** environment variable. You may need to restart File Explorer for the change to take place.
|
||||||
|
|
||||||
Now you can generate installers after a build by running `bld/RUN BUILD.bat`. Note that despite the name, this will only package the files, you still need to run the [build](#build) in Visual Studio!
|
Now you can generate installers after a build by running `bld/RUN BUILD.bat`. Note that this will only package the files, you still need to run the [release build](#release) in Visual Studio!
|
||||||
|
|
||||||
After the window closes, three installers will be generated inside the `bld/Output` folder:
|
After the window closes, three installers will be generated inside the `bld/Output` folder:
|
||||||
* **TweetDuck.exe**
|
* **TweetDuck.exe**
|
||||||
@@ -67,8 +62,10 @@ After the window closes, three installers will be generated inside the `bld/Outp
|
|||||||
* This is a portable installer that does not need administrator privileges
|
* This is a portable installer that does not need administrator privileges
|
||||||
* It automatically creates a `makeportable` file in the program folder, which forces TweetDuck to run in portable mode
|
* It automatically creates a `makeportable` file in the program folder, which forces TweetDuck to run in portable mode
|
||||||
|
|
||||||
Note: There is a small chance you will see a resource error when running `RUN BUILD.bat`. If that happens, close the console window (which will terminate all Inno Setup processes and leave corrupted installer files in the output folder), and run it again.
|
#### Notes
|
||||||
|
|
||||||
### Code Notes
|
> When opening **Batch Build**, you will also see `x64` and `AnyCPU` configurations. These are visible due to what I consider a Visual Studio bug, and will not work without significant changes to the project. Manually running the `Resources/PostCefUpdate.ps1` PowerShell script modifies the downloaded CefSharp packages, and removes the invalid configurations.
|
||||||
|
|
||||||
There are many references to the official TweetDuck website and this repository in the code and installers, so if you plan to release your own version, make sure to search for `tweetduck.chylex.com` and `github.com` in the whole repository and replace them appropriately.
|
> There is a small chance running `RUN BUILD.bat` immediately shows a resource error. If that happens, close the console window (which terminates all Inno Setup processes and leaves corrupted installers in the output folder), and run it again.
|
||||||
|
|
||||||
|
> Running `RUN BUILD.bat` uses about 400 MB of RAM due to high compression. You can lower this to about 140 MB by opening `gen_full.iss` and `gen_port.iss`, and changing `LZMADictionarySize=15360` to `LZMADictionarySize=4096`.
|
||||||
|
15
Reporter.cs
@@ -46,8 +46,9 @@ namespace TweetDuck{
|
|||||||
|
|
||||||
public void HandleException(string caption, string message, bool canIgnore, Exception e){
|
public void HandleException(string caption, string message, bool canIgnore, Exception e){
|
||||||
bool loggedSuccessfully = Log(e.ToString());
|
bool loggedSuccessfully = Log(e.ToString());
|
||||||
|
|
||||||
FormMessage form = new FormMessage(caption, message+"\nError: "+e.Message, canIgnore ? MessageBoxIcon.Warning : MessageBoxIcon.Error);
|
string exceptionText = e is ExpandedLogException ? e.Message+"\n\nDetails with potentially sensitive information are in the Error Log." : e.Message;
|
||||||
|
FormMessage form = new FormMessage(caption, message+"\nError: "+exceptionText, canIgnore ? MessageBoxIcon.Warning : MessageBoxIcon.Error);
|
||||||
|
|
||||||
Button btnExit = form.AddButton(FormMessage.Exit);
|
Button btnExit = form.AddButton(FormMessage.Exit);
|
||||||
Button btnIgnore = form.AddButton(FormMessage.Ignore, DialogResult.Ignore, ControlType.Cancel);
|
Button btnIgnore = form.AddButton(FormMessage.Ignore, DialogResult.Ignore, ControlType.Cancel);
|
||||||
@@ -95,5 +96,15 @@ namespace TweetDuck{
|
|||||||
Environment.FailFast(message, new Exception(message));
|
Environment.FailFast(message, new Exception(message));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public sealed class ExpandedLogException : Exception{
|
||||||
|
private readonly string details;
|
||||||
|
|
||||||
|
public ExpandedLogException(Exception source, string details) : base(source.Message, source){
|
||||||
|
this.details = details;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString() => base.ToString()+"\r\n"+details;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
20
Resources/..code-workspace
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"name": "Installers",
|
||||||
|
"path": "..\\bld"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Resources",
|
||||||
|
"path": "."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {
|
||||||
|
"editor.tabSize": 2,
|
||||||
|
"javascript.validate.enable": false,
|
||||||
|
"files.autoGuessEncoding": false,
|
||||||
|
"files.insertFinalNewline": true,
|
||||||
|
"files.trimFinalNewlines": true,
|
||||||
|
"files.encoding": "utf8",
|
||||||
|
}
|
||||||
|
}
|
BIN
Resources/Design/app_logos_large.afdesign
Normal file
BIN
Resources/Design/app_logos_small.afdesign
Normal file
BIN
Resources/Design/icon_pushpin.afdesign
Normal file
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
BIN
Resources/Images/icon-muted.ico
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
Resources/Images/icon-small.ico
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
Resources/Images/icon-tray-muted.ico
Normal file
After Width: | Height: | Size: 9.4 KiB |
BIN
Resources/Images/icon-tray-new.ico
Normal file
After Width: | Height: | Size: 9.4 KiB |
BIN
Resources/Images/icon-tray.ico
Normal file
After Width: | Height: | Size: 9.4 KiB |
BIN
Resources/Images/icon.ico
Normal file
After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
@@ -2,14 +2,18 @@
|
|||||||
Debug plugin
|
Debug plugin
|
||||||
|
|
||||||
[description]
|
[description]
|
||||||
- Enables debug functionality and tests
|
Enables debug functionality and tests.
|
||||||
- Only included in debug configuration
|
Text line 2.
|
||||||
|
Text line 3.
|
||||||
|
Text line 4.
|
||||||
|
Text line 5.
|
||||||
|
Text line 6.
|
||||||
|
|
||||||
[author]
|
[author]
|
||||||
chylex
|
chylex
|
||||||
|
|
||||||
[version]
|
[version]
|
||||||
1.1
|
1.2
|
||||||
|
|
||||||
[website]
|
[website]
|
||||||
https://tweetduck.chylex.com
|
https://tweetduck.chylex.com
|
@@ -2,6 +2,7 @@ enabled(){
|
|||||||
this.isDebugging = false;
|
this.isDebugging = false;
|
||||||
|
|
||||||
this.onKeyDown = (e) => {
|
this.onKeyDown = (e) => {
|
||||||
|
|
||||||
// ==========================
|
// ==========================
|
||||||
// F4 key - toggle debug mode
|
// F4 key - toggle debug mode
|
||||||
// ==========================
|
// ==========================
|
||||||
@@ -11,8 +12,6 @@ enabled(){
|
|||||||
$(".nav-user-info").first().css("background-color", this.isDebugging ? "#5A6B75" : "#292F33");
|
$(".nav-user-info").first().css("background-color", this.isDebugging ? "#5A6B75" : "#292F33");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Debug mode handling
|
|
||||||
|
|
||||||
else if (this.isDebugging){
|
else if (this.isDebugging){
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
@@ -22,15 +21,16 @@ enabled(){
|
|||||||
// ===================================
|
// ===================================
|
||||||
|
|
||||||
if (e.keyCode === 78 || e.keyCode === 83){
|
if (e.keyCode === 78 || e.keyCode === 83){
|
||||||
var col = TD.controller.columnManager.getAllOrdered()[0];
|
let col = TD.controller.columnManager.getAllOrdered()[0];
|
||||||
|
let model = col.model;
|
||||||
|
|
||||||
var prevPopup = col.model.getHasNotification();
|
let prevPopup = model.getHasNotification();
|
||||||
var prevSound = col.model.getHasSound();
|
let prevSound = model.getHasSound();
|
||||||
|
|
||||||
col.model.setHasNotification(e.keyCode === 78);
|
model.setHasNotification(e.keyCode === 78);
|
||||||
col.model.setHasSound(e.keyCode === 83);
|
model.setHasSound(e.keyCode === 83);
|
||||||
|
|
||||||
$.publish("/notifications/new",[{
|
$.publish("/notifications/new", [{
|
||||||
column: col,
|
column: col,
|
||||||
items: [
|
items: [
|
||||||
col.updateArray[Math.floor(Math.random()*col.updateArray.length)]
|
col.updateArray[Math.floor(Math.random()*col.updateArray.length)]
|
||||||
@@ -38,8 +38,8 @@ enabled(){
|
|||||||
}]);
|
}]);
|
||||||
|
|
||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
col.model.setHasNotification(prevPopup);
|
model.setHasNotification(prevPopup);
|
||||||
col.model.setHasSound(prevSound);
|
model.setHasSound(prevSound);
|
||||||
}, 1);
|
}, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,3 +61,7 @@ ready(){
|
|||||||
disabled(){
|
disabled(){
|
||||||
$(document).off("keydown", this.onKeyDown);
|
$(document).off("keydown", this.onKeyDown);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
configure(){
|
||||||
|
alert("Configure triggered");
|
||||||
|
}
|
||||||
|
@@ -1,18 +1,12 @@
|
|||||||
[name]
|
[name]
|
||||||
Clear columns
|
Clear column shortcuts
|
||||||
|
|
||||||
[description]
|
[description]
|
||||||
- Adds buttons and keyboard shortcuts to quickly clear columns
|
Adds convenient buttons and keyboard shortcuts to clear/restore individual or all columns.
|
||||||
- Hold Shift when clicking or using a keyboard shortcut to restore the column instead
|
When enabled, the list of keyboard shortcuts is available in the [Settings] menu.
|
||||||
|
|
||||||
[author]
|
[author]
|
||||||
chylex
|
chylex
|
||||||
|
|
||||||
[version]
|
|
||||||
1.1.1
|
|
||||||
|
|
||||||
[website]
|
|
||||||
https://tweetduck.chylex.com
|
|
||||||
|
|
||||||
[requires]
|
[requires]
|
||||||
1.4.1
|
{version}
|
@@ -1,33 +1,22 @@
|
|||||||
constructor(){
|
|
||||||
super({
|
|
||||||
requiresPageReload: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
enabled(){
|
enabled(){
|
||||||
// prepare variables and functions
|
const clearColumn = (columnName) => {
|
||||||
var clearColumn = (columnName) => {
|
|
||||||
TD.controller.columnManager.get(columnName).clear();
|
TD.controller.columnManager.get(columnName).clear();
|
||||||
TD.controller.stats.columnActionClick("clear");
|
TD.controller.stats.columnActionClick("clear");
|
||||||
};
|
};
|
||||||
|
|
||||||
var resetColumn = (columnName) => {
|
const resetColumn = (columnName) => {
|
||||||
var col = TD.controller.columnManager.get(columnName);
|
let col = TD.controller.columnManager.get(columnName);
|
||||||
col.model.setClearedTimestamp(0);
|
col.model.setClearedTimestamp(0);
|
||||||
col.reloadTweets();
|
col.reloadTweets();
|
||||||
};
|
};
|
||||||
|
|
||||||
var forEachColumn = (func) => {
|
const forEachColumn = (func) => {
|
||||||
Object.keys(TD.controller.columnManager.getAll()).forEach(func);
|
Object.keys(TD.controller.columnManager.getAll()).forEach(func);
|
||||||
};
|
};
|
||||||
|
|
||||||
var replaceMustache = (key, search, replace) => {
|
let wasShiftPressed = false;
|
||||||
TD.mustaches[key] = TD.mustaches[key].replace(search, replace);
|
|
||||||
};
|
|
||||||
|
|
||||||
var wasShiftPressed = false;
|
const updateShiftState = (pressed) => {
|
||||||
|
|
||||||
var updateShiftState = (pressed) => {
|
|
||||||
if (pressed != wasShiftPressed){
|
if (pressed != wasShiftPressed){
|
||||||
wasShiftPressed = pressed;
|
wasShiftPressed = pressed;
|
||||||
|
|
||||||
@@ -38,14 +27,21 @@ enabled(){
|
|||||||
$(document).off("mousemove", this.eventKeyUp);
|
$(document).off("mousemove", this.eventKeyUp);
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#clear-columns-btn-all").text(pressed ? "Restore columns" : "Clear columns");
|
$(".clear-columns-btn-all").text(pressed ? "Restore columns" : "Clear columns");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// prepare event handlers
|
// event handlers
|
||||||
this.eventClickSingle = function(e){
|
|
||||||
var name = $(this).closest(".js-column").attr("data-column");
|
this.eventClickOneCapture = function(e){
|
||||||
e.shiftKey ? resetColumn(name) : clearColumn(name);
|
if (e.target.getAttribute("data-action") === "td-clearcolumns-dosingle"){
|
||||||
|
let name = $(e.target).closest(".js-column").attr("data-column");
|
||||||
|
e.shiftKey ? resetColumn(name) : clearColumn(name);
|
||||||
|
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
e.stopImmediatePropagation();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
this.eventClickAll = function(e){
|
this.eventClickAll = function(e){
|
||||||
@@ -62,10 +58,10 @@ enabled(){
|
|||||||
forEachColumn(e.shiftKey ? resetColumn : clearColumn);
|
forEachColumn(e.shiftKey ? resetColumn : clearColumn);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
var focusedColumn = $(".js-column.is-focused");
|
let focusedColumn = $(".js-column.is-focused");
|
||||||
|
|
||||||
if (focusedColumn.length){
|
if (focusedColumn.length){
|
||||||
var name = focusedColumn.attr("data-column");
|
let name = focusedColumn.attr("data-column");
|
||||||
e.shiftKey ? resetColumn(name) : clearColumn(name);
|
e.shiftKey ? resetColumn(name) : clearColumn(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -78,56 +74,86 @@ enabled(){
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// add column buttons and keyboard shortcut info to UI
|
this.eventKeyboardShortcuts = function(e){
|
||||||
replaceMustache("column/column_header.mustache", "</header>", [
|
$(".keyboard-shortcut-list").first().append(`
|
||||||
'{{^isTemporary}}',
|
<dd class="keyboard-shortcut-definition" style="white-space:nowrap">
|
||||||
'<a class="column-header-link" href="#" data-action="td-clearcolumns-dosingle" style="right:34px">',
|
<span class="text-like-keyboard-key">1</span> … <span class="text-like-keyboard-key">9</span> + <span class="text-like-keyboard-key">Del</span> Clear column 1-9
|
||||||
'<i class="icon icon-clear-timeline js-show-tip" data-placement="bottom" data-original-title="Clear column (hold Shift to restore)"></i>',
|
</dd>
|
||||||
'</a>',
|
<dd class="keyboard-shortcut-definition">
|
||||||
'{{/isTemporary}}',
|
<span class="text-like-keyboard-key">Alt</span> + <span class="text-like-keyboard-key">Del</span> Clear all columns
|
||||||
'</header>'
|
</dd>`);
|
||||||
].join(""));
|
};
|
||||||
|
|
||||||
replaceMustache("keyboard_shortcut_list.mustache", "</dl> <dl", [
|
// update UI
|
||||||
'<dd class="keyboard-shortcut-definition" style="white-space:nowrap">',
|
|
||||||
'<span class="text-like-keyboard-key">1</span> … <span class="text-like-keyboard-key">9</span> + <span class="text-like-keyboard-key">Del</span> Clear column 1-9',
|
|
||||||
'</dd><dd class="keyboard-shortcut-definition">',
|
|
||||||
'<span class="text-like-keyboard-key">Alt</span> + <span class="text-like-keyboard-key">Del</span> Clear all columns',
|
|
||||||
'</dd></dl><dl'
|
|
||||||
].join(""));
|
|
||||||
|
|
||||||
// load custom style
|
this.btnClearAllHTML = `
|
||||||
var css = window.TDPF_createCustomStyle(this);
|
<a class="clear-columns-btn-all-parent js-header-action link-clean cf app-nav-link padding-h--10" data-title="Clear columns (hold Shift to restore)" data-action="td-clearcolumns-doall">
|
||||||
css.insert(".column-title { margin-right: 60px !important; }");
|
<div class="obj-left margin-l--2"><i class="icon icon-medium icon-clear-timeline"></i></div>
|
||||||
css.insert(".column-type-message .column-title { margin-right: 115px !important; }");
|
<div class="clear-columns-btn-all nbfc padding-ts hide-condensed txt-size--16 app-nav-link-text">Clear columns</div>
|
||||||
css.insert(".mark-all-read-link { right: 59px !important; }");
|
</a>`;
|
||||||
css.insert(".open-compose-dm-link { right: 90px !important; }");
|
|
||||||
css.insert("button[data-action='clear'].btn-options-tray { display: none !important; }");
|
this.btnClearOneHTML = `
|
||||||
|
<a class="js-action-header-button column-header-link" href="#" data-action="td-clearcolumns-dosingle">
|
||||||
|
<i class="icon icon-clear-timeline js-show-tip" data-placement="bottom" data-original-title="Clear column (hold Shift to restore)" data-action="td-clearcolumns-dosingle"></i>
|
||||||
|
</a>`;
|
||||||
|
|
||||||
|
this.prevNavMenuMustache = TD.mustaches["menus/column_nav_menu.mustache"];
|
||||||
|
window.TDPF_injectMustache("menus/column_nav_menu.mustache", "replace", "{{_i}}Add column{{/i}}</div> </a> </div>", `{{_i}}Add column{{/i}}</div></a>${this.btnClearAllHTML}</div>`);
|
||||||
|
|
||||||
|
this.prevColumnHeaderMustache = TD.mustaches["column/column_header.mustache"];
|
||||||
|
window.TDPF_injectMustache("column/column_header.mustache", "prepend", "<a data-testid=\"optionsToggle\"", this.btnClearOneHTML);
|
||||||
|
|
||||||
|
if (TD.ready){
|
||||||
|
$(".js-header-add-column").after(this.btnClearAllHTML);
|
||||||
|
$("a[data-testid='optionsToggle']", ".js-column-header").before(this.btnClearOneHTML);
|
||||||
|
}
|
||||||
|
|
||||||
|
// styles
|
||||||
|
|
||||||
|
this.css = window.TDPF_createCustomStyle(this);
|
||||||
|
this.css.insert(".js-app-add-column.is-hidden + .clear-columns-btn-all-parent { display: none; }");
|
||||||
|
this.css.insert(".column-header-links { min-width: 51px !important; }");
|
||||||
|
this.css.insert("[data-td-icon='icon-message'] .column-header-links { min-width: 110px !important; }");
|
||||||
|
this.css.insert(".column-navigator-overflow .clear-columns-btn-all-parent { display: none !important; }");
|
||||||
|
this.css.insert(".column-navigator-overflow { bottom: 224px !important; }");
|
||||||
|
this.css.insert("[data-action='td-clearcolumns-dosingle'] { padding: 3px 0 !important; }");
|
||||||
|
this.css.insert("[data-action='clear'].btn-options-tray { display: none !important; }");
|
||||||
|
this.css.insert("[data-td-icon='icon-schedule'] .td-clear-column-shortcut { display: none; }");
|
||||||
|
this.css.insert("[data-td-icon='icon-custom-timeline'] .td-clear-column-shortcut { display: none; }");
|
||||||
}
|
}
|
||||||
|
|
||||||
ready(){
|
ready(){
|
||||||
// setup events
|
document.addEventListener("click", this.eventClickOneCapture, true);
|
||||||
$(document).on("click", "[data-action='td-clearcolumns-dosingle']", this.eventClickSingle);
|
|
||||||
$(document).on("click", "[data-action='td-clearcolumns-doall']", this.eventClickAll);
|
$(document).on("click", "[data-action='td-clearcolumns-doall']", this.eventClickAll);
|
||||||
$(document).on("keydown", this.eventKeyDown);
|
$(document).on("keydown", this.eventKeyDown);
|
||||||
$(document).on("keyup", this.eventKeyUp);
|
$(document).on("keyup", this.eventKeyUp);
|
||||||
|
$(document).on("uiShowKeyboardShortcutList", this.eventKeyboardShortcuts);
|
||||||
|
|
||||||
// add clear all button
|
$(".js-app-add-column").first().after(this.btnClearAllHTML);
|
||||||
$("nav.app-navigator").first().append([
|
|
||||||
'<a id="clear-columns-btn-all-parent" class="js-header-action link-clean cf app-nav-link padding-h--10" data-title="Clear columns (hold Shift to restore)" data-action="td-clearcolumns-doall">',
|
|
||||||
'<div class="obj-left margin-l--2"><i class="icon icon-medium icon-clear-timeline"></i></div>',
|
|
||||||
'<div id="clear-columns-btn-all" class="nbfc padding-ts hide-condensed txt-size--16">Clear columns</div>',
|
|
||||||
'</a></nav>'
|
|
||||||
].join(""));
|
|
||||||
|
|
||||||
// setup tooltip handling
|
// fix tooltip
|
||||||
var tooltipEvents = $._data($(".js-header-action")[0]).events;
|
|
||||||
|
let tooltipEvents = $._data($(".js-header-action")[0], "events");
|
||||||
|
|
||||||
if (tooltipEvents.mouseover && tooltipEvents.mouseover.length && tooltipEvents.mouseout && tooltipEvents.mouseout.length){
|
if (tooltipEvents.mouseover && tooltipEvents.mouseover.length && tooltipEvents.mouseout && tooltipEvents.mouseout.length){
|
||||||
$("#clear-columns-btn-all-parent").on("mouseover", tooltipEvents.mouseover[0].handler).on("mouseout", tooltipEvents.mouseout[0].handler);
|
$(".clear-columns-btn-all-parent").on({
|
||||||
|
mouseover: tooltipEvents.mouseover[0].handler,
|
||||||
|
mouseout: tooltipEvents.mouseout[0].handler
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
disabled(){
|
disabled(){
|
||||||
// not needed, plugin reloads the page when enabled or disabled
|
this.css.remove();
|
||||||
|
|
||||||
|
document.removeEventListener("click", this.eventClickOneCapture);
|
||||||
|
$(document).off("click", "[data-action='td-clearcolumns-doall']", this.eventClickAll);
|
||||||
|
$(document).off("keydown", this.eventKeyDown);
|
||||||
|
$(document).off("keyup", this.eventKeyUp);
|
||||||
|
$(document).off("uiShowKeyboardShortcutList", this.eventKeyboardShortcuts);
|
||||||
|
|
||||||
|
TD.mustaches["menus/column_nav_menu.mustache"] = this.prevNavMenuMustache;
|
||||||
|
TD.mustaches["column/column_header.mustache"] = this.prevColumnHeaderMustache;
|
||||||
|
|
||||||
|
$("[data-action^='td-clearcolumns-']").remove();
|
||||||
}
|
}
|
||||||
|
@@ -2,16 +2,10 @@
|
|||||||
Edit layout & design
|
Edit layout & design
|
||||||
|
|
||||||
[description]
|
[description]
|
||||||
- Adds new layout and design configuration, which can be accessed via Settings - Edit layout & design
|
Expand the [Settings] menu and open [Edit layout & design] to customize how TweetDeck looks.
|
||||||
|
|
||||||
[author]
|
[author]
|
||||||
chylex
|
chylex
|
||||||
|
|
||||||
[version]
|
|
||||||
1.2.5
|
|
||||||
|
|
||||||
[website]
|
|
||||||
https://tweetduck.chylex.com
|
|
||||||
|
|
||||||
[requires]
|
[requires]
|
||||||
1.10.2
|
{version}
|
@@ -21,9 +21,25 @@ enabled(){
|
|||||||
avatarRadius: 2
|
avatarRadius: 2
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const prepareDefaultConfig = () => {
|
||||||
|
this.defaultConfig._theme = TD.settings.getTheme();
|
||||||
|
|
||||||
|
switch(TD.settings.getColumnWidth()){
|
||||||
|
case "wide": this.defaultConfig.columnWidth = "350px"; break;
|
||||||
|
case "narrow": this.defaultConfig.columnWidth = "270px"; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(TD.settings.getFontSize()){
|
||||||
|
case "small": this.defaultConfig.fontSize = "13px"; break;
|
||||||
|
case "medium": this.defaultConfig.fontSize = "14px"; break;
|
||||||
|
case "large": this.defaultConfig.fontSize = "15px"; break;
|
||||||
|
case "largest": this.defaultConfig.fontSize = "16px"; break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
this.firstTimeLoad = null;
|
this.firstTimeLoad = null;
|
||||||
|
|
||||||
var me = this;
|
const me = this;
|
||||||
|
|
||||||
// modal dialog loading
|
// modal dialog loading
|
||||||
$TDP.readFileRoot(this.$token, "modal.html").then(contents => {
|
$TDP.readFileRoot(this.$token, "modal.html").then(contents => {
|
||||||
@@ -45,6 +61,7 @@ enabled(){
|
|||||||
else if (this.tmpConfig !== null){
|
else if (this.tmpConfig !== null){
|
||||||
let needsResave = !("_theme" in this.tmpConfig);
|
let needsResave = !("_theme" in this.tmpConfig);
|
||||||
|
|
||||||
|
prepareDefaultConfig();
|
||||||
this.config = $.extend(this.defaultConfig, this.tmpConfig);
|
this.config = $.extend(this.defaultConfig, this.tmpConfig);
|
||||||
this.tmpConfig = null;
|
this.tmpConfig = null;
|
||||||
this.reinjectAll();
|
this.reinjectAll();
|
||||||
@@ -55,35 +72,18 @@ enabled(){
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var loadConfigObject = obj => {
|
const loadConfigObject = obj => {
|
||||||
this.tmpConfig = obj || {};
|
this.tmpConfig = obj || {};
|
||||||
this.firstTimeLoad = obj === null;
|
this.firstTimeLoad = obj === null;
|
||||||
|
|
||||||
this.onStageReady();
|
this.onStageReady();
|
||||||
};
|
};
|
||||||
|
|
||||||
if (this.$$wasLoadedBefore){
|
if (TD.ready){
|
||||||
this.onStageReady();
|
this.onStageReady();
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
$(document).one("dataSettingsValues", () => {
|
$(document).one("dataSettingsValues", () => this.onStageReady());
|
||||||
this.defaultConfig._theme = TD.settings.getTheme();
|
|
||||||
|
|
||||||
switch(TD.settings.getColumnWidth()){
|
|
||||||
case "wide": this.defaultConfig.columnWidth = "350px"; break;
|
|
||||||
case "narrow": this.defaultConfig.columnWidth = "270px"; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch(TD.settings.getFontSize()){
|
|
||||||
case "small": this.defaultConfig.fontSize = "13px"; break;
|
|
||||||
case "medium": this.defaultConfig.fontSize = "14px"; break;
|
|
||||||
case "large": this.defaultConfig.fontSize = "15px"; break;
|
|
||||||
case "largest": this.defaultConfig.fontSize = "16px"; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$$wasLoadedBefore = true;
|
|
||||||
this.onStageReady();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$TDP.checkFileExists(this.$token, configFile).then(exists => {
|
$TDP.checkFileExists(this.$token, configFile).then(exists => {
|
||||||
@@ -139,7 +139,7 @@ enabled(){
|
|||||||
};
|
};
|
||||||
|
|
||||||
// modal dialog setup
|
// modal dialog setup
|
||||||
var updateKey = function(key, value){
|
const updateKey = function(key, value){
|
||||||
me.config[key] = value;
|
me.config[key] = value;
|
||||||
|
|
||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
@@ -228,7 +228,7 @@ enabled(){
|
|||||||
if (value == me.config[key]){
|
if (value == me.config[key]){
|
||||||
item.addClass("selected");
|
item.addClass("selected");
|
||||||
}
|
}
|
||||||
|
|
||||||
item.click(function(){
|
item.click(function(){
|
||||||
modal.find("[data-td-key='"+key+"']").removeClass("selected");
|
modal.find("[data-td-key='"+key+"']").removeClass("selected");
|
||||||
item.addClass("selected");
|
item.addClass("selected");
|
||||||
@@ -396,8 +396,10 @@ enabled(){
|
|||||||
switch(currentTheme){
|
switch(currentTheme){
|
||||||
case "black":
|
case "black":
|
||||||
this.css.insert(".app-content, .app-columns-container { background-color: #444448 !important }");
|
this.css.insert(".app-content, .app-columns-container { background-color: #444448 !important }");
|
||||||
|
this.css.insert(".column-header-temp { background-color: transparent !important }");
|
||||||
this.css.insert(".column-drag-handle { opacity: 0.5 !important }");
|
this.css.insert(".column-drag-handle { opacity: 0.5 !important }");
|
||||||
this.css.insert(".column-drag-handle:hover { opacity: 1 !important }");
|
this.css.insert(".column-drag-handle:hover { opacity: 1 !important }");
|
||||||
|
this.css.insert(".column-message.is-actionable span:hover > .icon-small-valigned { filter: saturate(20) }");
|
||||||
this.css.insert(".scroll-styled-v:not(.scroll-alt)::-webkit-scrollbar-thumb:not(:hover), .scroll-styled-h:not(.scroll-alt)::-webkit-scrollbar-thumb:not(:hover) { background-color: #666 !important }");
|
this.css.insert(".scroll-styled-v:not(.scroll-alt)::-webkit-scrollbar-thumb:not(:hover), .scroll-styled-h:not(.scroll-alt)::-webkit-scrollbar-thumb:not(:hover) { background-color: #666 !important }");
|
||||||
notificationScrollbarColor = "666";
|
notificationScrollbarColor = "666";
|
||||||
break;
|
break;
|
||||||
@@ -405,7 +407,7 @@ enabled(){
|
|||||||
case "dark":
|
case "dark":
|
||||||
this.css.insert(".scroll-styled-v:not(.scroll-alt)::-webkit-scrollbar-track, .scroll-styled-h:not(.scroll-alt)::-webkit-scrollbar-track { border-left-color: #14171A !important }");
|
this.css.insert(".scroll-styled-v:not(.scroll-alt)::-webkit-scrollbar-track, .scroll-styled-h:not(.scroll-alt)::-webkit-scrollbar-track { border-left-color: #14171A !important }");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "light":
|
case "light":
|
||||||
this.css.insert(".scroll-styled-v:not(.scroll-alt)::-webkit-scrollbar-thumb:not(:hover), .scroll-styled-h:not(.scroll-alt)::-webkit-scrollbar-thumb:not(:hover) { background-color: #d2d6da !important }");
|
this.css.insert(".scroll-styled-v:not(.scroll-alt)::-webkit-scrollbar-thumb:not(:hover), .scroll-styled-h:not(.scroll-alt)::-webkit-scrollbar-thumb:not(:hover) { background-color: #d2d6da !important }");
|
||||||
this.css.insert(".app-columns-container.scroll-styled-h::-webkit-scrollbar-thumb:not(:hover) { background-color: #a5aeb5 !important }");
|
this.css.insert(".app-columns-container.scroll-styled-h::-webkit-scrollbar-thumb:not(:hover) { background-color: #a5aeb5 !important }");
|
||||||
@@ -536,10 +538,11 @@ ${iconData.map(entry => `#tduck .icon-${entry[0]}:before{content:\"\\f0${entry[1
|
|||||||
|
|
||||||
.drawer .btn .icon, .app-header .btn .icon { line-height: 1em !important }
|
.drawer .btn .icon, .app-header .btn .icon { line-height: 1em !important }
|
||||||
.app-search-fake .icon { margin-top: -3px !important }
|
.app-search-fake .icon { margin-top: -3px !important }
|
||||||
|
#tduck .js-docked-compose .js-drawer-close { margin: 20px 0 0 !important }
|
||||||
#tduck .search-input-control .icon { font-size: 20px !important; top: -4px !important }
|
#tduck .search-input-control .icon { font-size: 20px !important; top: -4px !important }
|
||||||
|
|
||||||
.column-header .column-type-icon { bottom: 26px !important }
|
.js-column-header .column-type-icon { margin-top: -1px !important }
|
||||||
.is-options-open .column-type-icon { bottom: 25px !important }
|
.inline-reply .pull-left .Button--link { margin-top: 3px !important }
|
||||||
|
|
||||||
.tweet-action-item .icon-favorite-toggle { font-size: 16px !important; }
|
.tweet-action-item .icon-favorite-toggle { font-size: 16px !important; }
|
||||||
.tweet-action-item .heartsprite { top: -260% !important; left: -260% !important; transform: scale(0.4, 0.39) translateY(0.5px) !important; }
|
.tweet-action-item .heartsprite { top: -260% !important; left: -260% !important; transform: scale(0.4, 0.39) translateY(0.5px) !important; }
|
||||||
@@ -560,7 +563,7 @@ ${iconData.map(entry => `#tduck .icon-${entry[0]}:before{content:\"\\f0${entry[1
|
|||||||
if (this.config.columnWidth[0] === '/'){
|
if (this.config.columnWidth[0] === '/'){
|
||||||
let cols = this.config.columnWidth.slice(1);
|
let cols = this.config.columnWidth.slice(1);
|
||||||
|
|
||||||
this.css.insert(".column { width: calc((100vw - 205px) / "+cols+" - 6px) !important }");
|
this.css.insert(".column { width: calc((100vw - 205px) / "+cols+" - 6px) !important; min-width: 160px }");
|
||||||
this.css.insert(".is-condensed .column { width: calc((100vw - 55px) / "+cols+" - 6px) !important }");
|
this.css.insert(".is-condensed .column { width: calc((100vw - 55px) / "+cols+" - 6px) !important }");
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
@@ -640,7 +643,7 @@ ready(){
|
|||||||
$(".js-app").append('<div id="td-design-plugin-modal" class="js-modal settings-modal ovl scroll-v scroll-styled-v"></div>');
|
$(".js-app").append('<div id="td-design-plugin-modal" class="js-modal settings-modal ovl scroll-v scroll-styled-v"></div>');
|
||||||
|
|
||||||
// global settings override
|
// global settings override
|
||||||
var me = this;
|
const me = this;
|
||||||
|
|
||||||
this.prevFuncSettingsGetInfo = TD.components.GlobalSettings.prototype.getInfo;
|
this.prevFuncSettingsGetInfo = TD.components.GlobalSettings.prototype.getInfo;
|
||||||
this.prevFuncSettingsSwitchTab = TD.components.GlobalSettings.prototype.switchTab;
|
this.prevFuncSettingsSwitchTab = TD.components.GlobalSettings.prototype.switchTab;
|
||||||
|
@@ -44,6 +44,8 @@
|
|||||||
</optgroup>
|
</optgroup>
|
||||||
<option disabled></option>
|
<option disabled></option>
|
||||||
<optgroup label="Dynamic width">
|
<optgroup label="Dynamic width">
|
||||||
|
<option value="/1">1 column on screen</option>
|
||||||
|
<option value="/2">2 columns on screen</option>
|
||||||
<option value="/3">3 columns on screen</option>
|
<option value="/3">3 columns on screen</option>
|
||||||
<option value="/4">4 columns on screen</option>
|
<option value="/4">4 columns on screen</option>
|
||||||
<option value="/5">5 columns on screen</option>
|
<option value="/5">5 columns on screen</option>
|
||||||
@@ -151,8 +153,7 @@
|
|||||||
<!-- END -->
|
<!-- END -->
|
||||||
</div>
|
</div>
|
||||||
<footer class="padding-vxl txt-center">
|
<footer class="padding-vxl txt-center">
|
||||||
<button class="js-dismiss btn btn-positive pull-right">
|
<button class="js-dismiss Button--primary pull-right">
|
||||||
<i class="icon icon-check icon-small padding-rs"></i>
|
|
||||||
<span class="label">Done</span>
|
<span class="label">Done</span>
|
||||||
</button>
|
</button>
|
||||||
</footer>
|
</footer>
|
||||||
|
@@ -13,7 +13,6 @@ html.dark .color-twitter-blue{color:#1DA1F2}
|
|||||||
html.dark .color-twitter-red{color:#E0245E}
|
html.dark .color-twitter-red{color:#E0245E}
|
||||||
html.dark .color-twitter-deep-red{color:#A01744}
|
html.dark .color-twitter-deep-red{color:#A01744}
|
||||||
html.dark .color-twitter-green{color:#17BF63}
|
html.dark .color-twitter-green{color:#17BF63}
|
||||||
html.dark .color-twitter-deep-green{color:#008951}
|
|
||||||
html.dark .color-twitter-deep-black{color:#14171A}
|
html.dark .color-twitter-deep-black{color:#14171A}
|
||||||
html.dark .color-twitter-dark-black{color:#292F33}
|
html.dark .color-twitter-dark-black{color:#292F33}
|
||||||
html.dark .color-twitter-dark-gray{color:#8899A6}
|
html.dark .color-twitter-dark-gray{color:#8899A6}
|
||||||
@@ -22,7 +21,6 @@ html.dark .color-twitter-yellow{color:#FFAD1F}
|
|||||||
html.dark .bg-color-twitter-white{background-color:#fff}
|
html.dark .bg-color-twitter-white{background-color:#fff}
|
||||||
html.dark .bg-color-twitter-blue{background-color:#1DA1F2}
|
html.dark .bg-color-twitter-blue{background-color:#1DA1F2}
|
||||||
html.dark .bg-color-twitter-medium-blue{background-color:#1DA1F2}
|
html.dark .bg-color-twitter-medium-blue{background-color:#1DA1F2}
|
||||||
html.dark .bg-color-twitter-faded-yellow{background-color:#FFE8B6}
|
|
||||||
html.dark .bg-color-twitter-deep-black{background-color:#292F33}
|
html.dark .bg-color-twitter-deep-black{background-color:#292F33}
|
||||||
html.dark .bg-color-twitter-lightest-gray{background-color:#F5F8FA}
|
html.dark .bg-color-twitter-lightest-gray{background-color:#F5F8FA}
|
||||||
html.dark .link-hover-override:hover .link-hover-target{color:#8bd}
|
html.dark .link-hover-override:hover .link-hover-target{color:#8bd}
|
||||||
@@ -92,63 +90,28 @@ html.dark .btn[disabled],html.dark .btn[disabled]:hover,html.dark .btn[disabled]
|
|||||||
html.dark .btn-on-dark:focus{box-shadow:0 0 0 1px #292F33,0 0 0 3px #71C9F8}
|
html.dark .btn-on-dark:focus{box-shadow:0 0 0 1px #292F33,0 0 0 3px #71C9F8}
|
||||||
html.dark .mdl-content .btn-on-dark:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #71C9F8}
|
html.dark .mdl-content .btn-on-dark:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #71C9F8}
|
||||||
html.dark .is-inverted-dark .btn:hover,html.dark .is-inverted-dark .btn:focus,html.dark .is-inverted-dark .btn:active,html.dark .is-inverted-dark .btn.is-selected{background-color:#F2F9FF}
|
html.dark .is-inverted-dark .btn:hover,html.dark .is-inverted-dark .btn:focus,html.dark .is-inverted-dark .btn:active,html.dark .is-inverted-dark .btn.is-selected{background-color:#F2F9FF}
|
||||||
html.dark .is-inverted-dark .btn-positive:hover,html.dark .is-inverted-dark .btn-positive-alt:hover,html.dark .is-inverted-dark .btn-fav.s-favorited:hover,html.dark .is-inverted-dark .s-following .follow-btn:hover,html.dark .s-following .is-inverted-dark .follow-btn:hover{background-color:#005FD1}
|
html.dark .is-inverted-dark .btn-fav.s-favorited:hover,html.dark .is-inverted-dark .s-following .follow-btn:hover,html.dark .s-following .is-inverted-dark .follow-btn:hover{background-color:#005FD1}
|
||||||
html.dark .is-inverted-dark .btn-positive:focus,html.dark .is-inverted-dark .btn-positive-alt:focus,html.dark .is-inverted-dark .btn-fav.s-favorited:focus,html.dark .is-inverted-dark .s-following .follow-btn:focus,html.dark .s-following .is-inverted-dark .follow-btn:focus{background-color:#005FD1}
|
html.dark .is-inverted-dark .btn-fav.s-favorited:focus,html.dark .is-inverted-dark .s-following .follow-btn:focus,html.dark .s-following .is-inverted-dark .follow-btn:focus{background-color:#005FD1}
|
||||||
html.dark .is-inverted-dark .btn-positive:active,html.dark .is-inverted-dark .btn-positive-alt:active,html.dark .is-inverted-dark .btn-fav.s-favorited:active,html.dark .is-inverted-dark .s-following .follow-btn:active,html.dark .s-following .is-inverted-dark .follow-btn:active,html.dark .is-inverted-dark .btn-positive.is-selected,html.dark .is-inverted-dark .is-selected.btn-positive-alt,html.dark .is-inverted-dark .is-selected.btn-fav.s-favorited,html.dark .is-inverted-dark .s-following .is-selected.follow-btn,html.dark .s-following .is-inverted-dark .is-selected.follow-btn{background-color:#005FD1}
|
html.dark .is-inverted-dark .btn-fav.s-favorited:active,html.dark .is-inverted-dark .s-following .follow-btn:active,html.dark .s-following .is-inverted-dark .follow-btn:active,html.dark .is-inverted-dark .is-selected.btn-fav.s-favorited,html.dark .is-inverted-dark .s-following .is-selected.follow-btn,html.dark .s-following .is-inverted-dark .is-selected.follow-btn{background-color:#005FD1}
|
||||||
html.dark .is-inverted-dark .btn-positive-alt:hover,html.dark .is-inverted-dark .btn-fav.s-favorited:hover,html.dark .is-inverted-dark .s-following .follow-btn:hover,html.dark .s-following .is-inverted-dark .follow-btn:hover{background-color:#A01744}
|
html.dark .is-inverted-dark .btn-fav.s-favorited:hover,html.dark .is-inverted-dark .s-following .follow-btn:hover,html.dark .s-following .is-inverted-dark .follow-btn:hover{background-color:#A01744}
|
||||||
html.dark .is-inverted-dark .btn-positive-alt:focus,html.dark .is-inverted-dark .btn-fav.s-favorited:focus,html.dark .is-inverted-dark .s-following .follow-btn:focus,html.dark .s-following .is-inverted-dark .follow-btn:focus{background-color:#A01744}
|
html.dark .is-inverted-dark .btn-fav.s-favorited:focus,html.dark .is-inverted-dark .s-following .follow-btn:focus,html.dark .s-following .is-inverted-dark .follow-btn:focus{background-color:#A01744}
|
||||||
html.dark .is-inverted-dark .btn-positive-alt:active,html.dark .is-inverted-dark .btn-fav.s-favorited:active,html.dark .is-inverted-dark .s-following .follow-btn:active,html.dark .s-following .is-inverted-dark .follow-btn:active,html.dark .is-inverted-dark .btn-positive-alt.is-selected,html.dark .is-inverted-dark .is-selected.btn-fav.s-favorited,html.dark .is-inverted-dark .s-following .is-selected.follow-btn,html.dark .s-following .is-inverted-dark .is-selected.follow-btn{background-color:#A01744}
|
html.dark .is-inverted-dark .btn-fav.s-favorited:active,html.dark .is-inverted-dark .s-following .follow-btn:active,html.dark .s-following .is-inverted-dark .follow-btn:active,html.dark .is-inverted-dark .is-selected.btn-fav.s-favorited,html.dark .is-inverted-dark .s-following .is-selected.follow-btn,html.dark .s-following .is-inverted-dark .is-selected.follow-btn{background-color:#A01744}
|
||||||
html.dark .is-inverted-dark .btn-negative:hover{background-color:#A01744}
|
html.dark .btn-fav.s-favorited,html.dark .s-following .follow-btn{color:#fff;background-color:#1DA1F2;border:1px solid #1DA1F2}
|
||||||
html.dark .is-inverted-dark .btn-negative:focus{background-color:#A01744}
|
html.dark .btn-fav.s-favorited:hover,html.dark .s-following .follow-btn:hover{color:#fff;background-color:#005FD1;border:1px solid #005FD1}
|
||||||
html.dark .is-inverted-dark .btn-negative:active,html.dark .is-inverted-dark .btn-negative.is-selected{background-color:#A01744}
|
html.dark .btn-fav.s-favorited:focus,html.dark .s-following .follow-btn:focus{color:#fff;background-color:#005FD1;border:1px solid #005FD1;box-shadow:0 0 0 1px #fff,0 0 0 3px #71C9F8}
|
||||||
html.dark .is-inverted-dark .btn-tertiary:hover{background-color:#F5F8FA}
|
html.dark .btn-fav.s-favorited:active,html.dark .s-following .follow-btn:active,html.dark .is-selected.btn-fav.s-favorited,html.dark .s-following .is-selected.follow-btn{color:#fff;background-color:#005FD1;border:1px solid #005FD1}
|
||||||
html.dark .is-inverted-dark .btn-tertiary:focus{background-color:#F5F8FA}
|
html.dark [disabled].btn-fav.s-favorited,html.dark .s-following [disabled].follow-btn,html.dark [disabled].btn-fav.s-favorited:hover,html.dark .s-following [disabled].follow-btn:hover,html.dark [disabled].btn-fav.s-favorited:active,html.dark .s-following [disabled].follow-btn:active,html.dark .is-disabled.btn-fav.s-favorited,html.dark .s-following .is-disabled.follow-btn,html.dark .is-disabled.btn-fav.s-favorited:hover,html.dark .s-following .is-disabled.follow-btn:hover,html.dark .is-disabled.btn-fav.s-favorited:focus,html.dark .s-following .is-disabled.follow-btn:focus,html.dark .is-disabled.btn-fav.s-favorited:active,html.dark .s-following .is-disabled.follow-btn:active{color:#fff;background-color:#1DA1F2;border:1px solid #1DA1F2}
|
||||||
html.dark .is-inverted-dark .btn-tertiary:active,html.dark .is-inverted-dark .btn-tertiary.is-selected{background-color:#F5F8FA}
|
html.dark .btn-fav.s-favorited:hover,html.dark .s-following .follow-btn:hover{color:#fff;background-color:#A01744;border:#A01744}
|
||||||
html.dark .btn-positive,html.dark .btn-positive-alt,html.dark .btn-fav.s-favorited,html.dark .s-following .follow-btn{color:#fff;background-color:#1DA1F2;border:1px solid #1DA1F2}
|
html.dark .btn-fav.s-favorited:active,html.dark .s-following .follow-btn:active,html.dark .is-selected.btn-fav.s-favorited,html.dark .s-following .is-selected.follow-btn{color:#fff;background-color:#A01744;border:#A01744}
|
||||||
html.dark .btn-positive:hover,html.dark .btn-positive-alt:hover,html.dark .btn-fav.s-favorited:hover,html.dark .s-following .follow-btn:hover{color:#fff;background-color:#005FD1;border:1px solid #005FD1}
|
|
||||||
html.dark .btn-positive:focus,html.dark .btn-positive-alt:focus,html.dark .btn-fav.s-favorited:focus,html.dark .s-following .follow-btn:focus{color:#fff;background-color:#005FD1;border:1px solid #005FD1;box-shadow:0 0 0 1px #fff,0 0 0 3px #71C9F8}
|
|
||||||
html.dark .btn-positive:active,html.dark .btn-positive-alt:active,html.dark .btn-fav.s-favorited:active,html.dark .s-following .follow-btn:active,html.dark .btn-positive.is-selected,html.dark .is-selected.btn-positive-alt,html.dark .is-selected.btn-fav.s-favorited,html.dark .s-following .is-selected.follow-btn{color:#fff;background-color:#005FD1;border:1px solid #005FD1}
|
|
||||||
html.dark .btn-positive[disabled],html.dark [disabled].btn-positive-alt,html.dark [disabled].btn-fav.s-favorited,html.dark .s-following [disabled].follow-btn,html.dark .btn-positive[disabled]:hover,html.dark [disabled].btn-positive-alt:hover,html.dark [disabled].btn-fav.s-favorited:hover,html.dark .s-following [disabled].follow-btn:hover,html.dark .btn-positive[disabled]:active,html.dark [disabled].btn-positive-alt:active,html.dark [disabled].btn-fav.s-favorited:active,html.dark .s-following [disabled].follow-btn:active,html.dark .btn-positive.is-disabled,html.dark .is-disabled.btn-positive-alt,html.dark .is-disabled.btn-fav.s-favorited,html.dark .s-following .is-disabled.follow-btn,html.dark .btn-positive.is-disabled:hover,html.dark .is-disabled.btn-positive-alt:hover,html.dark .is-disabled.btn-fav.s-favorited:hover,html.dark .s-following .is-disabled.follow-btn:hover,html.dark .btn-positive.is-disabled:focus,html.dark .is-disabled.btn-positive-alt:focus,html.dark .is-disabled.btn-fav.s-favorited:focus,html.dark .s-following .is-disabled.follow-btn:focus,html.dark .btn-positive.is-disabled:active,html.dark .is-disabled.btn-positive-alt:active,html.dark .is-disabled.btn-fav.s-favorited:active,html.dark .s-following .is-disabled.follow-btn:active{color:#fff;background-color:#1DA1F2;border:1px solid #1DA1F2}
|
|
||||||
html.dark .btn-compose{color:#fff;background-color:#2b7bb9}
|
|
||||||
html.dark .btn-compose:hover{color:#fff;background-color:#2b7bb9}
|
|
||||||
html.dark .btn-compose:focus{color:#fff;background-color:#2b7bb9}
|
|
||||||
html.dark .btn-compose:active,html.dark .btn-compose.is-selected{color:#fff;background-color:#2b7bb9}
|
|
||||||
html.dark .btn-positive-alt:hover,html.dark .btn-fav.s-favorited:hover,html.dark .s-following .follow-btn:hover{color:#fff;background-color:#A01744;border:#A01744}
|
|
||||||
html.dark .btn-positive-alt:active,html.dark .btn-fav.s-favorited:active,html.dark .s-following .follow-btn:active,html.dark .btn-positive-alt.is-selected,html.dark .is-selected.btn-fav.s-favorited,html.dark .s-following .is-selected.follow-btn{color:#fff;background-color:#A01744;border:#A01744}
|
|
||||||
html.dark .btn-negative{border-color:#E0245E;color:#fff;background-color:#E0245E}
|
|
||||||
html.dark .btn-negative:hover{color:#fff;background-color:#A01744;border-color:#A01744}
|
|
||||||
html.dark .btn-negative:focus{color:#fff;background-color:#A01744;border-color:#A01744;box-shadow:0 0 0 1px #fff,0 0 0 3px #F6809A}
|
|
||||||
html.dark .btn-negative:active,html.dark .btn-negative.is-selected{color:#fff;background-color:#A01744;border-color:#A01744}
|
|
||||||
html.dark .btn-negative[disabled],html.dark .btn-negative[disabled]:hover,html.dark .btn-negative[disabled]:active,html.dark .btn-negative.is-disabled,html.dark .btn-negative.is-disabled:hover,html.dark .btn-negative.is-disabled:focus,html.dark .btn-negative.is-disabled:active{border-color:#E0245E;color:#fff;background-color:#E0245E}
|
|
||||||
html.dark .btn-tertiary{border-color:#657786;color:#657786}
|
|
||||||
html.dark .btn-tertiary:hover{color:#657786;background-color:#F5F8FA;border-color:#657786}
|
|
||||||
html.dark .btn-tertiary:focus{color:#657786;background-color:#F5F8FA;border-color:#657786;box-shadow:0 0 0 1px #fff,0 0 0 3px #CCD6DD}
|
|
||||||
html.dark .btn-tertiary:active,html.dark .btn-tertiary.is-selected{color:#657786;background-color:#F5F8FA;border-color:#657786}
|
|
||||||
html.dark .btn-tertiary[disabled],html.dark .btn-tertiary[disabled]:hover,html.dark .btn-tertiary[disabled]:active,html.dark .btn-tertiary.is-disabled,html.dark .btn-tertiary.is-disabled:hover,html.dark .btn-tertiary.is-disabled:focus,html.dark .btn-tertiary.is-disabled:active{color:#AAB8C2;border-color:#e1e8ed;background-color:#eaeaea}
|
|
||||||
html.dark .btn-on-blue{color:#fff;background-color:#66757f}
|
html.dark .btn-on-blue{color:#fff;background-color:#66757f}
|
||||||
html.dark .btn-on-blue:hover{color:#fff;background-color:#66757f}
|
html.dark .btn-on-blue:hover{color:#fff;background-color:#66757f}
|
||||||
html.dark .btn-on-blue:focus{color:#fff;background-color:#66757f;box-shadow:0 0 2px 3px #50a5e6}
|
html.dark .btn-on-blue:focus{color:#fff;background-color:#66757f;box-shadow:0 0 2px 3px #50a5e6}
|
||||||
html.dark .btn-on-blue:active,html.dark .btn-on-blue.is-selected{color:#fff;background-color:#434c51}
|
html.dark .btn-on-blue:active,html.dark .btn-on-blue.is-selected{color:#fff;background-color:#434c51}
|
||||||
html.dark .btn-on-blue[disabled],html.dark .btn-on-blue[disabled]:hover,html.dark .btn-on-blue[disabled]:active,html.dark .btn-on-blue.is-disabled,html.dark .btn-on-blue.is-disabled:hover,html.dark .btn-on-blue.is-disabled:focus,html.dark .btn-on-blue.is-disabled:active{color:#fff;background-color:#66757f}
|
html.dark .btn-on-blue[disabled],html.dark .btn-on-blue[disabled]:hover,html.dark .btn-on-blue[disabled]:active,html.dark .btn-on-blue.is-disabled,html.dark .btn-on-blue.is-disabled:hover,html.dark .btn-on-blue.is-disabled:focus,html.dark .btn-on-blue.is-disabled:active{color:#fff;background-color:#66757f}
|
||||||
html.dark .btn-neutral-negative{color:#d29b9a}
|
|
||||||
html.dark .btn-neutral-negative:hover,html.dark .btn-neutral-negative:focus{color:#d29b9a}
|
|
||||||
html.dark .btn-neutral-negative[disabled],html.dark .btn-neutral-negative[disabled]:hover,html.dark .btn-neutral-negative[disabled]:active,html.dark .btn-neutral-negative.is-disabled,html.dark .btn-neutral-negative.is-disabled:hover,html.dark .btn-neutral-negative.is-disabled:focus,html.dark .btn-neutral-negative.is-disabled:active{color:#d29b9a}
|
|
||||||
html.dark .btn-neutral-positive{color:#8bd}
|
|
||||||
html.dark .btn-neutral-positive:hover,html.dark .btn-neutral-positive:focus{color:#8bd}
|
|
||||||
html.dark .btn-neutral-positive[disabled],html.dark .btn-neutral-positive[disabled]:hover,html.dark .btn-neutral-positive[disabled]:active,html.dark .btn-neutral-positive.is-disabled,html.dark .btn-neutral-positive.is-disabled:hover,html.dark .btn-neutral-positive.is-disabled:focus,html.dark .btn-neutral-positive.is-disabled:active{color:#8bd}
|
|
||||||
html.dark .btn-options-tray{color:#e1e8ed}
|
html.dark .btn-options-tray{color:#e1e8ed}
|
||||||
html.dark .btn-options-tray:hover,html.dark .btn-options-tray:focus{color:#8bd}
|
html.dark .btn-options-tray:hover,html.dark .btn-options-tray:focus{color:#8bd}
|
||||||
html.dark .btn-options-tray[disabled],html.dark .btn-options-tray[disabled]:hover,html.dark .btn-options-tray[disabled]:active,html.dark .btn-options-tray.is-disabled,html.dark .btn-options-tray.is-disabled:hover,html.dark .btn-options-tray.is-disabled:focus,html.dark .btn-options-tray.is-disabled:active{color:#8bd}
|
html.dark .btn-options-tray[disabled],html.dark .btn-options-tray[disabled]:hover,html.dark .btn-options-tray[disabled]:active,html.dark .btn-options-tray.is-disabled,html.dark .btn-options-tray.is-disabled:hover,html.dark .btn-options-tray.is-disabled:focus,html.dark .btn-options-tray.is-disabled:active{color:#8bd}
|
||||||
html.dark .btn-bg-positive{background-color:rgba(102,117,127,0.5)}
|
|
||||||
html.dark .btn-bg-positive:hover,html.dark .btn-bg-positive:focus{background-color:rgba(102,117,127,0.5)}
|
|
||||||
html.dark .btn-bg-positive[disabled],html.dark .btn-bg-positive[disabled]:hover,html.dark .btn-bg-positive[disabled]:active,html.dark .btn-bg-positive.is-disabled,html.dark .btn-bg-positive.is-disabled:hover,html.dark .btn-bg-positive.is-disabled:focus,html.dark .btn-bg-positive.is-disabled:active{background-color:rgba(102,117,127,0.5)}
|
|
||||||
html.dark .btn-bg-negative{background-color:#5d5457}
|
|
||||||
html.dark .btn-bg-negative:hover,html.dark .btn-bg-negative:focus{background-color:#5d5457}
|
|
||||||
html.dark .btn-bg-negative[disabled],html.dark .btn-bg-negative[disabled]:hover,html.dark .btn-bg-negative[disabled]:active,html.dark .btn-bg-negative.is-disabled,html.dark .btn-bg-negative.is-disabled:hover,html.dark .btn-bg-negative.is-disabled:focus,html.dark .btn-bg-negative.is-disabled:active{background-color:#5d5457}
|
|
||||||
html.dark .btn-bg-white{background-color:#fff;color:#55acee}
|
|
||||||
html.dark .btn-bg-white:hover,html.dark .btn-bg-white:focus{background-color:#fff;color:#55acee}
|
|
||||||
html.dark .follow-btn .icon,html.dark .follow-btn .Icon{color:#1DA1F2}
|
html.dark .follow-btn .icon,html.dark .follow-btn .Icon{color:#1DA1F2}
|
||||||
html.dark .input-group-button{border:1px solid #e1e8ed}
|
|
||||||
html.dark .account-profile-header{background-color:#1DA1F2}
|
html.dark .account-profile-header{background-color:#1DA1F2}
|
||||||
html.dark .account-settings-bt{border-top:1px solid #e1e8ed}
|
html.dark .account-settings-bt{border-top:1px solid #e1e8ed}
|
||||||
html.dark .account-settings-bb{border-bottom:1px solid #e1e8ed}
|
html.dark .account-settings-bb{border-bottom:1px solid #e1e8ed}
|
||||||
@@ -222,8 +185,6 @@ html.dark .is-touch-search .list-item:hover,html.dark .is-touch-search .list-ite
|
|||||||
html.dark .is-touch-search .list-item:hover .list-icon,html.dark .is-touch-search .list-item:active .list-icon,html.dark .is-touch-search .list-item.is-selected .list-icon{color:#fff}
|
html.dark .is-touch-search .list-item:hover .list-icon,html.dark .is-touch-search .list-item:active .list-icon,html.dark .is-touch-search .list-item.is-selected .list-icon{color:#fff}
|
||||||
html.dark .avatar-border--2{border:2px solid #fff;background-color:#fff}
|
html.dark .avatar-border--2{border:2px solid #fff;background-color:#fff}
|
||||||
html.dark .account-link{color:#e1e8ed}
|
html.dark .account-link{color:#e1e8ed}
|
||||||
.on-blue html.dark .account-link{color:#fff}
|
|
||||||
.compose .quoted-tweet html.dark .account-link{color:#66757f}
|
|
||||||
html.dark .media-badge{border:1px solid #292F33;color:#999}
|
html.dark .media-badge{border:1px solid #292F33;color:#999}
|
||||||
html.dark .media-badge:hover{background-color:#14171A}
|
html.dark .media-badge:hover{background-color:#14171A}
|
||||||
html.dark .media-size-large-height::after,html.dark .media-item.media-size-large::after{background-image:linear-gradient(rgba(17,17,17,0.25),rgba(17,17,17,0))}
|
html.dark .media-size-large-height::after,html.dark .media-item.media-size-large::after{background-image:linear-gradient(rgba(17,17,17,0.25),rgba(17,17,17,0))}
|
||||||
@@ -251,7 +212,7 @@ html.dark .is-minimalist .tweet-img{background:#292F33}
|
|||||||
html.dark .is-selected-tweet{background:#292F33}
|
html.dark .is-selected-tweet{background:#292F33}
|
||||||
html.dark .in-tweet-divider:before{background:#292F33}
|
html.dark .in-tweet-divider:before{background:#292F33}
|
||||||
html.dark .tweet-translation-original-text{color:#8899a6}
|
html.dark .tweet-translation-original-text{color:#8899a6}
|
||||||
html.dark .quoted-tweet{border:1px solid #E1E8ED;color:#66757f;border-color:#292F33;color:#999}
|
html.dark .quoted-tweet{border-color:#292F33;color:#999}
|
||||||
html.dark .scheduled-tweet{border:1px solid #292F33;color:#8899A6}
|
html.dark .scheduled-tweet{border:1px solid #292F33;color:#8899A6}
|
||||||
html.dark .stream-item .icon-edit,html.dark .stream-item .icon-trash{color:#657786}
|
html.dark .stream-item .icon-edit,html.dark .stream-item .icon-trash{color:#657786}
|
||||||
html.dark .stream-item .icon-edit:hover,html.dark .stream-item .icon-trash:hover{color:#8899A6}
|
html.dark .stream-item .icon-edit:hover,html.dark .stream-item .icon-trash:hover{color:#8899A6}
|
||||||
@@ -440,12 +401,6 @@ html.dark .char-count:disabled{color:#777}
|
|||||||
html.dark .over-char-count:disabled{color:#be1931}
|
html.dark .over-char-count:disabled{color:#be1931}
|
||||||
html.dark .cmp-replyto{background-color:#eaeaea;border-top:1px solid #ddd}
|
html.dark .cmp-replyto{background-color:#eaeaea;border-top:1px solid #ddd}
|
||||||
html.dark .s-link-added.s-photo-added p:last-child{border-top:1px solid #ddd}
|
html.dark .s-link-added.s-photo-added p:last-child{border-top:1px solid #ddd}
|
||||||
html.dark .accs li{background:#eaeaea;border:1px solid #e1e8ed}
|
|
||||||
html.dark .accs li:hover{background:#e1e8ed}
|
|
||||||
html.dark .accs .icon,html.dark .accs .Icon{color:#999}
|
|
||||||
html.dark .accs .acc-selected{background-color:#55acee;border:1px solid #e1e8ed}
|
|
||||||
html.dark .accs .acc-selected i{color:#fff}
|
|
||||||
html.dark .accs .acc-selected:hover{border-color:#e1e8ed;background-color:#50a5e6}
|
|
||||||
html.dark .inline-reply{background-color:#485865;color:#fff}
|
html.dark .inline-reply{background-color:#485865;color:#fff}
|
||||||
html.dark .inline-reply .btn-neutral,html.dark .inline-reply .character-count{color:#fff}
|
html.dark .inline-reply .btn-neutral,html.dark .inline-reply .character-count{color:#fff}
|
||||||
html.dark .reply-triangle{border-color:transparent transparent #485865}
|
html.dark .reply-triangle{border-color:transparent transparent #485865}
|
||||||
@@ -473,7 +428,7 @@ html.dark .list-account .username{color:#8899a6}
|
|||||||
html.dark .list-listmember .username{color:#8899a6}
|
html.dark .list-listmember .username{color:#8899a6}
|
||||||
html.dark .list-listmember .bio{color:#657786}
|
html.dark .list-listmember .bio{color:#657786}
|
||||||
html.dark .divider-bar{background-color:#ddd}
|
html.dark .divider-bar{background-color:#ddd}
|
||||||
html.dark select{background-image:url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='18' height='8' viewBox='0 0 18 8'><path fill='#aaa' d='M9.82875,0.840168025 C9.59875,0.608328018 9.22625,0.608328018 8.99625,0.840168025 L5.00125,4.86964815 L1.00375,0.840168025 C0.77375,0.608328018 0.40125,0.608328018 0.17125,0.840168025 C-0.05875,1.07200803 -0.05625,1.44748804 0.17125,1.67932805 L4.58375,6.12712819 C4.69875,6.24304819 4.84875,6.30100819 5.00125,6.30100819 C5.15125,6.30100819 5.30125,6.24304819 5.41625,6.12712819 L9.82875,1.67932805 C10.05875,1.44748804 10.05875,1.07200803 9.82875,0.840168025'></path></svg>");background-color:#fff}
|
html.dark select{background-color:#fff}
|
||||||
html.dark input,html.dark textarea,html.dark select{color:#111;border:1px solid #e1e8ed}
|
html.dark input,html.dark textarea,html.dark select{color:#111;border:1px solid #e1e8ed}
|
||||||
html.dark input:disabled{background-color:#eaeaea;border-color:#e1e8ed}
|
html.dark input:disabled{background-color:#eaeaea;border-color:#e1e8ed}
|
||||||
html.dark select:disabled{background-color:#f5f8fa}
|
html.dark select:disabled{background-color:#f5f8fa}
|
||||||
@@ -651,46 +606,45 @@ html.dark .Dropdown-divider{background-color:#ccd6dd}
|
|||||||
html.dark .Dropdown-menuItem .Dropdown-menuItemContent,html.dark .Dropdown-menuGroupLabel{color:#14171a}
|
html.dark .Dropdown-menuItem .Dropdown-menuItemContent,html.dark .Dropdown-menuGroupLabel{color:#14171a}
|
||||||
html.dark .Dropdown-menuItem .Dropdown-menuItemContent .Icon--check{color:#1da1f2}
|
html.dark .Dropdown-menuItem .Dropdown-menuItemContent .Icon--check{color:#1da1f2}
|
||||||
html.dark .Dropdown-menuItem.is-focus{background-color:#1da1f2}
|
html.dark .Dropdown-menuItem.is-focus{background-color:#1da1f2}
|
||||||
html.dark .Dropdown-menuItem.is-focus .User .Icon--verified::before{color:#1da1f2}
|
|
||||||
html.dark .Dropdown-menuGroupLabel{color:#657786}
|
html.dark .Dropdown-menuGroupLabel{color:#657786}
|
||||||
html.dark .ButtonGroup>.Button.is-selected,html.dark .ButtonGroup>.Button.is-selected:visited{background-color:#1da1f2;border:1px solid #1da1f2}
|
html.dark .ButtonGroup>.Button.is-selected,html.dark .ButtonGroup>.Button.is-selected:visited{background-color:#1da1f2;border:1px solid #1da1f2}
|
||||||
html.dark .ButtonGroup>.Button.is-selected:focus,html.dark .ButtonGroup>.Button.is-selected.is-focus{box-shadow:0 0 0 2px white,0 0 0 4px #71c9f8;background:#1da1f2;border-color:#1da1f2}
|
html.dark .ButtonGroup>.Button.is-selected:focus,html.dark .ButtonGroup>.Button.is-selected.is-focus{box-shadow:0 0 0 2px #fff,0 0 0 4px #71c9f8;background:#1da1f2;border-color:#1da1f2}
|
||||||
html.dark .ButtonGroup>.Button.is-selected:hover,html.dark .ButtonGroup>.Button.is-selected.is-hover{background-color:#1da1f2;border-color:#1da1f2}
|
html.dark .ButtonGroup>.Button.is-selected:hover,html.dark .ButtonGroup>.Button.is-selected.is-hover{background-color:#1da1f2;border-color:#1da1f2}
|
||||||
html.dark .ButtonGroup>.Button.is-selected:active,html.dark .ButtonGroup>.Button.is-selected.is-active{box-shadow:0 0 0 2px white,0 0 0 4px #1da1f2;background-color:#1da1f2;border-color:#1da1f2}
|
html.dark .ButtonGroup>.Button.is-selected:active,html.dark .ButtonGroup>.Button.is-selected.is-active{box-shadow:0 0 0 2px #fff,0 0 0 4px #1da1f2;background-color:#1da1f2;border-color:#1da1f2}
|
||||||
html.dark .ButtonGroup>.Button.is-selected[disabled],html.dark .ButtonGroup>.Button.is-selected.is-disabled,html.dark fieldset[disabled] .ButtonGroup>.Button.is-selected{background-color:#1da1f2;border-color:#1da1f2}
|
html.dark .ButtonGroup>.Button.is-selected[disabled],html.dark .ButtonGroup>.Button.is-selected.is-disabled,html.dark fieldset[disabled] .ButtonGroup>.Button.is-selected{background-color:#1da1f2;border-color:#1da1f2}
|
||||||
html.dark .ButtonGroup--tertiary>.Button.is-selected,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected,html.dark .ButtonGroup--tertiary>.Button.is-selected:visited,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected:visited{background-color:#657786;border:1px solid #657786}
|
html.dark .ButtonGroup--tertiary>.Button.is-selected,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected,html.dark .ButtonGroup--tertiary>.Button.is-selected:visited,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected:visited{background-color:#657786;border:1px solid #657786}
|
||||||
html.dark .ButtonGroup--tertiary>.Button.is-selected:focus,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected:focus,html.dark .ButtonGroup--tertiary>.Button.is-selected.is-focus,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected.is-focus{box-shadow:0 0 0 2px white,0 0 0 4px #ccd6dd;background:#657786;border-color:#657786}
|
html.dark .ButtonGroup--tertiary>.Button.is-selected:focus,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected:focus,html.dark .ButtonGroup--tertiary>.Button.is-selected.is-focus,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected.is-focus{box-shadow:0 0 0 2px #fff,0 0 0 4px #ccd6dd;background:#657786;border-color:#657786}
|
||||||
html.dark .ButtonGroup--tertiary>.Button.is-selected:hover,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected:hover,html.dark .ButtonGroup--tertiary>.Button.is-selected.is-hover,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected.is-hover{background-color:#657786;border-color:#657786}
|
html.dark .ButtonGroup--tertiary>.Button.is-selected:hover,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected:hover,html.dark .ButtonGroup--tertiary>.Button.is-selected.is-hover,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected.is-hover{background-color:#657786;border-color:#657786}
|
||||||
html.dark .ButtonGroup--tertiary>.Button.is-selected:active,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected:active,html.dark .ButtonGroup--tertiary>.Button.is-selected.is-active,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected.is-active{box-shadow:0 0 0 2px white,0 0 0 4px #aab8c2;background-color:#657786;border-color:#657786}
|
html.dark .ButtonGroup--tertiary>.Button.is-selected:active,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected:active,html.dark .ButtonGroup--tertiary>.Button.is-selected.is-active,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected.is-active{box-shadow:0 0 0 2px #fff,0 0 0 4px #aab8c2;background-color:#657786;border-color:#657786}
|
||||||
html.dark .ButtonGroup--tertiary>.Button.is-selected[disabled],html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected[disabled],html.dark .ButtonGroup--tertiary>.Button.is-selected.is-disabled,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected.is-disabled,html.dark fieldset[disabled] .ButtonGroup--tertiary>.Button.is-selected,html.dark fieldset[disabled] .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected{background-color:#657786;border-color:#657786}
|
html.dark .ButtonGroup--tertiary>.Button.is-selected[disabled],html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected[disabled],html.dark .ButtonGroup--tertiary>.Button.is-selected.is-disabled,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected.is-disabled,html.dark fieldset[disabled] .ButtonGroup--tertiary>.Button.is-selected,html.dark fieldset[disabled] .ButtonGroup--tertiary>.ButtonGroup>.Button.is-selected{background-color:#657786;border-color:#657786}
|
||||||
html.dark .Button,html.dark .Button:visited,html.dark .Button.is-visited{border:1px solid #1da1f2;color:#1da1f2}
|
html.dark .Button,html.dark .Button:visited,html.dark .Button.is-visited{border:1px solid #1da1f2;color:#1da1f2}
|
||||||
html.dark .Button:focus,html.dark .Button.is-focus{box-shadow:0 0 0 2px white,0 0 0 4px #71c9f8;border-color:#1da1f2;color:#1da1f2}
|
html.dark .Button:focus,html.dark .Button.is-focus{box-shadow:0 0 0 2px #fff,0 0 0 4px #71c9f8;border-color:#1da1f2;color:#1da1f2}
|
||||||
html.dark .Button:hover,html.dark .Button.is-hover{background-color:#eaf5fd;color:#1da1f2}
|
html.dark .Button:hover,html.dark .Button.is-hover{background-color:#eaf5fd;color:#1da1f2}
|
||||||
html.dark .Button:active,html.dark .Button.is-active{box-shadow:0 0 0 2px white,0 0 0 4px #1da1f2;background:#eaf5fd;border-color:#1da1f2;color:#1da1f2}
|
html.dark .Button:active,html.dark .Button.is-active{box-shadow:0 0 0 2px #fff,0 0 0 4px #1da1f2;background:#eaf5fd;border-color:#1da1f2;color:#1da1f2}
|
||||||
html.dark .Button.Button--primary,html.dark .Button.Button--primary:visited,html.dark .ButtonGroup--primary>.Button,html.dark .ButtonGroup--primary>.Button:visited,html.dark .ButtonGroup--primary>.ButtonGroup>.Button,html.dark .ButtonGroup--primary>.ButtonGroup>.Button:visited{background-color:#1da1f2;border:1px solid #1da1f2}
|
html.dark .Button.Button--primary,html.dark .Button.Button--primary:visited,html.dark .ButtonGroup--primary>.Button,html.dark .ButtonGroup--primary>.Button:visited,html.dark .ButtonGroup--primary>.ButtonGroup>.Button,html.dark .ButtonGroup--primary>.ButtonGroup>.Button:visited{background-color:#1da1f2;border:1px solid #1da1f2}
|
||||||
html.dark .Button.Button--primary:focus,html.dark .Button.Button--primary.is-focus,html.dark .ButtonGroup--primary>.Button:focus,html.dark .ButtonGroup--primary>.Button.is-focus,html.dark .ButtonGroup--primary>.ButtonGroup>.Button:focus,html.dark .ButtonGroup--primary>.ButtonGroup>.Button.is-focus{box-shadow:0 0 0 2px white,0 0 0 4px #71c9f8;background:#1da1f2;border-color:#1da1f2}
|
html.dark .Button.Button--primary:focus,html.dark .Button.Button--primary.is-focus,html.dark .ButtonGroup--primary>.Button:focus,html.dark .ButtonGroup--primary>.Button.is-focus,html.dark .ButtonGroup--primary>.ButtonGroup>.Button:focus,html.dark .ButtonGroup--primary>.ButtonGroup>.Button.is-focus{box-shadow:0 0 0 2px #fff,0 0 0 4px #71c9f8;background:#1da1f2;border-color:#1da1f2}
|
||||||
html.dark .Button.Button--primary:hover,html.dark .Button.Button--primary.is-hover,html.dark .ButtonGroup--primary>.Button:hover,html.dark .ButtonGroup--primary>.Button.is-hover,html.dark .ButtonGroup--primary>.ButtonGroup>.Button:hover,html.dark .ButtonGroup--primary>.ButtonGroup>.Button.is-hover{background-color:#005fd1;border-color:#005fd1}
|
html.dark .Button.Button--primary:hover,html.dark .Button.Button--primary.is-hover,html.dark .ButtonGroup--primary>.Button:hover,html.dark .ButtonGroup--primary>.Button.is-hover,html.dark .ButtonGroup--primary>.ButtonGroup>.Button:hover,html.dark .ButtonGroup--primary>.ButtonGroup>.Button.is-hover{background-color:#005fd1;border-color:#005fd1}
|
||||||
html.dark .Button.Button--primary:active,html.dark .Button.Button--primary.is-active,html.dark .ButtonGroup--primary>.Button:active,html.dark .ButtonGroup--primary>.Button.is-active,html.dark .ButtonGroup--primary>.ButtonGroup>.Button:active,html.dark .ButtonGroup--primary>.ButtonGroup>.Button.is-active{box-shadow:0 0 0 2px white,0 0 0 4px #1da1f2;background-color:#005fd1;border-color:#005fd1}
|
html.dark .Button.Button--primary:active,html.dark .Button.Button--primary.is-active,html.dark .ButtonGroup--primary>.Button:active,html.dark .ButtonGroup--primary>.Button.is-active,html.dark .ButtonGroup--primary>.ButtonGroup>.Button:active,html.dark .ButtonGroup--primary>.ButtonGroup>.Button.is-active{box-shadow:0 0 0 2px #fff,0 0 0 4px #1da1f2;background-color:#005fd1;border-color:#005fd1}
|
||||||
html.dark .Button.Button--primary[disabled],html.dark .Button.Button--primary.is-disabled,html.dark fieldset[disabled] .Button.Button--primary,html.dark .ButtonGroup--primary>.Button[disabled],html.dark .ButtonGroup--primary>.Button.is-disabled,html.dark fieldset[disabled] .ButtonGroup--primary>.Button,html.dark .ButtonGroup--primary>.ButtonGroup>.Button[disabled],html.dark .ButtonGroup--primary>.ButtonGroup>.Button.is-disabled,html.dark fieldset[disabled] .ButtonGroup--primary>.ButtonGroup>.Button{background-color:#1da1f2;border-color:#1da1f2}
|
html.dark .Button.Button--primary[disabled],html.dark .Button.Button--primary.is-disabled,html.dark fieldset[disabled] .Button.Button--primary,html.dark .ButtonGroup--primary>.Button[disabled],html.dark .ButtonGroup--primary>.Button.is-disabled,html.dark fieldset[disabled] .ButtonGroup--primary>.Button,html.dark .ButtonGroup--primary>.ButtonGroup>.Button[disabled],html.dark .ButtonGroup--primary>.ButtonGroup>.Button.is-disabled,html.dark fieldset[disabled] .ButtonGroup--primary>.ButtonGroup>.Button{background-color:#1da1f2;border-color:#1da1f2}
|
||||||
html.dark .Button.Button--tertiary,html.dark .Button.Button--tertiary:visited,html.dark .ButtonGroup--tertiary>.Button,html.dark .ButtonGroup--tertiary>.Button:visited,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button:visited{border:1px solid #657786;color:#657786}
|
html.dark .Button.Button--tertiary,html.dark .Button.Button--tertiary:visited,html.dark .ButtonGroup--tertiary>.Button,html.dark .ButtonGroup--tertiary>.Button:visited,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button:visited{border:1px solid #657786;color:#657786}
|
||||||
html.dark .Button.Button--tertiary:focus,html.dark .Button.Button--tertiary.is-focus,html.dark .ButtonGroup--tertiary>.Button:focus,html.dark .ButtonGroup--tertiary>.Button.is-focus,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button:focus,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-focus{box-shadow:0 0 0 2px white,0 0 0 4px #ccd6dd;border-color:#657786;color:#657786}
|
html.dark .Button.Button--tertiary:focus,html.dark .Button.Button--tertiary.is-focus,html.dark .ButtonGroup--tertiary>.Button:focus,html.dark .ButtonGroup--tertiary>.Button.is-focus,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button:focus,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-focus{box-shadow:0 0 0 2px #fff,0 0 0 4px #ccd6dd;border-color:#657786;color:#657786}
|
||||||
html.dark .Button.Button--tertiary:hover,html.dark .Button.Button--tertiary.is-hover,html.dark .ButtonGroup--tertiary>.Button:hover,html.dark .ButtonGroup--tertiary>.Button.is-hover,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button:hover,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-hover{background-color:#f5f8fa;border-color:#657786;color:#657786}
|
html.dark .Button.Button--tertiary:hover,html.dark .Button.Button--tertiary.is-hover,html.dark .ButtonGroup--tertiary>.Button:hover,html.dark .ButtonGroup--tertiary>.Button.is-hover,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button:hover,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-hover{background-color:#f5f8fa;border-color:#657786;color:#657786}
|
||||||
html.dark .Button.Button--tertiary:active,html.dark .Button.Button--tertiary.is-active,html.dark .ButtonGroup--tertiary>.Button:active,html.dark .ButtonGroup--tertiary>.Button.is-active,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button:active,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-active{box-shadow:0 0 0 2px white,0 0 0 4px #657786;background-color:#f5f8fa;border-color:#657786;color:#657786}
|
html.dark .Button.Button--tertiary:active,html.dark .Button.Button--tertiary.is-active,html.dark .ButtonGroup--tertiary>.Button:active,html.dark .ButtonGroup--tertiary>.Button.is-active,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button:active,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-active{box-shadow:0 0 0 2px #fff,0 0 0 4px #657786;background-color:#f5f8fa;border-color:#657786;color:#657786}
|
||||||
html.dark .Button.Button--tertiary[disabled],html.dark .Button.Button--tertiary.is-disabled,html.dark fieldset[disabled] .Button.Button--tertiary,html.dark .ButtonGroup--tertiary>.Button[disabled],html.dark .ButtonGroup--tertiary>.Button.is-disabled,html.dark fieldset[disabled] .ButtonGroup--tertiary>.Button,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button[disabled],html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-disabled,html.dark fieldset[disabled] .ButtonGroup--tertiary>.ButtonGroup>.Button{border-color:#657786}
|
html.dark .Button.Button--tertiary[disabled],html.dark .Button.Button--tertiary.is-disabled,html.dark fieldset[disabled] .Button.Button--tertiary,html.dark .ButtonGroup--tertiary>.Button[disabled],html.dark .ButtonGroup--tertiary>.Button.is-disabled,html.dark fieldset[disabled] .ButtonGroup--tertiary>.Button,html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button[disabled],html.dark .ButtonGroup--tertiary>.ButtonGroup>.Button.is-disabled,html.dark fieldset[disabled] .ButtonGroup--tertiary>.ButtonGroup>.Button{border-color:#657786}
|
||||||
html.dark .Button.Button--success,html.dark .Button.Button--success:visited{background-color:#17bf63;border:1px solid #17bf63}
|
html.dark .Button.Button--success,html.dark .Button.Button--success:visited{background-color:#17bf63;border:1px solid #17bf63}
|
||||||
html.dark .Button.Button--success:focus,html.dark .Button.Button--success.is-focus{box-shadow:0 0 0 2px white,0 0 0 4px #68e090;background:#17bf63;border-color:#17bf63}
|
html.dark .Button.Button--success:focus,html.dark .Button.Button--success.is-focus{box-shadow:0 0 0 2px #fff,0 0 0 4px #68e090;background:#17bf63;border-color:#17bf63}
|
||||||
html.dark .Button.Button--success:hover,html.dark .Button.Button--success.is-hover{background-color:#008951;border-color:#008951}
|
html.dark .Button.Button--success:hover,html.dark .Button.Button--success.is-hover{background-color:#008951;border-color:#008951}
|
||||||
html.dark .Button.Button--success:active,html.dark .Button.Button--success.is-active{box-shadow:0 0 0 2px white,0 0 0 4px #17bf63;background-color:#008951;border-color:#008951}
|
html.dark .Button.Button--success:active,html.dark .Button.Button--success.is-active{box-shadow:0 0 0 2px #fff,0 0 0 4px #17bf63;background-color:#008951;border-color:#008951}
|
||||||
html.dark .Button.Button--success[disabled],html.dark .Button.Button--success.is-disabled,html.dark fieldset[disabled] .Button.Button--success{background-color:#17bf63;border-color:#17bf63}
|
html.dark .Button.Button--success[disabled],html.dark .Button.Button--success.is-disabled,html.dark fieldset[disabled] .Button.Button--success{background-color:#17bf63;border-color:#17bf63}
|
||||||
html.dark .Button.Button--warning,html.dark .Button.Button--warning:visited{background-color:#ffad1f;border:1px solid #ffad1f}
|
html.dark .Button.Button--warning,html.dark .Button.Button--warning:visited{background-color:#ffad1f;border:1px solid #ffad1f}
|
||||||
html.dark .Button.Button--warning:focus,html.dark .Button.Button--warning.is-focus{box-shadow:0 0 0 2px white,0 0 0 4px #ffd03f;background:#ffad1f;border-color:#ffad1f}
|
html.dark .Button.Button--warning:focus,html.dark .Button.Button--warning.is-focus{box-shadow:0 0 0 2px #fff,0 0 0 4px #ffd03f;background:#ffad1f;border-color:#ffad1f}
|
||||||
html.dark .Button.Button--warning:hover,html.dark .Button.Button--warning.is-hover{background-color:#f98e00;border-color:#f98e00}
|
html.dark .Button.Button--warning:hover,html.dark .Button.Button--warning.is-hover{background-color:#f98e00;border-color:#f98e00}
|
||||||
html.dark .Button.Button--warning:active,html.dark .Button.Button--warning.is-active{box-shadow:0 0 0 2px white,0 0 0 4px #ffad1f;background-color:#f98e00;border-color:#f98e00}
|
html.dark .Button.Button--warning:active,html.dark .Button.Button--warning.is-active{box-shadow:0 0 0 2px #fff,0 0 0 4px #ffad1f;background-color:#f98e00;border-color:#f98e00}
|
||||||
html.dark .Button.Button--warning[disabled],html.dark .Button.Button--warning.is-disabled,html.dark fieldset[disabled] .Button.Button--warning{background-color:#ffad1f;border-color:#ffad1f}
|
html.dark .Button.Button--warning[disabled],html.dark .Button.Button--warning.is-disabled,html.dark fieldset[disabled] .Button.Button--warning{background-color:#ffad1f;border-color:#ffad1f}
|
||||||
html.dark .Button.Button--danger,html.dark .Button.Button--danger:visited{background-color:#e0245e;border:1px solid #e0245e}
|
html.dark .Button.Button--danger,html.dark .Button.Button--danger:visited{background-color:#e0245e;border:1px solid #e0245e}
|
||||||
html.dark .Button.Button--danger:focus,html.dark .Button.Button--danger.is-focus{box-shadow:0 0 0 2px white,0 0 0 4px #f6809a;background:#e0245e;border-color:#e0245e}
|
html.dark .Button.Button--danger:focus,html.dark .Button.Button--danger.is-focus{box-shadow:0 0 0 2px #fff,0 0 0 4px #f6809a;background:#e0245e;border-color:#e0245e}
|
||||||
html.dark .Button.Button--danger:hover,html.dark .Button.Button--danger.is-hover{background-color:#a01744;border-color:#a01744}
|
html.dark .Button.Button--danger:hover,html.dark .Button.Button--danger.is-hover{background-color:#a01744;border-color:#a01744}
|
||||||
html.dark .Button.Button--danger:active,html.dark .Button.Button--danger.is-active{box-shadow:0 0 0 2px white,0 0 0 4px #e0245e;background-color:#a01744;border-color:#a01744}
|
html.dark .Button.Button--danger:active,html.dark .Button.Button--danger.is-active{box-shadow:0 0 0 2px #fff,0 0 0 4px #e0245e;background-color:#a01744;border-color:#a01744}
|
||||||
html.dark .Button.Button--danger[disabled],html.dark .Button.Button--danger.is-disabled,html.dark fieldset[disabled] .Button.Button--danger{background-color:#e0245e;border-color:#e0245e}
|
html.dark .Button.Button--danger[disabled],html.dark .Button.Button--danger.is-disabled,html.dark fieldset[disabled] .Button.Button--danger{background-color:#e0245e;border-color:#e0245e}
|
||||||
html.dark .Button.Button--link{color:#1b95e0}
|
html.dark .Button.Button--link{color:#1b95e0}
|
||||||
html.dark .Button.Button--dangerLink{color:#e0245e}
|
html.dark .Button.Button--dangerLink{color:#e0245e}
|
||||||
@@ -768,8 +722,8 @@ html.dark .DateRange[dir='rtl'] .DateRange-pickersRow:first-child .DateRange-pic
|
|||||||
html.dark .PillGroup .Pill.is-selected{background:#005fd1}
|
html.dark .PillGroup .Pill.is-selected{background:#005fd1}
|
||||||
html.dark .PillGroup .Pill>a,html.dark .PillGroup .Pill>button{color:#1b95e0}
|
html.dark .PillGroup .Pill>a,html.dark .PillGroup .Pill>button{color:#1b95e0}
|
||||||
html.dark .PillGroup .Pill>a:hover,html.dark .PillGroup .Pill>button:hover{background:#eaf5fd}
|
html.dark .PillGroup .Pill>a:hover,html.dark .PillGroup .Pill>button:hover{background:#eaf5fd}
|
||||||
html.dark .PillGroup .Pill>a:focus,html.dark .PillGroup .Pill>button:focus{box-shadow:0 0 0 2px white,0 0 0 4px #71c9f8}
|
html.dark .PillGroup .Pill>a:focus,html.dark .PillGroup .Pill>button:focus{box-shadow:0 0 0 2px #fff,0 0 0 4px #71c9f8}
|
||||||
html.dark .PillGroup .Pill>a:active,html.dark .PillGroup .Pill>button:active{box-shadow:0 0 0 2px white,0 0 0 4px #1da1f2}
|
html.dark .PillGroup .Pill>a:active,html.dark .PillGroup .Pill>button:active{box-shadow:0 0 0 2px #fff,0 0 0 4px #1da1f2}
|
||||||
html.dark .PillGroup .Pill.is-selected>a,html.dark .PillGroup .Pill.is-selected>button{color:#FFF}
|
html.dark .PillGroup .Pill.is-selected>a,html.dark .PillGroup .Pill.is-selected>button{color:#FFF}
|
||||||
html.dark .FormInput,html.dark .FormTextarea{border:1px solid #ccd6dd;color:#14171a}
|
html.dark .FormInput,html.dark .FormTextarea{border:1px solid #ccd6dd;color:#14171a}
|
||||||
html.dark .FormInput-characterCount{color:#ccd6dd}
|
html.dark .FormInput-characterCount{color:#ccd6dd}
|
||||||
@@ -789,51 +743,51 @@ html.dark .FormInputWrapper-startAdornment,html.dark .FormInputWrapper-endAdornm
|
|||||||
html.dark .FormField.is-invalid .FormField-validationMessage{color:#e0245e}
|
html.dark .FormField.is-invalid .FormField-validationMessage{color:#e0245e}
|
||||||
html.dark .FormField.is-valid .FormField-validationMessage{color:#008951}
|
html.dark .FormField.is-valid .FormField-validationMessage{color:#008951}
|
||||||
html.dark .FormField-description{color:#657786}
|
html.dark .FormField-description{color:#657786}
|
||||||
html.dark .Token-checkbox input[type="checkbox"]:focus+.Icon{box-shadow:0 0 0 5px white,0 0 0 7px #71c9f8}
|
html.dark .Token-checkbox input[type="checkbox"]:focus+.Icon{box-shadow:0 0 0 5px #fff,0 0 0 7px #71c9f8}
|
||||||
html.dark .Token--small .Token-trigger input[type="checkbox"]:focus+.Icon,html.dark .TokenGroup--small>.Token .Token-trigger input[type="checkbox"]:focus+.Icon,html.dark .TokenGroup--small>.TokenGroup>.Token .Token-trigger input[type="checkbox"]:focus+.Icon{box-shadow:0 0 0 3px white,0 0 0 5px #71c9f8}
|
html.dark .Token--small .Token-trigger input[type="checkbox"]:focus+.Icon,html.dark .TokenGroup--small>.Token .Token-trigger input[type="checkbox"]:focus+.Icon,html.dark .TokenGroup--small>.TokenGroup>.Token .Token-trigger input[type="checkbox"]:focus+.Icon{box-shadow:0 0 0 3px #fff,0 0 0 5px #71c9f8}
|
||||||
html.dark .Token--xsmall .Token-trigger input[type="checkbox"]:focus+.Icon,html.dark .TokenGroup--xsmall>.Token .Token-trigger input[type="checkbox"]:focus+.Icon,html.dark .TokenGroup--xsmall>.TokenGroup>.Token .Token-trigger input[type="checkbox"]:focus+.Icon{box-shadow:0 0 0 0 white,0 0 0 2px #71c9f8}
|
html.dark .Token--xsmall .Token-trigger input[type="checkbox"]:focus+.Icon,html.dark .TokenGroup--xsmall>.Token .Token-trigger input[type="checkbox"]:focus+.Icon,html.dark .TokenGroup--xsmall>.TokenGroup>.Token .Token-trigger input[type="checkbox"]:focus+.Icon{box-shadow:0 0 0 0 #fff,0 0 0 2px #71c9f8}
|
||||||
html.dark .Token,html.dark .Token--blue{border-color:#1da1f2;color:#1da1f2}
|
html.dark .Token,html.dark .Token--blue{border-color:#1da1f2;color:#1da1f2}
|
||||||
html.dark .Token .Token-adornment,html.dark .Token--blue .Token-adornment{background-color:#1da1f2}
|
html.dark .Token .Token-adornment,html.dark .Token--blue .Token-adornment{background-color:#1da1f2}
|
||||||
html.dark .Token:hover,html.dark .Token--blue:hover{background-color:#97e3ff;color:#005fd1}
|
html.dark .Token:hover,html.dark .Token--blue:hover{background-color:#97e3ff;color:#005fd1}
|
||||||
html.dark .Token.is-selected,html.dark .Token--blue.is-selected{background-color:#1da1f2}
|
html.dark .Token.is-selected,html.dark .Token--blue.is-selected{background-color:#1da1f2}
|
||||||
html.dark .Token.is-selected .Token-adornment,html.dark .Token--blue.is-selected .Token-adornment{color:#1da1f2}
|
html.dark .Token.is-selected .Token-adornment,html.dark .Token--blue.is-selected .Token-adornment{color:#1da1f2}
|
||||||
html.dark .Token.is-selected:hover,html.dark .Token--blue.is-selected:hover{background-color:#005fd1;border-color:#005fd1}
|
html.dark .Token.is-selected:hover,html.dark .Token--blue.is-selected:hover{background-color:#005fd1;border-color:#005fd1}
|
||||||
html.dark .Token:focus,html.dark .Token--blue:focus,html.dark .Token.is-focused,html.dark .Token--blue.is-focused{box-shadow:0 0 0 1px white,0 0 0 3px #71c9f8}
|
html.dark .Token:focus,html.dark .Token--blue:focus,html.dark .Token.is-focused,html.dark .Token--blue.is-focused{box-shadow:0 0 0 1px #fff,0 0 0 3px #71c9f8}
|
||||||
html.dark .Token--green{border-color:#17bf63;color:#17bf63}
|
html.dark .Token--green{border-color:#17bf63;color:#17bf63}
|
||||||
html.dark .Token--green .Token-adornment{background-color:#17bf63}
|
html.dark .Token--green .Token-adornment{background-color:#17bf63}
|
||||||
html.dark .Token--green:hover{background-color:#a5f2aa;color:#008951}
|
html.dark .Token--green:hover{background-color:#a5f2aa;color:#008951}
|
||||||
html.dark .Token--green.is-selected{background-color:#17bf63}
|
html.dark .Token--green.is-selected{background-color:#17bf63}
|
||||||
html.dark .Token--green.is-selected .Token-adornment{color:#17bf63}
|
html.dark .Token--green.is-selected .Token-adornment{color:#17bf63}
|
||||||
html.dark .Token--green.is-selected:hover{background-color:#008951;border-color:#008951}
|
html.dark .Token--green.is-selected:hover{background-color:#008951;border-color:#008951}
|
||||||
html.dark .Token--green:focus,html.dark .Token--green.is-focused{box-shadow:0 0 0 1px white,0 0 0 3px #68e090}
|
html.dark .Token--green:focus,html.dark .Token--green.is-focused{box-shadow:0 0 0 1px #fff,0 0 0 3px #68e090}
|
||||||
html.dark .Token--red{border-color:#e0245e;color:#e0245e}
|
html.dark .Token--red{border-color:#e0245e;color:#e0245e}
|
||||||
html.dark .Token--red .Token-adornment{background-color:#e0245e}
|
html.dark .Token--red .Token-adornment{background-color:#e0245e}
|
||||||
html.dark .Token--red:hover{background-color:#ffb8c2;color:#a01744}
|
html.dark .Token--red:hover{background-color:#ffb8c2;color:#a01744}
|
||||||
html.dark .Token--red.is-selected{background-color:#e0245e}
|
html.dark .Token--red.is-selected{background-color:#e0245e}
|
||||||
html.dark .Token--red.is-selected .Token-adornment{color:#e0245e}
|
html.dark .Token--red.is-selected .Token-adornment{color:#e0245e}
|
||||||
html.dark .Token--red.is-selected:hover{background-color:#a01744;border-color:#a01744}
|
html.dark .Token--red.is-selected:hover{background-color:#a01744;border-color:#a01744}
|
||||||
html.dark .Token--red:focus,html.dark .Token--red.is-focused{box-shadow:0 0 0 1px white,0 0 0 3px #f6809a}
|
html.dark .Token--red:focus,html.dark .Token--red.is-focused{box-shadow:0 0 0 1px #fff,0 0 0 3px #f6809a}
|
||||||
html.dark .Token--purple{border-color:#794bc4;color:#794bc4}
|
html.dark .Token--purple{border-color:#794bc4;color:#794bc4}
|
||||||
html.dark .Token--purple .Token-adornment{background-color:#794bc4}
|
html.dark .Token--purple .Token-adornment{background-color:#794bc4}
|
||||||
html.dark .Token--purple:hover{background-color:#c7b4fa;color:#4f0299}
|
html.dark .Token--purple:hover{background-color:#c7b4fa;color:#4f0299}
|
||||||
html.dark .Token--purple.is-selected{background-color:#794bc4}
|
html.dark .Token--purple.is-selected{background-color:#794bc4}
|
||||||
html.dark .Token--purple.is-selected .Token-adornment{color:#794bc4}
|
html.dark .Token--purple.is-selected .Token-adornment{color:#794bc4}
|
||||||
html.dark .Token--purple.is-selected:hover{background-color:#4f0299;border-color:#4f0299}
|
html.dark .Token--purple.is-selected:hover{background-color:#4f0299;border-color:#4f0299}
|
||||||
html.dark .Token--purple:focus,html.dark .Token--purple.is-focused{box-shadow:0 0 0 1px white,0 0 0 3px #a37ced}
|
html.dark .Token--purple:focus,html.dark .Token--purple.is-focused{box-shadow:0 0 0 1px #fff,0 0 0 3px #a37ced}
|
||||||
html.dark .Token--yellow{border-color:#ffad1f;color:#ffad1f}
|
html.dark .Token--yellow{border-color:#ffad1f;color:#ffad1f}
|
||||||
html.dark .Token--yellow .Token-adornment{background-color:#ffad1f}
|
html.dark .Token--yellow .Token-adornment{background-color:#ffad1f}
|
||||||
html.dark .Token--yellow:hover{background-color:#ffe76e;color:#f98e00}
|
html.dark .Token--yellow:hover{background-color:#ffe76e;color:#f98e00}
|
||||||
html.dark .Token--yellow.is-selected{background-color:#ffad1f}
|
html.dark .Token--yellow.is-selected{background-color:#ffad1f}
|
||||||
html.dark .Token--yellow.is-selected .Token-adornment{color:#ffad1f}
|
html.dark .Token--yellow.is-selected .Token-adornment{color:#ffad1f}
|
||||||
html.dark .Token--yellow.is-selected:hover{background-color:#f98e00;border-color:#f98e00}
|
html.dark .Token--yellow.is-selected:hover{background-color:#f98e00;border-color:#f98e00}
|
||||||
html.dark .Token--yellow:focus,html.dark .Token--yellow.is-focused{box-shadow:0 0 0 1px white,0 0 0 3px #ffd03f}
|
html.dark .Token--yellow:focus,html.dark .Token--yellow.is-focused{box-shadow:0 0 0 1px #fff,0 0 0 3px #ffd03f}
|
||||||
html.dark .Token--gray{border-color:#657786;color:#657786}
|
html.dark .Token--gray{border-color:#657786;color:#657786}
|
||||||
html.dark .Token--gray .Token-adornment{background-color:#657786}
|
html.dark .Token--gray .Token-adornment{background-color:#657786}
|
||||||
html.dark .Token--gray:hover{background-color:#e6ecf0;color:#657786}
|
html.dark .Token--gray:hover{background-color:#e6ecf0;color:#657786}
|
||||||
html.dark .Token--gray.is-selected{background-color:#657786}
|
html.dark .Token--gray.is-selected{background-color:#657786}
|
||||||
html.dark .Token--gray.is-selected .Token-adornment{color:#657786}
|
html.dark .Token--gray.is-selected .Token-adornment{color:#657786}
|
||||||
html.dark .Token--gray.is-selected:hover{background-color:#aab8c2;border-color:#aab8c2}
|
html.dark .Token--gray.is-selected:hover{background-color:#aab8c2;border-color:#aab8c2}
|
||||||
html.dark .Token--gray:focus,html.dark .Token--gray.is-focused{box-shadow:0 0 0 1px white,0 0 0 3px #aab8c2}
|
html.dark .Token--gray:focus,html.dark .Token--gray.is-focused{box-shadow:0 0 0 1px #fff,0 0 0 3px #aab8c2}
|
||||||
html.dark .FormTokenInput-input::-webkit-input-placeholder{color:#aab8c2}
|
html.dark .FormTokenInput-input::-webkit-input-placeholder{color:#aab8c2}
|
||||||
html.dark .DataPoint .DataPoint-label{color:#657786}
|
html.dark .DataPoint .DataPoint-label{color:#657786}
|
||||||
html.dark .DataPoint .DataPoint-info{color:#14171a}
|
html.dark .DataPoint .DataPoint-info{color:#14171a}
|
||||||
@@ -843,7 +797,7 @@ html.dark .DataPoint--withBottomBorder{border-bottom:1px solid #ccd6dd}
|
|||||||
html.dark .FormTokenInput.FormTextarea::-webkit-input-placeholder{color:#8899A6}
|
html.dark .FormTokenInput.FormTextarea::-webkit-input-placeholder{color:#8899A6}
|
||||||
html.dark .FormTokenInput.FormTextarea::placeholder{color:#8899A6}
|
html.dark .FormTokenInput.FormTextarea::placeholder{color:#8899A6}
|
||||||
html.dark .DatePicker.date-unselected .is-rangeStart,html.dark .DatePicker.date-unselected .is-rangeEnd{color:#14171a}
|
html.dark .DatePicker.date-unselected .is-rangeStart,html.dark .DatePicker.date-unselected .is-rangeEnd{color:#14171a}
|
||||||
html.dark .DatePicker.date-unselected .is-rangeStart:hover,html.dark .DatePicker.date-unselected .is-rangeEnd:hover{background-color:#005091;color:#ffffff}
|
html.dark .DatePicker.date-unselected .is-rangeStart:hover,html.dark .DatePicker.date-unselected .is-rangeEnd:hover{background-color:#005091;color:#fff}
|
||||||
html.dark .NotificationList .Notification-body{color:#14171A}
|
html.dark .NotificationList .Notification-body{color:#14171A}
|
||||||
html.dark .DrawerModal{color:#14171A}
|
html.dark .DrawerModal{color:#14171A}
|
||||||
/* fixes */
|
/* fixes */
|
||||||
|
@@ -1,18 +1,12 @@
|
|||||||
[name]
|
[name]
|
||||||
Emoji keyboard
|
Emoji picker
|
||||||
|
|
||||||
[description]
|
[description]
|
||||||
- Adds an emoji keyboard when writing tweets
|
Adds a button that opens an emoji picker in the New Tweet panel.
|
||||||
- Emoji list provided by http://unicode.org/emoji/charts/emoji-ordering.html
|
Use :short_codes: to quickly add emoji when writing tweets.
|
||||||
|
|
||||||
[author]
|
[author]
|
||||||
chylex
|
chylex
|
||||||
|
|
||||||
[version]
|
|
||||||
1.4.4
|
|
||||||
|
|
||||||
[website]
|
|
||||||
https://tweetduck.chylex.com
|
|
||||||
|
|
||||||
[requires]
|
[requires]
|
||||||
1.5.3
|
{version}
|
@@ -26,12 +26,13 @@ enabled(){
|
|||||||
this.emojiData3 = []; // no skin tones, appended
|
this.emojiData3 = []; // no skin tones, appended
|
||||||
this.emojiNames = [];
|
this.emojiNames = [];
|
||||||
|
|
||||||
var me = this;
|
const me = this;
|
||||||
|
|
||||||
// styles
|
// styles
|
||||||
|
|
||||||
this.css = window.TDPF_createCustomStyle(this);
|
this.css = window.TDPF_createCustomStyle(this);
|
||||||
this.css.insert(".emoji-keyboard { position: absolute; width: 15.35em; background-color: white; border-radius: 1px; font-size: 24px; z-index: 9999 }");
|
this.css.insert(".emoji-keyboard { position: absolute; width: 15.35em; background-color: white; border-radius: 1px; font-size: 24px; z-index: 9999 }");
|
||||||
|
this.css.insert(".emoji-keyboard-popup-btn { height: 36px !important }");
|
||||||
this.css.insert(".emoji-keyboard-popup-btn .icon { vertical-align: -4px !important }");
|
this.css.insert(".emoji-keyboard-popup-btn .icon { vertical-align: -4px !important }");
|
||||||
|
|
||||||
this.css.insert(".emoji-keyboard-list { height: 10.14em; padding: 0.1em; box-sizing: border-box; overflow-y: auto }");
|
this.css.insert(".emoji-keyboard-list { height: 10.14em; padding: 0.1em; box-sizing: border-box; overflow-y: auto }");
|
||||||
@@ -50,12 +51,12 @@ enabled(){
|
|||||||
|
|
||||||
// layout
|
// layout
|
||||||
|
|
||||||
var buttonHTML = '<button class="needsclick btn btn-on-blue txt-left padding-v--6 padding-h--8 emoji-keyboard-popup-btn"><i class="icon icon-heart"></i></button>';
|
let buttonHTML = '<button class="needsclick btn btn-on-blue txt-left padding-v--6 padding-h--8 emoji-keyboard-popup-btn"><i class="icon icon-heart"></i></button>';
|
||||||
|
|
||||||
this.prevComposeMustache = TD.mustaches["compose/docked_compose.mustache"];
|
this.prevComposeMustache = TD.mustaches["compose/docked_compose.mustache"];
|
||||||
TD.mustaches["compose/docked_compose.mustache"] = TD.mustaches["compose/docked_compose.mustache"].replace('<div class="cf margin-t--12 margin-b--30">', '<div class="cf margin-t--12 margin-b--30">'+buttonHTML);
|
window.TDPF_injectMustache("compose/docked_compose.mustache", "append", '<div class="cf margin-t--12 margin-b--30">', buttonHTML);
|
||||||
|
|
||||||
var maybeDockedComposePanel = $(".js-docked-compose");
|
let maybeDockedComposePanel = $(".js-docked-compose");
|
||||||
|
|
||||||
if (maybeDockedComposePanel.length){
|
if (maybeDockedComposePanel.length){
|
||||||
maybeDockedComposePanel.find(".cf.margin-t--12.margin-b--30").first().append(buttonHTML);
|
maybeDockedComposePanel.find(".cf.margin-t--12.margin-b--30").first().append(buttonHTML);
|
||||||
@@ -66,10 +67,10 @@ enabled(){
|
|||||||
this.currentKeyboard = null;
|
this.currentKeyboard = null;
|
||||||
this.currentSpanner = null;
|
this.currentSpanner = null;
|
||||||
|
|
||||||
var wasSearchFocused = false;
|
let wasSearchFocused = false;
|
||||||
var lastEmojiKeyword, lastEmojiPosition, lastEmojiLength;
|
let lastEmojiKeyword, lastEmojiPosition, lastEmojiLength;
|
||||||
|
|
||||||
var hideKeyboard = (refocus) => {
|
const hideKeyboard = (refocus) => {
|
||||||
$(this.currentKeyboard).remove();
|
$(this.currentKeyboard).remove();
|
||||||
this.currentKeyboard = null;
|
this.currentKeyboard = null;
|
||||||
|
|
||||||
@@ -93,7 +94,7 @@ enabled(){
|
|||||||
lastEmojiKeyword = null;
|
lastEmojiKeyword = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
var generateEmojiHTML = skinTone => {
|
const generateEmojiHTML = skinTone => {
|
||||||
let index = 0;
|
let index = 0;
|
||||||
let html = [ "<p style='font-size:13px;color:#444;margin:4px;text-align:center'>Please, note that some emoji may not show up correctly in the text box above, but they will display in the tweet.</p>" ];
|
let html = [ "<p style='font-size:13px;color:#444;margin:4px;text-align:center'>Please, note that some emoji may not show up correctly in the text box above, but they will display in the tweet.</p>" ];
|
||||||
|
|
||||||
@@ -112,7 +113,7 @@ enabled(){
|
|||||||
return html.join("");
|
return html.join("");
|
||||||
};
|
};
|
||||||
|
|
||||||
var updateFilters = () => {
|
const updateFilters = () => {
|
||||||
let keywords = this.currentKeywords;
|
let keywords = this.currentKeywords;
|
||||||
let container = $(this.currentKeyboard.children[1]);
|
let container = $(this.currentKeyboard.children[1]);
|
||||||
|
|
||||||
@@ -134,7 +135,7 @@ enabled(){
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var selectSkinTone = skinTone => {
|
const selectSkinTone = skinTone => {
|
||||||
let selectedEle = this.currentKeyboard.children[2].querySelector("[data-tone='"+this.selectedSkinTone+"']");
|
let selectedEle = this.currentKeyboard.children[2].querySelector("[data-tone='"+this.selectedSkinTone+"']");
|
||||||
selectedEle && selectedEle.classList.remove("sel");
|
selectedEle && selectedEle.classList.remove("sel");
|
||||||
|
|
||||||
@@ -145,12 +146,12 @@ enabled(){
|
|||||||
};
|
};
|
||||||
|
|
||||||
this.generateKeyboard = (left, top) => {
|
this.generateKeyboard = (left, top) => {
|
||||||
var outer = document.createElement("div");
|
let outer = document.createElement("div");
|
||||||
outer.classList.add("emoji-keyboard");
|
outer.classList.add("emoji-keyboard");
|
||||||
outer.style.left = left+"px";
|
outer.style.left = left+"px";
|
||||||
outer.style.top = top+"px";
|
outer.style.top = top+"px";
|
||||||
|
|
||||||
var keyboard = document.createElement("div");
|
let keyboard = document.createElement("div");
|
||||||
keyboard.classList.add("emoji-keyboard-list");
|
keyboard.classList.add("emoji-keyboard-list");
|
||||||
|
|
||||||
keyboard.addEventListener("click", function(e){
|
keyboard.addEventListener("click", function(e){
|
||||||
@@ -163,11 +164,11 @@ enabled(){
|
|||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
});
|
});
|
||||||
|
|
||||||
var search = document.createElement("div");
|
let search = document.createElement("div");
|
||||||
search.innerHTML = "<input type='text' placeholder='Search...'>";
|
search.innerHTML = "<input type='text' placeholder='Search...'>";
|
||||||
search.classList.add("emoji-keyboard-search");
|
search.classList.add("emoji-keyboard-search");
|
||||||
|
|
||||||
var skintones = document.createElement("div");
|
let skintones = document.createElement("div");
|
||||||
skintones.innerHTML = me.skinToneData.map(entry => "<div data-tone='"+entry[0]+"' style='background-color:"+entry[1]+"'></div>").join("");
|
skintones.innerHTML = me.skinToneData.map(entry => "<div data-tone='"+entry[0]+"' style='background-color:"+entry[1]+"'></div>").join("");
|
||||||
skintones.classList.add("emoji-keyboard-skintones");
|
skintones.classList.add("emoji-keyboard-skintones");
|
||||||
|
|
||||||
@@ -188,7 +189,7 @@ enabled(){
|
|||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
});
|
});
|
||||||
|
|
||||||
var searchInput = search.children[0];
|
let searchInput = search.children[0];
|
||||||
searchInput.focus();
|
searchInput.focus();
|
||||||
|
|
||||||
wasSearchFocused = false;
|
wasSearchFocused = false;
|
||||||
@@ -231,21 +232,21 @@ enabled(){
|
|||||||
this.composePanelScroller.trigger("scroll");
|
this.composePanelScroller.trigger("scroll");
|
||||||
};
|
};
|
||||||
|
|
||||||
var getKeyboardTop = () => {
|
const getKeyboardTop = () => {
|
||||||
let button = $(".emoji-keyboard-popup-btn");
|
let button = $(".emoji-keyboard-popup-btn");
|
||||||
return button.offset().top+button.outerHeight()+me.composePanelScroller.scrollTop()+8;
|
return button.offset().top+button.outerHeight()+me.composePanelScroller.scrollTop()+8;
|
||||||
};
|
};
|
||||||
|
|
||||||
var insertEmoji = (src, alt) => {
|
const insertEmoji = (src, alt) => {
|
||||||
let input = this.composeInput;
|
let input = this.composeInput;
|
||||||
|
|
||||||
let val = input.val();
|
let val = input.val();
|
||||||
let posStart = input[0].selectionStart;
|
let posStart = input[0].selectionStart;
|
||||||
let posEnd = input[0].selectionEnd;
|
let posEnd = input[0].selectionEnd;
|
||||||
|
|
||||||
input.val(val.slice(0, posStart)+alt+val.slice(posEnd));
|
input.val(val.slice(0, posStart)+alt+val.slice(posEnd));
|
||||||
input.trigger("change");
|
input.trigger("change");
|
||||||
|
|
||||||
input[0].selectionStart = posStart+alt.length;
|
input[0].selectionStart = posStart+alt.length;
|
||||||
input[0].selectionEnd = posStart+alt.length;
|
input[0].selectionEnd = posStart+alt.length;
|
||||||
|
|
||||||
@@ -287,7 +288,7 @@ enabled(){
|
|||||||
if (ele.selectionStart === lastEmojiPosition){
|
if (ele.selectionStart === lastEmojiPosition){
|
||||||
ele.selectionStart -= lastEmojiLength; // selects the emoji
|
ele.selectionStart -= lastEmojiLength; // selects the emoji
|
||||||
document.execCommand("insertText", false, lastEmojiKeyword);
|
document.execCommand("insertText", false, lastEmojiKeyword);
|
||||||
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
}
|
}
|
||||||
@@ -417,7 +418,7 @@ ready(){
|
|||||||
|
|
||||||
// HTML generation
|
// HTML generation
|
||||||
|
|
||||||
var convUnicode = function(codePt){
|
const convUnicode = function(codePt){
|
||||||
if (codePt > 0xFFFF){
|
if (codePt > 0xFFFF){
|
||||||
codePt -= 0x10000;
|
codePt -= 0x10000;
|
||||||
return String.fromCharCode(0xD800+(codePt>>10), 0xDC00+(codePt&0x3FF));
|
return String.fromCharCode(0xD800+(codePt>>10), 0xDC00+(codePt&0x3FF));
|
||||||
@@ -488,7 +489,7 @@ ready(){
|
|||||||
|
|
||||||
if (skinToneState === 1){
|
if (skinToneState === 1){
|
||||||
let skinIndex = decl.indexOf('$');
|
let skinIndex = decl.indexOf('$');
|
||||||
|
|
||||||
if (skinIndex !== -1){
|
if (skinIndex !== -1){
|
||||||
let declPre = decl.slice(0, skinIndex);
|
let declPre = decl.slice(0, skinIndex);
|
||||||
let declPost = decl.slice(skinIndex+1);
|
let declPost = decl.slice(skinIndex+1);
|
||||||
|
@@ -1,17 +1,11 @@
|
|||||||
[name]
|
[name]
|
||||||
Custom reply account
|
Customizable reply account
|
||||||
|
|
||||||
[description]
|
|
||||||
- Allows customizing the automatically selected reply account per column
|
|
||||||
|
|
||||||
[author]
|
[author]
|
||||||
chylex
|
chylex
|
||||||
|
|
||||||
[version]
|
[description]
|
||||||
1.2.4
|
Allows configuring which account is pre-selected for replies in each column.
|
||||||
|
|
||||||
[website]
|
|
||||||
https://tweetduck.chylex.com
|
|
||||||
|
|
||||||
[configfile]
|
[configfile]
|
||||||
configuration.js
|
configuration.js
|
||||||
@@ -20,4 +14,4 @@ configuration.js
|
|||||||
configuration.default.js
|
configuration.default.js
|
||||||
|
|
||||||
[requires]
|
[requires]
|
||||||
1.10.3
|
{version}
|
@@ -1,5 +1,5 @@
|
|||||||
enabled(){
|
enabled(){
|
||||||
var configuration = { defaultAccount: "#preferred" };
|
let configuration = { defaultAccount: "#preferred" };
|
||||||
|
|
||||||
window.TDPF_loadConfigurationFile(this, "configuration.js", "configuration.default.js", obj => configuration = obj);
|
window.TDPF_loadConfigurationFile(this, "configuration.js", "configuration.default.js", obj => configuration = obj);
|
||||||
|
|
||||||
@@ -8,34 +8,49 @@ enabled(){
|
|||||||
this.uiComposeTweetEvent = (e, data) => {
|
this.uiComposeTweetEvent = (e, data) => {
|
||||||
return if !(data.type === "reply" || (data.type === "tweet" && "quotedTweet" in data)) || data.popFromInline || !("element" in data);
|
return if !(data.type === "reply" || (data.type === "tweet" && "quotedTweet" in data)) || data.popFromInline || !("element" in data);
|
||||||
|
|
||||||
var query;
|
let query;
|
||||||
|
|
||||||
if (configuration.useAdvancedSelector){
|
if (configuration.useAdvancedSelector){
|
||||||
if (configuration.customSelector){
|
if (configuration.customSelector){
|
||||||
if (configuration.customSelector.toString().startsWith("function (column){")){
|
let customSelectorDef = configuration.customSelector.toString();
|
||||||
|
|
||||||
|
if (customSelectorDef.startsWith("function (column){")){
|
||||||
$TD.alert("warning", "Plugin reply-account has invalid configuration: customSelector needs to be updated due to TweetDeck changes, please read the default configuration file for the updated guide");
|
$TD.alert("warning", "Plugin reply-account has invalid configuration: customSelector needs to be updated due to TweetDeck changes, please read the default configuration file for the updated guide");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else if (customSelectorDef.startsWith("function (type,")){
|
||||||
var section = data.element.closest("section.js-column");
|
$TD.alert("warning", "Plugin reply-account has invalid configuration: the type parameter is no longer present due to TweetDeck changes, please read the default configuration file for the updated guide");
|
||||||
|
return;
|
||||||
var column = TD.controller.columnManager.get(section.attr("data-column"));
|
|
||||||
var header = $(".column-title", section);
|
|
||||||
var title = header.children(".column-head-title");
|
|
||||||
|
|
||||||
var columnTitle, columnAccount;
|
|
||||||
|
|
||||||
if (title.length){
|
|
||||||
columnTitle = title.text();
|
|
||||||
columnAccount = header.children(".attribution").text();
|
|
||||||
}
|
}
|
||||||
else{
|
|
||||||
columnTitle = header.children(".column-title-edit-box").val();
|
let section = data.element.closest("section.js-column");
|
||||||
columnAccount = "";
|
let column = TD.controller.columnManager.get(section.attr("data-column"));
|
||||||
|
|
||||||
|
let feeds = column.getFeeds();
|
||||||
|
let accountText = "";
|
||||||
|
|
||||||
|
if (feeds.length === 1){
|
||||||
|
let metadata = feeds[0].getMetadata();
|
||||||
|
let id = metadata.ownerId || metadata.id;
|
||||||
|
|
||||||
|
if (id){
|
||||||
|
accountText = TD.cache.names.getScreenName(id);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
let account = TD.storage.accountController.get(feeds[0].getAccountKey());
|
||||||
|
|
||||||
|
if (account){
|
||||||
|
accountText = "@"+account.getUsername();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let header = $(".column-header-title", section);
|
||||||
|
let title = header.children(".column-heading");
|
||||||
|
let titleText = title.length ? title.text() : header.children(".column-title-edit-box").val();
|
||||||
|
|
||||||
try{
|
try{
|
||||||
query = configuration.customSelector(column.getColumnType(), columnTitle, columnAccount, column, section.hasClass("column-temp"));
|
query = configuration.customSelector(titleText, accountText, column, section.hasClass("column-temp"));
|
||||||
}catch(e){
|
}catch(e){
|
||||||
$TD.alert("warning", "Plugin reply-account has invalid configuration: customSelector threw an error: "+e.message);
|
$TD.alert("warning", "Plugin reply-account has invalid configuration: customSelector threw an error: "+e.message);
|
||||||
return;
|
return;
|
||||||
@@ -73,7 +88,7 @@ enabled(){
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var identifier = null;
|
let identifier = null;
|
||||||
|
|
||||||
switch(query){
|
switch(query){
|
||||||
case "#preferred":
|
case "#preferred":
|
||||||
@@ -91,7 +106,7 @@ enabled(){
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
if (query[0] === '@'){
|
if (query[0] === '@'){
|
||||||
var obj = TD.storage.accountController.getAccountFromUsername(query.substring(1));
|
let obj = TD.storage.accountController.getAccountFromUsername(query.substring(1));
|
||||||
|
|
||||||
if (obj.length === 0){
|
if (obj.length === 0){
|
||||||
$TD.alert("warning", "Plugin reply-account has invalid configuration: requested account not found: "+query);
|
$TD.alert("warning", "Plugin reply-account has invalid configuration: requested account not found: "+query);
|
||||||
@@ -111,7 +126,7 @@ enabled(){
|
|||||||
};
|
};
|
||||||
|
|
||||||
this.onSelectedAccountChanged = () => {
|
this.onSelectedAccountChanged = () => {
|
||||||
var selected = $(".js-account-item.is-selected", ".js-account-list");
|
let selected = $(".js-account-item.is-selected", ".js-account-list");
|
||||||
this.lastSelectedAccount = selected.length === 1 ? selected.attr("data-account-key") : null;
|
this.lastSelectedAccount = selected.length === 1 ? selected.attr("data-account-key") : null;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@@ -30,14 +30,12 @@
|
|||||||
* https://tweetduck.chylex.com/guide/#dev-tools
|
* https://tweetduck.chylex.com/guide/#dev-tools
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* The 'type' parameter is TweetDeck column type. Here is the full list of column types, note that some are
|
* In order to check the column type, use the 'window.TDPF_getColumnName(column)' function. List of available names:
|
||||||
* unused and have misleading names (for example, Home columns are 'col_timeline' instead of 'col_home'):
|
* Home, Mentions, Messages, Notifications, Followers, Activity, Likes,
|
||||||
* col_timeline, col_interactions, col_mentions, col_followers, col_search, col_list,
|
* User, Search, List, Timeline, Dataminr, Live video, Scheduled
|
||||||
* col_customtimeline, col_messages, col_usertweets, col_favorites, col_activity,
|
|
||||||
* col_dataminr, col_home, col_me, col_inbox, col_scheduled, col_unknown
|
|
||||||
*
|
*
|
||||||
* If you want to see your current column types, run this in your browser console:
|
* If you want to see your current column types, run the following code in your browser console:
|
||||||
* TD.controller.columnManager.getAllOrdered().map(obj => obj.getColumnType());
|
* TD.controller.columnManager.getAllOrdered().map(window.TDPF_getColumnName)
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* The 'title' parameter is the column title. Some are fixed (such as 'Home' or 'Notifications'),
|
* The 'title' parameter is the column title. Some are fixed (such as 'Home' or 'Notifications'),
|
||||||
@@ -55,22 +53,22 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* The 'isTemporary' parameter is true if the column is not attached to the main column list,
|
* The 'isTemporary' parameter is true if the column is not attached to the main column list,
|
||||||
* for example when clicking on a profile and viewing their tweets in a modal dialog.
|
* for example when clicking on a user and viewing their tweets in a modal dialog.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
useAdvancedSelector: false,
|
useAdvancedSelector: false,
|
||||||
|
|
||||||
customSelector: function(type, title, account, column, isTemporary){
|
customSelector: function(title, account, column, isTemporary){
|
||||||
console.info(arguments); // Prints all arguments into the console
|
console.info(arguments); // Prints all arguments into the console
|
||||||
|
|
||||||
if (type === "col_search" && title === "TweetDuck"){
|
if (title === "TweetDuck" && window.TDPF_getColumnName(column) === "Search"){
|
||||||
// This is a search column that looks for 'TweetDuck' in the tweets,
|
// This is a search column that looks for 'TweetDuck' in the tweets,
|
||||||
// search columns are normally linked to the preferred account
|
// search columns are normally linked to the preferred account
|
||||||
// so this forces the @TryTweetDuck account to be used instead
|
// so this forces the @TryTweetDuck account to be used instead
|
||||||
return "@TryTweetDuck";
|
return "@TryTweetDuck";
|
||||||
}
|
}
|
||||||
else if (type === "col_timeline" && account === "@chylexcz"){
|
else if (account === "@chylexcz" && window.TDPF_getColumnName(column) === "Home"){
|
||||||
// This is a Home column of my test account @chylexcz,
|
// This is a Home column of my test account @chylexcz,
|
||||||
// but I want to reply to tweets from my official account
|
// but I want to reply to tweets from my official account
|
||||||
return "@chylexmc";
|
return "@chylexmc";
|
||||||
|
@@ -1,17 +1,11 @@
|
|||||||
[name]
|
[name]
|
||||||
Templates
|
Tweet templates
|
||||||
|
|
||||||
[description]
|
[description]
|
||||||
- Adds a templating system for tweets
|
Adds a [Manage templates] button to the New Tweet panel.
|
||||||
|
|
||||||
[author]
|
[author]
|
||||||
chylex
|
chylex
|
||||||
|
|
||||||
[version]
|
|
||||||
1.0.4
|
|
||||||
|
|
||||||
[website]
|
|
||||||
https://tweetduck.chylex.com
|
|
||||||
|
|
||||||
[requires]
|
[requires]
|
||||||
1.5.3
|
{version}
|