Here are the examples of the csharp api System.Windows.Forms.Control.BeginInvoke(System.Delegate) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
518 Examples
19
Source : GenericViewRenderer.cs
with GNU General Public License v3.0
from BRH-Media
with GNU General Public License v3.0
from BRH-Media
private static void DoDataBind(DataGridView target, DataTable bindData, GenericRenderStruct info)
{
try
{
//check if the DataGridView needs to be invoked first
if (target.InvokeRequired)
//invoke the DataGridView so we don't thread-lock
target.BeginInvoke((MethodInvoker)delegate { DoDataBind(target, bindData, info); });
else
{
//we don't need to invoke, so just continue without it.
//bind the data to the grid ("render" the data)
target.DataSource = bindData;
//set the captions
Methods.SetHeaderText(target, info.Data);
//re-render the control
target.Refresh();
}
}
catch (Exception ex)
{
//log and do nothing
LoggingHelpers.RecordException(ex.Message, @"GenericViewRendererBindError");
}
}
19
Source : ServerViewRenderer.cs
with GNU General Public License v3.0
from BRH-Media
with GNU General Public License v3.0
from BRH-Media
public static void RenderView(List<Server> data, bool renderTokenColumn, DataGridView target)
{
var name = new DataColumn("Name", typeof(string));
var address = new DataColumn("Address", typeof(string));
var port = new DataColumn("Port", typeof(string));
var token = new DataColumn("Token", typeof(string));
var dgvBind = new DataTable("Servers");
dgvBind.Columns.Add(name);
dgvBind.Columns.Add(address);
dgvBind.Columns.Add(port);
if (renderTokenColumn)
dgvBind.Columns.Add(token);
foreach (var r1 in data)
if (renderTokenColumn)
dgvBind.Rows.Add(r1.name, r1.address, r1.port.ToString(), r1.accessToken);
else
dgvBind.Rows.Add(r1.name, r1.address, r1.port.ToString());
if (target.InvokeRequired)
{
target.BeginInvoke((MethodInvoker)delegate
{
target.DataSource = dgvBind;
Methods.SortingEnabled(target, false);
target.Refresh();
});
}
else
{
target.DataSource = dgvBind;
Methods.SortingEnabled(target, false);
target.Refresh();
}
}
19
Source : FrmShowText.cs
with MIT License
from cdmxz
with MIT License
from cdmxz
private async void SleepAsync()
{
await Task.Run(() =>
{
try
{
double opacity = 0.0;// 窗口透明度
while ((opacity += 0.2) <= 1.0 && !CloseWindowFlag) // 窗体渐变效果
{
if (this.IsHandleCreated) // 判断窗口句柄是否存在
this.Invoke(new Action(() => SetOpacity(opacity)));
Thread.Sleep(200);
}
while (showMillisec > 0 && !CloseWindowFlag)
{
Thread.Sleep(50);
showMillisec -= 50;
}
while (IsKeyDown(Keys.ControlKey) && !CloseWindowFlag) // 如果按下键则等待键松开再关闭窗口
Thread.Sleep(50);
// 关闭主窗口的文字转语音
FrmMain frmMain = (FrmMain)this.Owner;
frmMain.CloseSpeak();
if (this.IsHandleCreated) // 判断窗口句柄是否存在
this.BeginInvoke(new Action(CloseWindow));
}
catch
{
return;
}
});
}
19
Source : MainForm.cs
with MIT License
from chrisnas
with MIT License
from chrisnas
private void OnAccessResource(object state)
{
Random r = new Random();
while (true)
{
_continueDeadlock.WaitOne();
object[] parameters = (object[])state;
int id = (int)parameters[0];
lock (parameters[1])
{
_resource1++;
lock (parameters[2])
{
_resource2++;
this.BeginInvoke(
(Action)(() =>
{
tbResult.Text = $"[{id}] - {_resource1} | {_resource2}";
})
);
Thread.Sleep((int)(500 + r.NextDouble() * 1000));
}
}
}
}
19
Source : ExplorerBrowser.cs
with GNU General Public License v3.0
from CitizensReactor
with GNU General Public License v3.0
from CitizensReactor
protected override void OnCreateControl()
{
base.OnCreateControl();
if (this.DesignMode == false)
{
explorerBrowserControl = new ExplorerBrowserClreplaced();
// hooks up IExplorerPaneVisibility and ICommDlgBrowser event notifications
ExplorerBrowserNativeMethods.IUnknown_SetSite(explorerBrowserControl, this);
// hooks up IExplorerBrowserEvents event notification
explorerBrowserControl.Advise(
Marshal.GetComInterfaceForObject(this, typeof(IExplorerBrowserEvents)),
out eventsCookie);
// sets up ExplorerBrowser view connection point events
viewEvents = new ExplorerBrowserViewEvents(this);
NativeRect rect = new NativeRect();
rect.Top = ClientRectangle.Top;
rect.Left = ClientRectangle.Left;
rect.Right = ClientRectangle.Right;
rect.Bottom = ClientRectangle.Bottom;
explorerBrowserControl.Initialize(this.Handle, ref rect, null);
// Force an initial show frames so that IExplorerPaneVisibility works the first time it is set.
// This also enables the control panel to be browsed to. If it is not set, then navigating to
// the control panel succeeds, but no items are visible in the view.
explorerBrowserControl.SetOptions(ExplorerBrowserOptions.ShowFrames);
explorerBrowserControl.SetPropertyBag(propertyBagName);
if (antecreationNavigationTarget != null)
{
BeginInvoke(new MethodInvoker(
delegate
{
Navigate(antecreationNavigationTarget);
antecreationNavigationTarget = null;
}));
}
}
Application.AddMessageFilter(this);
}
19
Source : FrmMain.cs
with MIT License
from cixingguangming55555
with MIT License
from cixingguangming55555
public void RunUi(Action action)
{
BeginInvoke(action);
}
19
Source : TextArea.cs
with MIT License
from codewitch-honey-crisis
with MIT License
from codewitch-honey-crisis
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
int currentXPos = 0;
int currentYPos = 0;
bool adjustScrollBars = false;
Graphics g = e.Graphics;
Rectangle clipRectangle = e.ClipRectangle;
bool isFullRepaint = clipRectangle.X == 0 && clipRectangle.Y == 0
&& clipRectangle.Width == this.Width && clipRectangle.Height == this.Height;
g.TextRenderingHint = this.TextEditorProperties.TextRenderingHint;
if (updateMargin != null) {
updateMargin.Paint(g, updateMargin.DrawingPosition);
// clipRectangle.Intersect(updateMargin.DrawingPosition);
}
if (clipRectangle.Width <= 0 || clipRectangle.Height <= 0) {
return;
}
foreach (AbstractMargin margin in leftMargins) {
if (margin.IsVisible) {
Rectangle marginRectangle = new Rectangle(currentXPos , currentYPos, margin.Size.Width, Height - currentYPos);
if (marginRectangle != margin.DrawingPosition) {
// margin changed size
if (!isFullRepaint && !clipRectangle.Contains(marginRectangle)) {
Invalidate(); // do a full repaint
}
adjustScrollBars = true;
margin.DrawingPosition = marginRectangle;
}
currentXPos += margin.DrawingPosition.Width;
if (clipRectangle.IntersectsWith(marginRectangle)) {
marginRectangle.Intersect(clipRectangle);
if (!marginRectangle.IsEmpty) {
margin.Paint(g, marginRectangle);
}
}
}
}
Rectangle textViewArea = new Rectangle(currentXPos, currentYPos, Width - currentXPos, Height - currentYPos);
if (textViewArea != textView.DrawingPosition) {
adjustScrollBars = true;
textView.DrawingPosition = textViewArea;
// update caret position (but outside of WM_PAINT!)
BeginInvoke((MethodInvoker)caret.UpdateCaretPosition);
}
if (clipRectangle.IntersectsWith(textViewArea)) {
textViewArea.Intersect(clipRectangle);
if (!textViewArea.IsEmpty) {
textView.Paint(g, textViewArea);
}
}
if (adjustScrollBars) {
this.motherTextAreaControl.AdjustScrollBars();
}
// we cannot update the caret position here, it's not allowed to call the caret API inside WM_PAINT
//Caret.UpdateCaretPosition();
base.OnPaint(e);
}
19
Source : Main.cs
with MIT License
from codewitch-honey-crisis
with MIT License
from codewitch-honey-crisis
async void _HandleTestLL1Parser(object sender, EventArgs e)
{
var fname = _GetFilename(fileTabs.SelectedTab);
var ext = Path.GetExtension(fname).ToLowerInvariant();
var name = Path.GetFileNameWithoutExtension(fname);
var input = ActiveEditor.Text;
var prog = new Progress();
prog.Show(this);
var test = new Test();
test.Text = string.Concat(test.Text, " - ", fname);
var sb = new StringBuilder();
var hasErrors = false;
messages.Items.Clear();
await Task.Run((Action)(() =>
{
switch (ext)
{
case ".xbnf":
input = _XbnfToPck(input, fname, prog);
if (null == input)
break;
goto case ".pck";
case ".pck":
var cfg = CfgDoreplacedent.Parse(input);
if (ext == ".pck")
cfg.SetFilename(fname);
var lex = LexDoreplacedent.Parse(input);
foreach (var msg in cfg.TryValidateLL1())
{
if (ErrorLevel.Error == msg.ErrorLevel)
hasErrors = true;
var n = fname;
_AddMessage(msg);
}
if (!hasErrors)
{
foreach (var msg in cfg.TryPrepareLL1(new _LL1Progress(prog)))
{
if (ErrorLevel.Error == msg.ErrorLevel)
hasErrors = true;
var n = fname;
_AddMessage(msg);
}
}
if (!hasErrors)
{
var tokenizer = lex.ToTokenizer(null, cfg.EnumSymbols(), new _FAProgress(prog));
LL1Parser parser;
foreach (var msg in cfg.TryToLL1Parser(out parser, tokenizer, new _LL1Progress(prog)))
{
if (Pck.ErrorLevel.Error == msg.ErrorLevel)
hasErrors = true;
var n = fname;
_AddMessage(msg);
}
if (!hasErrors)
{
test.SetParser(parser);
BeginInvoke(new Action<Form>(test.Show), this);
}
else BeginInvoke(new Action(test.Close));
}
else BeginInvoke(new Action(test.Close));
break;
}
}));
prog.Close();
}
19
Source : Main.cs
with MIT License
from codewitch-honey-crisis
with MIT License
from codewitch-honey-crisis
private async void _HandleTestLalr1Parser(object sender, EventArgs e)
{
var prog = new Progress();
prog.Show(this);
var fname = _GetFilename(fileTabs.SelectedTab);
var ext = Path.GetExtension(fname).ToLowerInvariant();
var name = Path.GetFileNameWithoutExtension(fname);
var input = ActiveEditor.Text;
var sb = new StringBuilder();
var hasErrors = false;
messages.Items.Clear();
var test = new Test();
test.Text = string.Concat(test.Text, " - ", fname);
await Task.Run((Action)(() => {
switch (ext)
{
case ".xbnf":
input = _XbnfToPck(input, fname, prog);
if (null == input)
break;
goto case ".pck";
case ".pck":
var cfg = CfgDoreplacedent.Parse(input);
if (ext == ".pck")
cfg.SetFilename(fname);
var lex = LexDoreplacedent.Parse(input);
foreach (var msg in cfg.TryValidateLalr1())
{
if (ErrorLevel.Error == msg.ErrorLevel)
hasErrors = true;
var n = fname;
_AddMessage(msg);
}
if (!hasErrors)
{
var tokenizer = lex.ToTokenizer(null, cfg.EnumSymbols(), new _FAProgress(prog));
Lalr1Parser parser;
foreach (var msg in cfg.TryToLalr1Parser(out parser, tokenizer, new _Lalr1Progress(prog)))
{
if (ErrorLevel.Error == msg.ErrorLevel)
hasErrors = true;
var n = fname;
_AddMessage(msg);
}
if (!hasErrors)
{
test.SetParser(parser);
BeginInvoke(new Action<Form>(test.Show), this);
}
else BeginInvoke(new Action(test.Close));
}
else
BeginInvoke(new Action(test.Close));
break;
}
}));
prog.Close();
}
19
Source : Test.cs
with MIT License
from codewitch-honey-crisis
with MIT License
from codewitch-honey-crisis
async void parseTimer_Tick(object sender, EventArgs e)
{
parseTimer.Enabled = false;
ParseNode pt=null;
if (null != _ll1Parser)
{
string text = editor.Text;
_ll1Parser.Restart(text);
_ll1Parser.ShowHidden = showHidden.Checked;
while (LLNodeType.EndDoreplacedent != _ll1Parser.NodeType)
{
pt = _ll1Parser.ParseSubtree(trimTree.Checked, transformTree.Checked);
if (null == pt.Value)
break;
}
} else if(null!=_lalr1Parser)
{
string text = editor.Text;
_lalr1Parser.Restart(text);
_lalr1Parser.ShowHidden = showHidden.Checked;
var opt = pt;
while (LRNodeType.EndDoreplacedent != _lalr1Parser.NodeType && LRNodeType.Error !=_lalr1Parser.NodeType)
{
pt = _lalr1Parser.ParseReductions(trimTree.Checked, transformTree.Checked);
if (null == pt || null == pt.Value)
break;
opt = pt;
}
if (null == pt)
pt = opt;
}
parseTree.Nodes.Clear();
if(null!=pt)
{
await Task.Run(() =>
{
var treeNode = new TreeNode();
if (null != pt.Value)
{
treeNode.Text = string.Concat(pt.Symbol, ": ", pt.Value);
treeNode.ImageIndex = ("#ERROR" == pt.Symbol) ? 2 : 1;
treeNode.SelectedImageIndex = treeNode.ImageIndex;
treeNode.Tag = pt;
BeginInvoke(new Func<TreeNode, int>(parseTree.Nodes.Add), treeNode);
BeginInvoke(new Action(treeNode.Expand));
}
else
{
treeNode.Text = pt.Symbol;
treeNode.Tag = pt;
foreach (var ptc in pt.Children)
{
_AddNodes(treeNode, ptc);
}
BeginInvoke(new Func<TreeNode, int>(parseTree.Nodes.Add), treeNode);
BeginInvoke(new Action(treeNode.Expand));
}
});
}
}
19
Source : win11_downloadSystem.cs
with GNU General Public License v3.0
from coofcookie
with GNU General Public License v3.0
from coofcookie
private void downloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) {
BeginInvoke((MethodInvoker) delegate {
var bytesIn = double.Parse(e.BytesReceived.ToString());
var totalBytes = double.Parse(e.TotalBytesToReceive.ToString());
var percentage = bytesIn / totalBytes * 100;
lblDownloadPercentage.Text = Math.Round(percentage, 1) + " %";
progressDownload.Value = int.Parse(Math.Truncate(percentage).ToString());
});
}
19
Source : win11_downloadSystem.cs
with GNU General Public License v3.0
from coofcookie
with GNU General Public License v3.0
from coofcookie
private void downloadCompleted(object sender, AsyncCompletedEventArgs e) {
BeginInvoke((MethodInvoker) delegate {
globals.isoPath = Directory.GetCurrentDirectory() + "/win11.iso";
Hide();
var installSystem = new win11_installSystem();
installSystem.Show();
});
}
19
Source : ExtensionMethods.cs
with GNU General Public License v2.0
from CrazyKTV
with GNU General Public License v2.0
from CrazyKTV
public static T BeginInvokeIfRequired<T>(this T source, Action<T> action) where T : Control
{
try
{
if (!source.InvokeRequired)
action(source);
else
source.BeginInvoke(new Action(() => action(source)));
}
catch (Exception ex)
{
Console.Write("Error on 'BeginInvokeIfRequired': {0}", ex.Message);
}
return source;
}
19
Source : MainCfg.cs
with GNU General Public License v2.0
from CrazyKTV
with GNU General Public License v2.0
from CrazyKTV
private void MainCfg_ExportSQLite_Button_Click(object sender, EventArgs e)
{
if (MessageBox.Show("你確定要匯出 SQLite 資料庫嗎?", "確認提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
Common_SwitchSetUI(false);
var tasks = new List<Task>()
{
Task.Factory.StartNew(() => MainCfg_ExportSQLiteTask())
};
Task.Factory.ContinueWhenAll(tasks.ToArray(), MainCfg_ExportSQLiteEndTask =>
{
this.BeginInvoke((Action)delegate()
{
Common_SwitchSetUI(true);
});
});
}
}
19
Source : MainCfg.cs
with GNU General Public License v2.0
from CrazyKTV
with GNU General Public License v2.0
from CrazyKTV
private void MainCfg_NonSingerDataLog_Button_Click(object sender, EventArgs e)
{
Global.TimerStartTime = DateTime.Now;
Global.TotalList = new List<int>() { 0, 0, 0, 0 };
SingerMgr.CreateSongDataTable();
Common_SwitchSetUI(false);
MainCfg_Tooltip_Label.Text = "正在解析歌庫歌手資料,請稍待...";
var tasks = new List<Task>() { Task.Factory.StartNew(() => MainCfg_NonSingerDataLogTask()) };
Task.Factory.ContinueWhenAll(tasks.ToArray(), EndTask =>
{
Global.TimerEndTime = DateTime.Now;
this.BeginInvoke((Action)delegate()
{
MainCfg_Tooltip_Label.Text = "總共從歌庫歌曲解析出 " + Global.TotalList[0] + " 筆歌手資料,查詢到 " + Global.TotalList[1] + " 筆歌手無資料,共花費 " + (long)(Global.TimerEndTime - Global.TimerStartTime).TotalSeconds + " 秒完成。";
Common_SwitchSetUI(true);
});
SingerMgr.DisposeSongDataTable();
});
}
19
Source : MainCfg.cs
with GNU General Public License v2.0
from CrazyKTV
with GNU General Public License v2.0
from CrazyKTV
private void MainCfg_NonSingerDataLogTask()
{
Thread.CurrentThread.Priority = ThreadPriority.Lowest;
List<string> list = new List<string>();
List<string> Singerlist = new List<string>();
List<string> SpecialStrlist = new List<string>(Regex.Split(Global.SongAddSpecialStr, @"\|", RegexOptions.IgnoreCase));
DataTable dt = new DataTable();
string SingerQuerySqlStr = "SELECT First(Song_Singer) AS Song_Singer, First(Song_SingerType) AS Song_SingerType, Count(Song_Singer) AS Song_SingerCount FROM ktv_Song GROUP BY Song_Singer HAVING First(Song_SingerType)<=10 AND First(Song_SingerType)<>8 AND First(Song_SingerType)<>9 AND Count(Song_Singer)>0 ORDER BY First(Song_SingerType), First(Song_Singer)";
dt = CommonFunc.GetOleDbDataTable(Global.CrazyktvDatabaseFile, SingerQuerySqlStr, "");
if (dt.Rows.Count > 0)
{
string SingerName = "";
string SingerType = "";
foreach (DataRow row in dt.AsEnumerable())
{
SingerName = row["Song_Singer"].ToString();
SingerType = row["Song_SingerType"].ToString();
if (SingerType == "3")
{
List<string> slist = CommonFunc.GetChorusSingerList(SingerName);
foreach (string str in slist)
{
string ChorusSingerName = Regex.Replace(str, @"^\s*|\s*$", ""); //去除頭尾空白
if (Singerlist.IndexOf(ChorusSingerName) < 0)
{
// 查找資料庫預設歌手資料表
if (SingerMgr.AllSingerLowCaseList.IndexOf(ChorusSingerName.ToLower()) < 0)
{
if (list.IndexOf(ChorusSingerName) < 0)
{
list.Add(ChorusSingerName);
lock (LockThis) { Global.TotalList[1]++; }
}
}
Singerlist.Add(ChorusSingerName);
}
}
slist.Clear();
slist = null;
}
else
{
if (Singerlist.IndexOf(SingerName) < 0)
{
if (SingerMgr.AllSingerLowCaseList.IndexOf(SingerName.ToLower()) < 0)
{
if (list.IndexOf(SingerName) < 0)
{
list.Add(SingerName);
lock (LockThis) { Global.TotalList[1]++; }
}
}
Singerlist.Add(SingerName);
}
}
lock (LockThis) { Global.TotalList[0]++; }
this.BeginInvoke((Action)delegate()
{
MainCfg_Tooltip_Label.Text = "已解析到 " + Global.TotalList[0] + " 位歌手資料,請稍待...";
});
}
}
Singerlist.Clear();
dt.Dispose();
if (list.Count > 0)
{
foreach (string str in list)
{
Global.SongLogDT.Rows.Add(Global.SongLogDT.NewRow());
Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][0] = "【記錄無資料歌手】未在預設歌手資料表的歌手: " + str;
Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][1] = Global.SongLogDT.Rows.Count;
}
}
}
19
Source : MainCfg.cs
with GNU General Public License v2.0
from CrazyKTV
with GNU General Public License v2.0
from CrazyKTV
private void MainCfg_NonPhoneticsWordLog_Button_Click(object sender, EventArgs e)
{
Global.TimerStartTime = DateTime.Now;
Global.TotalList = new List<int>() { 0, 0, 0, 0 };
SongMaintenance.CreateSongDataTable();
Common_SwitchSetUI(false);
var tasks = new List<Task>() { Task.Factory.StartNew(() => MainCfg_NonPhoneticsWordLogTask()) };
Task.Factory.ContinueWhenAll(tasks.ToArray(), EndTask =>
{
Global.TimerEndTime = DateTime.Now;
this.BeginInvoke((Action)delegate()
{
MainCfg_Tooltip_Label.Text = "總共從 " + Global.TotalList[0] + " 首歌曲,查詢到 " + Global.TotalList[1] + " 筆無拼音資料的文字,共花費 " + (long)(Global.TimerEndTime - Global.TimerStartTime).TotalSeconds + " 秒完成。";
Common_SwitchSetUI(true);
});
SongMaintenance.DisposeSongDataTable();
});
}
19
Source : MainCfg.cs
with GNU General Public License v2.0
from CrazyKTV
with GNU General Public License v2.0
from CrazyKTV
private void MainCfg_NonPhoneticsWordLogTask()
{
Thread.CurrentThread.Priority = ThreadPriority.BelowNormal;
List<string> list = new List<string>();
string SongQuerySqlStr = "select Song_Id, Song_Lang, Song_SingerType, Song_Singer, Song_SongName, Song_Track, Song_SongType, Song_Volume, Song_PlayCount, Song_FileName, Song_Path from ktv_Song order by Song_Id";
using (DataTable SongDT = CommonFunc.GetOleDbDataTable(Global.CrazyktvDatabaseFile, SongQuerySqlStr, ""))
{
string MatchWord = "";
List<string> wordlist = new List<string>();
Parallel.ForEach(SongDT.AsEnumerable(), (row, loopState) =>
{
Thread.CurrentThread.Priority = ThreadPriority.BelowNormal;
MatchWord = row["Song_Singer"].ToString() + row["Song_SongName"].ToString();
MatchWord = Regex.Replace(MatchWord, @"[\{\(\[{([【].+?[】])}\]\)\}]", "");
if (MatchWord != "")
{
MatchCollection CJKCharMatches = Regex.Matches(MatchWord, @"([\u2E80-\u33FF]|[\u4E00-\u9FCC\u3400-\u4DB5\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\ud840-\ud868][\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|[\ud86a-\ud86c][\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d]|[\uac00-\ud7ff])");
if (CJKCharMatches.Count > 0)
{
foreach (Match m in CJKCharMatches)
{
if (wordlist.IndexOf(m.Value) < 0)
{
// 查找資料庫拼音資料
if (Global.PhoneticsWordList.IndexOf(m.Value) < 0)
{
if (list.IndexOf(m.Value) < 0)
{
list.Add(m.Value);
lock (LockThis) { Global.TotalList[1]++; }
}
}
wordlist.Add(m.Value);
}
}
}
}
lock (LockThis) { Global.TotalList[0]++; }
this.BeginInvoke((Action)delegate()
{
MainCfg_Tooltip_Label.Text = "正在解析第 " + Global.TotalList[0] + " 首歌曲的拼音資料,請稍待...";
});
});
wordlist.Clear();
}
if (list.Count > 0)
{
foreach (string str in list)
{
Global.SongLogDT.Rows.Add(Global.SongLogDT.NewRow());
Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][0] = "【記錄無拼音字】未在拼音資料表的文字: " + str;
Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][1] = Global.SongLogDT.Rows.Count;
}
}
list.Clear();
}
19
Source : SingerMgrDataGridView.cs
with GNU General Public License v2.0
from CrazyKTV
with GNU General Public License v2.0
from CrazyKTV
private void SingerMgr_DataGridView_ContextMenuItem_RightClick(object sender, EventArgs e)
{
switch (sender.ToString())
{
case "查詢歌曲":
string SingerName = SingerMgr_DataGridView.SelectedRows[0].Cells["Singer_Name"].Value.ToString();
SongQuery_QueryType_ComboBox.SelectedValue = 2;
SongQuery_QueryValue_TextBox.Text = SingerName;
SongQuery_QueryFilter_ComboBox.SelectedValue = 1;
SongQuery_EditMode_CheckBox.Checked = false;
SongQuery_Query_Button_Click(new Button(), new EventArgs());
MainTabControl.SelectedIndex = MainTabControl.TabPages.IndexOf(SongQuery_TabPage);
break;
case "移除歌手":
if (MessageBox.Show("你確定要移除歌手嗎?", "刪除提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
List<string> RemoveSingerIdlist = new List<string>();
foreach (DataGridViewRow row in SingerMgr_DataGridView.SelectedRows)
{
RemoveSingerIdlist.Add(row.Cells["Singer_Id"].Value.ToString());
}
using (DataTable dt = (DataTable)SingerMgr_DataGridView.DataSource)
{
List<DataRow> RemoveRomList = new List<DataRow>();
foreach (DataRow row in dt.Rows)
{
if (RemoveSingerIdlist.IndexOf(row["Singer_Id"].ToString()) > -1)
{
RemoveRomList.Add(row);
}
}
foreach (DataRow row in RemoveRomList)
{
dt.Rows.Remove(row);
}
RemoveRomList.Clear();
}
Global.TotalList = new List<int>() { 0, 0, 0, 0 };
Common_SwitchSetUI(false);
var tasks = new List<Task>()
{
Task.Factory.StartNew(() => SingerMgr_SingerRemoveTask(RemoveSingerIdlist))
};
Task.Factory.ContinueWhenAll(tasks.ToArray(), EndTask =>
{
this.BeginInvoke((Action)delegate()
{
Common_SwitchSetUI(true);
Task.Factory.StartNew(() => Common_GetSingerStatisticsTask());
SingerMgr_Tooltip_Label.Text = "已成功移除 " + Global.TotalList[0] + " 位歌手資料。";
RemoveSingerIdlist.Clear();
});
});
}
break;
}
}
19
Source : SingerMgrDataGridView.cs
with GNU General Public License v2.0
from CrazyKTV
with GNU General Public License v2.0
from CrazyKTV
private void SingerMgr_DataGridView_KeyDown(object sender, KeyEventArgs e)
{
if (SingerMgr_EditMode_CheckBox.Checked == true)
{
if (SingerMgr_DataGridView.SelectedRows.Count > 0)
{
switch (e.KeyCode)
{
case Keys.Delete:
if (MessageBox.Show("你確定要移除歌手嗎?", "刪除提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
List<string> RemoveSingerIdlist = new List<string>();
foreach (DataGridViewRow row in SingerMgr_DataGridView.SelectedRows)
{
RemoveSingerIdlist.Add(row.Cells["Singer_Id"].Value.ToString());
}
using (DataTable dt = (DataTable)SingerMgr_DataGridView.DataSource)
{
List<DataRow> RemoveRomList = new List<DataRow>();
foreach (DataRow row in dt.Rows)
{
if (RemoveSingerIdlist.IndexOf(row["Singer_Id"].ToString()) > -1)
{
RemoveRomList.Add(row);
}
}
foreach (DataRow row in RemoveRomList)
{
dt.Rows.Remove(row);
}
RemoveRomList.Clear();
}
Global.TotalList = new List<int>() { 0, 0, 0, 0 };
Common_SwitchSetUI(false);
var tasks = new List<Task>()
{
Task.Factory.StartNew(() => SingerMgr_SingerRemoveTask(RemoveSingerIdlist))
};
Task.Factory.ContinueWhenAll(tasks.ToArray(), EndTask =>
{
this.BeginInvoke((Action)delegate()
{
Common_SwitchSetUI(true);
Task.Factory.StartNew(() => Common_GetSingerStatisticsTask());
SingerMgr_Tooltip_Label.Text = "已成功移除 " + Global.TotalList[0] + " 位歌手資料。";
RemoveSingerIdlist.Clear();
});
});
}
break;
}
}
}
}
19
Source : SongDBConverter.cs
with GNU General Public License v2.0
from CrazyKTV
with GNU General Public License v2.0
from CrazyKTV
private void SongDBConverter_ConvFromSrcDBTask(object DBType)
{
Thread.CurrentThread.Priority = ThreadPriority.Lowest;
Global.SongDBConvValueList = new List<string>();
Global.TotalList = new List<int>() { 0, 0, 0, 0 };
string SongSrcDBFile = SongDBConverter_SrcDBFile_TextBox.Text;
string SongDestDBFile = SongDBConverter_DestDBFile_TextBox.Text;
SongDBConverterSongDB.CreateSongDataTable((int)DBType, SongSrcDBFile);
int count = Global.SongSrcDT.Rows.Count;
for (int i = 0; i < count; i++)
//Parallel.For(0, count, (i, loopState) =>
{
switch ((int)DBType)
{
case 2:
SongDBConverterSongDB.StartConvFromJetktvDB(i);
break;
case 3:
SongDBConverterSongDB.StartConvFromHomeKara2DB(i);
break;
}
this.BeginInvoke((Action)delegate()
{
SongDBConverter_Tooltip_Label.Text = "已成功解析 " + Global.TotalList[0] + " 首歌曲...";
});
}//);
// 加入歌曲
OleDbConnection conn = CommonFunc.OleDbOpenConn(SongDestDBFile, "");
OleDbCommand cmd = new OleDbCommand();
string sqlColumnStr = "Song_Id, Song_Lang, Song_SingerType, Song_Singer, Song_SongName, Song_Track, Song_SongType, Song_Volume, Song_WordCount, Song_PlayCount, Song_MB, Song_CreatDate, Song_FileName, Song_Path, Song_Spell, Song_SpellNum, Song_SongStroke, Song_PenStyle, Song_PlayState";
string sqlValuesStr = "@SongId, @SongLang, @SongSingerType, @SongSinger, @SongSongName, @SongTrack, @SongSongType, @SongVolume, @SongWordCount, @SongPlayCount, @SongMB, @SongCreatDate, @SongFileName, @SongPath, @SongSpell, @SongSpellNum, @SongSongStroke, @SongPenStyle, @SongPlayState";
string SongDBConverterSqlStr = "insert into ktv_Song ( " + sqlColumnStr + " ) values ( " + sqlValuesStr + " )";
cmd = new OleDbCommand(SongDBConverterSqlStr, conn);
List<string> valuelist = new List<string>();
foreach (string str in Global.SongDBConvValueList)
{
valuelist = new List<string>(str.Split('|'));
cmd.Parameters.AddWithValue("@SongId", valuelist[0]);
cmd.Parameters.AddWithValue("@SongLang", valuelist[1]);
cmd.Parameters.AddWithValue("@SongSingerType", valuelist[2]);
cmd.Parameters.AddWithValue("@SongSinger", valuelist[3]);
cmd.Parameters.AddWithValue("@SongSongName", valuelist[4]);
cmd.Parameters.AddWithValue("@SongTrack", valuelist[5]);
cmd.Parameters.AddWithValue("@SongSongType", valuelist[6]);
cmd.Parameters.AddWithValue("@SongVolume", valuelist[7]);
cmd.Parameters.AddWithValue("@SongWordCount", valuelist[8]);
cmd.Parameters.AddWithValue("@SongPlayCount", valuelist[9]);
cmd.Parameters.AddWithValue("@SongMB", valuelist[10]);
cmd.Parameters.AddWithValue("@SongCreatDate", valuelist[11]);
cmd.Parameters.AddWithValue("@SongFileName", valuelist[12]);
cmd.Parameters.AddWithValue("@SongPath", valuelist[13]);
cmd.Parameters.AddWithValue("@SongSpell", valuelist[14]);
cmd.Parameters.AddWithValue("@SongSpellNum", valuelist[15]);
cmd.Parameters.AddWithValue("@SongSongStroke", valuelist[16]);
cmd.Parameters.AddWithValue("@SongPenStyle", valuelist[17]);
cmd.Parameters.AddWithValue("@SongPlayState", valuelist[18]);
try
{
cmd.ExecuteNonQuery();
Global.TotalList[3]++;
}
catch
{
Global.SongLogDT.Rows.Add(Global.SongLogDT.NewRow());
Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][0] = "【歌庫轉換】寫入至資料庫時發生錯誤: " + str;
Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][1] = Global.SongLogDT.Rows.Count;
Global.TotalList[0]--;
Global.TotalList[2]++;
}
cmd.Parameters.Clear();
this.BeginInvoke((Action)delegate()
{
SongDBConverter_Tooltip_Label.Text = "正在將第 " + Global.TotalList[3] + " 首歌曲寫入資料庫,請稍待...";
});
}
Global.SongDBConvValueList.Clear();
// 加入歌手
OleDbCommand singercmd = new OleDbCommand();
sqlColumnStr = "Singer_Id, Singer_Name, Singer_Type, Singer_Spell, Singer_Strokes, Singer_SpellNum, Singer_PenStyle";
sqlValuesStr = "@SingerId, @SingerName, @SingerType, @SingerSpell, @SingerStrokes, @SingerSpellNum, @SingerPenStyle";
string SingerAddSqlStr = "insert into ktv_Singer ( " + sqlColumnStr + " ) values ( " + sqlValuesStr + " )";
singercmd = new OleDbCommand(SingerAddSqlStr, conn);
List<string> NotExistsSingerId = new List<string>();
NotExistsSingerId = CommonFunc.GetUnusedSingerId("ktv_Singer", SongDestDBFile);
int MaxSingerId = CommonFunc.GetMaxSingerId("ktv_Singer", SongDestDBFile) + 1;
string NextSingerId = "";
List<string> spelllist = new List<string>();
DataTable dt = new DataTable();
string SingerQuerySqlStr = "SELECT First(Song_Singer) AS Song_Singer, First(Song_SingerType) AS Song_SingerType, Count(Song_Singer) AS Song_SingerCount FROM ktv_Song GROUP BY Song_Singer HAVING (((First(Song_SingerType))<>3) AND ((Count(Song_Singer))>0)) ORDER BY First(Song_SingerType), First(Song_Singer)";
dt = CommonFunc.GetOleDbDataTable(SongDestDBFile, SingerQuerySqlStr, "");
count = dt.Rows.Count;
if (count > 0)
{
for (int i = 0; i < count; i++)
{
if (NotExistsSingerId.Count > 0)
{
NextSingerId = NotExistsSingerId[0];
NotExistsSingerId.RemoveAt(0);
}
else
{
NextSingerId = MaxSingerId.ToString();
MaxSingerId++;
}
valuelist = new List<string>()
{
dt.Rows[i].Field<string>("Song_Singer"),
dt.Rows[i].Field<Int16>("Song_SingerType").ToString()
};
spelllist = new List<string>(CommonFunc.GetSongNameSpell(valuelist[0]));
singercmd.Parameters.AddWithValue("@SingerId", NextSingerId);
singercmd.Parameters.AddWithValue("@SingerName", valuelist[0]);
singercmd.Parameters.AddWithValue("@SingerType", valuelist[1]);
singercmd.Parameters.AddWithValue("@SingerSpell", spelllist[0]);
singercmd.Parameters.AddWithValue("@SingerStrokes", spelllist[2]);
singercmd.Parameters.AddWithValue("@SingerSpellNum", spelllist[1]);
singercmd.Parameters.AddWithValue("@SingerPenStyle", spelllist[3]);
try
{
singercmd.ExecuteNonQuery();
}
catch
{
Global.SongLogDT.Rows.Add(Global.SongLogDT.NewRow());
Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][0] = "【歌庫轉換】加入歌手至 ktv_Singer 時發生錯誤: " + valuelist[0];
Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][1] = Global.SongLogDT.Rows.Count;
}
singercmd.Parameters.Clear();
this.BeginInvoke((Action)delegate()
{
SongDBConverter_Tooltip_Label.Text = "已成功將 " + (i + 1) + " 位新歌手加入至資料庫,請稍待...";
});
}
}
dt.Dispose();
conn.Close();
this.BeginInvoke((Action)delegate()
{
Global.TimerEndTime = DateTime.Now;
SongDBConverter_Tooltip_Label.Text = "總共轉換 " + Global.TotalList[0] + " 首歌曲,忽略 " + Global.TotalList[1] + " 首,失敗 " + Global.TotalList[2] + " 首,共花費 " + (long)(Global.TimerEndTime - Global.TimerStartTime).TotalSeconds + " 秒完成轉換。";
SongDBConverter_SrcDBFile_TextBox.Text = "";
SongDBConverter_DestDBFile_TextBox.Text = "";
SongDBConverter_SrcDBFile_Button.Enabled = true;
SongDBConverter_SrcDBType_ComboBox.Enabled = true;
SongDBConverter_DestDBFile_Button.Enabled = true;
SongDBConverter_JetktvPathCfg_GroupBox.Enabled = true;
SongDBConverter_JetktvLangCfg_GroupBox.Enabled = true;
SongDBConverter_Converter_GroupBox.Enabled = true;
Common_SwitchSetUI(true);
});
SongDBConverterSongDB.DisposeSongDataTable();
}
19
Source : SongDBUpdate.cs
with GNU General Public License v2.0
from CrazyKTV
with GNU General Public License v2.0
from CrazyKTV
private void SongDBUpdate_CheckDatabaseVersion()
{
bool UpdateDBStatus = false;
double SongDBVer = Convert.ToDouble(Global.CrazyktvSongDBVer);
string CashboxUpdDate = "";
string VersionQuerySqlStr = "select * from ktv_Version";
using (DataTable dt = CommonFunc.GetOleDbDataTable(Global.CrazyktvSongMgrDatabaseFile, VersionQuerySqlStr, ""))
{
if (dt.Rows.Count > 0)
{
foreach (DataRow row in dt.Rows)
{
CashboxUpdDate = row["CashboxUpdDate"].ToString();
}
Global.CashboxUpdDate = DateTime.Parse(CashboxUpdDate);
this.BeginInvoke((Action)delegate()
{
SongMaintenance_DBVer1Value_Label.Text = SongDBVer.ToString("F2") + " 版";
Cashbox_UpdDateValue_Label.Text = (CultureInfo.CurrentCulture.Name == "zh-TW") ? DateTime.Parse(CashboxUpdDate).ToLongDateString() : DateTime.Parse(CashboxUpdDate).ToShortDateString();
});
if (Global.DBVerEnableDBVerUpdate == "True")
{
if (!Directory.Exists(Application.StartupPath + @"\SongMgr\Update")) Directory.CreateDirectory(Application.StartupPath + @"\SongMgr\Update");
string url = "https://raw.githubusercontent.com/CrazyKTV/SongMgr/master/CrazyKTV_SongMgr/SongMgr/Update/UpdateDB.xml";
using (MemoryStream ms = CommonFunc.Download(url))
{
if (ms.Length > 0)
{
ms.Position = 0;
Global.CrazyktvSongDBVer = CommonFunc.LoadConfigXmlFile("", "SongDBVer", ms, true);
if (File.Exists(Global.CrazyktvDatabaseFile))
{
if (Convert.ToDouble(Global.CrazyktvSongDBVer) > SongDBVer)
{
this.BeginInvoke((Action)delegate ()
{
if (MessageBox.Show("你確定要更新歌庫版本嗎?", "偵測到歌庫版本更新", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
Global.SongMgrDBVerErrorUIStatus = false;
MainTabControl.SelectedIndex = MainTabControl.TabPages.IndexOf(SongMaintenance_TabPage);
SongMaintenance_TabControl.SelectedIndex = SongMaintenance_TabControl.TabPages.IndexOf(SongMaintenance_DBVer_TabPage);
SongMaintenance_DBVerTooltip_Label.Text = "開始進行歌庫版本更新...";
UpdateDBStatus = true;
var UpdateDBTask = Task.Factory.StartNew(() => SongDBUpdate_UpdateDatabaseFile());
}
});
}
}
}
}
}
}
if (!UpdateDBStatus) SongDBUpdate_UpdateFinish();
}
}
19
Source : SongDBUpdate.cs
with GNU General Public License v2.0
from CrazyKTV
with GNU General Public License v2.0
from CrazyKTV
[System.Diagnostics.Codereplacedysis.SuppressMessage("Microsoft.Security", "CA2100:必須檢閱 SQL 查詢中是否有安全性弱點")]
private void SongDBUpdate_UpdateDatabaseFile()
{
Global.TimerStartTime = DateTime.Now;
using (OleDbConnection conn = CommonFunc.OleDbOpenConn(Global.CrazyktvDatabaseFile, ""))
{
bool UpdateError = false;
if (!Directory.Exists(Application.StartupPath + @"\SongMgr\Backup")) Directory.CreateDirectory(Application.StartupPath + @"\SongMgr\Backup");
string SongDBBackupFile = SongDBBackupFile = Application.StartupPath + @"\SongMgr\Backup\" + DateTime.Now.ToLongDateString() + "_CrazySong.mdb";
File.Copy(Global.CrazyktvDatabaseFile, SongDBBackupFile, true);
List<string> CrazyktvDBTableList = new List<string>(CommonFunc.GetOleDbTableList(Global.CrazyktvDatabaseFile, ""));
// 移除 ktv_AllSinger 資料表
if (CrazyktvDBTableList.IndexOf("ktv_AllSinger") >= 0)
{
using (OleDbCommand cmd = new OleDbCommand("drop table ktv_AllSinger", conn))
{
try
{
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
catch
{
UpdateError = true;
this.BeginInvoke((Action)delegate ()
{
SongMaintenance_DBVerTooltip_Label.Text = "移除 ktv_AllSinger 資料表失敗,已還原為原本的資料庫檔案。";
});
}
}
}
// 移除 ktv_Version 資料表
if (CrazyktvDBTableList.IndexOf("ktv_Version") >= 0)
{
using (OleDbCommand cmd = new OleDbCommand("drop table ktv_Version", conn))
{
try
{
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
catch
{
UpdateError = true;
this.BeginInvoke((Action)delegate ()
{
SongMaintenance_DBVerTooltip_Label.Text = "移除 ktv_Version 資料表失敗,已還原為原本的資料庫檔案。";
});
}
}
}
CrazyktvDBTableList.Clear();
CrazyktvDBTableList = null;
if (!UpdateError)
{
bool UpdateKtvSong = false;
bool UpdateKtvSinger = false;
bool UpdatePhonetics = false;
bool UpdateLangauage = true;
bool UpdateFavorite = false;
bool AddSongReplayGainColumn = true;
bool RemoveSongMeanVolumeColumn = false;
bool RemoveGodLiuColumn = false;
List<string> GodLiuColumnlist = new List<string>();
List<string> tablelist = new List<string>() { "ktv_Singer", "ktv_Phonetics", "ktv_Langauage", "ktv_User", "ktv_Favorite" };
String[] Restrictions = new String[4];
Restrictions[2] = "ktv_Song";
using (DataTable dt = conn.GetSchema("Columns", Restrictions))
{
foreach (string tablename in tablelist)
{
Restrictions[2] = tablename;
using (DataTable tb = conn.GetSchema("Columns", Restrictions))
{
foreach (DataRow row in tb.Rows)
{
dt.ImportRow(row);
}
}
}
tablelist.Clear();
tablelist = null;
foreach (DataRow row in dt.Rows)
{
switch (row["COLUMN_NAME"].ToString())
{
case "Song_SongName":
if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "80") UpdateKtvSong = true;
break;
case "Song_Singer":
if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "60") UpdateKtvSong = true;
break;
case "Song_Spell":
if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "80") UpdateKtvSong = true;
break;
case "Song_FileName":
if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "255") UpdateKtvSong = true;
break;
case "Song_SpellNum":
if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "80") UpdateKtvSong = true;
break;
case "Song_PenStyle":
if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "80") UpdateKtvSong = true;
break;
case "Song_ReplayGain":
AddSongReplayGainColumn = false;
break;
case "Song_MeanVolume":
RemoveSongMeanVolumeColumn = true;
break;
case "Singer_Name":
case "Singer_Spell":
case "Singer_SpellNum":
case "Singer_PenStyle":
if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "60") UpdateKtvSinger = true;
break;
case "PenStyle":
if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "40") UpdatePhonetics = true;
break;
case "Langauage_KeyWord":
UpdateLangauage = false;
break;
case "User_Id":
if (row["CHARACTER_MAXIMUM_LENGTH"].ToString() != "12") UpdateFavorite = true;
break;
case "Song_SongNameFuzzy":
case "Song_SingerFuzzy":
case "Song_FuzzyVer":
case "DLspace":
case "Epreplacedwd":
case "imgpath":
case "cashboxsongid":
case "cashboxdat":
case "holidaysongid":
RemoveGodLiuColumn = true;
GodLiuColumnlist.Add(row["COLUMN_NAME"].ToString());
break;
}
}
}
string UpdateSqlStr = "";
if (UpdateKtvSong)
{
try
{
UpdateSqlStr = "select * into ktv_Song_temp from ktv_Song";
using (OleDbCommand cmd = new OleDbCommand(UpdateSqlStr, conn))
{
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
UpdateSqlStr = "delete * from ktv_Song";
using (OleDbCommand cmd = new OleDbCommand(UpdateSqlStr, conn))
{
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
List<string> cmdstrlist = new List<string>()
{
"alter table ktv_Song alter column Song_SongName TEXT(80) WITH COMPRESSION",
"alter table ktv_Song alter column Song_Singer TEXT(60) WITH COMPRESSION",
"alter table ktv_Song alter column Song_Spell TEXT(80) WITH COMPRESSION",
"alter table ktv_Song alter column Song_FileName TEXT(255) WITH COMPRESSION",
"alter table ktv_Song alter column Song_SpellNum TEXT(80) WITH COMPRESSION",
"alter table ktv_Song alter column Song_PenStyle TEXT(80) WITH COMPRESSION"
};
foreach (string cmdstr in cmdstrlist)
{
using (OleDbCommand cmd = new OleDbCommand(cmdstr, conn))
{
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
}
cmdstrlist.Clear();
cmdstrlist = null;
UpdateSqlStr = "insert into ktv_Song select * from ktv_Song_temp";
using (OleDbCommand cmd = new OleDbCommand(UpdateSqlStr, conn))
{
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
UpdateSqlStr = "drop table ktv_Song_temp";
using (OleDbCommand cmd = new OleDbCommand(UpdateSqlStr, conn))
{
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
}
catch
{
UpdateError = true;
this.BeginInvoke((Action)delegate ()
{
SongMaintenance_DBVerTooltip_Label.Text = "更新歌曲資料表失敗,已還原為原本的資料庫檔案。";
});
}
}
if (UpdateKtvSinger)
{
List<string> cmdstrlist = new List<string>()
{
"alter table ktv_Singer alter column Singer_Name TEXT(60) WITH COMPRESSION",
"alter table ktv_Singer alter column Singer_Spell TEXT(60) WITH COMPRESSION",
"alter table ktv_Singer alter column Singer_SpellNum TEXT(60) WITH COMPRESSION",
"alter table ktv_Singer alter column Singer_PenStyle TEXT(60) WITH COMPRESSION"
};
try
{
foreach (string cmdstr in cmdstrlist)
{
using (OleDbCommand cmd = new OleDbCommand(cmdstr, conn))
{
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
}
cmdstrlist.Clear();
cmdstrlist = null;
}
catch
{
UpdateError = true;
this.BeginInvoke((Action)delegate ()
{
SongMaintenance_DBVerTooltip_Label.Text = "更新歌手資料表失敗,已還原為原本的資料庫檔案。";
});
}
}
if (UpdatePhonetics)
{
using (OleDbCommand cmd = new OleDbCommand("alter table ktv_Phonetics alter column PenStyle TEXT(40) WITH COMPRESSION", conn))
{
try
{
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
catch
{
UpdateError = true;
this.BeginInvoke((Action)delegate ()
{
SongMaintenance_DBVerTooltip_Label.Text = "更新拼音資料表失敗,已還原為原本的資料庫檔案。";
});
}
}
}
if (UpdateLangauage)
{
using (OleDbCommand cmd = new OleDbCommand("alter table ktv_Langauage add column Langauage_KeyWord TEXT(255) WITH COMPRESSION", conn))
{
try
{
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
catch
{
UpdateError = true;
this.BeginInvoke((Action)delegate ()
{
SongMaintenance_DBVerTooltip_Label.Text = "更新語系資料表失敗,已還原為原本的資料庫檔案。";
});
}
}
}
if (UpdateFavorite)
{
List<string> cmdstrlist = new List<string>()
{
"alter table ktv_User alter column User_Id TEXT(12) WITH COMPRESSION",
"alter table ktv_Favorite alter column User_Id TEXT(12) WITH COMPRESSION",
};
try
{
foreach (string cmdstr in cmdstrlist)
{
using (OleDbCommand cmd = new OleDbCommand(cmdstr, conn))
{
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
}
cmdstrlist.Clear();
cmdstrlist = null;
}
catch
{
UpdateError = true;
this.BeginInvoke((Action)delegate ()
{
SongMaintenance_DBVerTooltip_Label.Text = "更新我的最愛資料表失敗,已還原為原本的資料庫檔案。";
});
}
}
if (AddSongReplayGainColumn)
{
using (OleDbCommand cmd = new OleDbCommand("alter table ktv_Song add column Song_ReplayGain DOUBLE", conn))
{
try
{
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
catch
{
UpdateError = true;
this.BeginInvoke((Action)delegate ()
{
SongMaintenance_DBVerTooltip_Label.Text = "加入 Song_ReplayGain 欄位失敗,已還原為原本的資料庫檔案。";
});
}
}
}
if (RemoveSongMeanVolumeColumn)
{
using (OleDbCommand cmd = new OleDbCommand("alter table ktv_Song drop column Song_MeanVolume", conn))
{
try
{
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
catch
{
UpdateError = true;
this.BeginInvoke((Action)delegate ()
{
SongMaintenance_DBVerTooltip_Label.Text = "移除 Song_MeanVolume 欄位失敗,已還原為原本的資料庫檔案。";
});
}
}
}
if (RemoveGodLiuColumn)
{
List<string> haveindexlist = new List<string>();
using (DataTable dt = conn.GetSchema("Indexes"))
{
foreach (DataRow row in dt.Rows)
{
if (haveindexlist.IndexOf(row["COLUMN_NAME"].ToString()) < 0) haveindexlist.Add(row["COLUMN_NAME"].ToString());
}
}
string cmdstr = string.Empty;
string removeindex = string.Empty;
foreach (string GodLiuColumn in GodLiuColumnlist)
{
switch (GodLiuColumn)
{
case "Song_SongNameFuzzy":
cmdstr = "alter table ktv_Song drop column Song_SongNameFuzzy";
break;
case "Song_SingerFuzzy":
cmdstr = "alter table ktv_Song drop column Song_SingerFuzzy";
break;
case "Song_FuzzyVer":
cmdstr = "alter table ktv_Song drop column Song_FuzzyVer";
break;
case "DLspace":
cmdstr = "alter table ktv_Song drop column DLspace";
break;
case "Epreplacedwd":
cmdstr = "alter table ktv_Song drop column Epreplacedwd";
break;
case "imgpath":
cmdstr = "alter table ktv_Song drop column imgpath";
break;
case "cashboxsongid":
removeindex = "drop index cashboxsongid on ktv_Song";
cmdstr = "alter table ktv_Song drop column cashboxsongid";
break;
case "cashboxdat":
cmdstr = "alter table ktv_Song drop column cashboxdat";
break;
case "holidaysongid":
removeindex = "drop index holidaysongid on ktv_Song";
cmdstr = "alter table ktv_Song drop column holidaysongid";
break;
}
if (GodLiuColumn == "cashboxsongid" || GodLiuColumn == "holidaysongid")
{
if (haveindexlist.IndexOf(GodLiuColumn) > 0)
{
using (OleDbCommand cmd = new OleDbCommand(removeindex, conn))
{
try
{
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
catch
{
UpdateError = true;
this.BeginInvoke((Action)delegate ()
{
SongMaintenance_DBVerTooltip_Label.Text = "刪除 GodLiu 相關欄位失敗,已還原為原本的資料庫檔案。";
});
}
}
}
}
using (OleDbCommand cmd = new OleDbCommand(cmdstr, conn))
{
try
{
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
catch
{
UpdateError = true;
this.BeginInvoke((Action)delegate ()
{
SongMaintenance_DBVerTooltip_Label.Text = "刪除 GodLiu 相關欄位失敗,已還原為原本的資料庫檔案。";
});
}
}
}
}
string SqlStr = "select * from ktv_Swan";
using (DataTable dt = CommonFunc.GetOleDbDataTable(Global.CrazyktvDatabaseFile, SqlStr, ""))
{
if (dt.Rows.Count > 0)
{
if (Convert.ToString(dt.Rows[3][1]) == "合唱歌曲")
{
using (OleDbCommand cmd = new OleDbCommand("update ktv_Swan set Swan_Name = @SwanName where Swan_Id = @SwanId", conn))
{
cmd.Parameters.AddWithValue("@SwanName", "合唱");
cmd.Parameters.AddWithValue("@SwanId", "3");
try
{
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
catch
{
UpdateError = true;
this.BeginInvoke((Action)delegate ()
{
SongMaintenance_DBVerTooltip_Label.Text = "變更歌手類別資料失敗,已還原為原本的資料庫檔案。";
});
}
}
}
}
}
}
if (UpdateError)
{
File.Copy(SongDBBackupFile, Global.CrazyktvDatabaseFile, true);
Global.DatabaseUpdateFinished = true;
}
else
{
CommonFunc.SaveConfigXmlFile(Global.SongMgrCfgFile, "CrazyktvSongDBVer", Global.CrazyktvSongDBVer);
string VersionQuerySqlStr = "select * from ktv_Version";
using (DataTable dt = CommonFunc.GetOleDbDataTable(Global.CrazyktvSongMgrDatabaseFile, VersionQuerySqlStr, ""))
{
if (dt.Rows.Count > 0)
{
foreach (DataRow row in dt.Rows)
{
Global.CashboxUpdDate = DateTime.Parse(row["CashboxUpdDate"].ToString());
}
}
}
this.BeginInvoke((Action)delegate ()
{
Global.TimerEndTime = DateTime.Now;
SongMaintenance_DBVer1Value_Label.Text = Global.CrazyktvSongDBVer + " 版";
Cashbox_UpdDateValue_Label.Text = (CultureInfo.CurrentCulture.Name == "zh-TW") ? Global.CashboxUpdDate.ToLongDateString() : Global.CashboxUpdDate.ToShortDateString();
SongMaintenance_DBVerTooltip_Label.Text = "";
SongMaintenance_Tooltip_Label.Text = "已完成歌庫版本更新,共花費 " + (long)(Global.TimerEndTime - Global.TimerStartTime).TotalSeconds + " 秒完成。";
});
SongDBUpdate_UpdateFinish();
}
}
}
19
Source : SongMonitor.cs
with GNU General Public License v2.0
from CrazyKTV
with GNU General Public License v2.0
from CrazyKTV
private void SongMonitor_CheckCurSong()
{
if (!Global.CrazyktvDatabaseStatus) return;
if (Global.SongMgrSongAddMode != "4")
{
if (SongMgrCfg_TabControl.TabPages.IndexOf(SongMgrCfg_MonitorFolders_TabPage) >= 0)
{
SongMgrCfg_MonitorFolders_TabPage.Hide();
SongMgrCfg_TabControl.TabPages.Remove(SongMgrCfg_MonitorFolders_TabPage);
}
}
if (Global.SongMgrSongAddMode == "4" && Global.SongMgrEnableMonitorFolders == "True")
{
Global.TimerStartTime = DateTime.Now;
DateTime TimerStartTime = DateTime.Now;
Global.TotalList = new List<int>() { 0, 0, 0, 0, 0 };
Global.MTotalList = new List<int>() { 0, 0, 0, 0 };
Common_SwitchSetUI(false);
var tasks = new List<Task>()
{
Task.Factory.StartNew(() => SongMonitor_CheckCurSongTask())
};
Task.Factory.ContinueWhenAll(tasks.ToArray(), EndTask =>
{
DateTime TimerEndTime = DateTime.Now;
this.BeginInvoke((Action)delegate()
{
SongQuery_QueryStatus_Label.Text = "總共加入 " + Global.TotalList[0] + " 首歌曲,忽略重複歌曲 " + Global.TotalList[1] + " 首,移除 " + Global.MTotalList[0] + " 首,共花費 " + (long)(TimerEndTime - TimerStartTime).TotalSeconds + " 秒完成監視。";
SongAdd_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
SongMgrCfg_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
Common_SwitchSetUI(true);
});
});
}
}
19
Source : SongMonitor.cs
with GNU General Public License v2.0
from CrazyKTV
with GNU General Public License v2.0
from CrazyKTV
private void SongMonitorTimer_Tick(object sender, EventArgs e)
{
if (Global.SongMonitorDeletedList.Count > 0 || Global.SongMonitorCreatedList.Count > 0)
{
Global.SongMonitorETime = DateTime.Now;
if ((long)(Global.SongMonitorETime - Global.SongMonitorSTime).TotalSeconds >= 3)
{
Global.SongMonitorTimer.Stop();
Global.TimerStartTime = DateTime.Now;
DateTime TimerStartTime = DateTime.Now;
Global.TotalList = new List<int>() { 0, 0, 0, 0, 0 };
Global.MTotalList = new List<int>() { 0, 0, 0, 0 };
Common_SwitchSetUI(false);
SongQuery_QueryStatus_Label.Text = "正在同步檔案及資料庫,請稍待...";
SongAdd_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
SongMgrCfg_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
var tasks = new List<Task>()
{
Task.Factory.StartNew(() => SongMonitor_UpdateSongDBTask())
};
Task.Factory.ContinueWhenAll(tasks.ToArray(), EndTask =>
{
DateTime TimerEndTime = DateTime.Now;
this.BeginInvoke((Action)delegate()
{
SongQuery_QueryStatus_Label.Text = "總共加入 " + Global.TotalList[0] + " 首歌曲,忽略重複歌曲 " + Global.TotalList[1] + " 首,移除 " + Global.MTotalList[0] + " 首,共花費 " + (long)(TimerEndTime - TimerStartTime).TotalSeconds + " 秒完成監視。";
SongAdd_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
SongMgrCfg_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
if (Global.SongMonitorDT != null)
{
Global.SongMonitorDT.Dispose();
Global.SongMonitorDT = null;
}
Global.SongMonitorDT = new DataTable();
string SongQuerySqlStr = "select Song_Id, Song_Lang, Song_FileName, Song_Path from ktv_Song order by Song_Id";
Global.SongMonitorDT = CommonFunc.GetOleDbDataTable(Global.CrazyktvDatabaseFile, SongQuerySqlStr, "");
Common_SwitchSetUI(true);
Global.SongMonitorTimer.Start();
});
});
}
}
}
19
Source : SongMonitor.cs
with GNU General Public License v2.0
from CrazyKTV
with GNU General Public License v2.0
from CrazyKTV
private void SongMonitor_UpdateSongDBTask()
{
List<int> CountList = new List<int>() { Global.SongMonitorDeletedList.Count, Global.SongMonitorCreatedList.Count };
if (Global.SongMonitorDeletedList.Count > 0)
{
OleDbConnection conn = CommonFunc.OleDbOpenConn(Global.CrazyktvDatabaseFile, "");
OleDbCommand cmd = new OleDbCommand();
string SongRemoveSqlStr = "delete from ktv_Song where Song_Id = @SongId";
cmd = new OleDbCommand(SongRemoveSqlStr, conn);
foreach (string str in Global.SongMonitorDeletedList)
{
List<string> list = new List<string>(str.Split('|'));
cmd.Parameters.AddWithValue("@SongId", list[0]);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
Global.MTotalList[0]++;
this.BeginInvoke((Action)delegate()
{
SongQuery_QueryStatus_Label.Text = "正在移除第 " + Global.MTotalList[0] + " 首檔案不存在的歌曲資料,請稍待...";
SongAdd_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
SongMgrCfg_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
});
Global.SongLogDT.Rows.Add(Global.SongLogDT.NewRow());
Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][0] = "【歌庫監視】檔案已刪除: " + list[0] + "|" + list[1];
Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][1] = Global.SongLogDT.Rows.Count;
}
Global.SongMonitorDeletedList.Clear();
conn.Close();
}
if (Global.SongMonitorCreatedList.Count > 0)
{
SongAdd_SongreplacedysisTask(Global.SongMonitorCreatedList);
while (!Songreplacedysis.SongreplacedysisCompleted)
{
Thread.Sleep(500);
}
if (!Songreplacedysis.SongreplacedysisError)
{
SongAdd_SongAddTask();
}
this.BeginInvoke((Action)delegate()
{
SongQuery_QueryStatus_Label.Text = "正在將變更的歌曲資料寫入操作記錄,請稍待...";
SongAdd_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
SongMgrCfg_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
});
foreach (string filepath in Global.SongMonitorCreatedList)
{
Global.SongLogDT.Rows.Add(Global.SongLogDT.NewRow());
Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][0] = "【歌庫監視】偵測到新檔: " + filepath;
Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][1] = Global.SongLogDT.Rows.Count;
}
Global.SongMonitorCreatedList.Clear();
}
if (CountList[0] > 0 && CountList[1] == 0)
{
this.BeginInvoke((Action)delegate()
{
Common_QueryAddSong(100);
});
Task.Factory.StartNew(() => Common_GetSongStatisticsTask());
Task.Factory.StartNew(() => Common_GetSingerStatisticsTask());
Task.Factory.StartNew(() => CommonFunc.GetRemainingSongIdCount((Global.SongMgrMaxDigitCode == "1") ? 5 : 6));
}
}
19
Source : SongMonitor.cs
with GNU General Public License v2.0
from CrazyKTV
with GNU General Public License v2.0
from CrazyKTV
private void SongMonitor_CheckCurSongTask()
{
SpinWait.SpinUntil(() => Global.InitializeSongData == true);
this.BeginInvoke((Action)delegate()
{
SongQuery_QueryStatus_Label.Text = "正在檢查歌曲資料庫,請稍待...";
SongAdd_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
SongMgrCfg_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
});
DataTable dt = new DataTable();
string SongQuerySqlStr = "select Song_Id, Song_Lang, Song_FileName, Song_Path from ktv_Song order by Song_Id";
dt = CommonFunc.GetOleDbDataTable(Global.CrazyktvDatabaseFile, SongQuerySqlStr, "");
List<string> RemoveSongIdList = new List<string>();
List<string> FileList = new List<string>();
Parallel.ForEach(Global.CrazyktvSongLangList, (langstr, loopState) =>
{
var query = from row in dt.AsEnumerable()
where row.Field<string>("Song_Lang").Equals(langstr)
select row;
if (query.Count<DataRow>() > 0)
{
foreach (DataRow row in query)
{
if (!File.Exists(Path.Combine(row.Field<string>("Song_Path"), row.Field<string>("Song_FileName"))))
{
lock (LockThis)
{
RemoveSongIdList.Add(row["Song_Id"].ToString() + "|" + Path.Combine(row.Field<string>("Song_Path"), row.Field<string>("Song_FileName")));
}
}
else
{
lock (LockThis)
{
FileList.Add(Path.Combine(row.Field<string>("Song_Path"), row.Field<string>("Song_FileName")));
}
}
}
}
});
dt.Dispose();
dt = null;
OleDbConnection conn = CommonFunc.OleDbOpenConn(Global.CrazyktvDatabaseFile, "");
OleDbCommand cmd = new OleDbCommand();
string SongRemoveSqlStr = "delete from ktv_Song where Song_Id = @SongId";
cmd = new OleDbCommand(SongRemoveSqlStr, conn);
if (RemoveSongIdList.Count > 0)
{
foreach (string str in RemoveSongIdList)
{
List<string> list = new List<string>(str.Split('|'));
cmd.Parameters.AddWithValue("@SongId", list[0]);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
Global.MTotalList[0]++;
this.BeginInvoke((Action)delegate()
{
SongQuery_QueryStatus_Label.Text = "正在移除第 " + Global.MTotalList[0] + " 首檔案不存在的歌曲資料,請稍待...";
SongAdd_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
SongMgrCfg_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
});
Global.SongLogDT.Rows.Add(Global.SongLogDT.NewRow());
Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][0] = "【歌庫監視】檔案不存在: " + list[0] + "|" + list[1];
Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][1] = Global.SongLogDT.Rows.Count;
}
}
conn.Close();
this.BeginInvoke((Action)delegate()
{
SongQuery_QueryStatus_Label.Text = "正在檢查歌庫監視目錄,請稍待...";
SongAdd_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
SongMgrCfg_Tooltip_Label.Text = SongQuery_QueryStatus_Label.Text;
});
List<string> NewFileList = new List<string>();
List<string> SupportFormat = new List<string>(Global.SongMgrSupportFormat.Split(';'));
bool EnableSongMonitor = false;
Parallel.ForEach(Global.SongMgrMonitorFoldersList, (mpath, loopState) =>
{
if (mpath != "")
{
EnableSongMonitor = true;
DirectoryInfo dir = new DirectoryInfo(mpath);
FileInfo[] Files = dir.GetFiles("*", SearchOption.AllDirectories).Where(p => SupportFormat.Contains(p.Extension.ToLower())).ToArray();
foreach (FileInfo f in Files)
{
if (FileList.IndexOf(f.FullName) < 0)
{
lock(LockThis)
{
NewFileList.Add(f.FullName);
Global.SongLogDT.Rows.Add(Global.SongLogDT.NewRow());
Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][0] = "【歌庫監視】偵測到新檔: " + f.FullName;
Global.SongLogDT.Rows[Global.SongLogDT.Rows.Count - 1][1] = Global.SongLogDT.Rows.Count;
}
}
}
if (!Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].EnableRaisingEvents)
{
Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].Path = mpath;
Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].IncludeSubdirectories = true;
Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].Filter = "*.*";
Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].InternalBufferSize = 8192;
Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].NotifyFilter = NotifyFilters.FileName | NotifyFilters.DirectoryName;
Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].Created += new FileSystemEventHandler(WatcherOnCreated);
Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].Deleted += new FileSystemEventHandler(WatcherOnDeleted);
Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].Renamed += new RenamedEventHandler(WatcherOnRenamed);
Global.SongMonitorWatcher[Global.SongMgrMonitorFoldersList.IndexOf(mpath)].EnableRaisingEvents = true;
}
}
});
if (NewFileList.Count > 0)
{
SongAdd_SongreplacedysisTask(NewFileList);
while (!Songreplacedysis.SongreplacedysisCompleted)
{
Thread.Sleep(500);
}
if (!Songreplacedysis.SongreplacedysisError)
{
SongAdd_SongAddTask();
}
}
else
{
if (RemoveSongIdList.Count > 0)
{
this.BeginInvoke((Action)delegate()
{
Common_QueryAddSong(100);
});
Task.Factory.StartNew(() => Common_GetSongStatisticsTask());
Task.Factory.StartNew(() => Common_GetSingerStatisticsTask());
Task.Factory.StartNew(() => CommonFunc.GetRemainingSongIdCount((Global.SongMgrMaxDigitCode == "1") ? 5 : 6));
}
}
if (EnableSongMonitor)
{
Global.SongMonitorDT = new DataTable();
SongQuerySqlStr = "select Song_Id, Song_Lang, Song_FileName, Song_Path from ktv_Song order by Song_Id";
Global.SongMonitorDT = CommonFunc.GetOleDbDataTable(Global.CrazyktvDatabaseFile, SongQuerySqlStr, "");
this.BeginInvoke((Action)delegate()
{
if (!Global.SongMonitorTimer.Enabled)
{
Global.SongMonitorTimer.Tick += new EventHandler(SongMonitorTimer_Tick);
Global.SongMonitorTimer.Interval = 1000;
Global.SongMonitorTimer.Start();
}
});
}
RemoveSongIdList.Clear();
FileList.Clear();
NewFileList.Clear();
}
19
Source : SongDBUpdate.cs
with GNU General Public License v2.0
from CrazyKTV
with GNU General Public License v2.0
from CrazyKTV
private void SongDBUpdate_UpdateFinish()
{
List<bool> list = GetCrazyktvDatabaseStatus();
bool SongMgrDestFolder = list[3];
list.Clear();
list = null;
if (Global.CrazyktvDatabaseStatus)
{
DataTable dt = new DataTable();
string SongQuerySqlStr = "select Song_Id from ktv_Song";
dt = CommonFunc.GetOleDbDataTable(Global.CrazyktvDatabaseFile, SongQuerySqlStr, "");
if (dt.Rows.Count > 0)
{
var d5code = from row in dt.AsEnumerable()
where row.Field<string>("Song_Id").Length == 5
select row;
var d6code = from row in dt.AsEnumerable()
where row.Field<string>("Song_Id").Length == 6
select row;
int MaxDigitCode;
if (d5code.Count<DataRow>() > d6code.Count<DataRow>()) { MaxDigitCode = 5; } else { MaxDigitCode = 6; }
switch (MaxDigitCode)
{
case 5:
ControlExtensions.BeginInvokeIfRequired(SongMgrCfg_MaxDigitCode_ComboBox, cb => cb.Enabled = false);
if (Global.SongMgrMaxDigitCode != "1")
{
ControlExtensions.BeginInvokeIfRequired(SongMgrCfg_MaxDigitCode_ComboBox, cb => cb.SelectedValue = 1);
CommonFunc.SaveConfigXmlFile(Global.SongMgrCfgFile, "SongMgrMaxDigitCode", Global.SongMgrMaxDigitCode);
CommonFunc.SaveConfigXmlFile(Global.SongMgrCfgFile, "SongMgrLangCode", Global.SongMgrLangCode);
}
break;
case 6:
ControlExtensions.BeginInvokeIfRequired(SongMgrCfg_MaxDigitCode_ComboBox, cb => cb.Enabled = false);
if (Global.SongMgrMaxDigitCode != "2")
{
ControlExtensions.BeginInvokeIfRequired(SongMgrCfg_MaxDigitCode_ComboBox, cb => cb.SelectedValue = 2);
CommonFunc.SaveConfigXmlFile(Global.SongMgrCfgFile, "SongMgrMaxDigitCode", Global.SongMgrMaxDigitCode);
CommonFunc.SaveConfigXmlFile(Global.SongMgrCfgFile, "SongMgrLangCode", Global.SongMgrLangCode);
}
break;
}
var query = from row in dt.AsEnumerable()
where row.Field<string>("Song_Id").Length != MaxDigitCode
select row;
if (query.Count<DataRow>() > 0)
{
Global.SongMgrDBVerErrorUIStatus = false;
ControlExtensions.BeginInvokeIfRequired(SongMaintenance_CodeConvTo6_Button, btn => btn.Enabled = false);
ControlExtensions.BeginInvokeIfRequired(SongMaintenance_CodeCorrect_Button, btn => btn.Enabled = true);
Global.CrazyktvDatabaseMaxDigitCode = false;
Global.CrazyktvDatabaseStatus = false;
}
else
{
if (Global.SongMgrSongAddMode == "3" || Global.SongMgrSongAddMode == "4")
{
Global.SongMgrDBVerErrorUIStatus = true;
}
else
{
if (SongMgrDestFolder) { Global.SongMgrDBVerErrorUIStatus = true; } else { Global.SongMgrDBVerErrorUIStatus = false; }
}
switch (Global.SongMgrMaxDigitCode)
{
case "1":
ControlExtensions.BeginInvokeIfRequired(SongMaintenance_CodeConvTo6_Button, btn => btn.Enabled = true);
break;
case "2":
ControlExtensions.BeginInvokeIfRequired(SongMaintenance_CodeConvTo6_Button, btn => btn.Enabled = false);
break;
}
ControlExtensions.BeginInvokeIfRequired(SongMaintenance_CodeCorrect_Button, btn => btn.Enabled = false);
Global.CrazyktvDatabaseMaxDigitCode = true;
}
}
else // 空白資料庫
{
if (Global.SongMgrSongAddMode == "3" || Global.SongMgrSongAddMode == "4")
{
Global.SongMgrDBVerErrorUIStatus = true;
}
else
{
if (SongMgrDestFolder) { Global.SongMgrDBVerErrorUIStatus = true; } else { Global.SongMgrDBVerErrorUIStatus = false; }
}
ControlExtensions.BeginInvokeIfRequired(SongMaintenance_CodeConvTo6_Button, btn => btn.Enabled = false);
ControlExtensions.BeginInvokeIfRequired(SongMaintenance_CodeCorrect_Button, btn => btn.Enabled = false);
Global.CrazyktvDatabaseMaxDigitCode = true;
}
dt.Dispose();
dt = null;
}
if (Global.CrazyktvDatabaseStatus)
{
// 檢查是否有自訂語系
Common_CheckSongLang();
// 統計歌曲數量
Task.Factory.StartNew(() => Common_GetSongStatisticsTask());
// 統計歌手數量
Task.Factory.StartNew(() => Common_GetSingerStatisticsTask());
// 檢查備份移除歌曲是否要刪除
Task.Factory.StartNew(() => Common_CheckBackupRemoveSongTask());
// 取得可用歌曲編號
Task.Factory.StartNew(() => CommonFunc.GetRemainingSongIdCount((Global.SongMgrMaxDigitCode == "1") ? 5 : 6));
this.BeginInvoke((Action)delegate()
{
// 載入我的最愛清單
SongQuery_GetFavoriteUserList();
// 歌庫設定 - 載入下拉選單清單及設定
SongMgrCfg_SetLangLB();
// 歌庫維護 - 載入下拉選單清單及設定
SongMaintenance_GetFavoriteUserList();
SongMaintenance_SetCustomLangControl();
});
}
Global.DatabaseUpdateFinished = true;
}
19
Source : MainForm.cs
with MIT License
from CreateBrowser
with MIT License
from CreateBrowser
public void InvokeIfNeeded(Action action) {
if (this.InvokeRequired) {
this.BeginInvoke(action);
} else {
action.Invoke();
}
}
19
Source : ExplorerBrowserTestForm.cs
with MIT License
from dahall
with MIT License
from dahall
private void explorerBrowser_ItemsEnumerated(object sender, EventArgs e)
{
DebugEnterFunc();
// This event is BeginInvoked to decouple the ExplorerBrowser UI from this UI
BeginInvoke(new MethodInvoker(delegate ()
{
eventHistoryTextBox.Text =
eventHistoryTextBox.Text +
"View enumeration complete.\n";
}));
selectionChanged.Set();
itemsChanged.Set();
}
19
Source : ExplorerBrowserTestForm.cs
with MIT License
from dahall
with MIT License
from dahall
private void explorerBrowser_Navigated(object sender, Vanara.Windows.Forms.ExplorerBrowser.NavigatedEventArgs args)
{
DebugEnterFunc();
// This event is BeginInvoked to decouple the ExplorerBrowser UI from this UI
BeginInvoke(new MethodInvoker(delegate ()
{
// update event history text box
var location = (args.NewLocation == null) ? "(unknown)" : args.NewLocation.Name;
eventHistoryTextBox.Text =
eventHistoryTextBox.Text +
"Navigation completed. New Location = " + location + "\n";
}));
}
19
Source : ExplorerBrowserTestForm.cs
with MIT License
from dahall
with MIT License
from dahall
private void explorerBrowser_Navigating(object sender, Vanara.Windows.Forms.ExplorerBrowser.NavigatingEventArgs args)
{
DebugEnterFunc();
// fail navigation if check selected (this must be synchronous)
args.Cancel = failNavigationCheckBox.Checked;
// This portion is BeginInvoked to decouple the ExplorerBrowser UI from this UI
BeginInvoke(new MethodInvoker(delegate ()
{
// update event history text box
var message = "";
var location = (args.PendingLocation == null) ? "(unknown)" : args.PendingLocation.Name;
if (args.Cancel)
{
message = "Navigation Failing. Pending Location = " + location;
}
else
{
message = "Navigation Pending. Pending Location = " + location;
}
eventHistoryTextBox.Text =
eventHistoryTextBox.Text + message + "\n";
}));
}
19
Source : ExplorerBrowserTestForm.cs
with MIT License
from dahall
with MIT License
from dahall
private void explorerBrowser_NavigationFailed(object sender, Vanara.Windows.Forms.ExplorerBrowser.NavigationFailedEventArgs args)
{
DebugEnterFunc();
// This event is BeginInvoked to decouple the ExplorerBrowser UI from this UI
BeginInvoke(new MethodInvoker(delegate ()
{
// update event history text box
var location = (args.FailedLocation == null) ? "(unknown)" : args.FailedLocation.Name;
eventHistoryTextBox.Text =
eventHistoryTextBox.Text +
"Navigation failed. Failed Location = " + location + "\n";
if (explorerBrowser.History.CurrentLocationIndex == -1)
navigationHistoryCombo.Text = "";
else
navigationHistoryCombo.SelectedIndex = explorerBrowser.History.CurrentLocationIndex;
}));
}
19
Source : ExplorerBrowserTestForm.cs
with MIT License
from dahall
with MIT License
from dahall
private void NavigationLog_NavigationLogChanged(object sender, Vanara.Windows.Forms.ExplorerBrowser.NavigationLogEventArgs args)
{
DebugEnterFunc();
// This event is BeginInvoked to decouple the ExplorerBrowser UI from this UI
BeginInvoke(new MethodInvoker(delegate ()
{
// calculate button states
if (args.CanNavigateBackwardChanged)
{
backButton.Enabled = explorerBrowser.History.CanNavigateBackward;
}
if (args.CanNavigateForwardChanged)
{
forwardButton.Enabled = explorerBrowser.History.CanNavigateForward;
}
// update history combo box
if (args.LocationsChanged)
{
navigationHistoryCombo.Items.Clear();
foreach (var shobj in explorerBrowser.History.Locations)
{
navigationHistoryCombo.Items.Add(shobj.Name);
}
}
if (explorerBrowser.History.CurrentLocationIndex == -1)
navigationHistoryCombo.Text = "";
else
navigationHistoryCombo.SelectedIndex = explorerBrowser.History.CurrentLocationIndex;
}));
}
19
Source : ShellBrowser.cs
with MIT License
from dahall
with MIT License
from dahall
public HRESULT BrowseObject(IntPtr pidl, SBSP wFlags)
{
ShellItem shellObject = null;
// The given PIDL equals Desktop, so ignore the other flags
if (ShellFolder.Desktop.PIDL.Equals(pidl))
{
shellObject = new ShellItem(ShellFolder.Desktop.PIDL);
}
// SBSP_NAVIGATEBACK stands for the last item in the navigation history list (and ignores the pidl)
else if (wFlags.HasFlag(SBSP.SBSP_NAVIGATEBACK))
{
if (History.CanSeekBackward)
shellObject = History.SeekBackward();
else
return HRESULT.STG_E_PATHNOTFOUND;
}
// SBSP_NAVIGATEFORWARD stands for the next item in the navigation history list (and ignores the pidl)
else if (wFlags.HasFlag(SBSP.SBSP_NAVIGATEFORWARD))
{
if (History.CanSeekForward)
shellObject = History.SeekForward();
else
return HRESULT.STG_E_PATHNOTFOUND;
}
// SBSP_RELATIVE stands for a pidl relative to the current folder
else if (wFlags.HasFlag(SBSP.SBSP_RELATIVE))
{
ShellItem currentObject = History.Current;
PIDL targetObject = PIDLUtil.ILCombine((IntPtr)currentObject.PIDL, pidl);
shellObject = new ShellItem(targetObject);
}
// SBSP_PARENT stands for the parent folder (and ignores the pidl)
else if (wFlags.HasFlag(SBSP.SBSP_PARENT))
{
ShellItem currentObject = History.Current;
ShellFolder parentObject = currentObject.Parent;
if ((parentObject is not null) && parentObject.PIDL.IsParentOf(currentObject.PIDL))
shellObject = parentObject;
else
return HRESULT.STG_E_PATHNOTFOUND;
}
// SBSP_ABSOLUTE as the remaining option stands for an absolute pidl that is given
else
{
// Remember we are not the owner of this pidl, so clone it to have our own copy on the heap.
shellObject = new ShellItem(new PIDL(pidl, true));
}
if (InvokeRequired)
BeginInvoke((Action)(() => BrowseShellItemInternal(shellObject)));
else
BrowseShellItemInternal(shellObject);
return HRESULT.S_OK;
#region BrowseShellItemInternal
void BrowseShellItemInternal(ShellItem shellItem)
{
// Save ViewState of current folder
ViewHandler.GetValidInstance()?.ShellView.SaveViewState();
if (viewStateStream is not null)
Marshal.ReleaseComObject(viewStateStream);
viewStateStreamIdentifier = shellItem.ParsingName;
var viewHandler = new ShellBrowserViewHandler(this,
new ShellFolder(shellItem),
ref folderSettings,
ref emptyFolderText);
// Clone the PIDL, to have our own object copy on the heap!
if (!wFlags.HasFlag(SBSP.SBSP_WRITENOHISTORY))
History.Add(new PIDL(viewHandler.ShellFolder.PIDL));
ShellBrowserViewHandler oldViewHandler = ViewHandler;
ViewHandler = viewHandler;
oldViewHandler?.UIDeactivate();
viewHandler.UIActivate();
oldViewHandler?.DestroyView();
OnNavigated(viewHandler.ShellFolder);
OnSelectionChanged();
}
19
Source : InitialForm.cs
with BSD 3-Clause "New" or "Revised" License
from DannyTheSloth
with BSD 3-Clause "New" or "Revised" License
from DannyTheSloth
private void OnLoad(object sender, EventArgs e)
{
BeginInvoke(new MethodInvoker(delegate { Hide(); }));
}
19
Source : FileItemShow.cs
with MIT License
from dathlin
with MIT License
from dathlin
private void DownloadProgressReport(long download, long totle)
{
if(IsHandleCreated)
{
if(InvokeRequired)
{
BeginInvoke(new Action(() =>
{
DownloadProgressReport(download, totle);
}));
return;
}
progressBar1.Value = (int)(download * 100 / totle);
}
}
19
Source : FormSimplyFileUpload.cs
with MIT License
from dathlin
with MIT License
from dathlin
private void ReportProgress(long current, long count)
{
if (InvokeRequired)
{
BeginInvoke(new Action(() =>
{
ReportProgress(current, count);
}));
return;
}
long percent = 0;
if (count > 0)
{
percent = current * 100 / count;
}
progressBar1.Value = (int)percent;
toolStripStatusLabel2.Text = "正在上传文件(" + percent.ToString() + "%)";
}
19
Source : FormBrowseServer.cs
with GNU Lesser General Public License v3.0
from dathlin
with GNU Lesser General Public License v3.0
from dathlin
private void M_OpcUaClient_OpcStatusChange1(object sender, OpcUaStatusEventArgs e)
{
if (InvokeRequired)
{
BeginInvoke(new Action(() =>
{
M_OpcUaClient_OpcStatusChange1(sender, e);
}));
return;
}
if (e.Error)
{
toolStripStatusLabel1.BackColor = Color.Red;
}
else
{
toolStripStatusLabel1.BackColor = SystemColors.Control;
}
toolStripStatusLabel_opc.Text = e.ToString();
}
19
Source : FlaskTimerCircleForm.cs
with MIT License
from DeadlyCrush
with MIT License
from DeadlyCrush
private void Timer1_Tick(object sender, EventArgs e)
{
if (!LauncherForm.g_pinLOCK)
{
// Reverse Style
uint exstyleGet = InteropCommon.GetWindowLong(this.Handle, m_nExStyleNum);
InteropCommon.SetWindowLong(this.Handle, m_nExStyleNum, exstyleGet & ~(WS_EX_LAYERED | WS_EX_TRANSPARENT));
Width = 40;
Height = 40;
}
else
{
// Set Style : Can't Click (Layered Transparent)
uint exstyleGet = InteropCommon.GetWindowLong(this.Handle, m_nExStyleNum);
InteropCommon.SetWindowLong(this.Handle, m_nExStyleNum, exstyleGet | WS_EX_LAYERED | WS_EX_TRANSPARENT);
Width = 40;
Height = 40;
}
int nPercent = Convert.ToInt32(lnFlaskTimer / lnMaxValue * 100);
circularProgressBar1.Text = lnFlaskTimer.ToString("N1");
circularProgressBar1.Value = nPercent; // Convert.ToInt32(lnFlaskTimer);
circularProgressBar1.Invalidate();
lnFlaskTimer = lnFlaskTimer - 0.1; // 100ms
if (lnFlaskTimer <= 0.0)
{
timer1.Stop();
if (circularProgressBar1 != null) circularProgressBar1.Dispose();
this.BeginInvoke(new MethodInvoker(Close));// Close();
}
}
19
Source : FlaskICONTimer.cs
with MIT License
from DeadlyCrush
with MIT License
from DeadlyCrush
private void timer1_Tick(object sender, EventArgs e)
{
try
{
if (!LauncherForm.g_pinLOCK)
{
// Reverse Style
uint exstyleGet = InteropCommon.GetWindowLong(this.Handle, m_nExStyleNum);
InteropCommon.SetWindowLong(this.Handle, m_nExStyleNum, exstyleGet & ~(WS_EX_LAYERED | WS_EX_TRANSPARENT));
Width = 30;
Height = 70;
}
else
{
// Set Style : Can't Click (Layered Transparent)
uint exstyleGet = InteropCommon.GetWindowLong(this.Handle, m_nExStyleNum);
InteropCommon.SetWindowLong(this.Handle, m_nExStyleNum, exstyleGet | WS_EX_LAYERED | WS_EX_TRANSPARENT);
Width = 30;
Height = 70;
}
int nPercent = Convert.ToInt32(lnFlaskTimer / lnMaxValue * 100);
xuiFlatProgressBar1.Text = lnFlaskTimer.ToString("N1");
xuiFlatProgressBar1.Value = nPercent; // Convert.ToInt32(lnFlaskTimer);
xuiFlatProgressBar1.Invalidate();
// Change opacity
//pictureFlask.BackColor = Color.Transparent;
//pictureFlask.Image = AdjustAlpha((Bitmap)Properties.Resources._60px_Atziri_s_Promise_inventory_icon, nPercent);
panelAlpha.Height = 60 - nPercent;
//DeadlyLog4Net._log.Info(nPercent.ToString());
lnFlaskTimer = lnFlaskTimer - 0.1; // 100ms
if (lnFlaskTimer <= 0.0)
{
#region [[[[[ Remove temporary - replacedertion ]]]]]
//if (strUseAlertSound == "Y")
// PlayMediaFile(Application.StartupPath + "\\flaskalert.wav");
#endregion
timer1.Stop();
xuiFlatProgressBar1.Dispose();
this.BeginInvoke(new MethodInvoker(Close));// Close();
}
}
catch (Exception ex)
{
DeadlyLog4Net._log.Error($"catch {MethodBase.GetCurrentMethod().Name}", ex); ;
}
}
19
Source : SkillTimerForm.cs
with MIT License
from DeadlyCrush
with MIT License
from DeadlyCrush
private void Timer1_Tick(object sender, EventArgs e)
{
try
{
if (!LauncherForm.g_pinLOCK)
{
// Reverse Style
uint exstyleGet = InteropCommon.GetWindowLong(this.Handle, m_nExStyleNum);
InteropCommon.SetWindowLong(this.Handle, m_nExStyleNum, exstyleGet & ~(WS_EX_LAYERED | WS_EX_TRANSPARENT));
Width = 40;
Height = 40;
}
else
{
// Set Style : Can't Click (Layered Transparent)
uint exstyleGet = InteropCommon.GetWindowLong(this.Handle, m_nExStyleNum);
InteropCommon.SetWindowLong(this.Handle, m_nExStyleNum, exstyleGet | WS_EX_LAYERED | WS_EX_TRANSPARENT);
Width = 40;
Height = 40;
}
/*using (Graphics gr = circularProgressBar1.CreateGraphics())
{
Font f = new Font(FontFamily.GenericSerif, 10);
SizeF len = gr.MeasureString(lnSkillTimer.ToString("N1"), f);
Point location = new Point(Convert.ToInt32((circularProgressBar1.Width / 2) - len.Width / 2),
Convert.ToInt32((circularProgressBar1.Height / 2) - len.Height / 2));
gr.DrawString(lnSkillTimer.ToString("N1"), f, Brushes.Red, location);
}*/
//
int nPercent = Convert.ToInt32(lnSkillTimer / lnMaxValue * 100);
circularProgressBar1.Text = lnSkillTimer.ToString("N1");
circularProgressBar1.Value = nPercent; // Convert.ToInt32(lnFlaskTimer);
circularProgressBar1.Invalidate();
lnSkillTimer = lnSkillTimer - 0.1; // 100ms
if (lnSkillTimer <= 0.0)
{
/*switch (nSkillNumber)
{
case 1:
ControlForm.frmSkillK1 = null;
break;
case 2:
ControlForm.frmSkillK2 = null;
break;
case 3:
ControlForm.frmSkillK3 = null;
break;
case 4:
ControlForm.frmSkillK4 = null;
break;
case 5:
ControlForm.frmSkillK5 = null;
break;
default:
break;
}*/
circularProgressBar1.Dispose();
circularProgressBar1 = null;
//this.Dispose();
timer1.Stop();
this.BeginInvoke(new MethodInvoker(Close)); // Close();
}
}
catch(Exception ex)
{
DeadlyLog4Net._log.Error($"catch {MethodBase.GetCurrentMethod().Name}", ex); ;
}
}
19
Source : FrmNodePreviewPanel.cs
with MIT License
from DebugST
with MIT License
from DebugST
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
m_node = (STNode)Activator.CreateInstance(m_type);
m_node.Left = 20; m_node.Top = 20;
m_editor.Nodes.Add(m_node);
m_property.SetNode(m_node);
m_rect_panel = new Rectangle(0, 0, 402, 202);
m_rect_handle = new Rectangle(m_ptHandle.X, m_ptHandle.Y, m_nHandleSize, m_nHandleSize);
m_rect_exclude = new Rectangle(0, m_nHandleSize, m_nHandleSize, this.Height - m_nHandleSize);
if (m_bRight) {
this.Left = m_ptHandle.X;
m_rect_panel.X = m_ptHandle.X + m_nHandleSize;
} else {
this.Left = m_ptHandle.X - this.Width + m_nHandleSize;
m_rect_exclude.X = this.Width - m_nHandleSize;
m_rect_panel.X = this.Left;
}
if (m_ptHandle.Y + this.Height > Screen.GetWorkingArea(this).Bottom) {
this.Top = m_ptHandle.Y - this.Height + m_nHandleSize;
m_rect_exclude.Y -= m_nHandleSize;
} else this.Top = m_ptHandle.Y;
m_rect_panel.Y = this.Top;
m_region = new Region(new Rectangle(Point.Empty, this.Size));
m_region.Exclude(m_rect_exclude);
using (Graphics g = this.CreateGraphics()) {
IntPtr h = m_region.GetHrgn(g);
FrmNodePreviewPanel.SetWindowRgn(this.Handle, h, false);
m_region.ReleaseHrgn(h);
}
this.MouseLeave += Event_MouseLeave;
m_editor.MouseLeave += Event_MouseLeave;
m_property.MouseLeave += Event_MouseLeave;
this.BeginInvoke(new MethodInvoker(() => {
m_property.Focus();
}));
}
19
Source : Form1.cs
with GNU General Public License v2.0
from dontpanic92
with GNU General Public License v2.0
from dontpanic92
private void InitializeControls()
{
this.renderer = new FormRenderer(this);
this.layout = new VerticalLayout(this)
{
Size = Helpers.GetDipSize(new Size2(this.Width, this.Height), this.renderer.Factory.DesktopDpi),
};
this.neovimClient.NeovimExited += this.OnNeovimExited;
this.neovimControl = new NeovimControl(this.layout, this.neovimClient);
this.neovimControl.EnableLigature = Properties.Settings.Default.EnableLigature;
this.neovimClient.BackgroundColorChanged += (int intColor) =>
{
this.backgroundColor = intColor;
this.Invoke(new MethodInvoker(() =>
{
var color = Helpers.GetColor(intColor);
this.BlurBehind(
Color.FromArgb((int)(color.A * 255), (int)(color.R * 255), (int)(color.G * 255), (int)(color.B * 255)),
Properties.Settings.Default.BackgroundOpacity,
Properties.Settings.Default.BlurType);
}));
};
var buttonSize = Helpers.GetDipSize(
new Size2(SystemInformation.CaptionButtonSize.Width, SystemInformation.CaptionButtonSize.Height),
this.renderer.Factory.DesktopDpi);
var replacedleBar = new HorizontalLayout(this.layout)
{
Size = new Size2F(1, replacedleBarHeight),
};
this.logoControl = new LogoControl(replacedleBar);
this.replacedleControl = new replacedleControl(replacedleBar);
this.settingsButton = new ButtonControl(replacedleBar, "⚙", buttonSize)
{
Click = () =>
{
var dialog = new Dotnvim.Dialogs.SettingsDialog();
dialog.ShowDialog();
},
};
this.minimizeButton = new ButtonControl(replacedleBar, "🗕", buttonSize)
{
Click = () =>
{
this.WindowState = FormWindowState.Minimized;
this.OnResize();
},
};
this.maximizeButton = new ButtonControl(replacedleBar, "🗖", buttonSize)
{
Click = () =>
{
this.WindowState =
this.WindowState == FormWindowState.Maximized ? FormWindowState.Normal : FormWindowState.Maximized;
this.OnResize();
},
};
this.closeButton = new ButtonControl(replacedleBar, "✕", buttonSize)
{
Click = this.Close,
};
replacedleBar.AddControl(this.logoControl);
replacedleBar.AddControl(this.replacedleControl, true);
replacedleBar.AddControl(this.settingsButton);
replacedleBar.AddControl(this.minimizeButton);
replacedleBar.AddControl(this.maximizeButton);
replacedleBar.AddControl(this.closeButton);
this.neovimClient.replacedleChanged += (string replacedle) =>
{
this.BeginInvoke(new MethodInvoker(() =>
{
this.Text = replacedle;
}));
this.replacedleControl.Text = replacedle;
};
this.neovimClient.ForegroundColorChanged += (int intColor) =>
{
var color = Helpers.GetColor(intColor);
this.replacedleControl.Color = color;
this.settingsButton.ForegroundColor = color;
this.minimizeButton.ForegroundColor = color;
this.maximizeButton.ForegroundColor = color;
this.closeButton.ForegroundColor = color;
};
this.neovimClient.BackgroundColorChanged += (int intColor) =>
{
var color = Helpers.GetColor(intColor);
this.settingsButton.BackgroundColor = color;
this.minimizeButton.BackgroundColor = color;
this.maximizeButton.BackgroundColor = color;
this.closeButton.BackgroundColor = color;
};
this.layout.AddControl(replacedleBar);
this.layout.AddControl(this.neovimControl, true);
this.layout.Layout();
}
19
Source : Form1.cs
with GNU General Public License v2.0
from dontpanic92
with GNU General Public License v2.0
from dontpanic92
private void OnNeovimExited(int exitCode)
{
this.BeginInvoke(new MethodInvoker(() =>
{
this.Close();
}));
}
19
Source : WinFormsMetadataUpdateHandler.cs
with MIT License
from dotnet
with MIT License
from dotnet
internal static void UpdateApplication(Type[]? types)
{
// Repaint all open forms.
foreach (Form openForm in Application.OpenForms)
{
openForm.BeginInvoke((MethodInvoker)(() => openForm.Refresh()));
}
}
19
Source : PrintPreviewControl.cs
with MIT License
from dotnet
with MIT License
from dotnet
protected override void OnPaint(PaintEventArgs pevent)
{
Color backColor = GetBackColor(SystemInformation.HighContrast);
using var backBrush = backColor.GetCachedSolidBrushScope();
if (pageInfo is null || pageInfo.Length == 0)
{
pevent.Graphics.FillRectangle(backBrush, ClientRectangle);
if (pageInfo is not null || exceptionPrinting)
{
// Calculate formats
using StringFormat format = new StringFormat
{
Alignment = ControlPaint.TranslateAlignment(ContentAlignment.MiddleCenter),
LineAlignment = ControlPaint.TranslateLineAlignment(ContentAlignment.MiddleCenter)
};
// Do actual drawing
using var brush = ForeColor.GetCachedSolidBrushScope();
pevent.Graphics.DrawString(
exceptionPrinting ? SR.PrintPreviewExceptionPrinting : SR.PrintPreviewNoPages,
Font,
brush,
ClientRectangle,
format);
}
else
{
BeginInvoke(new MethodInvoker(CalculatePageInfo));
}
}
else
{
if (!layoutOk)
{
ComputeLayout();
}
Size controlPhysicalSize = new Size(PixelsToPhysical(new Point(Size), screendpi));
//Point imagePixels = PhysicalToPixels(new Point(imageSize), screendpi);
Point virtualPixels = new Point(VirtualSize);
// center pages on screen if small enough
Point offset = new Point(
Math.Max(0, (Size.Width - virtualPixels.X) / 2),
Math.Max(0, (Size.Height - virtualPixels.Y) / 2));
offset.X -= Position.X;
offset.Y -= Position.Y;
lastOffset = offset;
int borderPixelsX = PhysicalToPixels(border, screendpi.X);
int borderPixelsY = PhysicalToPixels(border, screendpi.Y);
Region originalClip = pevent.Graphics.Clip;
Rectangle[] pageRenderArea = new Rectangle[rows * columns];
Point lastImageSize = Point.Empty;
int maxImageHeight = 0;
using (var clipScope = new GraphicsClipScope(pevent.GraphicsInternal))
{
for (int row = 0; row < rows; row++)
{
// Initialize our LastImageSize variable...
lastImageSize.X = 0;
lastImageSize.Y = maxImageHeight * row;
for (int column = 0; column < columns; column++)
{
int imageIndex = StartPage + column + row * columns;
if (imageIndex < pageInfo.Length)
{
Size pageSize = pageInfo[imageIndex].PhysicalSize;
if (autoZoom)
{
double zoomX = ((double)controlPhysicalSize.Width - border * (columns + 1))
/ (columns * pageSize.Width);
double zoomY = ((double)controlPhysicalSize.Height - border * (rows + 1))
/ (rows * pageSize.Height);
zoom = Math.Min(zoomX, zoomY);
}
imageSize = new Size((int)(zoom * pageSize.Width), (int)(zoom * pageSize.Height));
Point imagePixels = PhysicalToPixels(new Point(imageSize), screendpi);
int x = offset.X + borderPixelsX * (column + 1) + lastImageSize.X;
int y = offset.Y + borderPixelsY * (row + 1) + lastImageSize.Y;
lastImageSize.X += imagePixels.X;
//The Height is the Max of any PageHeight..
maxImageHeight = Math.Max(maxImageHeight, imagePixels.Y);
pageRenderArea[imageIndex - StartPage] = new Rectangle(x, y, imagePixels.X, imagePixels.Y);
pevent.Graphics.ExcludeClip(pageRenderArea[imageIndex - StartPage]);
}
}
}
pevent.Graphics.FillRectangle(backBrush, ClientRectangle);
}
for (int i = 0; i < pageRenderArea.Length; i++)
{
if (i + StartPage < pageInfo.Length)
{
Rectangle box = pageRenderArea[i];
pevent.Graphics.DrawRectangle(Pens.Black, box);
using (var brush = ForeColor.GetCachedSolidBrushScope())
{
pevent.Graphics.FillRectangle(brush, box);
}
box.Inflate(-1, -1);
if (pageInfo[i + StartPage].Image is not null)
{
pevent.Graphics.DrawImage(pageInfo[i + StartPage].Image, box);
}
box.Width--;
box.Height--;
pevent.Graphics.DrawRectangle(Pens.Black, box);
}
}
19
Source : MainForm.cs
with MIT License
from dvingerh
with MIT License
from dvingerh
private async void ExportOrAbort(object sender, EventArgs e)
{
if (!isBusy)
{
isBusy = true;
ExportButton.Text = "Abort";
SettingsGroupBox.Enabled = false;
Directory.CreateDirectory(AppVariables.ProcessingDir);
Directory.CreateDirectory(AppVariables.LibsDir);
ClearTempDirectories();
StatusTextBox.Clear();
if (!AppResources.IsUnpacked)
{
WriteStatus("Unpacking libraries", prefix:false);
WriteStatus("");
await Task.Run(() =>
{
AppResources.UnpackResources();
});
}
OverallExportProgressBar.Value = 0;
OverallExportProgressBar.Style = ProgressBarStyle.Marquee;
CurrentExportProgressBar.Value = 0;
CurrentExportProgressBar.Maximum = 0;
int index = 0;
int overallIndex = 0;
Directory.CreateDirectory(AppVariables.ProcessingDir);
Directory.CreateDirectory(Path.Combine(AppVariables.ProcessingDir, "wem"));
if (AppVariables.CreateWav)
Directory.CreateDirectory(Path.Combine(AppVariables.ProcessingDir, "wav"));
if (AppVariables.CreateMp3)
Directory.CreateDirectory(Path.Combine(AppVariables.ProcessingDir, "mp3"));
if (AppVariables.CreateOgg)
Directory.CreateDirectory(Path.Combine(AppVariables.ProcessingDir, "ogg"));
if (AppVariables.CreateFlac)
Directory.CreateDirectory(Path.Combine(AppVariables.ProcessingDir, "flac"));
if (!isAborted)
{
WriteStatus("Exporting PCK => WEM (Required)", prefix:false);
WriteStatus("");
await Task.Run(() =>
{
IProgress<int> progress = new Progress<int>(value =>
{
BeginInvoke((System.Action)(() =>
{
CurrentExportProgressBar.Maximum = AppVariables.PckFiles.Count;
CurrentExportProgressBar.Value = value;
}));
});
foreach (string pckFile in AppVariables.PckFiles)
{
if (!isAborted)
{
PckToWem.StartPckToWem(pckFile, this);
BeginInvoke((System.Action)(() =>
{
WriteStatus($"{Path.GetFileName(pckFile)} => {Path.GetFileNameWithoutExtension(pckFile)}.wem");
}));
index += 1;
progress.Report(index);
}
else
break;
}
});
}
if (!isAborted)
{
WriteStatus("");
WriteStatus("Exporting WEM => WAV (Required)", prefix: false);
WriteStatus("");
index = 0;
await Task.Run(() =>
{
AppVariables.WemFiles = Directory.GetFiles(Path.Combine(AppVariables.ProcessingDir, "wem"), "*.wem").ToList();
BeginInvoke((System.Action)(() =>
{
OverallExportProgressBar.Style = ProgressBarStyle.Blocks;
int overallMaximum = AppVariables.WemFiles.Count;
foreach (CheckBox formatCheckBox in SettingsGroupBox.Controls.OfType<CheckBox>())
{
if (formatCheckBox.Checked)
overallMaximum += AppVariables.WemFiles.Count;
}
OverallExportProgressBar.Maximum = overallMaximum;
}));
IProgress<int> progress = new Progress<int>(value =>
{
BeginInvoke((System.Action)(() =>
{
CurrentExportProgressBar.Maximum = AppVariables.WemFiles.Count;
CurrentExportProgressBar.Value = value;
OverallExportProgressBar.Value = overallIndex;
}));
});
foreach (string wemFile in AppVariables.WemFiles)
{
if (!isAborted)
{
WemToWav.StartWemToWav(wemFile, this);
BeginInvoke((System.Action)(() =>
{
WriteStatus($"{Path.GetFileName(wemFile)} => {Path.GetFileNameWithoutExtension(wemFile)}.wav");
}));
index += 1;
overallIndex += 1;
progress.Report(index);
}
else
break;
}
});
}
AppVariables.WavFiles = Directory.GetFiles(Path.Combine(AppVariables.ProcessingDir, "wav"), "*.wav").ToList();
if (AppVariables.CreateWav && !isAborted)
await ExportAudioFormat("wav");
if (AppVariables.CreateMp3 && !isAborted)
await ExportAudioFormat("mp3");
if (AppVariables.CreateOgg && !isAborted)
await ExportAudioFormat("ogg");
if (AppVariables.CreateFlac && !isAborted)
await ExportAudioFormat("flac");
}
else
{
isAborted = true;
ExportButton.Text = "Aborting...";
ExportButton.Enabled = false;
return;
}
Application.DoEvents();
OnExportEnded(isAborted);
}
19
Source : MainForm.cs
with MIT License
from dvingerh
with MIT License
from dvingerh
private async Task ExportAudioFormat(string format)
{
Directory.CreateDirectory(Path.Combine(AppVariables.OutputDir, format));
int index = 0;
int overallIndex = OverallExportProgressBar.Value;
WriteStatus("");
if (format == "wav")
WriteStatus("Copying WAV Files to destination directory", prefix: false);
else
WriteStatus($"Exporting WAV => {format.ToUpper()}", prefix: false);
WriteStatus("");
await Task.Run(() =>
{
IProgress<int> progress = new Progress<int>(value =>
{
BeginInvoke((System.Action)(() =>
{
CurrentExportProgressBar.Maximum = AppVariables.WavFiles.Count;
CurrentExportProgressBar.Value = value;
OverallExportProgressBar.Value = overallIndex;
}));
});
foreach (string wavFile in AppVariables.WavFiles)
{
if (!isAborted)
{
if (format != "wav")
WavConverter.ConvertWav(wavFile, format);
string srcFile = Path.Combine(AppVariables.ProcessingDir, format, Path.GetFileNameWithoutExtension(wavFile) + $".{format}");
string destFile = Path.Combine(AppVariables.OutputDir, format, Path.GetFileNameWithoutExtension(wavFile) + $".{format}");
File.Copy(srcFile, destFile, true);
BeginInvoke((System.Action)(() =>
{
WriteStatus($"{Path.GetFileName(wavFile)} => {Path.GetFileName(srcFile)}");
exportedAudioFiles += 1;
index += 1;
overallIndex += 1;
progress.Report(index);
}));
}
else
break;
}
});
}
19
Source : OGLControl.cs
with GNU Lesser General Public License v3.0
from Edgar077
with GNU Lesser General Public License v3.0
from Edgar077
private void Timer_Tick(object sender, EventArgs e)
{
animationAngle += 0.01f;
if (animationAngle > float.MaxValue)
animationAngle = 0f;
//System.Diagnostics.Debug.WriteLine("Timer_Tick: ");
this.BeginInvoke(new AnimateDelegate(Animate));
}
See More Examples