Salut à tous !
Je sais que certains suivent dans le silence le post et le code, je vous tiens à jour ...
J'ai décidé que Community Tools aura désormais 2 versions.
La version 1 sera pour rétro et la 2 pour 2.0 cela permet d'éviter de tout mélanger, grosse erreur que j'ai commencé à faire !
Je n'ai pas tout de suite envie de travailler sur 2.0, en ce moment je n'ai pas tous le temps que je voudrais autant perso que en programmation.
Je suis en train de réaliser la version 1.1, version dont je repars complètement à 0 sur des bases vierges pour refaire visuellement, structurellement et de façon propre le code.
Plusieurs choses vont être ajoutés et d'autres retirés ...
• Le retraite de la création de la base de donnée au démarrage, une base de donnée à jour au moment de la sortie sera présente.
(Cela retire le délais au chargement, même en ADSL c'est plus rapide de DL la BDD)
• Auto actualisation de la liste des items, qui permettra aux non développeurs de tenir à jour le logiciel.
• De la propreté et de l'organisation dans le code !
• Le choix de sélection de tous les serveurs, l'IP est récupéré dynamiquement donc les rares fois où le serveur change d'IP pas de problèmes!
• L'ajout de l'aide forgemagie (j'ai à peut près une idée ça va être compliqué car si le logiciel n'est pas lancer avant ou autre ça peut ne pas fonctionner comme ça devrait, le client lui est lancer donc suit tout de A a Z mais pas le tools ..)
• Je vais essayer d'améliorer les détections, comme la DD et la Banque qui peuvent être confondus voir si c'est possible ..
• Je vais revoir tout le GUI également, je vais essayer un truc plus esthétique !
J'ai retiré aussi par ailleurs un package inutile .. Du moins vu que je repars sur un projet vierge je suis partie sur l'ajout des 2 packages principaux utilisés (SharpPcap et data.Sqlite) et en plus ils sont à jour comme ça !
Si vous avez des idées d'ajout dites le !
Il faut savoir quand on utilise plusieurs threads ils ne peuvent pas directement gérer l'affichage, il faut passer par un "invoke" pour pouvoir avoir le droit de le gérer, j'ai imaginé une façon simple, efficace et rapide pour gérer tous les contrôleurs sans m'embêter !
J'ai pas testé toute la liste mais seulement 2 ou 3 mais j'imagine que ça devrait fonctionner toutes façons je le verrais pendant le dev:
#region Invokes
public void invokeReplace(Control control, string value) {
if (control.InvokeRequired) {
MethodInvoker invoker = delegate { invokeReplace(control, value); };
control.Invoke(invoker);
} else {
switch (control.GetType().Name) {
case "RichTextBox":
((RichTextBox)control).Text = value;
break;
case "Label":
((Label)control).Text = value;
break;
case "TextBox":
((TextBox)control).Text = value;
break;
}
}
}
public void invokeReplace(Control control, int value) {
if (control.InvokeRequired) {
MethodInvoker invoker = delegate { invokeReplace(control, value); };
control.Invoke(invoker);
} else {
switch (control.GetType().Name) {
case "ProgressBar":
((ProgressBar)control).Value = value;
break;
case "ComboBox":
((ComboBox)control).SelectedIndex = value;
break;
case "NumericUpDown":
((NumericUpDown)control).Value = value;
break;
case "ListBox":
((ListBox)control).SelectedIndex = value;
break;
}
}
}
public void invokeReplace(Control control, bool value) {
if (control.InvokeRequired) {
MethodInvoker invoker = delegate { invokeReplace(control, value); };
control.Invoke(invoker);
} else {
switch (control.GetType().Name) {
case "CheckBox":
((CheckBox)control).Checked = value;
break;
case "RadioButton":
((RadioButton)control).Checked = value;
break;
}
}
}
public void invokeAdd(Control control, string value) {
if (control.InvokeRequired) {
MethodInvoker invoker = delegate { invokeAdd(control, value); };
control.Invoke(invoker);
} else {
switch (control.GetType().Name) {
case "RichTextBox":
((RichTextBox)control).AppendText(value);
break;
}
}
}
public void invokeAdd(Control control, int value) {
if (control.InvokeRequired) {
MethodInvoker invoker = delegate { invokeAdd(control, value); };
control.Invoke(invoker);
} else {
switch (control.GetType().Name) {
case "ProgressBar":
((ProgressBar)control).Value = ((ProgressBar)control).Value + value;
break;
case "NumericUpDown":
((NumericUpDown)control).Value = ((NumericUpDown)control).Value + value;
break;
}
}
}
public string invokeGet(Control control, string value) {
if (control.InvokeRequired) {
MethodInvoker invoker = delegate { invokeGet(control, value); };
return (string)control.Invoke(invoker);
} else {
switch (control.GetType().Name) {
case "RichTextBox":
return ((RichTextBox)control).Text;
break;
case "Label":
return ((Label)control).Text;
break;
case "TextBox":
return ((TextBox)control).Text;
break;
default:
return null;
break;
}
}
}
public int invokeGet(Control control, int value) {
if (control.InvokeRequired) {
MethodInvoker invoker = delegate { invokeGet(control, value); };
return (int)control.Invoke(invoker);
} else {
switch (control.GetType().Name) {
case "ProgressBar":
return ((ProgressBar)control).Value;
break;
case "ComboBox":
return ((ComboBox)control).SelectedIndex;
break;
case "NumericUpDown":
return (int)((NumericUpDown)control).Value;
break;
case "ListBox":
return ((ListBox)control).SelectedIndex;
break;
default:
return null;
break;
}
}
}
public bool invokeGet(Control control, bool value) {
if (control.InvokeRequired) {
MethodInvoker invoker = delegate { invokeGet(control, value); };
return (bool)control.Invoke(invoker);
} else {
switch (control.GetType().Name) {
case "CheckBox":
return ((CheckBox)control).Checked;
break;
case "RadioButton":
return ((RadioButton)control).Checked;
break;
default:
return false;
break;
}
}
}
#endregion