Compare commits

..

No commits in common. "master" and "midiseq" have entirely different histories.

7 changed files with 64 additions and 147 deletions

View file

@ -1,17 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DMX-2.0", "DMX-2.0.csproj", "{2CB55300-0A5B-4DFA-8984-B7EC4C455962}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2CB55300-0A5B-4DFA-8984-B7EC4C455962}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2CB55300-0A5B-4DFA-8984-B7EC4C455962}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2CB55300-0A5B-4DFA-8984-B7EC4C455962}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2CB55300-0A5B-4DFA-8984-B7EC4C455962}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

View file

@ -498,7 +498,7 @@ namespace DMX2
value = 255; value = 255;
break; break;
case AlsaSeqLib.snd_seq_event_type_t.SND_SEQ_EVENT_PGMCHANGE: case AlsaSeqLib.snd_seq_event_type_t.SND_SEQ_EVENT_PGMCHANGE:
//CurrentPage = (uint)evS.data_ev_ctrl.value; CurrentPage = (uint)evS.data_ev_ctrl.value;
continue; continue;
case AlsaSeqLib.snd_seq_event_type_t.SND_SEQ_EVENT_PORT_START: case AlsaSeqLib.snd_seq_event_type_t.SND_SEQ_EVENT_PORT_START:
PortDetected( PortDetected(

View file

@ -33,6 +33,8 @@ namespace DMX2
ListStore lsEffets=null; /* liste des effets */ ListStore lsEffets=null; /* liste des effets */
//TreeViewColumn nomCol; /* inutile dans le contexte macro */ //TreeViewColumn nomCol; /* inutile dans le contexte macro */
ListStore lsDest = null;
bool effetChange = false; bool effetChange = false;
public void EffetChange () public void EffetChange ()
{ {
@ -208,10 +210,7 @@ namespace DMX2
new ContextMenuHelper(frame1,RenamePopup); new ContextMenuHelper(frame1,RenamePopup);
new ContextMenuHelper(evBBox,CompteurPopup); new ContextMenuHelper(evBBox,CompteurPopup);
txtPerif.Text = s.Destination; /*lsDest = new ListStore(typeof(string));
btnPerif.Clicked += BtnPerif_Clicked;
/*lsDest = new ListStore(typeof(string));
lsDest.AppendValues("TEST 1"); lsDest.AppendValues("TEST 1");
lsDest.AppendValues("TEST 2"); lsDest.AppendValues("TEST 2");
@ -220,16 +219,11 @@ namespace DMX2
cbDest.SetCellDataFunc(cbDest.Cells[0], HandleCellLayoutDataFunc);*/ cbDest.SetCellDataFunc(cbDest.Cells[0], HandleCellLayoutDataFunc);*/
} }
void BtnPerif_Clicked(object sender, EventArgs e)
{
sequenceur.Destination = txtPerif.Text;
}
void CompteurPopup (object sender, ContextMenuEventArgs e) void CompteurPopup (object sender, ContextMenuEventArgs e)
{ {
Menu m = new Menu(); Menu m = new Menu();

View file

@ -18,13 +18,13 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Xml;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Threading; using System.Threading;
using System.Xml;
namespace DMX2 namespace DMX2
{ {
public class SequenceurMidi : Sequenceur , IDisposable public class SequenceurMidi : Sequenceur , IDisposable
{ {
public class Ligne { public class Ligne {
public Ligne(){} public Ligne(){}
@ -108,10 +108,23 @@ namespace DMX2
AlsaSeqLib.MidiPort midiport; AlsaSeqLib.MidiPort midiport;
static int portnum=0; static int portnum=0;
public class DestListItem {
public DestListItem(string _name, AlsaSeqLib.Port _port){
name = _name;
port = _port;
}
string name;
public string Name{
get { return name; }
}
AlsaSeqLib.Port port;
public AlsaSeqLib.Port Port{
get { return port; }
}
}
String destination; DestListItem destination;
public String Destination public DestListItem Destination
{ {
get{ get{
return destination; return destination;
@ -239,23 +252,12 @@ namespace DMX2
return 0; return 0;
} }
TimeSpan autoconnectTimer = TimeSpan.Zero; public override void Tick (TimeSpan time)
readonly TimeSpan acInterval = TimeSpan.FromSeconds(5);
public override void Tick (TimeSpan time)
{ {
if (paused) if (paused)
return; return;
timeStamp += time; timeStamp += time;
autoconnectTimer += time;
if (autoconnectTimer > acInterval)
{
AutoConnect();
autoconnectTimer = TimeSpan.Zero;
}
if (Monitor.TryEnter (this)) { if (Monitor.TryEnter (this)) {
try { try {
while (topPresent &&(timeStamp >= topSuivant)) { while (topPresent &&(timeStamp >= topSuivant)) {
@ -267,29 +269,7 @@ namespace DMX2
} }
} }
private void AutoConnect() public void LigneSuivante ()
{
if (Destination.Length < 3) return;
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(
destination, System.Text.RegularExpressions.RegexOptions.Compiled | System.Text.RegularExpressions.RegexOptions.IgnoreCase
);
foreach (var cli in AlsaSeqLib.EnumClients())
{
foreach (var p in cli.Ports)
{
string fullportname = cli.Name + ':' + p.Name;
if (r.IsMatch (fullportname ))
{
// midiport.ConnectFrom(p);
midiport.ConnectTo(p);
}
}
}
}
public void LigneSuivante ()
{ {
lock (this) { lock (this) {
if(lignes.Count==0) return; if(lignes.Count==0) return;
@ -367,14 +347,14 @@ namespace DMX2
foreach (System.Text.RegularExpressions.Match match in matches) { foreach (System.Text.RegularExpressions.Match match in matches) {
if (match.Groups [2].Success) { if (match.Groups [2].Success) {
midiCh = int.Parse (match.Groups [2].Value)-1; midiCh = int.Parse (match.Groups [2].Value);
continue; continue;
} }
if (match.Groups [4].Success) { if (match.Groups [4].Success) {
ev = new AlsaSeqLib.snd_seq_event_t (); ev = new AlsaSeqLib.snd_seq_event_t ();
ev.type = AlsaSeqLib.snd_seq_event_type_t.SND_SEQ_EVENT_CONTROLLER; ev.type = AlsaSeqLib.snd_seq_event_type_t.SND_SEQ_EVENT_CONTROLLER;
ev.data_ev_ctrl.channel = (byte)midiCh; ev.data_ev_ctrl.channel = (byte)midiCh;
ev.data_ev_ctrl.param = uint.Parse (match.Groups [4].Value)-0; ev.data_ev_ctrl.param = uint.Parse (match.Groups [4].Value);
ev.data_ev_ctrl.value = int.Parse (match.Groups [5].Value); ev.data_ev_ctrl.value = int.Parse (match.Groups [5].Value);
midiport.SendEvent (ev); midiport.SendEvent (ev);
} }
@ -383,7 +363,7 @@ namespace DMX2
ev = new AlsaSeqLib.snd_seq_event_t (); ev = new AlsaSeqLib.snd_seq_event_t ();
ev.type = AlsaSeqLib.snd_seq_event_type_t.SND_SEQ_EVENT_PGMCHANGE; ev.type = AlsaSeqLib.snd_seq_event_type_t.SND_SEQ_EVENT_PGMCHANGE;
ev.data_ev_ctrl.channel = (byte)midiCh; ev.data_ev_ctrl.channel = (byte)midiCh;
ev.data_ev_ctrl.value = int.Parse (match.Groups [7].Value)-1; ev.data_ev_ctrl.value = int.Parse (match.Groups [7].Value);
midiport.SendEvent (ev); midiport.SendEvent (ev);
} }
@ -429,7 +409,6 @@ namespace DMX2
parent.AppendChild (el); parent.AppendChild (el);
el.SetAttribute ("id", ID.ToString ()); el.SetAttribute ("id", ID.ToString ());
el.SetAttribute ("name", Name); el.SetAttribute ("name", Name);
el.SetAttribute("destination", Destination);
//el.SetAttribute ("master", master.ToString ()); //el.SetAttribute ("master", master.ToString ());
xmlEl = parent.OwnerDocument.CreateElement ("EffetSuivant"); xmlEl = parent.OwnerDocument.CreateElement ("EffetSuivant");
@ -491,7 +470,6 @@ namespace DMX2
{ {
ID = int.Parse (el.GetAttribute ("id")); ID = int.Parse (el.GetAttribute ("id"));
Name = el.GetAttribute ("name"); Name = el.GetAttribute ("name");
Destination = el.TryGetAttribute("destination", String.Empty);
XmlElement xmlE; XmlElement xmlE;

View file

@ -44,13 +44,7 @@ namespace DMX2
private global::Gtk.Label timeLabel; private global::Gtk.Label timeLabel;
private global::Gtk.HBox hbox3; private global::Gtk.ComboBox cbDest;
private global::Gtk.Label label1;
private global::Gtk.Entry txtPerif;
private global::Gtk.Button btnPerif;
private global::Gtk.Toolbar toolbar; private global::Gtk.Toolbar toolbar;
@ -162,41 +156,13 @@ namespace DMX2
w7.Expand = false; w7.Expand = false;
w7.Fill = false; w7.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild // Container child vbox3.Gtk.Box+BoxChild
this.hbox3 = new global::Gtk.HBox(); this.cbDest = global::Gtk.ComboBox.NewText();
this.hbox3.Name = "hbox3"; this.cbDest.Name = "cbDest";
this.hbox3.Spacing = 6; this.vbox3.Add(this.cbDest);
// Container child hbox3.Gtk.Box+BoxChild global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.cbDest]));
this.label1 = new global::Gtk.Label(); w8.Position = 1;
this.label1.Name = "label1";
this.label1.LabelProp = "Nom du périphérique :";
this.hbox3.Add(this.label1);
global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.label1]));
w8.Position = 0;
w8.Expand = false; w8.Expand = false;
w8.Fill = false; w8.Fill = false;
// Container child hbox3.Gtk.Box+BoxChild
this.txtPerif = new global::Gtk.Entry();
this.txtPerif.CanFocus = true;
this.txtPerif.Name = "txtPerif";
this.txtPerif.IsEditable = true;
this.txtPerif.InvisibleChar = '●';
this.hbox3.Add(this.txtPerif);
global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.txtPerif]));
w9.Position = 1;
// Container child hbox3.Gtk.Box+BoxChild
this.btnPerif = new global::Gtk.Button();
this.btnPerif.CanFocus = true;
this.btnPerif.Name = "btnPerif";
this.btnPerif.UseUnderline = true;
this.btnPerif.Label = "Ok";
this.hbox3.Add(this.btnPerif);
global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.btnPerif]));
w10.Position = 2;
w10.Expand = false;
w10.Fill = false;
this.vbox3.Add(this.hbox3);
global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox3]));
w11.Position = 1;
// Container child vbox3.Gtk.Box+BoxChild // Container child vbox3.Gtk.Box+BoxChild
this.UIManager.AddUiFromString(@"<ui><toolbar name='toolbar'><toolitem name='goForwardAction' action='goForwardAction'/><toolitem name='goBackAction' action='goBackAction'/><toolitem name='mediaPauseAction' action='mediaPauseAction'/><toolitem name='btnAjoutLigne' action='btnAjoutLigne'/><toolitem name='btnRetireligne' action='btnRetireligne'/><toolitem name='Action' action='Action'/></toolbar></ui>"); this.UIManager.AddUiFromString(@"<ui><toolbar name='toolbar'><toolitem name='goForwardAction' action='goForwardAction'/><toolitem name='goBackAction' action='goBackAction'/><toolitem name='mediaPauseAction' action='mediaPauseAction'/><toolitem name='btnAjoutLigne' action='btnAjoutLigne'/><toolitem name='btnRetireligne' action='btnRetireligne'/><toolitem name='Action' action='Action'/></toolbar></ui>");
this.toolbar = ((global::Gtk.Toolbar)(this.UIManager.GetWidget("/toolbar"))); this.toolbar = ((global::Gtk.Toolbar)(this.UIManager.GetWidget("/toolbar")));
@ -205,13 +171,13 @@ namespace DMX2
this.toolbar.ToolbarStyle = ((global::Gtk.ToolbarStyle)(0)); this.toolbar.ToolbarStyle = ((global::Gtk.ToolbarStyle)(0));
this.toolbar.IconSize = ((global::Gtk.IconSize)(2)); this.toolbar.IconSize = ((global::Gtk.IconSize)(2));
this.vbox3.Add(this.toolbar); this.vbox3.Add(this.toolbar);
global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.toolbar])); global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.toolbar]));
w12.Position = 2; w9.Position = 2;
w12.Expand = false; w9.Expand = false;
w12.Fill = false; w9.Fill = false;
this.hbox1.Add(this.vbox3); this.hbox1.Add(this.vbox3);
global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.vbox3])); global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.vbox3]));
w13.Position = 0; w10.Position = 0;
// Container child hbox1.Gtk.Box+BoxChild // Container child hbox1.Gtk.Box+BoxChild
this.UIManager.AddUiFromString("<ui><toolbar name=\'toolbar1\'><toolitem name=\'closeAction\' action=\'closeAction\'/><" + this.UIManager.AddUiFromString("<ui><toolbar name=\'toolbar1\'><toolitem name=\'closeAction\' action=\'closeAction\'/><" +
"/toolbar></ui>"); "/toolbar></ui>");
@ -222,16 +188,16 @@ namespace DMX2
this.toolbar1.ToolbarStyle = ((global::Gtk.ToolbarStyle)(0)); this.toolbar1.ToolbarStyle = ((global::Gtk.ToolbarStyle)(0));
this.toolbar1.IconSize = ((global::Gtk.IconSize)(2)); this.toolbar1.IconSize = ((global::Gtk.IconSize)(2));
this.hbox1.Add(this.toolbar1); this.hbox1.Add(this.toolbar1);
global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.toolbar1])); global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.toolbar1]));
w14.PackType = ((global::Gtk.PackType)(1)); w11.PackType = ((global::Gtk.PackType)(1));
w14.Position = 1; w11.Position = 1;
w14.Expand = false; w11.Expand = false;
w14.Fill = false; w11.Fill = false;
this.vbox2.Add(this.hbox1); this.vbox2.Add(this.hbox1);
global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox1])); global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.hbox1]));
w15.Position = 0; w12.Position = 0;
w15.Expand = false; w12.Expand = false;
w15.Fill = false; w12.Fill = false;
// Container child vbox2.Gtk.Box+BoxChild // Container child vbox2.Gtk.Box+BoxChild
this.scrolledwindow1 = new global::Gtk.ScrolledWindow(); this.scrolledwindow1 = new global::Gtk.ScrolledWindow();
this.scrolledwindow1.CanFocus = true; this.scrolledwindow1.CanFocus = true;
@ -244,8 +210,8 @@ namespace DMX2
this.cmdList.RulesHint = true; this.cmdList.RulesHint = true;
this.scrolledwindow1.Add(this.cmdList); this.scrolledwindow1.Add(this.cmdList);
this.vbox2.Add(this.scrolledwindow1); this.vbox2.Add(this.scrolledwindow1);
global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.scrolledwindow1])); global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.scrolledwindow1]));
w17.Position = 1; w14.Position = 1;
// Container child vbox2.Gtk.Box+BoxChild // Container child vbox2.Gtk.Box+BoxChild
this.lblText = new global::Gtk.Label(); this.lblText = new global::Gtk.Label();
this.lblText.Name = "lblText"; this.lblText.Name = "lblText";
@ -254,10 +220,10 @@ namespace DMX2
"(ex: N64+127 ou N12-)\nGT : Go To (ex: GT4)\nr: loop"; "(ex: N64+127 ou N12-)\nGT : Go To (ex: GT4)\nr: loop";
this.lblText.UseMarkup = true; this.lblText.UseMarkup = true;
this.vbox2.Add(this.lblText); this.vbox2.Add(this.lblText);
global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.lblText])); global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.lblText]));
w18.Position = 2; w15.Position = 2;
w18.Expand = false; w15.Expand = false;
w18.Fill = false; w15.Fill = false;
this.alignment1.Add(this.vbox2); this.alignment1.Add(this.vbox2);
this.GtkAlignment.Add(this.alignment1); this.GtkAlignment.Add(this.alignment1);
this.frame1.Add(this.GtkAlignment); this.frame1.Add(this.GtkAlignment);

