GithubHelp home page GithubHelp logo

ultimatepp / ultimatepp Goto Github PK

View Code? Open in Web Editor NEW
736.0 56.0 109.0 592.04 MB

U++ is a C++ cross-platform rapid application development framework focused on programmer's productivity. It includes a set of libraries (GUI, SQL, Network etc.), and integrated development environment (TheIDE).

Home Page: https://www.ultimatepp.org/

License: BSD 2-Clause "Simplified" License

C++ 59.07% C 34.27% Shell 0.12% Python 0.02% HTML 0.02% Objective-C 0.01% Makefile 5.52% Batchfile 0.01% Assembly 0.02% GLSL 0.01% Roff 0.03% Scheme 0.01% Turing 0.43% Objective-C++ 0.09% CMake 0.01% SWIG 0.38%
gui cpp cpp17 ultimate upp performance ide sql image multithreading multiplatform linux macos windows posix cross-platform cpp20 native

ultimatepp's Introduction

U++

alt text

CircleCI U++ Discord GitHub release (with filter) License

Introduction

U++ is a C++ cross-platform rapid application development framework focused on programmers productivity. It includes a set of libraries (GUI, SQL, Network, etc.), and an integrated development environment.

Rapid development is achieved by the smart and aggressive use of C++ rather than through fancy code generators. In this respect, U++ competes with popular scripting languages while preserving C/C++ runtime characteristics.

The U++ integrated development environment, TheIDE, introduces modular concepts to C++ programming. It features BLITZ-build technology to speedup C++ rebuilds up to 4 times, Visual designers for U++ libraries, a Topic++ system for documenting code and creating rich text resources for applications (like help and code documentation) and Assist++ - a powerful C++ code analyzer that provides features like code completion, navigation and transformation.

TheIDE can work with GCC, Clang, MinGW and Visual C++ and contains a full featured debugger. TheIDE can also be used to develop non-U++ applications.

U++ supports following platforms on the production level: Windows, macOS, GNU/Linux & FreeBSD.

What you can get with U++?

  • A very effective C++ library for cross-platform development in source form.
  • A good integrated development environment, designed for developing large C++ applications.

You can use both, or you can use whichever you need.

License

U++ uses the BSD-2 Clause license. The license applies to all source code in this repository except for the situation when the directory contains the "Copying" file. In this case, the license contained in this file is valid for source codes within the directory in which it is present. Moreover, the new license stored in the "Copying" file applies to source files in child directories.

Download

Main downloads:

Stores download:

  • Flathub - download latest stable U++ version from Flathub (Linux only)

Other downloads:

U++ Resources

More information about the framework, can be found on the official site. Don't forget to check our rich documentation.

Examples

GUI

Below is the code of trivial GUI application that displays "Hello World" string inside window:

#include <CtrlLib/CtrlLib.h>

class MyApp: public Upp::TopWindow {
public:
    MyApp()
    {
        Title("My application").Zoomable().Sizeable().SetRect(0, 0, 320, 200);
    }

    void Paint(Upp::Draw& w) override
    {
        w.DrawRect(GetSize(), Upp::SWhite);
        w.DrawText(10, 10, "Hello, world!", Upp::Arial(30), Upp::Magenta);
    }
};

GUI_APP_MAIN
{
    MyApp().Run();
}

TheIDE

Standard part of U++ framework is integrated development environment, TheIDE.

TheIDE - U++ Integrated Developemnt Enviroment

Additional examples

See here: examples. Moreover, exactly the same examples can be found in the examples and references directories located in this repository.

If you would like to see more screenshots, click here.

Learning materials

Tutorials

We prepared several tutorials that will allow you to learn most of the aspects of our integrated development environment, TheIDE and the U++ framework.

TheIDE:

U++ framework:

  • Core Tutorial - the introduction to the foundations behind the framework.
  • GUI Tutorial - learn how to build graphical user interfaces with the U++.
  • Draw Tutorial - get knowledge about drawing custom content inside window or control.
  • Image Tutorial - check out the mechanism behind the image manipulation.
  • Network Tutorial - learn how to use U++ core components for network application creation.
  • Sql Tutorial - introduction to using databases within U++ framework

