A collection of packages for Ultimate++ framework.

Overview

upp-components

This repository contains supplementary general-purpose packages for Ultimate++, a C++ cross-platform rapid application development framework focused on programmers productivity.

Requirements

  • Ultimate++ framework (release >= 2020.2)
  • A C++ compiler that supports at least C++11. (GCC/CLANG/MinGW/MSC)

Installation

At the moment there are two ways to install upp-components

  1. Downlad the repository and move the package folders to your local uppsrc directories.

  2. Clone or download the repository and set it up as an U++ assembly or nest. This is the recommended method. You can find more information on Ultimate++ packages, assemblies and nests, here.

Components

upp-components repository is organized into directories, retaining and reflecting the crucial sections of the uppsrc directory structure.

Core

These components are meant to supplement uppsrc/Core

Package Description
Ftp File transfer protocol encapsulation with advanced capabilities.
Job A lightweight and flexible multithreading tool, using promise/future mechanism.
NetProxy A network proxy class implementing SOCKS and HTTP protocols.
OAuth A package encapsulating the authorization code grant flow of OAuth2 authorization protocol.
PtyProcess A cross-platform (POSIX/WinPty/WIN10) pseudo-terminal process implementation.
PtyAgent Agent executable for the default backend (winpty) of PtyProcess package.
SSH A flexible, easy-to-use yet powerful libssh2 wrapper.

CtrlLib

These components are meant to supplement uppsrc/CtrlLib

Package Description
MessageCtrl A passive message widget and manager implementation.
Terminal A cross-platform, high-end terminal emulator widget and library with very good xterm compatibility.

Examples

You can find reference examples demonstrating the usage of the above listed packages in upp-components/Examples directory.

Version

upp-components loosely follows the release cycles of Ultimate++. Releases are tagged twice a year. Currently it is tagged as 2021.1

License

upp-components is made public with the BSD-3 Clause license.

