diff --git a/PROMS/Volian.Controls.Library/DisplayRO.cs b/PROMS/Volian.Controls.Library/DisplayRO.cs index 9378fd7a..6c44d3b3 100644 --- a/PROMS/Volian.Controls.Library/DisplayRO.cs +++ b/PROMS/Volian.Controls.Library/DisplayRO.cs @@ -56,6 +56,9 @@ namespace Volian.Controls.Library private ROFSTLookup.rochild selectedChld; + private DisplayTags displayTags; + + #endregion #region Properties @@ -268,6 +271,10 @@ namespace Volian.Controls.Library _searchTimer.Stop(); } + + // Initialize the DisplayTags object + displayTags = new DisplayTags(); + _progressBar = null; } @@ -927,7 +934,7 @@ namespace Volian.Controls.Library bool replacingRO = (_savCurROLink != null); string insrpl = (replacingRO) ? "Cannot Replace" : "Cannot Insert"; - string errormsg = string.Empty; + string errormsg = string.Empty; switch (selectedRO.type) { @@ -968,7 +975,10 @@ namespace Volian.Controls.Library errormsg = (replacingRO) ? "a graphics RO with a non-graphcis RO." : "a Graphics RO in an non-Figure or a non-Accessory Page type."; //TODO: Prompt user to insert a new substep type that handles x/y Plots and place this RO into it goodToGo = false; - } + + + + } break; } diff --git a/PROMS/Volian.Controls.Library/DisplayTags.Designer.cs b/PROMS/Volian.Controls.Library/DisplayTags.Designer.cs index f666a8a6..67859ebd 100644 --- a/PROMS/Volian.Controls.Library/DisplayTags.Designer.cs +++ b/PROMS/Volian.Controls.Library/DisplayTags.Designer.cs @@ -640,7 +640,7 @@ namespace Volian.Controls.Library this.btnFSrestore.Location = new System.Drawing.Point(112, 27); this.btnFSrestore.Margin = new System.Windows.Forms.Padding(2); this.btnFSrestore.Name = "btnFSrestore"; - this.btnFSrestore.Size = new System.Drawing.Size(54, 26); + this.btnFSrestore.Size = new System.Drawing.Size(54, 20); this.btnFSrestore.TabIndex = 6; this.btnFSrestore.Text = "Restore"; this.btnFSrestore.UseVisualStyleBackColor = true; diff --git a/PROMS/Volian.Controls.Library/DisplayTags.cs b/PROMS/Volian.Controls.Library/DisplayTags.cs index fbfa10d2..cadc1ba4 100644 --- a/PROMS/Volian.Controls.Library/DisplayTags.cs +++ b/PROMS/Volian.Controls.Library/DisplayTags.cs @@ -96,6 +96,22 @@ namespace Volian.Controls.Library get { return Visible; } set { if (Visible != value) Visible = value; } } + + /// + /// Expose text properties for height and widht to handle selecting RO Image Types. + /// + public string TbFSwd + { + get {return tbFSWd.Text;} + set { tbFSWd.Text = value; tbFSWd.Refresh(); trBarFS.Value = Convert.ToInt32(value); } + } + + public string TbFSht + { + get { return tbFSHt.Text; } + set { tbFSHt.Text = value; tbFSHt.Refresh(); _origFigureSizeRatio = float.Parse(value) / float.Parse(tbFSWd.Text); } + } + #endregion #region Constructor public DisplayTags() @@ -383,6 +399,8 @@ namespace Volian.Controls.Library cmbCheckoff.Enabled = false; } + + // show the part of panel for resizing a figure (if figure already exists: MyImage is set for non-RO existing images & content.text has a link in it) if (MyEditItem.MyItemInfo.IsFigure && (MyEditItem.MyItemInfo.MyContent.MyImage != null || MyEditItem.MyItemInfo.MyContent.Text.ToUpper().Contains("#LINK"))) { @@ -391,20 +409,41 @@ namespace Volian.Controls.Library int wd = (MyEditItem as ImageItem).MyPictureBox.Width; _origFigureSizeRatio = (float)ht / (float)wd; // use this to keep width/height ratio while changing size. float wd1 = (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.PageWidth - (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.LeftMargin; - float ht1 = (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.PageLength - (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.TopMargin - 36; // 36 is to allow for end message - float wd2 = Math.Min(wd1, ht1 / _origFigureSizeRatio); // keep original ratio - trBarFS.Maximum = Math.Max((int)wd2, trBarFS.Maximum); - if (wd > trBarFS.Maximum) trBarFS.Maximum = wd + 1; - trBarFS.Minimum = Math.Min(wd, 72); - trBarFS.Value = (int)wd; - ImageItem ii = MyEditItem as ImageItem; - _origFigureSizeWidth = ii.MyPictureBox.Width; - tbFSWd.Text = ii.MyPictureBox.Width.ToString(); - tbFSHt.Text = ii.MyPictureBox.Height.ToString(); + float ht1 = (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.PageLength - (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.TopMargin - 36; // 36 is to allow for end message + float wd2 = Math.Min(wd1, ht1 / _origFigureSizeRatio); // keep original ratio + + SetFigure(wd1, wd2); + + tbFSWd.Text = wd.ToString(); + tbFSHt.Text = ht.ToString(); + + //trBarFS.Maximum = Math.Max((int)wd2, trBarFS.Maximum); + //if (wd > trBarFS.Maximum) trBarFS.Maximum = wd + 1; + //trBarFS.Minimum = Math.Min(wd, 72); + //trBarFS.Value = (int)wd; + //ImageItem ii = MyEditItem as ImageItem; + //_origFigureSizeWidth = ii.MyPictureBox.Width; + //tbFSWd.Text = ii.MyPictureBox.Width.ToString(); + //tbFSHt.Text = ii.MyPictureBox.Height.ToString(); } else { - groupPanelFigSize.Visible = false; + if (MyEditItem.MyItemInfo.IsFigure) + { + //No Current image, but still show groupPanelFigSize, will adjust when file is selected, but let's give it a default + //size on using the picturebox. + groupPanelFigSize.Visible = true; + int ht = (MyEditItem as ImageItem).MyPictureBox.Height; + int wd = (MyEditItem as ImageItem).MyPictureBox.Width; + _origFigureSizeRatio = (float)ht / (float)wd; // use this to keep width/height ratio while changing size. + float wd1 = (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.PageWidth - (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.LeftMargin; + float ht1 = (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.PageLength - (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.TopMargin - 36; // 36 is to allow for end message + float wd2 = Math.Min(wd1, ht1 / _origFigureSizeRatio); // keep original ratio + + SetFigure(wd1, wd2); + } + else + groupPanelFigSize.Visible = false; } // change bar setting depends on whether step has changed (dts) as compared to date/time off the @@ -516,6 +555,22 @@ namespace Volian.Controls.Library } _Initalizing = false; } + public void SetFigure(double wd, double wd2) + { + // Check MyEditItem type and cast if needed + ImageItem ii = MyEditItem as ImageItem; + if (ii == null) return; + + // Set the values as needed + trBarFS.Maximum = Math.Max((int)wd2, trBarFS.Maximum); + if (wd > trBarFS.Maximum) trBarFS.Maximum = (int)wd + 1; + trBarFS.Minimum = Math.Min((int)wd, 72); + trBarFS.Value = (int)wd; + _origFigureSizeWidth = ii.MyPictureBox.Width; + //tbFSWd.Text = ii.MyPictureBox.Width.ToString(); + //tbFSHt.Text = ii.MyPictureBox.Height.ToString(); + } + private int DoListStepTypes(FormatData fmtdata, StepData topType, string curType) { int cursel=-1; @@ -857,7 +912,7 @@ namespace Volian.Controls.Library } } private float _origFigureSizeRatio = 0; // keep original ratio & width in case of 'restore' - private int _origFigureSizeWidth = 0; + public int _origFigureSizeWidth = 0; // support user changing size using slider. This saves change back to ImageItem and sets // width/height text boxes to slider values. private void trBarFS_Scroll(object sender, EventArgs e) @@ -871,11 +926,14 @@ namespace Volian.Controls.Library // restore the orignal image size private void btnFSrestore_Click(object sender, EventArgs e) { - tbFSWd.Text = _origFigureSizeWidth.ToString(); - int ht = (int)(_origFigureSizeRatio * _origFigureSizeWidth); - tbFSHt.Text = ht.ToString(); - (MyEditItem as ImageItem).SizeImage(_origFigureSizeWidth, ht); - trBarFS.Value = _origFigureSizeWidth; + if (_origFigureSizeWidth != 0) + { + tbFSWd.Text = _origFigureSizeWidth.ToString(); + int ht = (int)(_origFigureSizeRatio * _origFigureSizeWidth); + tbFSHt.Text = ht.ToString(); + (MyEditItem as ImageItem).SizeImage(_origFigureSizeWidth, ht); + trBarFS.Value = _origFigureSizeWidth; + } } // user entered width in text box, this event gets called on leave of text box. private void tbFSWd_Leave(object sender, EventArgs e) diff --git a/PROMS/Volian.Controls.Library/EditItem.cs b/PROMS/Volian.Controls.Library/EditItem.cs index 8bb85288..3c91c2a8 100644 --- a/PROMS/Volian.Controls.Library/EditItem.cs +++ b/PROMS/Volian.Controls.Library/EditItem.cs @@ -1209,7 +1209,7 @@ namespace Volian.Controls.Library { EditItem child = null; if (MyItemInfo.IsFigure) - child = new ImageItem(MyItemInfo, MyStepPanel, this, ChildRelation.After, true, nextEditItem, FigInsType); + child = new ImageItem(MyItemInfo, MyStepPanel, this, ChildRelation.After, true, nextEditItem, FigInsType, _MyStepPropertiesPanel); else if (MyItemInfo.IsRtfRaw) child = new RtfRawItem(MyItemInfo, MyStepPanel, this, ChildRelation.After, true, nextEditItem); else if (MyItemInfo.MyContent.MyGrid != null) @@ -1222,7 +1222,7 @@ namespace Volian.Controls.Library { EditItem child = null; if (MyItemInfo.IsFigure) - child = new ImageItem(MyItemInfo, MyStepPanel, this, ChildRelation.Before, true, nextEditItem, FigInsType); + child = new ImageItem(MyItemInfo, MyStepPanel, this, ChildRelation.Before, true, nextEditItem, FigInsType, _MyStepPropertiesPanel); else if (MyItemInfo.IsRtfRaw) child = new RtfRawItem(MyItemInfo, MyStepPanel, this, ChildRelation.Before, true, nextEditItem); if (MyItemInfo.MyContent.MyGrid != null) diff --git a/PROMS/Volian.Controls.Library/ImageItem.cs b/PROMS/Volian.Controls.Library/ImageItem.cs index a2ada15d..c419f9c9 100644 --- a/PROMS/Volian.Controls.Library/ImageItem.cs +++ b/PROMS/Volian.Controls.Library/ImageItem.cs @@ -256,6 +256,8 @@ namespace Volian.Controls.Library private int _origCfgHt = 0; // keep track if original size was stored in cfg private int _origCfgWd = 0; private bool _pastedNew = false; // need this for flagging newly pasted image (may need to clear cfg) + private DisplayTags _displayTags; + #endregion #region Constructors public ImageItem() @@ -266,6 +268,7 @@ namespace Volian.Controls.Library public ImageItem(ItemInfo itemInfo, StepPanel myStepPanel, EditItem myParentEditItem, ChildRelation myChildRelation, bool expand) { InitializeComponent(); + MyItemInfo = itemInfo; SetupEditItem(itemInfo, myStepPanel, myParentEditItem, myChildRelation, expand, null, false); if (MyItemInfo.MyContent.MyImage != null && MyItemInfo.MyContent.MyImage.Data != null) // this is figure/image (not RO) @@ -307,6 +310,7 @@ namespace Volian.Controls.Library this.Height = MyPictureBox.Height + 10; _newSizeWd = wd / (MyStepPanel.DPI / 72); _newSizeHt = ht / (MyStepPanel.DPI / 72); + if (!MyItemInfo.FormatStepData.StepEditData.TypeMenu.MenuItem.ToUpper().Contains("AER")) ItemLocation = TableLocation(MyStepSectionLayoutData, ItemWidth); _IsDirty = true; } @@ -330,13 +334,23 @@ namespace Volian.Controls.Library MyPictureBox.SizeMode = PictureBoxSizeMode.Zoom; // as resize matches width/height. this.Width = MyPictureBox.Width + ImageMargin; this.Height = MyPictureBox.Height + 10; + if (_displayTags != null) + { + _displayTags._origFigureSizeWidth = wd; + _displayTags.TbFSwd = wd.ToString(); + _displayTags.TbFSht = ht.ToString(); + } + + } // the following gets called for 'NEW' images private E_ImageSource InsType = E_ImageSource.None; - public ImageItem(ItemInfo itemInfo, StepPanel myStepPanel, EditItem myParentEditItem, ChildRelation myChildRelation, bool expand, EditItem nextEditItem, ImageItem.E_ImageSource insType) + public ImageItem(ItemInfo itemInfo, StepPanel myStepPanel, EditItem myParentEditItem, ChildRelation myChildRelation, bool expand, EditItem nextEditItem, ImageItem.E_ImageSource insType, DisplayTags displayTags) { InitializeComponent(); MyItemInfo = itemInfo; + _displayTags = displayTags; + if (MyItemInfo.MyContent.MyImage != null && MyItemInfo.MyContent.MyImage.Data != null) // this is figure/image (not RO) { SetupEditItem(itemInfo, myStepPanel, myParentEditItem, myChildRelation, expand, nextEditItem, false); @@ -368,8 +382,8 @@ namespace Volian.Controls.Library FileName = null; //InitializeComponent(); SetupEditItem(itemInfo, myStepPanel, myParentEditItem, myChildRelation, expand, nextEditItem, false); - MyPictureBox.Width = 100; - MyPictureBox.Height = 100; + //MyPictureBox.Width = 100; + //MyPictureBox.Height = 100; this.Width = 100 + ImageMargin; this.Height = 100; if (insType == ImageItem.E_ImageSource.File) @@ -546,6 +560,7 @@ namespace Volian.Controls.Library imageText = val; } AddROImageToScreen(W, H, imageText); + } catch (Exception ex) {