If the above list is not enough, please visit a dedicated website where we have collected links to most of the learning resources.

Books

If you are looking for books about the U++ framework, here is a list of books we recommend:

  • Getting started with the U++ Framework - the book written by Frederik Dumarey and reviewed by the main authors of U++. It is an excellent starting point for anyone new to the framework. Also, if you are an experienced U++ developer, you will find much valuable content, including a deep dive into Skylark and Turtle.

Extensibility

The functionality of the U++ framework can be easily extended by third-party packages. We introduced the concept of a global registry of repositories that can be downloaded and directly used in the project. To learn more about this technology, please visit UppHub repository.

UppHub conceptually is very similar to the package manager concept known from other technologies, and in big generalization, it can be called like that.

Repository

Repository layout

The U++ repository is divided into several directories. The most important ones are:

  • autotest - unit and integration tests for our framework
  • examples - exemplary codes of complex applications
  • references - reference examples demonstrating individual features of U++
  • tutorial - exemplary code from our tutorials
  • uppsrc - main sources of the framework

ultimatepp's People

Contributors

9t8 avatar arilect avatar borntactical avatar dolik-rce avatar drdub avatar ismail-yilmaz avatar klugier avatar lindquist avatar mezise avatar mirek-fidler avatar ped7g avatar schutm avatar theriverman avatar user0755 avatar warchef avatar zouqinglei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ultimatepp's Issues

Extend the number of supported platforms

This will be without much efforts. Your code to some extent is already portable. I have tried to compile it on many platforms and most of the time the compilation success without any errors but the real show stopper is the linking part, because you assumed too much Linux specific. For example: Upp compiled cleanly on NetBSD but fails at the linking stage since it's looking for -ldl and there is no such thing on NetBSD. The same would apply for OpenBSD.

Please let me know if you are going to support more platforms or just stick to the combo Win + Lin + Mac, thank you.

Compile for macos/osx 10.14 Mojave

Hi, i tried to compile the source for osx 10.14 - during compilation is an error message about openssl .
I installed with brew openssl@3 - do i need a different version?

Export Makefile doesn't check if folder exists and doesn't report error

While test Ultimatepp I tried to generate/export a Makefile for uppsrc/umk and found that it doesn't check if the output folder exists and or create it, also it fails because of that but doesn't report it (actually it says OK. (0:02.14)).

A partial fix that shows an error message is shown bellow, it would be better to check if the folder doesn't exists and create it.

@@ -397,11 +397,11 @@ void MakeBuild::SaveMakeFile(const String& fn, bool exporting)
 		<< "clean:\n"
 		<< "\tif [ \"$(UPPOUT)\" != \"\" -a \"$(UPPOUT)\" != \"/\" -a -d \"$(UPPOUT)\" ] ; then rm -fr \"$(UPPOUT)\" ; fi\n"
 	;
 
 	bool sv = ::SaveFile(fn, makefile);
