mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 21:07:34 +00:00
HackStudio: Project templates and New Project dialog
This commit adds a simple project template system to HackStudio, as well as a pretty New Project dialog, inspired by early VS.NET and MS Office.
This commit is contained in:
parent
a6fdc17f3f
commit
b671577223
24 changed files with 1178 additions and 1 deletions
5
Base/res/devel/templates/cpp-basic.ini
Normal file
5
Base/res/devel/templates/cpp-basic.ini
Normal file
|
@ -0,0 +1,5 @@
|
|||
[HackStudioTemplate]
|
||||
Name=Command-line Application (C++)
|
||||
Description=Template for creating a basic C++ command-line application.
|
||||
Priority=95
|
||||
IconName32x=cpp-basic
|
19
Base/res/devel/templates/cpp-basic.postcreate
Normal file
19
Base/res/devel/templates/cpp-basic.postcreate
Normal file
|
@ -0,0 +1,19 @@
|
|||
#!/bin/sh
|
||||
|
||||
echo "PROGRAM = $1" >> $2/Makefile
|
||||
echo "OBJS = main.o" >> $2/Makefile
|
||||
echo "CXXFLAGS = -g -std=c++2a" >> $2/Makefile
|
||||
echo "" >> $2/Makefile
|
||||
echo "all: \$(PROGRAM)" >> $2/Makefile
|
||||
echo "" >> $2/Makefile
|
||||
echo "\$(PROGRAM): \$(OBJS)" >> $2/Makefile
|
||||
echo " \$(CXX) -o \$@ \$(OBJS)" >> $2/Makefile
|
||||
echo "" >> $2/Makefile
|
||||
echo "%.o: %.cpp" >> $2/Makefile
|
||||
echo " \$(CXX) \$(CXXFLAGS) -o \$@ -c \$< " >> $2/Makefile
|
||||
echo "" >> $2/Makefile
|
||||
echo "clean:" >> $2/Makefile
|
||||
echo " rm \$(OBJS) \$(PROGRAM)" >> $2/Makefile
|
||||
echo "" >> $2/Makefile
|
||||
echo "run:" >> $2/Makefile
|
||||
echo " ./\$(PROGRAM)" >> $2/Makefile
|
7
Base/res/devel/templates/cpp-basic/main.cpp
Normal file
7
Base/res/devel/templates/cpp-basic/main.cpp
Normal file
|
@ -0,0 +1,7 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
printf("Hello friends!\n");
|
||||
return 0;
|
||||
}
|
5
Base/res/devel/templates/cpp-gui.ini
Normal file
5
Base/res/devel/templates/cpp-gui.ini
Normal file
|
@ -0,0 +1,5 @@
|
|||
[HackStudioTemplate]
|
||||
Name=Graphical Application (C++)
|
||||
Description=Template for creating a basic C++ graphical application.
|
||||
Priority=90
|
||||
IconName32x=cpp-gui
|
19
Base/res/devel/templates/cpp-gui.postcreate
Normal file
19
Base/res/devel/templates/cpp-gui.postcreate
Normal file
|
@ -0,0 +1,19 @@
|
|||
#!/bin/sh
|
||||
|
||||
echo "PROGRAM = $1" >> $2/Makefile
|
||||
echo "OBJS = main.o" >> $2/Makefile
|
||||
echo "CXXFLAGS = -lgui -g -std=c++2a" >> $2/Makefile
|
||||
echo "" >> $2/Makefile
|
||||
echo "all: \$(PROGRAM)" >> $2/Makefile
|
||||
echo "" >> $2/Makefile
|
||||
echo "\$(PROGRAM): \$(OBJS)" >> $2/Makefile
|
||||
echo " \$(CXX) \$(CXXFLAGS) -o \$@ \$(OBJS)" >> $2/Makefile
|
||||
echo "" >> $2/Makefile
|
||||
echo "%.o: %.cpp" >> $2/Makefile
|
||||
echo " \$(CXX) \$(CXXFLAGS) -o \$@ -c \$< " >> $2/Makefile
|
||||
echo "" >> $2/Makefile
|
||||
echo "clean:" >> $2/Makefile
|
||||
echo " rm \$(OBJS) \$(PROGRAM)" >> $2/Makefile
|
||||
echo "" >> $2/Makefile
|
||||
echo "run:" >> $2/Makefile
|
||||
echo " ./\$(PROGRAM)" >> $2/Makefile
|
26
Base/res/devel/templates/cpp-gui/main.cpp
Normal file
26
Base/res/devel/templates/cpp-gui/main.cpp
Normal file
|
@ -0,0 +1,26 @@
|
|||
#include <stdio.h>
|
||||
#include <LibGUI/Application.h>
|
||||
#include <LibGUI/Window.h>
|
||||
#include <LibGUI/Button.h>
|
||||
#include <LibGUI/MessageBox.h>
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
auto app = GUI::Application::construct(argc, argv);
|
||||
|
||||
auto window = GUI::Window::construct();
|
||||
window->set_title("Hello friends!");
|
||||
window->resize(200, 100);
|
||||
|
||||
auto button = GUI::Button::construct();
|
||||
button->set_text("Click me!");
|
||||
button->on_click = [&](auto) {
|
||||
GUI::MessageBox::show(window, "Hello friends!", ":^)");
|
||||
};
|
||||
|
||||
window->set_main_widget(button);
|
||||
|
||||
window->show();
|
||||
|
||||
return app->exec();
|
||||
}
|
4
Base/res/devel/templates/cpp-library.ini
Normal file
4
Base/res/devel/templates/cpp-library.ini
Normal file
|
@ -0,0 +1,4 @@
|
|||
[HackStudioTemplate]
|
||||
Name=Shared Library (C++)
|
||||
Description=Template for creating a C++ shared library.
|
||||
IconName32x=cpp-library
|
49
Base/res/devel/templates/cpp-library.postcreate
Normal file
49
Base/res/devel/templates/cpp-library.postcreate
Normal file
|
@ -0,0 +1,49 @@
|
|||
#!/bin/sh
|
||||
|
||||
# $1: Project name, filesystem safe
|
||||
# $2: Project full path
|
||||
# $3: Project name, namespace safe
|
||||
|
||||
# Generate Makefile
|
||||
echo "LIBRARY = $1.so" >> $2/Makefile
|
||||
echo "OBJS = Class1.o" >> $2/Makefile
|
||||
echo "CXXFLAGS = -g -std=c++2a" >> $2/Makefile
|
||||
echo "" >> $2/Makefile
|
||||
echo "all: \$(LIBRARY)" >> $2/Makefile
|
||||
echo "" >> $2/Makefile
|
||||
echo "\$(LIBRARY): \$(OBJS)" >> $2/Makefile
|
||||
echo " \$(CXX) -shared -o \$@ \$(OBJS)" >> $2/Makefile
|
||||
echo "" >> $2/Makefile
|
||||
echo "%.o: %.cpp" >> $2/Makefile
|
||||
echo " \$(CXX) \$(CXXFLAGS) -fPIC -o \$@ -c \$< " >> $2/Makefile
|
||||
echo "" >> $2/Makefile
|
||||
echo "clean:" >> $2/Makefile
|
||||
echo " rm \$(OBJS) \$(LIBRARY)" >> $2/Makefile
|
||||
echo "" >> $2/Makefile
|
||||
|
||||
# Generate 'Class1' header file
|
||||
echo "#pragma once" >> $2/Class1.h
|
||||
echo "" >> $2/Class1.h
|
||||
echo "namespace $3 {" >> $2/Class1.h
|
||||
echo "" >> $2/Class1.h
|
||||
echo "class Class1 {" >> $2/Class1.h
|
||||
echo "public:" >> $2/Class1.h
|
||||
echo " void hello();" >> $2/Class1.h
|
||||
echo "};" >> $2/Class1.h
|
||||
echo "" >> $2/Class1.h
|
||||
echo "}" >> $2/Class1.h
|
||||
echo "" >> $2/Class1.h
|
||||
|
||||
# Generate 'Class1' source file
|
||||
echo "#include \"Class1.h\"" >> $2/Class1.cpp
|
||||
echo "#include <stdio.h>" >> $2/Class1.cpp
|
||||
echo "" >> $2/Class1.cpp
|
||||
echo "namespace $3 {" >> $2/Class1.cpp
|
||||
echo "" >> $2/Class1.cpp
|
||||
echo "void Class1::hello()" >> $2/Class1.cpp
|
||||
echo "{" >> $2/Class1.cpp
|
||||
echo " printf(\"Hello friends! :^)\\n\");" >> $2/Class1.cpp
|
||||
echo "}" >> $2/Class1.cpp
|
||||
echo "" >> $2/Class1.cpp
|
||||
echo "}" >> $2/Class1.cpp
|
||||
echo "" >> $2/Class1.cpp
|
5
Base/res/devel/templates/empty.ini
Normal file
5
Base/res/devel/templates/empty.ini
Normal file
|
@ -0,0 +1,5 @@
|
|||
[HackStudioTemplate]
|
||||
Name=Empty Project
|
||||
Description=Template for creating an empty project with no files.
|
||||
Priority=100
|
||||
IconName32x=empty
|
Loading…
Add table
Add a link
Reference in a new issue