Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Community » U++ community news and announcements » 2022.3
2022.3 [message #59444] Thu, 29 December 2022 09:26 Go to next message
mirek is currently offline  mirek
Messages: 13849
Registered: November 2005
Ultimate Member
It is not perfect and probably will need service pack soon (there are two issues unresolved, but so far we have scarce info about how to reproduce them), but I now consider 2022.3 released.

2022.3 (December 2022)

Release highlights

Homegrown C++ parser in theide is replaced with libclang resulting in new and improved Assist++ features
Autocomplete now correctly works in most cases (except in template bodies, which is libclang limitation)
Code navigator refactored and improved
TheIDE now shows C++ errors while editing sources
TheIDE now shows information tips about program symbols when you leave mouse over it (documentation if available, declaration signature if not)
New function "Usage" shows all usages of current symbol through all project sources based on C++ analysis. With virtual methods, it shows all overrides of base class method.
Memory consumption (esp. sizeof) of widgets greatly reduced (by up to 70%).
LabelBox now allows center and right alignment.
MacOS version is not released with 2022.3. We hope to provide it again with the 2023.1.
Re: 2022.3 [message #59445 is a reply to message #59444] Thu, 29 December 2022 10:16 Go to previous messageGo to next message
Tom1
Messages: 1151
Registered: March 2007
Senior Contributor
Hi,

Thank you again for your great effort on U++!

Is the official 2022.3 release 16660? Status and Roadmap, U++ front page and Download resources need to be updated accordingly.

Best regards,

Tom

Re: 2022.3 [message #59446 is a reply to message #59444] Thu, 29 December 2022 11:15 Go to previous messageGo to next message
zsolt is currently offline  zsolt
Messages: 674
Registered: December 2005
Location: Budapest, Hungary
Contributor
Thank you, Mirek.
This new Assist is a game changer, I think. Very useful.

Happy New Year
Re: 2022.3 [message #59447 is a reply to message #59444] Thu, 29 December 2022 11:43 Go to previous messageGo to next message
Klugier is currently offline  Klugier
Messages: 1037
Registered: September 2012
Location: Poland, Kraków
Senior Contributor
Hello,

Great news! I created release 2022.3 on GitHub. I also created information post on Reddit. Please feel free to up vote! Smile

Klugier


U++ - one framework to rule them all.

[Updated on: Thu, 29 December 2022 13:58]

Report message to a moderator

Re: 2022.3 [message #59448 is a reply to message #59447] Thu, 29 December 2022 23:20 Go to previous messageGo to next message
unodgs is currently offline  unodgs
Messages: 1366
Registered: November 2005
Location: Poland
Ultimate Contributor

Quote:
Please feel free to up vote!

Done and congrats on the new release Smile
Re: 2022.3 [message #59449 is a reply to message #59447] Fri, 30 December 2022 00:47 Go to previous messageGo to next message
Lance is currently offline  Lance
Messages: 526
Registered: March 2007
Contributor
Congrats and Thanks!

Klugier wrote on Thu, 29 December 2022 05:43
Hello,

Great news! I created release 2022.3 on GitHub. I also created information post on Reddit. Please feel free to up vote! Smile

Klugier

Done!
Re: 2022.3 [message #59450 is a reply to message #59444] Fri, 30 December 2022 04:37 Go to previous messageGo to next message
Oblivion is currently offline  Oblivion
Messages: 1021
Registered: August 2007
Senior Contributor
Great news. Thank you all!


Best regards,
Oblivion


Re: 2022.3 [message #59454 is a reply to message #59444] Fri, 30 December 2022 16:59 Go to previous messageGo to next message
Satervalley is currently offline  Satervalley
Messages: 18
Registered: December 2022
Promising Member
the DropList's member function "ListObject" is commented out, this is a public function may been used by existed apps, deleting it causes compile error.
Re: 2022.3 [message #59455 is a reply to message #59454] Fri, 30 December 2022 18:44 Go to previous messageGo to next message
Klugier is currently offline  Klugier
Messages: 1037
Registered: September 2012
Location: Poland, Kraków
Senior Contributor
Hello Satervalley,

Did you try to uncomment following line in CtrlLib/Drp[Choice.h - line 204-207 and see if it works for you:
/*
	const PopUpTable& GetList() const                   { return list; }
	PopUpTable&   ListObject()                          { return list; }
*/


It looks like PopUpList is still in the code:
private:
	PopUpList          list;


Klugier


U++ - one framework to rule them all.
Re: 2022.3 [message #59457 is a reply to message #59455] Sat, 31 December 2022 04:33 Go to previous messageGo to next message
Satervalley is currently offline  Satervalley
Messages: 18
Registered: December 2022
Promising Member
in previous version, list is an instance of PopupTable which derived from ArrayCtrl, in newest version, list is an instance of PopupList which with no base class, instead, PopupList has a protected member popup which is a pointer(One) of Popup which derived from Ctrl and has a public member named "ac" which is an instance of PopupArrayCtrl which derived from ArrayCtrl, so it's not just an uncommentting thing.

[Updated on: Sat, 31 December 2022 04:35]

Report message to a moderator

Re: 2022.3 [message #59461 is a reply to message #59457] Sun, 01 January 2023 16:48 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13849
Registered: November 2005
Ultimate Member
Satervalley wrote on Sat, 31 December 2022 04:33
in previous version, list is an instance of PopupTable which derived from ArrayCtrl, in newest version, list is an instance of PopupList which with no base class, instead, PopupList has a protected member popup which is a pointer(One) of Popup which derived from Ctrl and has a public member named "ac" which is an instance of PopupArrayCtrl which derived from ArrayCtrl, so it's not just an uncommentting thing.


Correct. I am sorry about this, but that method is gone for good - popup and ArrayCtrl are now created on demand, as size optimisation. Saves several KBs per each DropList. This change was in master since June...

Anyway, if you tell what is your usage scenario, maybe we can something to solve it.
Re: 2022.3 [message #59471 is a reply to message #59461] Tue, 03 January 2023 05:30 Go to previous messageGo to next message
Satervalley is currently offline  Satervalley
Messages: 18
Registered: December 2022
Promising Member
my use case is very simple, when click the down arrow, popupped drop list has 2 columes(I use it to show database fields, first column is field name, 2nd column is field data type). I use ListObject to get the arrayctrl instance, and then AddColumn to archive 2 columns droplist.

[Updated on: Tue, 03 January 2023 05:31]

Report message to a moderator

Re: 2022.3 [message #59474 is a reply to message #59471] Tue, 03 January 2023 10:35 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13849
Registered: November 2005
Ultimate Member
Satervalley wrote on Tue, 03 January 2023 05:30
my use case is very simple, when click the down arrow, popupped drop list has 2 columes(I use it to show database fields, first column is field name, 2nd column is field data type). I use ListObject to get the arrayctrl instance, and then AddColumn to archive 2 columns droplist.


How do you fill that second column?
Re: 2022.3 [message #59476 is a reply to message #59474] Tue, 03 January 2023 16:44 Go to previous messageGo to next message
Satervalley is currently offline  Satervalley
Messages: 18
Registered: December 2022
Promising Member
1st, in my TopWindow derived class's constructor,I add 2 columns:
	PopUpTable& pt = dlFields.ListObject(); // dlFields ref to DropList
	pt.AddColumn("Name");
	pt.AddColumn("Type");

2nd, when I got the database fields info:
	dlFields.Clear();
	PopUpTable& pt = dlFields.ListObject();
	for(auto i = 0; i < vFields.GetCount(); i++) // vFields is a Vector of String contains field names 
	{
		dlFields.Add(vFields[i]);
	}
	for(int i = 0; i < vFieldsType.GetCount(); i++) // vFieldsType is a Vector of String contains field type
	{
		pt.Set(i, 1, vFieldsType[i]);
	}


I have to add the first column rows, then set the second column rows, the code works fine. when select a row, the first column's content of selected row is showed.

[Updated on: Tue, 03 January 2023 17:07] by Moderator

Report message to a moderator

Re: 2022.3 [message #59477 is a reply to message #59476] Tue, 03 January 2023 23:26 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13849
Registered: November 2005
Ultimate Member
Satervalley wrote on Tue, 03 January 2023 16:44
1st, in my TopWindow derived class's constructor,I add 2 columns:


I have found a way how to reinstate ListObject back to DropList; new incarnation returns ArrayCtrl&, but that should not be a problem for your usecase.

Pushed to master. Please test.

Mirek
Re: 2022.3 [message #59480 is a reply to message #59477] Wed, 04 January 2023 10:22 Go to previous messageGo to next message
mdelfede is currently offline  mdelfede
Messages: 1306
Registered: September 2007
Ultimate Contributor
Hi Mirek (and happy new year, btw!),

Im'using the ListObject() too... here is the code in my control constructor:

	PopUpList &pt = ListObject();
	prevListSelect = pt.WhenSelect;
	pt.WhenSelect = THISBACK(listSelectCb);


and in the handler:

// catches selections on popuplist
// to handle changes in layer's properties
void LayersDrop::listSelectCb(void)
{
	// get clicked point
	Point p = ::GetMousePos() - GetScreenRect().TopLeft();
	int col;
	if(p.x < 24)
		col = 0;
	else if(p.x < 48)
		col = 1;
	else
		col = 3;
	int iLine = ListObject().GetCursor();
	
	// if no line clicked or clicked on name, normal behaviour
	// of current layer selection
	if(IsNull(iLine) || col == 3)
	{
		prevListSelect();
		return;
	}
	
	// clicked on an item, just call given callback
	// and repost a drop on list
	Value v = GetValue(iLine);
	LayerData ld = ValueTo<LayerData>(v);
	if(col == 0)
		ld.on = !ld.on;
	else if(col == 1)
		ld.locked = !ld.locked;
	v = RawToValue(ld);
	SetValue(iLine, v);
	WhenToggle(ld.name, ld.on, ld.locked);
	PostCallback(THISBACK(Drop));
}


Here the effect :
index.php?t=getfile&id=6740&private=0

You can open the droplist, click on layer name (third column) and the list behaves as usual (the layer is selected and list is closed), but if you click on first 2 columns (layer ON/OFF and layer LOCK/UNLOCK) the list stay open but the state of item is toggled.

By now I solved by the usual "#define private protected" trick before including CtrlLib and re-adding the ListObject() function in my control. Not a very nice way... and I must disable blitz for this package.
It would be nice to have the ListObject() function again, or at least to put the 'list' item as protected instead of private...
  • Attachment: layers.png
    (Size: 29.06KB, Downloaded 190 times)
Re: 2022.3 [message #59481 is a reply to message #59480] Wed, 04 January 2023 11:36 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13849
Registered: November 2005
Ultimate Member
mdelfede wrote on Wed, 04 January 2023 10:22

It would be nice to have the ListObject() function again, or at least to put the 'list' item as protected instead of private...


Uhm, have you seen the post before your post? Smile

Mirek
Re: 2022.3 [message #59482 is a reply to message #59481] Wed, 04 January 2023 16:10 Go to previous messageGo to next message
mdelfede is currently offline  mdelfede
Messages: 1306
Registered: September 2007
Ultimate Contributor
mirek wrote on Wed, 04 January 2023 11:36

Uhm, have you seen the post before your post? Smile

Mirek


Well, I didn't, but now I tried and the behaviour is not the same Sad
I mean:

1) I must use WhenLeftClick event, and that's ok
2) When I click on a toggle item, it does toggle correctly, BUT when I re-open the droplist
using PostCallback(THISBACK(Drop)) (which I need to keep the droplist in drop state) the ArrayCtrl
cursor gets re-set to current item, and not the one under mouse.
So, if I don't move the mouse (even slightly...) when I click it it gets the wrong line.
I mean, I simply can't toggle and re-toggle an item without moving the mouse between toggles.

Here you can see : I clicked on small lock (which was yellow and got correctly toggled to black), the droplist re-opened
correctly BUT its cursor is on third item and didn't follow mouse cursor which is on item 2.
If I re-click on black lock to toggle it again the lock doesn't toggle

index.php?t=getfile&id=6741&private=0

BTW, putting some logs it shows firing WhenAction events even clicking on toggle elements, and it shouldn't.
Anyways I'll try to solve my problem with new upp code.

Thank you!

Massimo
  • Attachment: layers.png
    (Size: 16.93KB, Downloaded 159 times)
Re: 2022.3 [message #59483 is a reply to message #59477] Wed, 04 January 2023 17:21 Go to previous message
Satervalley is currently offline  Satervalley
Messages: 18
Registered: December 2022
Promising Member
I've tried, works as expected,thx!
Previous Topic: 2022.3rc1
Next Topic: ide insert data/timestep/GUID
Goto Forum:
  


Current Time: Fri Mar 24 10:56:30 CET 2023

Total time taken to generate the page: 0.01184 seconds