Support Forums
Object locking and chosing

Isn't there a way to lock objects, and see which object is on which layer, and lock and turn off layers. And a way to know and decide which object to chose.

I am making Widgets with 5-6 icons on top of each other at several places, opacy turned on by digital inputs, and changes affected by alarms and warnings. It is a nightmare to pick the right object.

Even on a normal page, I keep picking the wrong object, as they overlay each other a bit.

5989a0672c581.png

Isn't there a way to lock objects, and see which object is on which layer, and lock and turn off layers. And a way to know and decide which object to chose. I am making Widgets with 5-6 icons on top of each other at several places, opacy turned on by digital inputs, and changes affected by alarms and warnings. It is a nightmare to pick the right object. Even on a normal page, I keep picking the wrong object, as they overlay each other a bit. ![5989a0672c581.png](serve/attachment&path=5989a0672c581.png)

There are no actual layers as you would see in a graphics editing package. These are just different widgets or whatever stacked on top of each other. There is no way to flatten them into layers.

When you click on an object, the very top line of the Idea Studio switches the ribbon to the drawing methods associated with that object and highlights the object type -

5989c63e5e755.png

If rthe widget is of more than one type - the red button is a tag widget and an image so the I have both tabs at the top of the Idea Studio and I can click between them to see the different properties available to this object.

Additionally, with the Panel in view on the right, the tag I have highlighted is highlighted in the tag list.

5989c6ec4fa85.png

There are no actual layers as you would see in a graphics editing package. These are just different widgets or whatever stacked on top of each other. There is no way to flatten them into layers. When you click on an object, the very top line of the Idea Studio switches the ribbon to the drawing methods associated with that object and highlights the object type - ![5989c63e5e755.png](serve/attachment&path=5989c63e5e755.png) If rthe widget is of more than one type - the red button is a tag widget and an image so the I have both tabs at the top of the Idea Studio and I can click between them to see the different properties available to this object. Additionally, with the Panel in view on the right, the tag I have highlighted is highlighted in the tag list. ![5989c6ec4fa85.png](serve/attachment&path=5989c6ec4fa85.png)

Doug Spurrell

OK. I was thinking more of stacking than layers. I still have a problem, when stacking 3-4 images on top of each other, and then want to chose the middle one - for changing the tag. At this point I must click the group randomly around 10 times, and check properties every time, to see which graphic I have highlighted.

And what about locking object?

OK. I was thinking more of stacking than layers. I still have a problem, when stacking 3-4 images on top of each other, and then want to chose the middle one - for changing the tag. At this point I must click the group randomly around 10 times, and check properties every time, to see which graphic I have highlighted. And what about locking object?

In this case, you can verify the image you have selected by copying it (crtl+c) and pasting it (crtl+v) into notepad. You will then see the image file path.

In this case, you can verify the image you have selected by copying it (crtl+c) and pasting it (crtl+v) into notepad. You will then see the image file path.

Trihedral Engineering Ltd.

In this case, you can verify the image you have selected by copying it (crtl+c) and pasting it (crtl+v) into notepad. You will then see the image file path.

Yes, but I can also right-click -> Properties and see which image I have chosen/marked. But this does not change the fact that I have to randomly click in that area until I am lucky and pick the right image. I can't work like that.

>In this case, you can verify the image you have selected by copying it (crtl+c) and pasting it (crtl+v) into notepad. You will then see the image file path. Yes, but I can also _right-click -> Properties_ and see which image I have chosen/marked. But this does not change the fact that I have to randomly click in that area until I am lucky and pick the right image. I can't work like that.

Presently there is no way to lock on to a graphic in a stack. I will pass it along to development for consideration.

Presently there is no way to lock on to a graphic in a stack. I will pass it along to development for consideration.

Doug Spurrell

Sorry, I should have been more explicit. With a group selected, you can copy the group and paste it into notepad. The list of images will display in the order they are drawn. That is to say that the one on the bottom will display on top. In the case below, WellPump003Left.png will be on top and it will be three clicks to select SubmersSump.png.

