ArgoUML and calling a "sub-procedure" - uml

I don't know if its a limitation of UML 1.4, or ArgoUML, but in a sequence diagram, I want to show an object calling a method in its own class, ie calling a sub-procedure.
If I drag from the object to itself, nothing happens :-(
Thanks,
Ant

You need to drag away, click, drag down, click, drag back to the original lifeline (ie make a U shape instead of a V shape or single line). It seems like more work than should be necessary, but it does work.
This works in 0.30.2. Not sure if it used to work differently (as Jordi's comment implies).

Not sure why you have problems with that. If you point the message arrow to the object column itself it correctly draws a reflexive message.

Have around 10 grid line distance between the two life line. Now select the New Create Action and put the cursor on life line where you want the self call. Now drag away around 3 gridlines and click from same point drag downward click and drag backward up to the same life line where you stared. Thats all done!!

Related

FLTK's Fl_Scroll - run code in reaction to scrolling happening?

I am using FLTK 1.3, displaying a single Flex column with a number of Flex rows inside a Fl_Scroll. I want to do something to rows that were outside of the visible area when they scroll into view. But I cannot figure out how to do that. There is no event emitted when the scroll position changes (as far as I can see) nor does a callback on the scroll seem to do anything.
The only solution I can think of is something like using the column's, scroll's, or window's callback to get informed of all UI events (such as move, key up, leave, ..) and use them to check whether the scoll's yposition has changed from the last time and run the code I need if it is....
But there surely must be a better way?
Thank you!!!

Split Excel VBA window vertically

Horizonal splitting is simple.
Is it possible to split vertically? Have wide screen so right hand side is empty anyways.
Edit: I would want to see basically a view of the SAME module on the left, and on the right side of the screen. I know I can put multiple windows next to each other about different modules.
A workaround could be to split the code into multiple modules and change variable scope, but I hope there is a simpler way.
Appears when a new window is inserted.
Think the only workaround is to:
insert an additional module
copy over your code there
arrange these 2 modules vertically, and use e.g. the right-hand side only for viewing, while modifying the left-hand one, to stay consistent.

Umbrello wont create relation

I am trying to add an aggregation relation from 'Property' -> 'ConsumerPropertySelected' object, but it wont add any type of relation. (See the image)
If I invert the direction ('ConsumerPropertySelection' -> Property) then it adds a relation but the aggregation diamond is pointing in the wrong direction
(Currenlty I pick the relation from the toolbar and drag it between 2 objects, which worked for all the other relations... Not sure if there is a different way to do it or some setting I am missing)
This looks like a bug, however there is a workaround.
Select the relation you want from the toolbar.
Left Click and hold on the first object(ex: 'Property')
Whilst still holding the left mouse button, drag the cursor to the second object (ex: 'ConsumerPropertySelected')
Release your left mouse button over the second object
and finally click the second object again with your left mouse button
If it doesn't work the first time, try it again and it should create it... Hopefully this bug will get fixed soon
EDIT:
Looks like the bug is fixed: https://cgit.kde.org/umbrello.git/commit/?id=42d5073216f6801fef68dd6a4508b9a0e1f67ef1
The fix will probably be deployed with the next release

Cadence Virtuoso Layout L phantom objects

I have a cell (call it A) which is used once in a hierarchically higher cell (call it P). When I place A in P, its borders are rather larger than the actual content of A. When I descend to A and zoom-fit, it is way zoomed out, indicating there is something present way out on the edges.
I may have dragged objects there at one point but currently there is nothing visible. It is driving me crazy in terms of aligning objects, etc.
Is there any way to clean this up or something?
If I recall Cadence used to have a problem with leaving steiners behind when you moved routes. They are not visible but the db treats them as real objects for the bbox calculation. According to Cadence, deleting the objects should not harm anything. Open the layout in edit mode and paste this code into the CIW. This will delete all the steiner objects in your layout. If this was the root cause after saving you should see the bbox return to normal.
cv=geGetEditCellView()
foreach( item cv~>steiners
dbDeleteObject( item )
)
This thread may be considered "dead," but hopefully this helps.
It is possible the layers that are not visible are turned off.
To turn them on, go to the layers pane on the left. (If it is not there you can turn it on by going to Window —> Assistants —> Layers)
You can then click the drop down arrow in the top right corner and click Edit Valid Layers.
Then, click all valid in the Set Valid Layers popup. Click Ok.
Finally, check the Used Layers Only checkbox in the Layers pane. Look for any layers that weren't there before that you don't need.
Usually it happens when you draw the cell in LayoutXL, particularly when you insert pins.
Layer and purpose in these pins are selected separately for some reason, that is why it is easy to enter "impossible" combination.
Nothing happens, then you do it again and continue drawing. But there are several invisible squares that will continuously frustrate your inner perfectionist. You do the following:
Open this cell's layout, switch to Virtuoso window and enter:
lppList=list()
then:
foreach(shape hiGetCurrentWindow()~>cellView~>shapes if( (member(shape~>lpp lppList)==nil) then lppList=cons(shape~>lpp lppList)))
You have created the list with all layers in this layout, you can view it by entering:
lppList
You'll get something like this:
(("NW" "drawing")
("NP" "drawing")
("weird" "guy")
("M1" "pin")
("M3" "pin")
)
If you find a weird guy in this company, just enter the following command:
foreach(shape hiGetCurrentWindow()~>cellView~>shapes if((shape~>lpp == list("weird" "guy")) shape~>lpp = list("prBoundary" "drawing")))
If you see that some squares, labels (or whatever unseen before) appears as prBoundary, just delete it, save, and your layout will be small and shiny again.

On Visual C++, How to make a simple paint program?

I want to make a simple paint program on visual c++ which allows the user to draw a path of a series of straight lines which follow on from each other. Once the user is done this, they should double click to stop drawing. It is important that I record the co-ordinates of the beginning and end points of each line of the path because I want to use this information to find the magnitude and direction of each line using simple math. Please can someone give me somewhere to start and any other guidance.
You should start with a tutorial in: MFC.
Learn the basics: Document/View architecture and
how painting is done (GDI and device contexts).
Basically, you should:
1. create an MFC application (SDI - single document interface),
2. Handle the OnLButtonDown (WM_LBUTTONDOWN), OnMouseMove (WM_MOVE), OnLButtonUp (WM_LBUTTONUP).
3. Maintain an dynamic array/List (TypedPtrList) of the points
4. handle the double-click event for detecting completion.
You should use the Invalidate() function on (after) each click, in order to see the changes
on the screen.
That's just a little bit of information to get you started
You'll want:
a class or struct to represent a point (if you make it a class, it could have computation methods that would, for example, calculate the distance and direction to another point)
a member variable: an instance of a container class (list, array, etc) to hold your points
a member variable: a boolean flag to represent whether you are drawing or not (starting with not)
and you'll need to handle:
the mouse click event to instantiate a point and add it to your container
the mouse move event to draw a line from the last point to the current mouse position if the drawing flag is true
the mouse double-click event to add the double-click location to your container of points and turn off the drawing flag
Yaron's strategy doesn't draw lines until 2 points are clicked. Mine uses "rubberbanding" to anchor the first end of the line then let the second end follow your cursor until you click to anchor it down. Use whichever one you like better.
if i were you i would use Qt.
Qt widgets are great for user interface. you should check qt examples...
if you want to make an image processing behind, you can use imagemagick library.
this library is great for any image manipulation.

Resources