-	if(!exporting) {
+	if(exporting) {
 		if(sv)
 			PutConsole(Format("%s(1): makefile generation complete", fn));
 		else
 			PutConsole(Format("%s: error writing makefile", fn));
 	}

SetCurrentDirectory() fails with "ñ" in Windows 10

It seems to work using ToSystemCharset().
It may be included in U++ implementation of SetCurrentDirectory().
Other functions like GetCurrentDirectory() already include FromSystemCharsetW().

// Test case
String folderName = "c:\\Demo ñ";
bool ret;
ret = SetCurrentDirectory(folderName);			// Returns false
ret = SetCurrentDirectory(ToSystemCharset(folderName));	// Returns true

VirtualGui calls undeclared Unicode__()

In Windows 10, when compiling uppweb, VirtualGui/Clip.cpp fails because Unicode__() is not declared.

In revision 2db6c3d declarations and definitions where removed.
In that revision, previous calls to Unicode__() where replaced in other locations. For example, in Win32Clip.cpp:

 static String sWText(const Value& data)
 {
-	return Unicode__(WString(data));
+	Vector<char16> h = ToUtf16(WString(data));
+	return String(h.begin(), sizeof(char16) * h.GetCount());
 }

Maybe something equivalent could be applied to VirtualGui.

Best regards
Iñaki

Can I use U++ for commercial software?

Hi,

I'm working on a software with QT, however, I may make it proprietary and sell it. If I do that, I cannot use QT without buying a license, which now I cannot afford. So, my question is can I use U++ for commercial and proprietary software?

Thanks.

Intellisense

Can we improve the intellisense of TheIDE by using clangd ?
Moreover , I hope it can pop the code completion window when I type.

Problem around SHGetFileInfoW() with FileSel in W10 when getting a shortcut icon

In my computer, when opening with FileSel a folder with a shortcut, the program abruptly stops.
When debugging, it seems that in FileSel.cpp, function FileIconMaker::Make(), the program crashes when calling SHGetFileInfoW() with a shortcut.
To reproduce it, just run this:

#include <CtrlLib/CtrlLib.h>

using namespace Upp;

GUI_APP_MAIN
{
	bool large = false;
	bool exe = false;
	SHFILEINFOW info;
	SHGetFileInfoW(ToSystemCharsetW("x.lnk"), FILE_ATTRIBUTE_NORMAL,
		               &info, sizeof(info),
		               SHGFI_ICON|
		               (large ? SHGFI_LARGEICON : SHGFI_SMALLICON)|
		               (exe ? 0 : SHGFI_USEFILEATTRIBUTES));
}

Changing exe to true, it seems to work.

Use flagSO option compile CharSet.h error

/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (155): error: use of undeclared identifier 'IsRTL_'; did you mean 'IsRTL'?
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (156): error: use of undeclared identifier 'IsMark_'; did you mean 'IsMark'?
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (163): error: functions that differ only in their return type cannot be overloaded
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (165): error: call to 'IsLetter' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (166): error: call to 'IsUpper' is ambiguous
(): inline bool IsUpper(char c) { return �I�sUpper�((dword)(byte) c); }
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (159): note: candidate function
(): inline bool �I�sUpper(int c) { return IsUpper((dword) c); }
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (166): note: candidate function
(): inline bool �I�sUpper(char c) { return IsUpper((dword)(byte) c); }
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (167): error: call to 'IsLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (168): error: call to 'ToUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (169): error: call to 'ToLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (170): error: call to 'ToAscii' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (172): error: call to 'IsLetter' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (173): error: call to 'IsUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (174): error: call to 'IsLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (175): error: call to 'ToUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (176): error: call to 'ToLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (177): error: call to 'ToAscii' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (179): error: call to 'IsLetter' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (180): error: call to 'IsUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (181): error: call to 'IsLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (182): error: call to 'ToUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (155): error: use of undeclared identifier 'IsRTL_'; did you mean 'IsRTL'?
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (156): error: use of undeclared identifier 'IsMark_'; did you mean 'IsMark'?
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (163): error: functions that differ only in their return type cannot be overloaded
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (165): error: call to 'IsLetter' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (166): error: call to 'IsUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (167): error: call to 'IsLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (168): error: call to 'ToUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (169): error: call to 'ToLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (170): error: call to 'ToAscii' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (172): error: call to 'IsLetter' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (173): error: call to 'IsUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (174): error: call to 'IsLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (175): error: call to 'ToUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (176): error: call to 'ToLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (177): error: call to 'ToAscii' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (179): error: call to 'IsLetter' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (180): error: call to 'IsUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (181): error: call to 'IsLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (182): error: call to 'ToUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (155): error: use of undeclared identifier 'IsRTL_'; did you mean 'IsRTL'?
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (156): error: use of undeclared identifier 'IsMark_'; did you mean 'IsMark'?
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (163): error: functions that differ only in their return type cannot be overloaded
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (165): error: call to 'IsLetter' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (166): error: call to 'IsUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (167): error: call to 'IsLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (168): error: call to 'ToUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (169): error: call to 'ToLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (170): error: call to 'ToAscii' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (172): error: call to 'IsLetter' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (173): error: call to 'IsUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (174): error: call to 'IsLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (175): error: call to 'ToUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (176): error: call to 'ToLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (177): error: call to 'ToAscii' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (179): error: call to 'IsLetter' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (180): error: call to 'IsUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (181): error: call to 'IsLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (182): error: call to 'ToUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (155): error: use of undeclared identifier 'IsRTL_'; did you mean 'IsRTL'?
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (156): error: use of undeclared identifier 'IsMark_'; did you mean 'IsMark'?
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (163): error: functions that differ only in their return type cannot be overloaded
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (165): error: call to 'IsLetter' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (166): error: call to 'IsUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (167): error: call to 'IsLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (168): error: call to 'ToUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (169): error: call to 'ToLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (170): error: call to 'ToAscii' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (172): error: call to 'IsLetter' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (173): error: call to 'IsUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (174): error: call to 'IsLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (175): error: call to 'ToUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (176): error: call to 'ToLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (177): error: call to 'ToAscii' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (179): error: call to 'IsLetter' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (180): error: call to 'IsUpper' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (181): error: call to 'IsLower' is ambiguous
/home/ongbee/hub/upp/uppsrc/Core/CharSet.h (182): error: call to 'ToUpper' is ambiguous

Bug in drag and drop

https://github.com/ultimatepp/ultimatepp/blob/master/uppsrc/Core/Defs.h#L157

typedef uint32             wchar;

https://github.com/ultimatepp/ultimatepp/blob/master/uppsrc/CtrlCore/CtrlClip.cpp#L118

String Unicode__(const WString& w)
{
	return String((const char *)~w, 2 * w.GetLength());
}

wchar is 4 bytes long so string will hold only one first characted.

How to reproduce. Create textedit type some text, select several letters and move it with mouse. It moves only first letter, rest will disappear.

ps:
https://github.com/ultimatepp/ultimatepp/blob/master/uppsrc/plugin/lz4/lib/lz4.c#L1348

static size_t LZ4_stream_t_alignment(void)
{
    struct { char c; LZ4_stream_t t; } t_a;
    return sizeof(t_a) - sizeof(t_a.t);
}

should be replaced with

static size_t LZ4_stream_t_alignment(void)
{
    struct { char c; int* t; } t_a;
    return sizeof(t_a) - sizeof(t_a.t);
}

in order to work with gcc, or it fall's on aligment check nearby an cause segav

TheIDE is not building and this can fix it

I just cloned this repo and when trying to build it stops with the error below and with the changes show bellow I could make it build:

c++ -c -x c++ -O3 -ffunction-sections -fdata-sections  -std=c++14 -I./uppsrc/ `pkg-config --cflags freetype2` `pkg-config --cflags x11` `pkg-config --cflags fontconfig` `pkg-config --cflags xcb` `pkg-config --cflags expat` `pkg-config --cflags xinerama` `pkg-config --cflags xrender` `pkg-config --cflags xft` `pkg-config --cflags xdmcp` `pkg-config --cflags xext` `pkg-config --cflags gtk+-3.0` `pkg-config --cflags libnotify` `pkg-config --cflags libpng` -I./ -I.cache/upp.out/ -DflagGUI -DflagGCC -DflagSHARED -DflagPOSIX -DflagLINUX -DflagMAIN  ./uppsrc/ide/Credentials.cpp -o .cache/upp.out/ide/GCC-Gcc-Gui-Linux-Main-Posix-Shared/Credentials.o
In file included from ./uppsrc/CtrlCore/CtrlCore.h:1685,
                 from ./uppsrc/CtrlLib/CtrlLib.h:4,
                 from ./uppsrc/ide/Common/Common.h:5,
                 from ./uppsrc/ide/ide.h:4,
                 from ./uppsrc/ide/Credentials.cpp:1:
./uppsrc/CtrlCore/TopWindow.h: In instantiation of ‘void Upp::CtrlLayoutOKCancel(T&, const char*) [with T = GetPasskeyDlg]’:
./uppsrc/ide/Credentials.cpp:97:37:   required from here
./uppsrc/CtrlCore/TopWindow.h:235:21: error: ‘struct GetPasskeyDlg’ has no member named ‘cancel’
  235 |  ctrl.Rejector(ctrl.cancel, IDCANCEL);
      |                ~~~~~^~~~~~
./uppsrc/CtrlCore/TopWindow.h:236:7: error: ‘struct GetPasskeyDlg’ has no member named ‘cancel’
  236 |  ctrl.cancel.Cancel();
      |  ~~~~~^~~~~~
./uppsrc/CtrlCore/TopWindow.h:237:32: error: ‘struct GetPasskeyDlg’ has no member named ‘cancel’
  237 |  ArrangeOKCancel(ctrl.ok, ctrl.cancel);
      |                           ~~~~~^~~~~~
Makefile:14356: recipe for target '.cache/upp.out/ide/GCC-Gcc-Gui-Linux-Main-Posix-Shared/Credentials.o' failed
make: *** [.cache/upp.out/ide/GCC-Gcc-Gui-Linux-Main-Posix-Shared/Credentials.o] Error 1
@@ -92,11 +92,11 @@ struct GetPasskeyDlg : WithGetPasskeyLayout<TopWindow> {
 	void Sync() { passkey.Password(!show_passkey); }
 };
 
 GetPasskeyDlg::GetPasskeyDlg()
 {
-	CtrlLayoutOKCancel(*this, "Passkey");
+	CtrlLayoutOK(*this, "Passkey");
 	
 	show_passkey << [=] { Sync(); };
 	
 	Sync();
 }

How To Compile Source?

Hello
i want to compile source in windows 10.
i have visual studio 2017
how to do this?

and U++ is fantastic,thank you

Eliminating warnings and making life easier for future generations

I noticed that the IDE hide the compilation commands and it's warnings from the user (I'm used to Codeblocks and Netbeans) so I exported a Makefile for the IDE and created a Netbeans project to build it.