GUITransform(482, 219, 545, 86,
1, 1, 1, 1, 1 { Scaling },
0, 0 { Movement },
1, 0 { Visibility, Reserved },
0, 0, 0 { Selectability },
Scope(\Code, "Library", TRUE)\Bitmap("Bitmaps\Pumps\SubmersSump.png" ));
GUITransform(482, 250, 535, 141,
1, 1, 1, 1, 1 { Scaling },
0, 0 { Movement },
1, 0 { Visibility, Reserved },
0, 0, 0 { Selectability },
Scope(\Code, "Library", TRUE)\Bitmap("Bitmaps\Pumps\WellPump001Left.png" ));
GUITransform(477, 300, 540, 174,
1, 1, 1, 1, 1 { Scaling },
0, 0 { Movement },
1, 0 { Visibility, Reserved },
0, 0, 0 { Selectability },
Scope(\Code, "Library", TRUE)\Bitmap("Bitmaps\Pumps\WellPump003Left.png" ));

Sorry, I should have been more explicit. With a group selected, you can copy the group and paste it into notepad. The list of images will display in the order they are drawn. That is to say that the one on the bottom will display on top. In the case below, WellPump003Left.png will be on top and it will be three clicks to select SubmersSump.png. > GUITransform(482, 219, 545, 86, 1, 1, 1, 1, 1 { Scaling }, 0, 0 { Movement }, 1, 0 { Visibility, Reserved }, 0, 0, 0 { Selectability }, Scope(\Code, "Library", TRUE)\Bitmap("Bitmaps\Pumps\SubmersSump.png" )); GUITransform(482, 250, 535, 141, 1, 1, 1, 1, 1 { Scaling }, 0, 0 { Movement }, 1, 0 { Visibility, Reserved }, 0, 0, 0 { Selectability }, Scope(\Code, "Library", TRUE)\Bitmap("Bitmaps\Pumps\WellPump001Left.png" )); GUITransform(477, 300, 540, 174, 1, 1, 1, 1, 1 { Scaling }, 0, 0 { Movement }, 1, 0 { Visibility, Reserved }, 0, 0, 0 { Selectability }, Scope(\Code, "Library", TRUE)\Bitmap("Bitmaps\Pumps\WellPump003Left.png" ));

Trihedral Engineering Ltd.

Again with this problem. I have two red 1 pixel height rectangels on top of a graph.
It is absolutely impossible to re-choose the line after making it. Even with maximum zoom, I cannot chose the rectangle/line. It is always the background graph that get selected.

The only solution is to move the graph box by deduction in Coordinates, lets say 700, from "height", selecting the line in 200% zoom, CTRL+right clicking it, and then properties. And afterwords add the 700 pixles to "height".

This is absolutely silly, compared to the complexity/endless possibilities of the rest of the software.

59aea5d51befe.png

Again with this problem. I have two red 1 pixel height rectangels on top of a graph. It is absolutely impossible to re-choose the line after making it. Even with maximum zoom, I cannot chose the rectangle/line. It is always the background graph that get selected. The only solution is to move the graph box by deduction in Coordinates, lets say 700, from "height", selecting the line in 200% zoom, CTRL+right clicking it, and then properties. And afterwords add the 700 pixles to "height". This is absolutely silly, compared to the complexity/endless possibilities of the rest of the software. ![59aea5d51befe.png](serve/attachment&path=59aea5d51befe.png)
edited Sep 5 '17 at 2:28 pm

Try holding Crtl before making your selection and drag from right to left when selecting the red line. This will prevent the graph from being selected on the down-click and will only select items entirely bound by the selection area on up-click.

Try holding Crtl **before** making your selection and drag from right to left when selecting the red line. This will prevent the graph from being selected on the down-click and will only select items entirely bound by the selection area on up-click.

Trihedral Engineering Ltd.

edited Sep 5 '17 at 4:09 pm

Holding CTRL does help to only select the objects you need, which in Karstein's case would help them select the object they need, but this doesn't solve all the issues of never knowing what element in the stack one is selecting except by trial-and-error.

On some of our widgets, there exists a part of the widget where objects are stacked 8-9 deep. On top of them being invisible in many drawn contexts because they have opacity scripts, and moving up and down while you're trying to select them because they have scaling scripts, they're also stacked deeply enough where it can take upwards of 5 minutes to select the correct rectangle to change your expression.

I have resorted to mostly using source code for these widgets (which works great for me), but a panel with a list of every GUI object would be much more efficient.

