Ignore:
Timestamp:
Mar 8, 2009, 3:17:39 PM (13 years ago)
Author:
Thomas Schmid
Message:
  • TextOutput: text presentation is updated directly after settings change
  • Editor: added support for Presentation update event
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/TextOutput/TextOutput.cs

    r207 r232  
    239239    private bool canSendPropertiesChangedEvent = true;
    240240    private int inputs = 0;
     241    private string fillValue;
    241242    #endregion
    242243
     
    257258      settings = new TextOutputSettings(this);
    258259      settings.OnGuiLogNotificationOccured += settings_OnGuiLogNotificationOccured;
     260      settings.PropertyChanged += settings_PropertyChanged;
    259261      CanChangeDynamicProperty = true;
    260262      // No dynProp event in constructor - editor will read the property initial without the event.
     
    263265      CreateInputOutput(false);
    264266    }
     267
    265268    # endregion
    266269
     
    289292    {
    290293      EventsHelper.GuiLogMessage(OnGuiLogNotificationOccured, this, new GuiLogEventArgs(args.Message, this, args.NotificationLevel));
     294    }
     295
     296    void settings_PropertyChanged(object sender, PropertyChangedEventArgs e)
     297    {
     298      if (e.PropertyName == "PresentationFormatSetting" && fillValue != null)
     299      {
     300        setText(fillValue);
     301      }
    291302    }
    292303
     
    387398        }
    388399
    389         string fillValue = null;
     400        fillValue = null;
    390401
    391402        if (value is String || value is string)
     
    405416          listCryptoolStreamsOut.Add((CryptoolStream)value);
    406417          CryptoolStream stream = value as CryptoolStream;
    407           GuiLogMessage("Stream: Filling TextBoxes now...", NotificationLevel.Debug);
     418          // GuiLogMessage("Stream: Filling TextBoxes now...", NotificationLevel.Debug);
    408419          if (stream.Length > settings.MaxLength)
    409420            AddMessage("WARNING - Stream is too large (" + (stream.Length / 1024).ToString("0.00") + " kB), output will be truncated to " + (settings.MaxLength / 1024).ToString("0.00") + "kB", NotificationLevel.Warning);
     
    417428        {
    418429          byte[] byteArray = value as byte[];
    419           GuiLogMessage("Byte array: Filling textbox now...", NotificationLevel.Debug);
     430          // GuiLogMessage("Byte array: Filling textbox now...", NotificationLevel.Debug);
    420431          if (byteArray.Length > settings.MaxLength)
    421432          {
     
    446457        if (fillValue != null)
    447458        {
    448           // Presentation format conversion
    449           switch (settings.Presentation)
     459          setText(fillValue);
     460          OnPropertyChanged("StringInput");
     461        }
     462
     463        OnPropertyChanged(propertyKey);
     464      }
     465      catch (Exception ex)
     466      {
     467        GuiLogMessage(ex.Message, NotificationLevel.Error);
     468      }
     469    }
     470
     471    private void setText(string fillValue)
     472    {
     473      if (fillValue != null)
     474      {
     475        // Presentation format conversion
     476        switch (settings.Presentation)
     477        {
     478          case TextOutputSettings.PresentationFormat.Text:
     479            // nothin to do here
     480            break;
     481          case TextOutputSettings.PresentationFormat.Hex:
     482            byte[] byteValues = Encoding.Default.GetBytes(fillValue.ToCharArray());
     483            fillValue = BitConverter.ToString(byteValues, 0, byteValues.Length).Replace("-", "");
     484            break;
     485          case TextOutputSettings.PresentationFormat.Base64:
     486            fillValue = Convert.ToBase64String(Encoding.Default.GetBytes(fillValue.ToCharArray()));
     487            break;
     488          default:
     489            break;
     490        }
     491
     492
     493        Presentation.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     494        {
     495          if (settings.Append)
    450496          {
    451             case TextOutputSettings.PresentationFormat.Text:
    452               // nothin to do here
    453               break;
    454             case TextOutputSettings.PresentationFormat.Hex:
    455               byte[] byteValues = Encoding.Default.GetBytes(fillValue.ToCharArray());
    456               fillValue = BitConverter.ToString(byteValues, 0, byteValues.Length).Replace("-", "");
    457               break;
    458             case TextOutputSettings.PresentationFormat.Base64:
    459               fillValue = Convert.ToBase64String(Encoding.Default.GetBytes(fillValue.ToCharArray()));
    460               break;
    461             default:
    462               break;
     497            if (textOutputPresentation.textBox.Text.Length > settings.MaxLength)
     498            {
     499              GuiLogMessage("Text exceeds size limit. Deleting text...", NotificationLevel.Debug);
     500              textOutputPresentation.textBox.Text = string.Empty;
     501              textOutputQuickWatchPresentation.textBox.Text = string.Empty;
     502            }
     503
     504            // append line breaks only if not first line
     505            if (textOutputPresentation.textBox.Text != null && textOutputPresentation.textBox.Text.Length > 0)
     506            {
     507              for (int i = 0; i < settings.AppendBreaks; i++)
     508              {
     509                textOutputPresentation.textBox.AppendText("\n");
     510                textOutputQuickWatchPresentation.textBox.AppendText("\n");
     511              }
     512            }
     513            textOutputPresentation.textBox.AppendText(fillValue);
     514            textOutputQuickWatchPresentation.textBox.AppendText(fillValue);
     515
     516            textOutputPresentation.textBox.ScrollToEnd();
     517            textOutputQuickWatchPresentation.textBox.ScrollToEnd();
    463518          }
    464 
    465 
    466           Presentation.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     519          else
    467520          {
    468             if (settings.Append)
    469             {
    470               if (textOutputPresentation.textBox.Text.Length > settings.MaxLength)
    471               {
    472                 GuiLogMessage("Text exceeds size limit. Deleting text...", NotificationLevel.Info);
    473                 textOutputPresentation.textBox.Text = string.Empty;
    474                 textOutputQuickWatchPresentation.textBox.Text = string.Empty;
    475               }
    476 
    477               // append line breaks only if not first line
    478               if (textOutputPresentation.textBox.Text != null && textOutputPresentation.textBox.Text.Length > 0)
    479               {
    480                 for (int i = 0; i < settings.AppendBreaks; i++)
    481                 {
    482                   textOutputPresentation.textBox.AppendText("\n");
    483                   textOutputQuickWatchPresentation.textBox.AppendText("\n");
    484                 }
    485               }
    486               textOutputPresentation.textBox.AppendText(fillValue);
    487               textOutputQuickWatchPresentation.textBox.AppendText(fillValue);
    488 
    489               textOutputPresentation.textBox.ScrollToEnd();
    490               textOutputQuickWatchPresentation.textBox.ScrollToEnd();
    491             }
    492             else
    493             {
    494               textOutputPresentation.textBox.Text = fillValue;
    495               textOutputQuickWatchPresentation.textBox.Text = fillValue;
    496             }
    497             textOutputPresentation.labelBytes.Content = string.Format("{0:0,0}", Encoding.Default.GetBytes(textOutputPresentation.textBox.Text.ToCharArray()).Length) + " Bytes";
    498             textOutputQuickWatchPresentation.labelBytes.Content = string.Format("{0:0,0}", Encoding.Default.GetBytes(textOutputPresentation.textBox.Text.ToCharArray()).Length) + " Bytes";
    499           }, fillValue);
    500           OnPropertyChanged("StringInput");
    501         }
    502 
    503         OnPropertyChanged(propertyKey);
    504       }
    505       catch (Exception ex)
    506       {
    507         GuiLogMessage(ex.Message, NotificationLevel.Error);
     521            textOutputPresentation.textBox.Text = fillValue;
     522            textOutputQuickWatchPresentation.textBox.Text = fillValue;
     523          }
     524          textOutputPresentation.labelBytes.Content = string.Format("{0:0,0}", Encoding.Default.GetBytes(textOutputPresentation.textBox.Text.ToCharArray()).Length) + " Bytes";
     525          textOutputQuickWatchPresentation.labelBytes.Content = string.Format("{0:0,0}", Encoding.Default.GetBytes(textOutputPresentation.textBox.Text.ToCharArray()).Length) + " Bytes";
     526        }, fillValue);
    508527      }
    509528    }
     
    524543      if (arrByte != null)
    525544      {
    526         GuiLogMessage("Converting from \"" + settings.Encoding.ToString() + "\"...", NotificationLevel.Info);
     545        GuiLogMessage("Converting from \"" + settings.Encoding.ToString() + "\"...", NotificationLevel.Debug);
    527546        string returnValue;
    528547
Note: See TracChangeset for help on using the changeset viewer.