xtd (pronuncia-se "extend") é uma estrutura C++ 17/20 moderna para criar console, GUI (formulários como WinForms) e aplicativos de teste de unidade no Microsoft Windows, Apple macOS, Linux, iOS e Android (*).
(*) Consulte portabilidade para mais informações.
xtd é composto por diversas bibliotecas.
A biblioteca xtd.core são bibliotecas modernas C++17/20 de classes, interfaces e tipos de valor que fornecem acesso à funcionalidade do sistema. É a base sobre a qual os aplicativos, componentes e controles C++ são construídos.
A biblioteca xtd.drawing contém tipos que suportam funcionalidades gráficas básicas do GDI+. Os namespaces filhos suportam funcionalidade avançada de gráficos bidimensionais e vetoriais, funcionalidade avançada de imagem e serviços tipográficos e relacionados à impressão. Um namespace filho também contém tipos que estendem a lógica e o desenho da interface do usuário em tempo de design.
A biblioteca xtd.forms contém classes para a criação de aplicativos baseados no Windows que aproveitam ao máximo os recursos avançados da interface do usuário disponíveis no sistema operacional Microsoft Windows, Apple macOS e Linux.
A biblioteca xtd.tunit é uma estrutura de teste de unidade para C++17/20 moderno, inspirada em Microsoft.VisualStudio.TestTools.Cpp.
Este projeto é um projeto de código aberto. Os desenvolvedores participantes o fazem em seu próprio horário. Portanto, é difícil fixar datas de lançamento.
Mas você pode acompanhar a evolução do desenvolvimento. Mantemos o status atualizado.
A cada commit, um build e testes unitários são realizados para as seguintes configurações:
Sistema operacional | Depurar | Liberar |
---|---|---|
Janelas (x64) | ||
Janelas (x86) | ||
macOS | ||
Ubuntu | ||
iOS (**) | ||
Andróide (**) |
(**) apenas xtd.core e xtd.tunit.
Implantar nas páginas do GitHub | status |
---|---|
Implantação do site | |
Implantação do guia de referência mais recente |
Como o xtd é gerenciado por um projeto Kanban, o número de problemas em aberto pode ser bem grande. A tabela abaixo dá uma visão mais clara sobre o número de bugs/perguntas abertas e melhorias.
Problemas | Abrir | Fechado |
---|---|---|
Bugs/Dúvidas dos usuários | ||
xtd 0.1.0 - Melhorias/Desenvolvimentos (*) | ||
xtd 0.1.1 - Melhorias/Desenvolvimentos | ||
xtd 0.2.0 - Melhorias/Desenvolvimentos | ||
xtd 0.3.0 - Melhorias/Desenvolvimentos | ||
xtd 0.4.0 - Melhorias/Desenvolvimentos | ||
xtd 1.0.0 - Melhorias/Desenvolvimentos |
(*) Existe apenas uma melhoria para o xtd 0.1.0, pois o gerenciamento de projetos ainda não estava disponível.
A primeira aplicação clássica 'Hello World'.
# include < xtd/xtd >
using namespace xtd ;
auto main () -> int {
console::background_color (console_color::blue);
console::foreground_color (console_color::white);
console::write_line ( " Hello, World! " );
}
ou simplesmente
# include < xtd/xtd >
using namespace xtd ;
auto main () -> int {
console::out << background_color (console_color::blue) << foreground_color (console_color::white) << " Hello, World! " << environment::new_line;
}
cmake_minimum_required ( VERSION 3.20)
project (hello_world_console)
find_package (xtd REQUIRED)
add_sources(hello_world_console.cpp)
target_type(CONSOLE_APPLICATION)
Abra o "Prompt de Comando" ou "Terminal". Navegue até a pasta que contém o projeto e digite o seguinte:
xtdc run
# include < xtd/xtd >
using namespace xtd ::forms ;
class main_form : public form {
public:
main_form () {
text ( " Hello world (message_box) " );
button1. location ({ 10 , 10 });
button1. parent (* this );
button1. text ( " &Click me " );
button1. click += [] {
message_box::show ( " Hello, World! " );
};
}
private:
button button1;
};
auto main () -> int {
application::run (main_form {});
}
ou simplesmente
# include < xtd/xtd >
auto main () -> int {
auto main_form = xtd::forms::form::create ( " Hello world (message_box) " );
auto button1 = xtd::forms::button::create (main_form, " &Click me " , { 10 , 10 });
button1. click += [] { xtd::forms::message_box::show ( " Hello, World! " );};
xtd::forms::application::run (main_form);
}
cmake_minimum_required ( VERSION 3.20)
project (hello_world_forms)
find_package (xtd REQUIRED)
add_sources(hello_world_forms.cpp)
target_type(GUI_APPLICATION)
Abra o "Prompt de Comando" ou "Terminal". Navegue até a pasta que contém o projeto e digite o seguinte:
xtdc run
# include < xtd/xtd >
using namespace xtd ;
using namespace xtd ::tunit ;
namespace unit_tests {
class test_class_ (hello_world_test) {
void test_method_ (create_string_from_literal) {
auto s = string { " Hello, World! " };
valid::are_equal ( 13 , s. size ());
assert::are_equal ( " Hello, World! " , s);
}
void test_method_ (create_string_from_chars) {
auto s = string { ' H ' , ' e ' , ' l ' , ' l ' , ' o ' , ' , ' , ' ' , ' W ' , ' o ' , ' r ' , ' l ' , ' d ' , ' ! ' };
valid::are_equal ( 13 , s. size ());
string_assert::starts_with ( " Hello, " , s);
string_assert::ends_with ( " World! " , s);
}
};
}
auto main () -> int {
return console_unit_test (). run ();
}
ou sem ajudantes
# include < xtd/xtd >
using namespace xtd ;
using namespace xtd ::tunit ;
namespace unit_tests {
class hello_world_test ;
auto hello_world_test_class_attr = test_class_attribute { " unit_tests::hello_world_test " };
class hello_world_test : public test_class {
test_method_attribute create_string_from_literal_attr { " create_string_from_literal " , * this , &hello_world_test::create_string_from_literal};
void create_string_from_literal () {
auto s = string { " Hello, World! " };
valid::are_equal ( 13 , s. size ());
assert::are_equal ( " Hello, World! " , s);
}
test_method_attribute create_string_from_chars_attr { " create_string_from_chars " , * this , &hello_world_test::create_string_from_chars};
void create_string_from_chars () {
auto s = string { ' H ' , ' e ' , ' l ' , ' l ' , ' o ' , ' , ' , ' ' , ' W ' , ' o ' , ' r ' , ' l ' , ' d ' , ' ! ' };
valid::are_equal ( 13 , s. size ());
string_assert::starts_with ( " Hello, " , s);
string_assert::ends_with ( " World! " , s);
}
};
}
auto main () -> int {
return console_unit_test (). run ();
}
cmake_minimum_required ( VERSION 3.20)
project (hello_world_test)
find_package (xtd REQUIRED)
add_sources(hello_world_test.cpp)
target_type(TEST_APPLICATION)
Abra o "Prompt de Comando" ou "Terminal". Navegue até a pasta que contém o projeto e digite o seguinte:
xtdc run
caça-minas (no Windows)
game_of_life (no macOS)
xtdc-gui – Crie um novo projeto (no macOS)
calculadora (no Ubuntu)
cronômetro (no Windows)
pintura (no Ubuntu)
O arquivo dos autores lista os colaboradores juntamente com informações de contato. Se você fizer uma contribuição, adicione-se à lista.
Suas contribuições são bem-vindas.
Seu feedback é importante para a evolução do projeto.
O projeto a seguir visa simplificar e orientar a forma como os iniciantes fazem sua primeira contribuição. Se você deseja dar sua primeira contribuição, confira o projeto abaixo.
Primeiras contribuições
Agora você está pronto para dar sua primeira contribuição ao xtd.
© 2024 Gammasoft.