Home » U++ Library support » U++ Core » [BUG] Ctrl::AlignRight
[BUG] Ctrl::AlignRight [message #14551] |
Mon, 03 March 2008 16:01  |
nixnixnix
Messages: 415 Registered: February 2007 Location: Kelowna, British Columbia
|
Senior Member |
|
|
When I set AlignRight in the Designer for an EditString item, the compiler doesn't like it.
Nick
|
|
|
|
Re: [BUG] Ctrl::AlignRight [message #14604 is a reply to message #14552] |
Tue, 04 March 2008 14:50   |
nixnixnix
Messages: 415 Registered: February 2007 Location: Kelowna, British Columbia
|
Senior Member |
|
|
The error I get is
D:\MyApps\OpenWind/Optimiser.lay(11) : error C2039: 'AlignRight' : is not a member of 'Upp::Ctrl'
C:\upp\uppsrc\CtrlCore/CtrlCore.h(308) : see declaration of 'Upp::Ctrl'
C:\upp\uppsrc\CtrlCore/TopWindow.h(232) : see reference to function template instantiation 'void InitLayout<T,T>(Upp::Ctrl &,L &,D &,OptimiserProgressLayout__layid &)' being compiled
with
[
T=OptimiserProgress,
L=OptimiserProgress,
D=OptimiserProgress
]
C:\upp\uppsrc\CtrlCore/TopWindow.h(240) : see reference to function template instantiation 'void Upp::CtrlLayout<T>(T &)' being compiled
with
[
T=OptimiserProgress
]
d:\myapps\openwind\Optimiser.h(39) : see reference to function template instantiation 'void Upp::CtrlLayout<OptimiserProgress>(T &,const char *)' being compiled
with
[
T=OptimiserProgress
]
D:\MyApps\OpenWind/Optimiser.lay(11) : error C2228: left of '.SetEditable' must have class/struct/union
D:\MyApps\OpenWind/Optimiser.lay(11) : error C2228: left of '.LeftPosZ' must have class/struct/union
D:\MyApps\OpenWind/Optimiser.lay(11) : error C2228: left of '.TopPosZ' must have class/struct/union
My layout file for this class is
LAYOUT(OptimiserProgressLayout, 780, 156)
ITEM(Label, dv___0, SetLabel(t_("Iterations")).LeftPosZ(12, 96).TopPosZ(32, 19))
ITEM(EditInt, m_nTurbs, WantFocus(false).SetEditable(false).LeftPosZ(116, 56).TopPosZ(8, 19))
ITEM(EditInt, m_nIterations, WantFocus(false).SetEditable(false).LeftPosZ(116, 56).TopPosZ(32, 19))
ITEM(EditString, m_fArrayLoss, WantFocus(false).SetEditable(false).LeftPosZ(116, 56).TopPosZ(128, 19))
ITEM(EditString, m_fCF, WantFocus(false).SetEditable(false).LeftPosZ(116, 56).TopPosZ(104, 19))
ITEM(Option, optionGrossE, SetLabel(t_("Gross Energy")).LeftPosZ(12, 96).TopPosZ(80, 19))
ITEM(Label, optionCF, SetLabel(t_("Capacity Factor")).LeftPosZ(12, 96).TopPosZ(104, 19))
ITEM(Option, optionNetE, SetLabel(t_("Net Energy")).LeftPosZ(12, 96).TopPosZ(56, 20))
ITEM(EditString, m_fGrossE, WantFocus(false).SetEditable(false).LeftPosZ(116, 56).TopPosZ(80, 19))
ITEM(EditString, m_fNetE, WantFocus(false).AlignRight(true).SetEditable(false).LeftPosZ(116, 56).TopPosZ(56, 19))
ITEM(Option, optionArrayLosses, SetLabel(t_("Array Losses")).LeftPosZ(12, 96).TopPosZ(128, 19))
ITEM(OPLabel, opLabel, HSizePosZ(216, 12).VSizePosZ(32, 8))
ITEM(Label, dv___12, SetLabel(t_("Turbines")).LeftPosZ(12, 60).TopPosZ(8, 19))
ITEM(Label, dv___13, SetLabel(t_("MWh/yr")).LeftPosZ(176, 40).TopPosZ(80, 19))
ITEM(Label, dv___14, SetLabel(t_("%")).LeftPosZ(176, 40).TopPosZ(104, 19))
ITEM(Label, dv___15, SetLabel(t_("%")).LeftPosZ(176, 40).TopPosZ(128, 19))
ITEM(Label, dv___16, SetLabel(t_("MWh/yr")).LeftPosZ(176, 40).TopPosZ(56, 19))
END_LAYOUT
Any ideas?
Nick
|
|
|
|
Re: [BUG] Ctrl::AlignRight [message #14606 is a reply to message #14604] |
Tue, 04 March 2008 15:10   |
mrjt
Messages: 705 Registered: March 2007 Location: London
|
Contributor |
|
|
Fix:
Change CtrlLib/CtrlLib.usc starting line 422 from:
Frame SetFrame = InsetFrame();
Font SetFont = StdFont();
bool SetEditable = true @1 ? "Editable";
bool WantFocus = true;
int MaxChars;
bool AlignRight;
Text Tip; to:
bool AlignRight @1;
int MaxChars @2;
Font SetFont = StdFont() @3;
bool SetEditable = true @4 ? "Editable";
Frame SetFrame = InsetFrame() @5;
Text Tip @6;
bool WantFocus = true @7;
After that you will have to get the Layout manager to refresh the .lay file. Changing from text/layout should work, but setting then clearing WantFocus for each ctrl will definitely work.
The number after the @ char determines the order that the calls get added to the .lay file. If missing the order they are listed determines the order, but this sometimes seems to go wrong, and most of the Upp ctrls don't have the ordering explicitly stated.
James
[Updated on: Tue, 04 March 2008 15:17] Report message to a moderator
|
|
|
|
Re: [BUG] Ctrl::AlignRight [message #14612 is a reply to message #14610] |
Tue, 04 March 2008 15:39   |
mrjt
Messages: 705 Registered: March 2007 Location: London
|
Contributor |
|
|
Cool. This seems to be a recurring problem (I think I've seen it mentioned before anyway), and is linked to this line in ide/LayDes/item.cpp:
Vector<int> o = GetSortOrder(property, FieldRelation(&ItemProperty::level, StdLess<int>()));
Presumably the intent here is to leave all properties that haven't had a specific order set (have level = 0) in the same relative place in the list. Is it possible that the algorithm used for sorting here is moving them?
That would explain the problem, but it might be easier/more sensible just to add fixed orders to all the properties anyway.
[Updated on: Tue, 04 March 2008 15:39] Report message to a moderator
|
|
|
|
Goto Forum:
Current Time: Sun May 11 15:04:30 CEST 2025
Total time taken to generate the page: 0.00956 seconds
|