View file

@ -5,7 +5,7 @@
<target-gtk-version>2.12</target-gtk-version> <target-gtk-version>2.12</target-gtk-version>
</configuration> </configuration>
<import> <import>
<widget-library name="../bin/Release/DMX-2.0.exe" internal="true" /> <widget-library name="../bin/Debug/DMX-2.0.exe" internal="true" />
</import> </import>
<icon-factory> <icon-factory>
<icon-set id="tirettes"> <icon-set id="tirettes">
@ -2168,7 +2168,7 @@ au sequenceur</property>
<child> <child>
<widget class="Gtk.Label" id="label1"> <widget class="Gtk.Label" id="label1">
<property name="MemberName" /> <property name="MemberName" />
<property name="LabelProp" translatable="yes">Nom du périphérique :</property> <property name="LabelProp" translatable="yes">label1</property>
</widget> </widget>
<packing> <packing>
<property name="Position">0</property> <property name="Position">0</property>
@ -2178,24 +2178,20 @@ au sequenceur</property>
</packing> </packing>
</child> </child>
<child> <child>
<widget class="Gtk.Entry" id="txtPerif"> <widget class="Gtk.ComboBoxEntry" id="comboboxentry2">
<property name="MemberName" /> <property name="MemberName" />
<property name="CanFocus">True</property> <property name="IsTextCombo">True</property>
<property name="IsEditable">True</property> <property name="Items" translatable="yes" />
<property name="InvisibleChar">●</property>
</widget> </widget>
<packing> <packing>
<property name="Position">1</property> <property name="Position">1</property>
<property name="AutoSize">True</property> <property name="AutoSize">False</property>
</packing> </packing>
</child> </child>
<child> <child>
<widget class="Gtk.Button" id="btnPerif"> <widget class="Gtk.Label" id="label2">
<property name="MemberName" /> <property name="MemberName" />
<property name="CanFocus">True</property> <property name="LabelProp" translatable="yes">label2</property>
<property name="Type">TextOnly</property>
<property name="Label" translatable="yes">Ok</property>
<property name="UseUnderline">True</property>
</widget> </widget>
<packing> <packing>
<property name="Position">2</property> <property name="Position">2</property>

0
test
View file