Console.cs
Description du code
Console.cs est un fichier du projet BiblioBrol.Ce fichier est situé dans /var/www/bin/sniplets/bibliobrol/src/.
Projet BiblioBrol :
Gestion de media en CSharp.
Pour plus d'infos, vous pouvez consulter la brève analyse.
Code source ou contenu du fichier
Code c# (Console.cs) (396 lignes)
using System; using System.Collections.Generic; using System.Drawing; using System.Text; using System.Windows.Forms; using be.gaudry.bibliobrol.config; using be.gaudry.bibliobrol.view.dialogs; using be.gaudry.observer; using be.gaudry.view.dialogs; using be.gaudry.view; namespace be.gaudry.bibliobrol.view.utils { internal delegate void UpdateDelegateHandler(Notification notification); public partial class Console : UserControl, be.gaudry.observer.IObserver { #region declarations private int lineNbr, maxLines; private Font fontNormal, fontAvert; private UpdateDelegateHandler UpdateDelegate; private bool buffered; #endregion #region constructors and destructors public Console() { buffered = false; InitializeComponent(); lineNbr = 0; maxLines = 200; fontNormal = new System.Drawing.Font("Microsoft Sans Serif", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); fontAvert = new System.Drawing.Font(fontNormal, ((System.Drawing.FontStyle)(System.Drawing.FontStyle.Bold))); subscribeToObservables(); } ~Console() { unsubscribeToObservables(); Dispose(false); } #endregion #region IObserver Members public void update(Notification notification) { try { cleanTsStatus(); StringBuilder str; switch (notification.Level) { case Notification.VERBOSE.persistentOperation: if (Config.ConsolePersistentOps) { consoleRTB.SelectionColor = System.Drawing.Color.Orchid; write(notification); } break; case Notification.VERBOSE.internalNotification: if (Config.ConsoleDebug) { consoleRTB.SelectionColor = System.Drawing.Color.DarkViolet; write(notification); } break; case Notification.VERBOSE.showErrors: if (exBuffer.Count > 0) { exBuffer.Clear(); } buffered = true; break; case Notification.VERBOSE.showNewErrors: exBuffer.Clear(); buffered = false; break; case Notification.VERBOSE.hideErrors: buffered = true; break; case Notification.VERBOSE.advancedOperation: if (Config.ConsoleAdvancedOps) { consoleRTB.SelectionColor = System.Drawing.Color.LightSeaGreen; write(notification); } break; case Notification.VERBOSE.basicOperation: if (Config.ConsoleBasicOps) { consoleRTB.SelectionColor = System.Drawing.Color.ForestGreen; write(notification); } break; case Notification.VERBOSE.criticalError: { ((IMDIParent)this.ParentForm).setStatusMessage( global::be.gaudry.bibliobrol.Properties.Resources.brolLevel4, "Erreur critique : " + notification.Title, notification.Msg ); } if (Config.ConsoleCriticalError) { consoleRTB.SelectionColor = System.Drawing.Color.Crimson; consoleRTB.SelectionFont = fontAvert; write(notification); consoleRTB.SelectionFont = fontNormal; } if (Config.PopupCriticalError) { if (buffered) { exBuffer.Add(notification.NotificationException); } else { ExceptionDialog.ShowDialog(notification.NotificationException, this.ParentForm); } /*str = new StringBuilder(notification.Msg); appendException(str, notification.NotificationException); MessageBox.Show( str.ToString(), "ERREUR CRITIQUE : " + notification.Title, MessageBoxButtons.OK, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1);*/ } break; case Notification.VERBOSE.debug: if (Config.ConsoleDebug) { consoleRTB.SelectionColor = System.Drawing.Color.DarkOrange; write(notification); } break; case Notification.VERBOSE.lowError: if (Config.ConsoleLowError) { consoleRTB.SelectionColor = System.Drawing.Color.Crimson; write(notification); } break; case Notification.VERBOSE.error: { ((IMDIParent)this.ParentForm).setStatusMessage( global::be.gaudry.bibliobrol.Properties.Resources.brolLevel3, "Erreur : " + notification.Title, notification.Msg ); } if (Config.ConsoleOpsResult) { consoleRTB.SelectionColor = System.Drawing.Color.Crimson; consoleRTB.SelectionFont = fontAvert; write(notification); consoleRTB.SelectionFont = fontNormal; if (notification.NotificationException != null) { str.Append(notification.NotificationException.Message); str.Append("\n\nVous pouvez consulter la console pour un rapport détaillé de l'erreur."); } } if (Config.PopupOpsResult) { if (notification.NotificationException != null) { if (buffered) { exBuffer.Add(notification.NotificationException); } else { ExceptionDialog.ShowDialog(notification.NotificationException, this.ParentForm); } } else MessageBox.Show( this.ParentForm, str.ToString(), "ERREUR : " + notification.Title, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1 ); } break; case Notification.VERBOSE.opsResult: { ((IMDIParent)this.ParentForm).setStatusMessage( global::be.gaudry.bibliobrol.Properties.Resources.brolLevel1, notification.Title, notification.Msg ); } if (Config.ConsoleOpsResult) { consoleRTB.SelectionColor = System.Drawing.Color.SteelBlue; write(notification); } if (Config.PopupOpsResult) { MessageBox.Show( notification.Msg, String.Empty.Equals(notification.Title) ? "Information" : notification.Title, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1 ); } break; default: consoleRTB.SelectionColor = System.Drawing.Color.Black; write(notification); break; } if (lineNbr != 0 && (lineNbr % maxLines == 0)) { DialogResult r = MessageBox.Show( this, String.Format("La console contient actuellement {0} notifications.Toutes les {1} notifications il est préférable de supprimer les anciens message afin de maintenir un niveau de performances acceptable.\nDésirez-vous vider la console ?", lineNbr, maxLines), "Console", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); if (r == DialogResult.Yes) { Clear(); } } } catch (Exception ex) { StringBuilder str = new StringBuilder("Tentative d'écriture dans la console depuis un autre thread : "); appendException(str, ex); System.Console.WriteLine(str.ToString()); } } #endregion #region private methods private void cleanTsStatus() { { ((IMDIParent)this.ParentForm).setStatusMessage( global::be.gaudry.bibliobrol.Properties.Resources.brolConsole, String.Format("{0} message(s) dans la console", Count), "" ); } } private void subscribeToObservables() { Config.instanceAddObserver(this); //model model.dao.DAOFactory.Instance.getConfigDao().addObserver(this); model.dao.DAOFactory.Instance.getPersonDao().addObserver(this); model.dao.DAOFactory.Instance.getBrolDao().addObserver(this); model.dao.DAOFactory.Instance.getMediaBrolDao().addObserver(this); model.dao.DAOFactory.Instance.getTaskDao().addObserver(this); model.dao.DAOFactory.Instance.getExporterDao().addObserver(this); model.dao.DAOFactory.Instance.getImporterDao().addObserver(this); model.dao.DAOFactory.Instance.getStatsDao().addObserver(this); model.dao.DAOFactory.Instance.getSerieDao().addObserver(this); //other views StaticObservable.addObserver(this); } private void unsubscribeToObservables() { Config.instanceRemoveObserver(this); //model model.dao.DAOFactory.Instance.getConfigDao().removeObserver(this); model.dao.DAOFactory.Instance.getPersonDao().removeObserver(this); model.dao.DAOFactory.Instance.getBrolDao().removeObserver(this); model.dao.DAOFactory.Instance.getMediaBrolDao().removeObserver(this); model.dao.DAOFactory.Instance.getTaskDao().removeObserver(this); model.dao.DAOFactory.Instance.getExporterDao().removeObserver(this); model.dao.DAOFactory.Instance.getImporterDao().removeObserver(this); model.dao.DAOFactory.Instance.getStatsDao().removeObserver(this); model.dao.DAOFactory.Instance.getSerieDao().removeObserver(this); //other views StaticObservable.removeObserver(this); } private void appendException(StringBuilder str, Exception e) { if (e != null) { str.Append("\nDétails de l'erreur : \nSource : "); str.Append(e.Source); str.Append("\nException : "); str.Append(e.GetType().ToString()); str.Append("\nTargetSite : "); str.Append(e.TargetSite); str.Append("\nInnerException : "); str.Append(e.InnerException); str.Append("\nStackTrace :\n"); str.Append(e.StackTrace); str.Append("\n\nAide : http://www.gaudry.be/infobrol.html"); } } private String getInfo(Notification n) { str.Append(++lineNbr); str.Append("\t"); str.Append(String.Empty.Equals(n.Title) ? "Sans titre" : n.Title); if (!String.Empty.Equals(n.Msg)) { str.Append("\nMessage : "); str.Append(n.Msg); } str.Append("\nNiveau de notification : "); if (n.Sender != null) { str.Append("\nEnvoyé par "); str.Append(n.Sender); } if (n.NotificationException != null) { appendException(str, n.NotificationException); } return str.ToString(); } private void safeWrite(Notification n) { consoleRTB.AppendText(getInfo(n)); consoleRTB.ScrollToCaret(); } private void write(Notification n) { if (consoleRTB.InvokeRequired) { consoleRTB.Invoke(UpdateDelegate, n); } else { safeWrite((n)); } } #endregion #region public methods /// <summary> /// Cleans all displayed text on the console and resets notifications counter. /// </summary> public void Clear() { consoleRTB.Clear(); lineNbr = 0; } #endregion #region properties /// <summary> /// Number of notifications in the console /// </summary> public int Count { get { return this.lineNbr; } } #endregion /// <summary> /// Cleans all displayed text on the console and resets notifications counter. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cleanConsole_Click(object sender, EventArgs e) { Clear(); } /// <summary> /// Displays an option dialog to select verbose level of the console /// (allows to select the kinds of notification to display). /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void selectVerbose_Click(object sender, EventArgs e) { dialog.ShowDialog(ParentForm); } } }
Structure et Fichiers du projet
Afficher/masquer...Icône | Nom | Taille | Modification |
Pas de sous-répertoires. | |||
Icône | Nom | Taille | Modification |
| _ | Répertoire parent | 0 octets | 1734902443 22/12/2024 22:20:43 |
Utilisation de l'explorateur de code
- Navigation :
- Un clic sur une icône de répertoire ouvre ce répertoire pour en afficher les fichiers.
- Lorsque le répertoire en cours ne contient pas de sous-répertoires il est possible de remonter vers le répertoire parent.
- La structure de répertoires en treetable (tableau en forme d'arborescence) n'est plus possibledans cette version.
- Un clic sur une icône de fichier ouvre ce fichier pour en afficher le code avec la coloration syntaxique adaptée en fonction du langage principal utilisé dans le fichier.
- Affichage :
- Il est possible de trier les répertoires ou les fichiers selon certains critères (nom, taille, date).
- Actions :
- Les actions possible sur les fichiers dépendent de vos droits d'utilisateur sur le site. Veuillez activer le mode utilisateur pour activer les actions.
Version en cache
22/12/2024 22:20:43 Cette version de la page est en cache (à la date du 22/12/2024 22:20:43) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 16/10/2009, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/cs-bibliobrol-source-rf-view/utils//Console.cs.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.