Creating a form in the plugin failed
Creating a form in the plugin failed
21 Jul 2024, 04:41
Hi everybody
I'm building the code that opens the form for the countdown timer in the plugin.
But there is an error in the following code
please help
public partial class frmCandleCountdown : Form
{
private const string resourcePath = @"C:\Users\theha\OneDrive\Documents\cAlgo\";
myCandleCountDown caller;
bool alwaysOnTop = true;
public frmCandleCountdown(myCandleCountDown _caller, bool _alwaysOnTop)
{
alwaysOnTop = _alwaysOnTop;
caller = _caller;
InitializeComponent();
}
public void UpdateCounter(string _text)
{
lblCounter.Text = _text;
}
private void frmCandleCountdown_FormClosed(object sender, FormClosedEventArgs e)
{
caller.Stop();
}
private void frmCandleCountdown_Load(object sender, EventArgs e)
{
this.Icon = new Icon(resourcePath+"Countdown.ico");
this.TopMost = alwaysOnTop;
}
}
Replies
tikahcm2
27 Jul 2024, 03:33
( Updated at: 28 Jul 2024, 06:43 )
RE: Creating a form in the plugin failed
PanagiotisCharalampous said:
Thanks for replying
Here is my code. (no error reported when compiling)
using System;
using System.Drawing;
using cAlgo.API;
using System.Threading;
using System.Windows.Forms;
using System.Media;
namespace cAlgo.Robots
{
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)]
public class CountDown : Robot
{
[Parameter("Alert On", DefaultValue = true)]
public bool paramAlertOn { get; set; }
[Parameter("Always On Top", DefaultValue = true)]
public bool paramOnTop { get; set; }
[Parameter("Sound File Path", DefaultValue = "C:\\Users\\theha\\OneDrive\\Documents\\cAlgo\\sound.wav")]
public string SoundFilePath { get; set; }
private Thread _thread;
private frmCandleCountdown _counter;
const string alertFile = @"C:\Users\theha\OneDrive\Documents\cAlgo\sound.wmp3";
protected override void OnStart()
{
Timer.Start(1);
_counter = new frmCandleCountdown(this, paramOnTop);
_thread = new Thread(() =>{ _counter.ShowDialog(); });
_thread.SetApartmentState(ApartmentState.STA);
_thread.Start();
}
protected override void OnTimer()
{
int cdMinutes = 14 - Time.Minute % 15;
int cdSeconds = 59 - Time.Second;
_thread = new Thread(() =>{ _counter.UpdateCounter(cdMinutes.ToString("00")+":"+cdSeconds.ToString("00"));});
_thread.SetApartmentState(ApartmentState.STA);
_thread.Start();
if (Time.Second==31 && paramAlertOn)
{
Notifications.PlaySound(SoundFilePath);
}
}
protected override void OnStop()
{
_thread = new Thread(() => {_counter.Close();});
_thread.SetApartmentState(ApartmentState.STA);
_thread.Start();
}
}
public partial class frmCandleCountdown : Form
{
private const string resourcePath = @"C:\Users\theha\OneDrive\Documents\cAlgo\";
CountDown caller;
bool alwaysOnTop = true;
public frmCandleCountdown(CountDown _caller, bool _alwaysOnTop)
{
alwaysOnTop = _alwaysOnTop;
caller = _caller;
InitializeComponent();
}
public void UpdateCounter(string _text)
{
lblCounter.Text = _text;
}
private void frmCandleCountdown_FormClosed(object sender, FormClosedEventArgs e)
{
caller.Stop();
}
private void frmCandleCountdown_Load(object sender, EventArgs e)
{
this.Icon = new Icon(resourcePath+"Countdown.ico");
this.TopMost = alwaysOnTop;
}
}
partial class frmCandleCountdown
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
private void InitializeComponent()
{
this.lblCounter = new System.Windows.Forms.Label();
this.SuspendLayout();
this.lblCounter.Dock = System.Windows.Forms.DockStyle.Top;
this.lblCounter.Font = new System.Drawing.Font("Bahnschrift SemiBold", 33F, System.Drawing.FontStyle.Regular);
this.lblCounter.Location = new System.Drawing.Point(0, 0);
this.lblCounter.Name = "lblCounter";
this.lblCounter.Size = new System.Drawing.Size(39, 39);
this.lblCounter.TabIndex = 0;
this.lblCounter.Text = "00:00";
this.lblCounter.TextAlign = System.Drawing.ContentAlignment.TopCenter;
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.BackColor = System.Drawing.SystemColors.GrayText;
this.ClientSize = new System.Drawing.Size(39, 39);
this.Controls.Add(this.lblCounter);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 16.39F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "frmCandleCountdown";
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.Left = Screen.PrimaryScreen.Bounds.Width-139;
this.Text = "Candle Count Down";
this.TopMost = true;
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmCandleCountdown_FormClosed);
this.Load += new System.EventHandler(this.frmCandleCountdown_Load);
this.ResumeLayout(true);
}
#endregion
private System.Windows.Forms.Label lblCounter;
}
}
Please check why the plugin is not running./.
@tikahcm2
PanagiotisCharalampous
28 Jul 2024, 07:34
RE: RE: Creating a form in the plugin failed
tikahcm2 said:
PanagiotisCharalampous said:
Thanks for replying
Here is my code. (no error reported when compiling)using System;using System.Drawing;using cAlgo.API;using System.Threading;using System.Windows.Forms;using System.Media;namespace cAlgo.Robots{ [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)] public class CountDown : Robot { [Parameter("Alert On", DefaultValue = true)] public bool paramAlertOn { get; set; } [Parameter("Always On Top", DefaultValue = true)] public bool paramOnTop { get; set; } [Parameter("Sound File Path", DefaultValue = "C:\\Users\\theha\\OneDrive\\Documents\\cAlgo\\sound.wav")] public string SoundFilePath { get; set; } private Thread _thread; private frmCandleCountdown _counter; const string alertFile = @"C:\Users\theha\OneDrive\Documents\cAlgo\sound.wmp3"; protected override void OnStart() { Timer.Start(1); _counter = new frmCandleCountdown(this, paramOnTop); _thread = new Thread(() =>{ _counter.ShowDialog(); }); _thread.SetApartmentState(ApartmentState.STA); _thread.Start(); } protected override void OnTimer() { int cdMinutes = 14 - Time.Minute % 15; int cdSeconds = 59 - Time.Second; _thread = new Thread(() =>{ _counter.UpdateCounter(cdMinutes.ToString("00")+":"+cdSeconds.ToString("00"));}); _thread.SetApartmentState(ApartmentState.STA); _thread.Start(); if (Time.Second==31 && paramAlertOn) { Notifications.PlaySound(SoundFilePath); } } protected override void OnStop() { _thread = new Thread(() => {_counter.Close();}); _thread.SetApartmentState(ApartmentState.STA); _thread.Start(); } } public partial class frmCandleCountdown : Form { private const string resourcePath = @"C:\Users\theha\OneDrive\Documents\cAlgo\"; CountDown caller; bool alwaysOnTop = true; public frmCandleCountdown(CountDown _caller, bool _alwaysOnTop) { alwaysOnTop = _alwaysOnTop; caller = _caller; InitializeComponent(); } public void UpdateCounter(string _text) { lblCounter.Text = _text; } private void frmCandleCountdown_FormClosed(object sender, FormClosedEventArgs e) { caller.Stop(); } private void frmCandleCountdown_Load(object sender, EventArgs e) { this.Icon = new Icon(resourcePath+"Countdown.ico"); this.TopMost = alwaysOnTop; } } partial class frmCandleCountdown { private System.ComponentModel.IContainer components = null; protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code private void InitializeComponent() { this.lblCounter = new System.Windows.Forms.Label(); this.SuspendLayout(); this.lblCounter.Dock = System.Windows.Forms.DockStyle.Top; this.lblCounter.Font = new System.Drawing.Font("Bahnschrift SemiBold", 33F, System.Drawing.FontStyle.Regular); this.lblCounter.Location = new System.Drawing.Point(0, 0); this.lblCounter.Name = "lblCounter"; this.lblCounter.Size = new System.Drawing.Size(39, 39); this.lblCounter.TabIndex = 0; this.lblCounter.Text = "00:00"; this.lblCounter.TextAlign = System.Drawing.ContentAlignment.TopCenter; this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.BackColor = System.Drawing.SystemColors.GrayText; this.ClientSize = new System.Drawing.Size(39, 39); this.Controls.Add(this.lblCounter); this.Font = new System.Drawing.Font("Microsoft Sans Serif", 16.39F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.Name = "frmCandleCountdown"; this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; this.Left = Screen.PrimaryScreen.Bounds.Width-139; this.Text = "Candle Count Down"; this.TopMost = true; this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmCandleCountdown_FormClosed); this.Load += new System.EventHandler(this.frmCandleCountdown_Load); this.ResumeLayout(true); } #endregion private System.Windows.Forms.Label lblCounter; } }
Please check why the plugin is not running./.
Hi there,
I just tried this and works fine for me
Best regards,
Panagiotis
@PanagiotisCharalampous
PanagiotisCharalampous
29 Jul 2024, 05:23
RE: RE: RE: RE: Creating a form in the plugin failed
tikahcm2 said:
How can I convert this cbot into a plugin?
thanks!
Hi there,
There is no specific conversion process. You need to write a plug in from scratch with the same functionality.
Best regards,
Panagiotis
@PanagiotisCharalampous
PanagiotisCharalampous
22 Jul 2024, 06:22
Hi there,
Please provide the complete plug in code and the exact error message you receive.
Best regards,
Panagiotis
@PanagiotisCharalampous