Issues
  • Better README.md

    Better README.md

    Hello Oblivion,

    It seems that in top README.md there is not too many information. You should add at least the list of components and what they supposed to do. It will be much easier for the other people to localize what they want from your repository.

    Of course good job with the components. I am gald you are part of our community!

    Klugier

    enhancement 
    opened by klugier 11
  • CTRL+P ~ CTRL+Z  were filtered ?

    CTRL+P ~ CTRL+Z were filtered ?

    [email protected]:~$ uname -a
    Linux chiv-vpc 5.4.0-53-generic #59-Ubuntu SMP Wed Oct 21 09:38:44 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
    [email protected]:~$ uname aaaaaaa
    

    CTRL+U will clear the command, but Terminal does not response this hot key, so dose CTRL+P, ....

    bug Terminal 
    opened by chivstyle 9
  • Terminal: iTerm2 inline images protocol does not explicity specify when to scroll a page.

    Terminal: iTerm2 inline images protocol does not explicity specify when to scroll a page.

    Ultimate++ terminal widget(v0.3/2020.1) added support for iTerm2's inline images protocol. However, iTerm2's original protocoldoes not seem to explicitly specify the following:

    1. When to scroll the page, if at all? (Currently, we are relying on DECSDM)
    2. What happens when the preserveAspectRatio parameter is set to 0 with only, say, width parameter is specified. (E.g. this is the case with ranger file manager.) Should the terminal use the original height of the image (treat it as auto)? If so, should it scroll the page, or crop the image, if the original height of the image exceeds the height of terminal's page height?

    @gnachman, If you have time , I would be grateful if you could clarify these two points about iTerm2's.inline images protocol.

    help wanted question 
    opened by ismail-yilmaz 8
  • Add winpty support to TerminalCtrl/PtyProcess

    Add winpty support to TerminalCtrl/PtyProcess

    While we already have support for windows 10 pseudoconsole api, the winpty library and winpty-agent executable allow native console support on Windows XP/Vista/7/8/10, by behaving as a middleware between console apps and terminals.

    See this forum post for more details.

    It is already prototyped, up and working. Let's get it ready for 2021.1 tag.

    enhancement Terminal 
    opened by ismail-yilmaz 2
  • ESC was not responsed

    ESC was not responsed

    Hi.

    I found another bug on windows.

    U++: upp-win-15400
    Toolchain: MSVS19x64
    OS: Windows 10 64bits
    

    Steps to reproduce the bug:

    • connect to a remote linux machine
    • open VIM
    • press 'i' to insert anything
    • press ESC, it can't exit from edit mode.
    bug Terminal 
    opened by chivstyle 2
  • PtyProcess: Winpty should be made into a U++ plugin and statically linked.

    PtyProcess: Winpty should be made into a U++ plugin and statically linked.

    I have already managed to compile and statically link winpty library with stock Upp and the bundled clang compiler with very little wrestling . Not to mention that winpty has MIT license.. This means we can simply provide the library with the PtyProcess package, and preferably make it the default backend, for easy maintenance and development. This shouldn't take more than a week or so.

    enhancement Terminal PtyProcess 
    opened by ismail-yilmaz 1
  • Move the developmental version of terminal package to its own repository, and get it ready for UppHub

    Move the developmental version of terminal package to its own repository, and get it ready for UppHub

    Given that we have UppHub up and running now, it seems reasonable to move the developmental packages of Ultimate++ terminal widget, TerminalCtrl, to its own repository and register it to UppHub.

    This will,

    • Allow the users of Ultimate++ to access Terminal package via TheIDE's distributed 3rd-party source package manager.
    • Spare the users from downloading the whole upp-components repository just to get TerminalCtrl and its examples.

    This move, however, does not mean that upp-components is going to be abandoned. upp-component will be maintained and expandend as planned. Terminal package within the upp-components repository will be regularly synced with its new home repo as well.

    Terminal 
    opened by ismail-yilmaz 1
  • About copy

    About copy

    U++: upp-win-15400
    Toolchain: MSVS19x64
    OS: Windows 10 64bits
    

    You added a linebreak even the selected text is only a single line. I think that's not what we expected at most situations. For example:

    I want to input something like below:

    export LD_LIBRARY_PATH=$(pwd)/lib:$LD_LIBRARY_PATH:/$(pwd)/last/lib
    
    export LD_LIBRARY_PATH=$(pwd)/lib:$
    

    Now, I copy the LD_LIBRARY_PATH, that's not the last text absolutely, I want to input more chars later, but the '\r' will break the work.

    bug Terminal 
    opened by chivstyle 1
  • Terminal does not render space (0x20) character with underline or overline attributes.

    Terminal does not render space (0x20) character with underline or overline attributes.

    Terminal <= v0.3 does not draw space character (0x20) with overline or underline SGR attribute. For example, some applications such as w3m web browser rely on underline attribute to draw empty forms. Space character with some attributes (at least SGR_UNDERLINE) should be allowed.

    bug Terminal 
    opened by ismail-yilmaz 1
  • Terminal: Implement explicit hyperlink (HTML-like anchors) command.

    Terminal: Implement explicit hyperlink (HTML-like anchors) command.

    As discussed here, some of the more popular terminal emulators (VTE-based ones, for one) implemented (or implementing) an OSC to allow hyperlinks.

    This feature is useful and much safer than manually detecting the URLs that are not really intended to be hyperlinks.

    opened by ismail-yilmaz 1
  • More sixel renderer optimizations.

    More sixel renderer optimizations.

    Hello @jerch,

    I don't want to pollute your repos or other active discussion threads with my findings until I can come up with some practical optimization suggestions for your renderer. So I'll put this here.

    I've been doing some heavy profiling on my SixelRenderer since last week. Here are some preliminary results:

    • I identified both some bottlenecks in my code and the performance sensitive critical parts of sixel rendering in general.
    • I achieved some nice progress by some simple tweaks since last week:
      • I have managed to sequeze out a steady 42 MiB/s (2.90 secs) (parsing + rendering) on your sixel-bench animation, which means ~12 MiB/s gain. for me
      • There is a small performance penalty associated with displaying the animation due to the gui event handling (latency) of our GUI toolkit, But my SixelViewer app (a small testing and benchmarking app) can display the full sixel-bench video on average 38.00 Mib (3.10 secs.). As you can guess, this does not translate 1:1 to final terminal performance, because other variables also effect the vte rendering performance. Still it can achieve slightly higher performance than MLTerm now.

    sixel-renderer-optimized

    The above improvements are all due to some really simple tricks -one of which I borrowed from you- and the examination of the produced assembly code. I am confident that we can raise the throughput bar even higher, because there is still room for optimization.

    In the following days this week I'd like to share my findings (code changes/alterations) with you, which you might find interesting and, hopefully, useful for your c/wasm decoder.

    enhancement Terminal 
    opened by ismail-yilmaz 92
  • Add SVG support to Terminal widget as a compile-time option.

    Add SVG support to Terminal widget as a compile-time option.

    Given the increasing popularity of inline images support in virtual terminal emulators, and the usage of SVG in general, the SVG rendering support can be added to TerminalCtrl as a compile-time option, since U++ already provides the necessary and easy-to-use SVG rendering functions.

    As for the required changes in the wire protocols: This option doesn't necessarily require any modification of supported/existing wire protocols (DECSIXEL/jexer/iterm2), since TerminalCtrl already uses a generic infrastructure to identify and decode images.

    enhancement Terminal 
    opened by ismail-yilmaz 2
  • Add optional, range-based font substitution method to Terminal ctrl.

    Add optional, range-based font substitution method to Terminal ctrl.

    Popular vt emulators/widgets support various methods for font substitution. Terminal ctrl currently doesn't support any such method. A range-based font substitution option seems both relatively trivial to add with the existing code base of Terminal ctrl and flexible enough to give the client code some freedom.

    enhancement 
    opened by ismail-yilmaz 0
