📜 ⬆️ ⬇️

Impressions from exploring Ultimate ++

If you are a freelancer or like to experiment with exotic environments with C ++, then you should pay attention to the Ultimate ++ ecosystem, which I learned about recently through a series of articles by Semen Yesilevsky ( part 1 , part 2 , part 3 , part 4 - everything is on the wiki ) with such a final farewell:
“Do the benefits of U ++ outweigh its unusual and high“ entry barrier ”? In my opinion, yes. U ++ is a great choice for cross-platform projects that are being developed from scratch, especially if you expect heavy use of databases. ”

Under the cut are those nuances of U ++, which we managed to dig out on the forum and manuals for a month of daily work on an edited directory of documents stored in the database. Immediately, I note that there will be no comparison with the “wonderful trinity”, as for the simplest gui used to use WTL and looked with hope at the eGUI ++ library , which, unfortunately, the author abandoned, but there was no one to pick up.

First of all, Ultimate ++ is an ultimatum: either the TheIDE own environment, or, for example, such a set under Windows as Visual Studio + STL + POCO + WTL. As a result, one has to forget about exceptions, although otherwise the core is decent, as illustrated by fragments of the asynchronous client-server file transfer code I wrote.

Core



SQL


Just look here and here . Php / yii fans should appreciate.

QTF (ReportView)


QTF is a proprietary U ++ format for advanced text design. Used in RichEdit and when generating reports. In TheIDE there is a special designer for experiments:

image

There is also a special dialog for printing a report (saved in pdf is in the depths of ReportWindow):
 Color rgb_color = Color(109, 171, 211); String qtf_color = Format("@(%d.%d.%d)", rgb_color.GetR(), rgb_color.GetG(), rgb_color.GetB()); String qtf; qtf.Cat(Format("[R9/%s Habrahabr &]", qtf_color)); qtf.Cat(Format("[_%s ] [ ] [_%sq\\&a] [_%s ] [_%s ] [_%s ]", qtf_color, qtf_color, qtf_color, qtf_color, qtf_color)); Report rep; rep << qtf; ReportWindow().Perform(rep); 

image

The styling of the text is framed by tags [and], and first behind the bracket [go QTF-identifiers, and then only through the space text. In general, the principle as in HTML, the only difference is in the names.

Bazaar


Bazar is a set of user libraries for specific needs, among which I was very useful for cross-platform work with Word / Excel in Office Automation :
 #include <OfficeAutomation/OfficeAutomation.h> GUI_APP_MAIN { //Excel OfficeSheet sheet; bool xlsOn = sheet.IsAvailable("Microsoft"); if (xlsOn) sheet.Init("Microsoft"); //Open Office Calc if (!xlsOn) { xlsOn = sheet.IsAvailable("Open"); if (xlsOn) sheet.Init("Open"); } if (xlsOn) { FileSel fs; fs.Type(" ", "*.xls *.xlsx"); fs.AllFilesType(); if (fs.ExecuteOpen(" Excel ")) { sheet.OpenSheet(~fs, true); sheet.AddSheet(true); } } //Word OfficeDoc doc; //  Word2003  Word2007,  - Word2003.   . bool docOn = doc.IsAvailable("Microsoft"); if (docOn) doc.Init("Microsoft"); //Open Office Writer if (!docOn) { docOn = doc.IsAvailable("Open"); if (docOn) doc.Init("Open"); } if (docOn) { FileSel fs; fs.Type(" Word", "*.doc *.docx *.rtf"); fs.AllFilesType(); if (fs.ExecuteOpen(" Word ")) { doc.OpenDoc(~fs, true); doc.AddDoc(true); } } } 


Nuances



Summary


Join in! Many things that I haven’t written out need to be actively improved. 32 mb with a small distro deserve it.

Source: https://habr.com/ru/post/194590/


All Articles