Holding CTRL does help to only select the objects you need, which in Karstein's case would help them select the object they need, but this doesn't solve all the issues of never knowing what element in the stack one is selecting except by trial-and-error. On some of our widgets, there exists a part of the widget where objects are stacked 8-9 deep. On top of them being invisible in many drawn contexts because they have opacity scripts, and moving up and down while you're trying to select them because they have scaling scripts, they're also stacked deeply enough where it can take upwards of 5 minutes to select the correct rectangle to change your expression. I have resorted to mostly using source code for these widgets (which works great for me), but a panel with a list of every GUI object would be much more efficient.
edited Sep 5 '17 at 7:56 pm

Holding CTRL does help to only select the objects you need, which in Karstein's case would help them select the object they need, but this doesn't solve all the issues of never knowing what element in the stack one is selecting except by trial-and-error.

On some of our widgets, there exists a part of the widget where objects are stacked 8-9 deep. On top of them being invisible in many drawn contexts because they have opacity scripts, and moving up and down while you're trying to select them because they have scaling scripts, they're also stacked deeply enough where it can take upwards of 5 minutes to select the correct rectangle to change your expression.

I have resorted to mostly using source code for these widgets (which works great for me), but a panel with a list of every GUI object would be much more efficient.

Thanks! Totally agree, and my point exactly. This should be on the top of the New Feature list:

  • Panel list of GUI object in stacking order, with possibility of locking each object.
>Holding CTRL does help to only select the objects you need, which in Karstein's case would help them select the object they need, but this doesn't solve all the issues of never knowing what element in the stack one is selecting except by trial-and-error. >On some of our widgets, there exists a part of the widget where objects are stacked 8-9 deep. On top of them being invisible in many drawn contexts because they have opacity scripts, and moving up and down while you're trying to select them because they have scaling scripts, they're also stacked deeply enough where it can take upwards of 5 minutes to select the correct rectangle to change your expression. >I have resorted to mostly using source code for these widgets (which works great for me), but a panel with a list of every GUI object would be much more efficient. Thanks! Totally agree, and my point exactly. This should be on the top of the New Feature list: - Panel list of GUI object in stacking order, with possibility of locking each object.

Thanks for the comments on this; we always appreciate constructive criticism. There is already a similar feature request in our database but I will add your comments to the request.

Thanks for the comments on this; we always appreciate constructive criticism. There is already a similar feature request in our database but I will add your comments to the request.

Trihedral Engineering Ltd.

I though I should share some findings. I attended a course with Keith Donaldson, and he figured out a hack that helped me.

Add a new module:

[
  Shared UserMethods (LIBRARIES);
  Shared AnalogInput (POINTS);
  Title = "PumpeWidgetOksygen";
  _BGColor_ = "<FF000000>";
  LockedStuff Module;
]

Call the module, as the first item in Main code:

TagWidgetMain [
  LockedStuff();
  GUITransform(*** code and stuff ***);
]

Cut & paste all the object you want to be locked into the new Module - below Main code.

<
  LockedStuff
  Main [
  GUITransform(*** code and stuff ***);
  ]
>

This works excellent, the objects in this module cannot be selected in Idea Studio.

I though I should share some findings. I attended a course with Keith Donaldson, and he figured out a hack that helped me. Add a new module: ```` [ Shared UserMethods (LIBRARIES); Shared AnalogInput (POINTS); Title = &quot;PumpeWidgetOksygen&quot;; _BGColor_ = &quot;&lt;FF000000&gt;&quot;; LockedStuff Module; ] ```` Call the module, as the first item in Main code: ```` TagWidgetMain [ LockedStuff(); GUITransform(*** code and stuff ***); ] ```` Cut &amp; paste all the object you want to be locked into the new Module - below Main code. ```` &lt; LockedStuff Main [ GUITransform(*** code and stuff ***); ] &gt; ```` This works excellent, the objects in this module cannot be selected in Idea Studio.
edited Nov 6 '17 at 12:18 pm

Thanks for posting this. I think I'll use this myself when setting up application backgrounds.

Thanks for posting this. I think I&#039;ll use this myself when setting up application backgrounds.

Trihedral Engineering Ltd.

"Hack" indeed! I like to think of this as a technical work-around smile

Just to clarify Karstein's excellent post:

At present, there is no way of using the GUI to lock widgets or drawing components on a page. However, by making a few edits on the page source file, you can achieve the same effect.

Note that this is an advanced topic. To learn more about these advanced topics, I would strongly recommend attending one of the excellent Advanced courses offered by Trihedral.