Releases(2021.1)
Owner
İsmail Yılmaz
ASM/C/C++ et al.
İsmail Yılmaz
Minimal Linux Live (MLL) is a tiny educational Linux distribution, which is designed to be built from scratch by using a collection of automated shell scripts. Minimal Linux Live offers a core environment with just the Linux kernel, GNU C library, and Busybox userland utilities.

Minimal Linux Live (MLL) is a tiny educational Linux distribution, which is designed to be built from scratch by using a collection of automated shell scripts. Minimal Linux Live offers a core environment with just the Linux kernel, GNU C library, and Busybox userland utilities.

John Davidson 1.3k Aug 2, 2022
A collection of 1000 C++ Programs

⭐ ⭐ ⭐ 500-CPP ⭐ ⭐ ⭐ A collection of 500 C++ Programs CONTENTS Sl. No. Program Title Link 1 Sum of array elements https://github.com/MainakRepositor/10

MAINAK CHAUDHURI 22 May 30, 2022
Teach the C programming language using a collection of super beginner friendly tutorials and challenges.

TeachMeCLikeIm5 You are welcome to contribute to this repo. See the CONTRIBUTING.md for more info ?? About this repo ?? A collection of super beginner

inspirezonetech 10 Feb 4, 2022
Collection of C99 dynamic array implementations

darc darc stands for Dynamic ARray Collection. This repo hosts 3 type-generic C99 implementations : mga (Macro Generated Array) type-safe 0-cost abstr

A.P. Jo. 11 May 5, 2022
Unicorn CPU emulator framework tutorial

使用unicorn-engine开发模拟器 什么是unicorn引擎 Unicorn是基于qemu开发的一个CPU模拟器,支持常见的各种指令集,能在各种系统上运行。 GITHUB项目地址:https://github.com/unicorn-engine/unicorn 官网地址:https://w

null 9 Mar 9, 2022
The Ultimate Raylib gaming library wrapper for Nim

NimraylibNow! - The Ultimate Raylib wrapper for Nim The most idiomatic and up-to-date wrapper for Raylib gaming C library. Use this library if you wan

Dmitry Matveyev 118 Aug 4, 2022
The ultimate guide for data structure and algorithms

Quick Notes: For Arrays: (methods that can be applied) sorting and then doing something, hashtable, two pointers in a loop are some of the operations

Intervue 44 Jul 14, 2022
The ultimate battery tester with ESR measurement and discharge graph. Based on an Arduino Nano and a 1602 LCD.

Ultimate-Battery-Tester Version 1.0.0 Features Measures the ESR (equivalent series resistance) of the battery. This is an idicator of the health of th

Armin 7 Jul 26, 2022
Sircoin - The ultimate shitcoin!

Sircoin - The ultimate shitcoin! What is Sircoin? Sircoin is an experimental digital currency that enables instant payments to anyone, anywhere in the

Bram 5 Dec 9, 2021
Ultimate NAG52 firmware repository

Firmware for Ultimate NAG52 (Open source 722.6 TCM with CANBUS support) THIS IS NOT COMPLETED YET. DO NOT USE FOR DRIVING. DISCLAIMER I am in no way r

Ashcon Mohseninia 20 Jul 15, 2022
Is this hardware solution the ultimate in switch bounce elimination? Simple PCB, cheap components = final solution!

#230 Ultimate Switch Bounce Eliminator Direct link to video: https://youtu.be/b2uUYiGrS5Y It's time to try a final, alternative approach to the ubiqui

Ralph Bacon 5 Mar 25, 2022
A checklist of CP roadmap based on "The Ultimate Topic List"

CP Roadmap This is a checklist to track my progress in CP. Thanks a lot for this awesome topic list written by @ShahjalalShohag. You may fork this rep

null 6 Feb 26, 2022
Your ultimate destination for Competitive Coding this Hacktoberfest21

The-CP-Companion with ISTE-VIT Your ultimate destination for Competitive Coding. Hello Fellow < Developers/ >! ??‍?? ??‍?? Competitive Programming is