To the exported Makefile I added the following compiler options -Wall -pipe and noticed lots of warnings related to parentheses around boolean expressions and found this interesting one in uppsrc/ide/RepoSync.cpp:

if(pass == action < 0 && action != DELETEC) {

Also to suppress the warnings from GTK-3 headers I added this to uppsrc/CtrlCore/Gtk.h:

#ifdef __GNUC__
#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wparentheses"
#endif
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif

I'm trying to fix as much warnings I can and I'll add then here later.

error: no member named 'SetFont' in 'MyCtrl' in GUI Tutorial Gui21

In GUI Tutorial Gui21, when I right click to add "User class", the default widget properties are as follows:

image

If I set "SetFont()" and "SetInk()" in Gui21.lay like this:

LAYOUT(Gui21Layout, 200, 100)
	ITEM(MyCtrl, myctrl, SetFont(StdFont(11)).SetInk(Black).LeftPosZ(44, 112).VSizePosZ(32, 32))
END_LAYOUT

It compiles with error:

error: no member named 'SetFont' in 'MyCtrl'

I have to remove "SetFont()" and "SetInk()" in Gui21.lay to get it compiled.
So what are they for of these widget properties?

Add Ultimate++ release info into readme

I spent couple of hours to find that at least build 11873 of Ultimate++ is required to build this amazing C++ port of ConvNetJS.

Would you mind to add Ultimate++ release info to readme please.
So others will spent less time looking for correct environment for building.

All Ultimate++ releases could be found here:
https://sourceforge.net/projects/upp/files/upp/

Thanks a lot for your work

Ultimate++ on Illumos/OpenIndiana

I could compile Ultimate++ just fine with the system's gcc 7.5.0 but it failed at linking. Please note that the ld binary we should use is call gld, the ld in /usr/bin/ld is the old linker from Sun so it doesn't support the options Ultimate++ used. Please fix the makefile. C++ IDE is very lacked on this system. So having Ultimate++ and TheIDE worked on it is awesome.

Is there a chance Upp support wxwidgets like sizers?

Hello
i was thinking is there a chance upp support wxwidgets like sizers? vertical and horizontal stack panels ...
it's easier to work with and straightforward to figure out how the GUI will look like.
i know there is something implemented similar, (SizePos, HSizePos, VSizePos).
but i think wxwidgets sizers works easier. like you put a vertical container sizer, and just append the components to it without the need to figure out how it will look like.

no template named 'WithDlgLayout' in namespace 'Upp' in GUI tutorial Gui16

In GUI Tutorial, section “16.2 Upp namespace agnostic implementation”, the given code compiles with following error:

error: no template named 'WithDlgLayout' in namespace 'Upp'; did you mean simply 'WithDlgLayout'?

I need to remove the "Upp::" before "WithDlgLayout" to:

struct MyAppWindow : public WithDlgLayout<Upp::TopWindow> {
    MyAppWindow() {
        CtrlLayout(*this, "MyDialog");
    }
};

And, it seems that, by default, Layout Designer does not add "Upp::" before "InsetFrame()" in SetFrame(). I need to manually add "Upp::" before "InsetFrame()" in dlg.lay from:

LAYOUT(DlgLayout, 208, 64)
	ITEM(Upp::Label, dv___0, SetLabel(t_("Label")).LeftPosZ(8, 40).TopPosZ(8, 19))
	ITEM(Upp::EditString, text, SetFrame(InsetFrame()).LeftPosZ(48, 92).TopPosZ(8, 19))
	ITEM(Upp::Option, option, SetLabel(t_("Option")).LeftPosZ(8, 112).TopPosZ(36, 16))
END_LAYOUT

to

LAYOUT(DlgLayout, 208, 64)
	ITEM(Upp::Label, dv___0, SetLabel(t_("Label")).LeftPosZ(8, 40).TopPosZ(8, 19))
	ITEM(Upp::EditString, text, SetFrame(Upp::InsetFrame()).LeftPosZ(48, 92).TopPosZ(8, 19))
	ITEM(Upp::Option, option, SetLabel(t_("Option")).LeftPosZ(8, 112).TopPosZ(36, 16))
END_LAYOUT

unicode build

will he upcoming build works with unicode build /D_UNICODE /DUNICODE

Failed to setup U++ on macOS 11.5.2

I spent whole day trying to figure out how to run at least one example, tried every possible search source, still failed.
I feel very sad now.

I'm using macOS 11.5.2. I can confirm that all required libraries are installed.

Here is my journey:

  1. Download upp-macos-16056.tar.xz, unzip it, launch theide.

  2. Granted every privileges it requires.

  3. A popup shows asking me to download the source, click ok.

  4. I saw the system console showed up with git clone ..., after 30 minutes, still there, I checked target folder, seems nothing is downloaded.

  5. I closed system console. Open terminal and type git clone ... manually, it works well, so network and git works fine, it's not the issue.

  6. I tried again, still stuck at the git clone step.

  7. Cancel git clone, start theide directly. I can only see MyApps in Assemply list.
    截屏2021-08-31 下午3 59 25

  8. I tried to use umk to compile a example by "./umk ./examples AddressBook CLANG -v ./adbook". Error message is "Missing package(s): CtrlLib Report".

I thought it might be the nightly build's issue, so I went to sourceforge and downloaded the stable build.

Lanuch theide, it stuck at svn ..., wait 30 minutes, nothing happened. Cancel, and lanuch theide, samething happened, I can only see MyApps in Assemply list.
Ran "./umk ./examples AddressBook CLANG -v ./adboo", same error.

I'm so exhausted now... How can I make it work?

Urr Recv: Timeout value

time_out.tv_sec = timeout / 1000;
time_out.tv_usec = timeout % 1000 * 1000;

It seems that timeout value can be Upp:Null. But if this is not intended to represent "blocking" behavior (ln:18 seems to suggests that it is not), then it should be as follows:

int t = Nvl(timeout, 0); 
time_out.tv_sec = t / 1000;
time_out.tv_usec = t % 1000 * 1000; 

Windows 7: ScriptFreeCache not found in GDI32.dll

theide.exe - Entry Point Not Found

The procedure entry point ScriptFreeCache could not be located in the dynamic link linbrary GDI32.dll.
This is likely due to the order of the linking of libraries:
https://docs.microsoft.com/en-us/windows/win32/api/usp10/nf-usp10-scriptfreecache?redirectedfrom=MSDN
On the page is this note:
"Important Starting with Windows 8: To maintain the ability to run on Windows 7, a module that uses Uniscribe must specify Usp10.lib before gdi32.lib in its library list."

Missing capture in gui tutorial Gui09

While following the gui tutorial I found a mistake in Gui09 project, the lambda was capturing the i variable by reference and should be by copy otherwise we get always a value of 10 the las assigned value in the for loop.

@@ -10,11 +10,11 @@ struct MyAppWindow : TopWindow {
 
 	virtual void RightDown(Point, dword) override {
 		int result = Null;
 		MenuBar menu;
 		for(int i = 0; i < 10; i++)
-			menu.Add(AsString(i), [&] { result = i; });
+			menu.Add(AsString(i), [&, i] { result = i; });
 		menu.Separator();
 		menu.Add("Exit", [=] { Exit(); });
 		menu.Execute();
 		if(!IsNull(result))
 			PromptOK("You have selected " + AsString((int)result));

Add support for OpenIndiana

OpenIndiana is a POSIX compliant platform since it origin could be traced back to SVR4 Unix. Currently U++ for POSIX only supports FreeBSD and OpenBSD. Please add official support for OpenIndiana. Thanks.

ImageOp.cpp -> FlipImage

Sorry, My English is very poor.

//ImageOp.cpp -> FlipImage
Image FlipImage(const Image& m, int mode)
{
return decode(mode,
FLIP_MIRROR_HORZ, MirrorHorz(m),
FLIP_ROTATE_180, Rotate180(m),
FLIP_MIRROR_VERT, MirrorVert(m),
FLIP_TRANSPOSE, Transpose(m),
FLIP_ROTATE_CLOCKWISE, RotateClockwise(m),
FLIP_TRANSVERSE, Transverse(m),
FLIP_ROTATE_ANTICLOCKWISE, RotateAntiClockwise(m),
m);
}

//Fh.h
template <class T, class V>
constexpr const V& decode(const T& sel, const V& def)
{
return def;
}

template <class T, class K, class V, typename... L>
constexpr V decode(const T& sel, const K& k, const V& v, const L& ...args)
{
return sel == k ? v : (V)decode(sel, args...);
}

In the FlipImage funciton, each conversion function is executed once before the mode hit.

forum problem

Hello,
I created an account on the forum the other day and wrote my first topic in the newbie section. My new topic didn't post, i thought maybe it needed manual approval, but after days my topic was never posted. The odd thing is, after i tried to login i found out that my account was deleted since i couldn't login nor my email was recognized when i tried to rest my password.
Is the forum dead or did i do something wrong to trigger some antispam mechanism?
Thank you.

Problem compiling TheIDE with Visual Studio 2019

C:\Desarrollo\upp\uppsrc\CtrlCore\Win32Wnd.cpp(492): error C2039: 'ImmAssociateContextEx': is not a member of '`global namespace''
C:\Desarrollo\upp\uppsrc\CtrlCore\Win32Wnd.cpp(492): error C3861: 'ImmAssociateContextEx': identifier not found
C:\Desarrollo\upp\uppsrc\CtrlCore\Win32Wnd.cpp(761): error C2039: 'ImmAssociateContextEx': is not a member of '`global namespace''
C:\Desarrollo\upp\uppsrc\CtrlCore\Win32Wnd.cpp(761): error C2065: 'IACE_DEFAULT': undeclared identifier
C:\Desarrollo\upp\uppsrc\CtrlCore\Win32Wnd.cpp(761): error C3861: 'ImmAssociateContextEx': identifier not found

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.