The steps required:

  1. In the VTScada Idea Studio, on the Home ribbon, click on the Source Code icon. This will open the page source code in your favourite text editor.

  2. Create a child module - in Karstein's it was called "LockedStuff". The declaration goes at the top between the [ and ] of the Page code. The module itself is declared below the Main state in the page.

  3. The child module should be called from the main state of the Page file. It should be the first thing called, since this will keep the Z Order of the locked components behind everything else rendered on the page.

  4. Move any components you wish to be locked in to the child module.

  5. Re-import the modified page source file and the job is done.

Here is an example page source. The Ellipse is locked to the background, whilst the Rectangle remains movable.

[
    Title = "Overview";
    LockedStuff            Module         { Locked graphic components };
]

Main [

   Return(Self);

    { started the LockStuff Child module }
   LockedStuff();    

   GUIRectangle(13, 151, 113, 51,                                   
                1, 1, 1, 1, 1 { Scaling              },             
                0, 0          { Movement             },             
                1, 0          { Visibility, Reserved },             
                0, 0, 0       { Selectability        },             
                Brush("<FFA0A0A0>", 0, 1), Pen("<FF000000>", 1, 1));

]


<                                                                              
{=========================== Overview\LockedStuff ============================}
{ Draws the locked components on the screen                                   }
{=============================================================================}
LockedStuff

Main [

  GUIEllipse(581, 136, 718, 66,                                  
             1, 1, 1, 1, 1 { Scaling              },             
             0, 0          { Movement             },             
             1, 0          { Visibility, Reserved },             
             0, 0, 0       { Selectability        },             
             Brush("<FFA0A0A0>", 0, 1), Pen("<FF000000>", 1, 1));


]


{ End of Overview\LockedStuff }
>

Hope this helps!

&quot;Hack&quot; indeed! I like to think of this as a technical work-around :) Just to clarify Karstein&#039;s excellent post: At present, there is no way of using the GUI to lock widgets or drawing components on a page. However, by making a few edits on the page source file, you can achieve the same effect. Note that this is an advanced topic. To learn more about these advanced topics, I would strongly recommend attending one of the excellent Advanced courses offered by Trihedral. The steps required: 1. In the VTScada Idea Studio, on the Home ribbon, click on the Source Code icon. This will open the page source code in your favourite text editor. 2. Create a child module - in Karstein&#039;s it was called &quot;LockedStuff&quot;. The declaration goes at the top between the [ and ] of the Page code. The module itself is declared below the Main state in the page. 3. The child module should be called from the main state of the Page file. It should be the first thing called, since this will keep the Z Order of the locked components behind everything else rendered on the page. 4. Move any components you wish to be locked in to the child module. 5. Re-import the modified page source file and the job is done. Here is an example page source. The Ellipse is locked to the background, whilst the Rectangle remains movable. ```` [ Title = &quot;Overview&quot;; LockedStuff Module { Locked graphic components }; ] Main [ Return(Self); { started the LockStuff Child module } LockedStuff(); GUIRectangle(13, 151, 113, 51, 1, 1, 1, 1, 1 { Scaling }, 0, 0 { Movement }, 1, 0 { Visibility, Reserved }, 0, 0, 0 { Selectability }, Brush(&quot;&lt;FFA0A0A0&gt;&quot;, 0, 1), Pen(&quot;&lt;FF000000&gt;&quot;, 1, 1)); ] &lt; {=========================== Overview\LockedStuff ============================} { Draws the locked components on the screen } {=============================================================================} LockedStuff Main [ GUIEllipse(581, 136, 718, 66, 1, 1, 1, 1, 1 { Scaling }, 0, 0 { Movement }, 1, 0 { Visibility, Reserved }, 0, 0, 0 { Selectability }, Brush(&quot;&lt;FFA0A0A0&gt;&quot;, 0, 1), Pen(&quot;&lt;FF000000&gt;&quot;, 1, 1)); ] { End of Overview\LockedStuff } &gt; ```` Hope this helps!

Keith Donaldson Director of Business Development Trihedral UK Limited +44 (0)1224 258915 keith.donaldson@trihedral.com

293
14
5
live preview
enter atleast 10 characters
WARNING: You mentioned %MENTIONS%, but they cannot see this message and will not be notified
Saving...
Saved
With selected deselect posts show selected posts
All posts under this topic will be deleted ?
Pending draft ... Click to resume editing
Discard draft