ISTE-VIT 21 Dec 21, 2021
Bosskey is an ultimate computer locker program for Linux & X11

Bosskey is an ultimate computer locker program for Linux & X11. Mute, pause, hide and lock at just a key press. It uses a modified version of suckless's slock to lock your computer; just type your password correctly and press enter.

Madeleine 0 May 30, 2022
💉This is the ultimate great source code for building the best injectable Exec on FiveM.

FiveM Lua Executor This is the ultimate great source code for building the best injectable Exec on FiveM. I'm not going to tell you how to create a pr

Sarnax 30 Aug 3, 2022
ros2_control packages for ROBOTIS Dynamixel

dynamixel_control The ros2_control implementation for any kind of ROBOTIS Dynamixel robots. dynamixel_hardware: the SystemInterface implementation for

Yutaka Kondo 52 Jul 27, 2022
A competitive programming helper tool, which packages included libraries into a single file, suitable for online judges.

cpack Cpack is a competitive programming helper tool, which packages the main source file along with included libraries into a single file, suitable f

PetarMihalj 11 Apr 22, 2022
ZT is a zig-contained library that automatically compiles+links ImGui, OpenGL, and GLFW into typed packages.

ZT is a zig-contained library that automatically compiles+links ImGui, OpenGL, and GLFW into typed packages. By zig contained I mean that ZT is intend

null 85 Aug 8, 2022
The goal of arrowvctrs is to wrap the Arrow Data C API and Arrow Stream C API to provide lightweight Arrow support for R packages

The goal of arrowvctrs is to wrap the Arrow Data C API and Arrow Stream C API to provide lightweight Arrow support for R packages to consume and produce streams of data in Arrow format. Right now it’s just a fun way for me to learn about Arrow!

Dewey Dunnington 29 Jul 9, 2022
This project contains the main ROS 2 packages of Xiaomi CyberDog®.

Xiaomi CyberDog ROS 2 文档包含简体中文和English 简介 - Introduction 本项目包含小米铁蛋®的ROS 2主要功能包. This project contains the main ROS 2 packages of Xiaomi CyberDog®. 基本信

null 346 Aug 9, 2022
ImmortalWrt is a fork of OpenWrt, with more packages ported, more devices supported, better performance, and special optimizations for mainland China users.

ImmortalWrt is a fork of OpenWrt, with more packages ported, more devices supported, better performance, and special optimizations for mainland China users.

null 4 Jan 31, 2022
ROS2 packages based on NVIDIA libArgus library for hardware-accelerated CSI camera support.

Isaac ROS Argus Camera This repository provides monocular and stereo nodes that enable ROS developers to use cameras connected to Jetson platforms ove

NVIDIA Isaac ROS 28 Jul 20, 2022
Hardware-accelerated DNN model inference ROS2 packages using NVIDIA Triton/TensorRT for both Jetson and x86_64 with CUDA-capable GPU.

Isaac ROS DNN Inference Overview This repository provides two NVIDIA GPU-accelerated ROS2 nodes that perform deep learning inference using custom mode

NVIDIA Isaac ROS 42 Jul 18, 2022
ROS packages for Scout 2.0

ROS packages for Scout 2.0

ROAS 3 Jun 14, 2022
Isaac ROS common utilities and scripts for use in conjunction with the Isaac ROS suite of packages.

Isaac ROS Common Isaac ROS common utilities and scripts for use in conjunction with the Isaac ROS suite of packages. Docker Scripts run_dev.sh creates

NVIDIA Isaac ROS 45 Jul 25, 2022
Packages for simulating the Tethys-class Long-Range AUV (LRAUV) from the Monterey Bay Aquarium Research Institute (MBARI).

LRAUV Simulation This repository contains packages for simulating the Tethys-class Long-Range AUV (LRAUV) from the Monterey Bay Aquarium Research Inst

Open Robotics 22 Jul 23, 2022
The required packages to build the control GUI for Ohmnibot

ohmni-ros-gui The required packages to build the control GUI for Ohmnibot These packages alow us to perfrom certain tasks on OHmnibot: Prequisite sett

Phoenix Ly 1 Jan 2, 2022
OpenWrt Packages

NueXini_Packages 1.如何使用NueXini_Packages? / How to use NueXini_Packages? cd lede sed -i '$a src-git NueXini_Packages https://github.com/NueXini/NueXini

null 125 Aug 2, 2022
CMake module for building Windows Installer packages with WiX toolset

FindWiX CMake module for building Windows Installer packages with WiX toolset Introduction Requirements Usage find_package() wix_add_project() WiX com

Apriorit Inc. 10 Dec 20, 2021