Ecco un primo test:
Due soli bottoni: quello per la scelta del file e quello che da inizio all'interpretazione, più una ovvia progressbar
Fatte queste prove, comincio a pensare davvero di poter scrivere la mia personale interfaccia grafica per la KFlop, vedrò in seguito quali strumenti/linguaggio effettivamente utilizzare.
Questo il codice del programma (richiede una installazione KFlop, anche senza scheda collegata, e Ironpython 2.7):
Codice: Seleziona tutto
import clr
clr.AddReferenceToFileAndPath("""C:\KMotion433l\KMotion\Release\KMotion_dotNet.dll""")
from KMotion_dotNet import KM_Controller
clr.AddReference('System.Windows.Forms')
clr.AddReference('System.Drawing')
from System.Windows.Forms import Application
import System.Drawing
import System.Windows.Forms
from System.Drawing import *
from System.Windows.Forms import *
class MainForm(Form):
def __init__(self):
self.InitializeComponent()
self.num_lines = 0
self.km = KM_Controller()
self.km.CoordMotion.IsSimulation = True
print "KMOtion found:", self.km.CheckConnected()
#Setting handlers
self.km.CoordMotion.Interpreter.InterpreterCompleted += self.InterpreterCompletedHandler
self.km.CoordMotion.Interpreter.InterpreterStatusUpdated += self.InterpreterStatusHandler
print "IsReady:", self.km.CheckIsReady()
print "Is Sim:", self.km.CoordMotion.IsSimulation
print "Loaded:", self.km.CoordMotion.Loaded
def InterpreterStatusHandler(self, *args):
print "Line:", int(args[0]), " [", int(float(args[0]) / self.num_lines * 100) , " %]"
self._progressBar1.Value = int(float(args[0]) / self.num_lines * 100)
def InterpreterCompletedHandler(self, *args):
print "Completato"
self._progressBar1.Value = 100
def InitializeComponent(self):
self._button1 = System.Windows.Forms.Button()
self._button2 = System.Windows.Forms.Button()
self._textBox1 = System.Windows.Forms.TextBox()
self._progressBar1 = System.Windows.Forms.ProgressBar()
self._openFileDialog1 = System.Windows.Forms.OpenFileDialog()
self.SuspendLayout()
#
# button1
#
self._button1.Location = System.Drawing.Point(12, 10)
self._button1.Name = "button1"
self._button1.Size = System.Drawing.Size(83, 26)
self._button1.TabIndex = 0
self._button1.Text = "GCode..."
self._button1.UseVisualStyleBackColor = True
self._button1.Click += self.Button1Click
#
# button2
#
self._button2.Location = System.Drawing.Point(12, 44)
self._button2.Name = "button2"
self._button2.Size = System.Drawing.Size(83, 26)
self._button2.TabIndex = 1
self._button2.Text = "... fresalo !"
self._button2.UseVisualStyleBackColor = True
self._button2.Click += self.Button2Click
#
# textBox1
#
self._textBox1.Location = System.Drawing.Point(101, 14)
self._textBox1.Name = "textBox1"
self._textBox1.Size = System.Drawing.Size(325, 20)
self._textBox1.TabIndex = 2
#
# progressBar1
#
self._progressBar1.Location = System.Drawing.Point(101, 44)
self._progressBar1.Name = "progressBar1"
self._progressBar1.Size = System.Drawing.Size(324, 25)
self._progressBar1.TabIndex = 3
#
# openFileDialog1
#
self._openFileDialog1.FileName = "openFileDialog1"
self._openFileDialog1.ShowReadOnly = True
#
# MainForm
#
self.ClientSize = System.Drawing.Size(438, 79)
self.Controls.Add(self._progressBar1)
self.Controls.Add(self._textBox1)
self.Controls.Add(self._button2)
self.Controls.Add(self._button1)
self.Name = "MainForm"
self.Text = "Interfaccia Minimale KFlop"
self.ResumeLayout(False)
self.PerformLayout()
def Button1Click(self, sender, e):
if self._openFileDialog1.ShowDialog() == DialogResult.OK:
self._textBox1.Text = self._openFileDialog1.FileName
f = open(self._openFileDialog1.FileName, "r")
self.num_lines = sum(1 for line in f)
f.close()
def Button2Click(self, sender, e):
self.km.CoordMotion.Interpreter.Interpret(self._textBox1.Text)
Application.EnableVisualStyles()
form = MainForm()
Application.Run(form)
... continua