76
README.md
|
@ -1,76 +0,0 @@
|
|||
# eframe template
|
||||
|
||||
[![dependency status](https://deps.rs/repo/github/emilk/eframe_template/status.svg)](https://deps.rs/repo/github/emilk/eframe_template)
|
||||
[![Build Status](https://github.com/emilk/eframe_template/workflows/CI/badge.svg)](https://github.com/emilk/eframe_template/actions?workflow=CI)
|
||||
|
||||
This is a template repo for [eframe](https://github.com/emilk/egui/tree/master/crates/eframe), a framework for writing apps using [egui](https://github.com/emilk/egui/).
|
||||
|
||||
The goal is for this to be the simplest way to get started writing a GUI app in Rust.
|
||||
|
||||
You can compile your app natively or for the web, and share it using Github Pages.
|
||||
|
||||
## Getting started
|
||||
|
||||
Start by clicking "Use this template" at https://github.com/emilk/eframe_template/ or follow [these instructions](https://docs.github.com/en/free-pro-team@latest/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template).
|
||||
|
||||
Change the name of the crate: Chose a good name for your project, and change the name to it in:
|
||||
* `Cargo.toml`
|
||||
* Change the `package.name` from `eframe_template` to `your_crate`.
|
||||
* Change the `package.authors`
|
||||
* `main.rs`
|
||||
* Change `eframe_template::TemplateApp` to `your_crate::TemplateApp`
|
||||
* `index.html`
|
||||
* Change the `<title>eframe template</title>` to `<title>your_crate</title>`. optional.
|
||||
* `assets/sw.js`
|
||||
* Change the `'./eframe_template.js'` to `./your_crate.js` (in `filesToCache` array)
|
||||
* Change the `'./eframe_template_bg.wasm'` to `./your_crate_bg.wasm` (in `filesToCache` array)
|
||||
|
||||
### Learning about egui
|
||||
|
||||
`src/app.rs` contains a simple example app. This is just to give some inspiration - most of it can be removed if you like.
|
||||
|
||||
The official egui docs are at <https://docs.rs/egui>. If you prefer watching a video introduction, check out <https://www.youtube.com/watch?v=NtUkr_z7l84>. For inspiration, check out the [the egui web demo](https://emilk.github.io/egui/index.html) and follow the links in it to its source code.
|
||||
|
||||
### Testing locally
|
||||
|
||||
Make sure you are using the latest version of stable rust by running `rustup update`.
|
||||
|
||||
`cargo run --release`
|
||||
|
||||
On Linux you need to first run:
|
||||
|
||||
`sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev`
|
||||
|
||||
On Fedora Rawhide you need to run:
|
||||
|
||||
`dnf install clang clang-devel clang-tools-extra libxkbcommon-devel pkg-config openssl-devel libxcb-devel gtk3-devel atk fontconfig-devel`
|
||||
|
||||
### Web Locally
|
||||
|
||||
You can compile your app to [WASM](https://en.wikipedia.org/wiki/WebAssembly) and publish it as a web page.
|
||||
|
||||
We use [Trunk](https://trunkrs.dev/) to build for web target.
|
||||
1. Install the required target with `rustup target add wasm32-unknown-unknown`.
|
||||
2. Install Trunk with `cargo install --locked trunk`.
|
||||
3. Run `trunk serve` to build and serve on `http://127.0.0.1:8080`. Trunk will rebuild automatically if you edit the project.
|
||||
4. Open `http://127.0.0.1:8080/index.html#dev` in a browser. See the warning below.
|
||||
|
||||
> `assets/sw.js` script will try to cache our app, and loads the cached version when it cannot connect to server allowing your app to work offline (like PWA).
|
||||
> appending `#dev` to `index.html` will skip this caching, allowing us to load the latest builds during development.
|
||||
|
||||
### Web Deploy
|
||||
1. Just run `trunk build --release`.
|
||||
2. It will generate a `dist` directory as a "static html" website
|
||||
3. Upload the `dist` directory to any of the numerous free hosting websites including [GitHub Pages](https://docs.github.com/en/free-pro-team@latest/github/working-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site).
|
||||
4. we already provide a workflow that auto-deploys our app to GitHub pages if you enable it.
|
||||
> To enable Github Pages, you need to go to Repository -> Settings -> Pages -> Source -> set to `gh-pages` branch and `/` (root).
|
||||
>
|
||||
> If `gh-pages` is not available in `Source`, just create and push a branch called `gh-pages` and it should be available.
|
||||
|
||||
You can test the template app at <https://emilk.github.io/eframe_template/>.
|
||||
|
||||
## Updating egui
|
||||
|
||||
As of 2023, egui is in active development with frequent releases with breaking changes. [eframe_template](https://github.com/emilk/eframe_template/) will be updated in lock-step to always use the latest version of egui.
|
||||
|
||||
When updating `egui` and `eframe` it is recommended you do so one version at the time, and read about the changes in [the egui changelog](https://github.com/emilk/egui/blob/master/CHANGELOG.md) and [eframe changelog](https://github.com/emilk/egui/blob/master/crates/eframe/CHANGELOG.md).
|
BIN
assets/images/cshs1.jpg
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
assets/images/cshs1_hi.jpg
Normal file
After Width: | Height: | Size: 275 KiB |
BIN
assets/images/cshs2.jpg
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
assets/images/cshs2_hi.jpg
Normal file
After Width: | Height: | Size: 361 KiB |
BIN
assets/images/cshs3.jpg
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
assets/images/cshs3_hi.jpg
Normal file
After Width: | Height: | Size: 382 KiB |
BIN
assets/images/grezi1.jpg
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
assets/images/grezi1_hi.jpg
Normal file
After Width: | Height: | Size: 82 KiB |
BIN
assets/images/grezi2.jpg
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
assets/images/grezi2_hi.jpg
Normal file
After Width: | Height: | Size: 125 KiB |
BIN
assets/images/grezi3.jpg
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
assets/images/grezi3_hi.jpg
Normal file
After Width: | Height: | Size: 339 KiB |
|
@ -274,7 +274,10 @@ impl ContextWindow {
|
|||
CONTEXT_METRICS,
|
||||
None,
|
||||
1.0,
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
env!("PHOST"),
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
"file://assets",
|
||||
);
|
||||
|
||||
self.text = text
|
||||
|
|
|
@ -1 +1,11 @@
|
|||
# Kdenlive Experience
|
||||
|
||||
I've used Kdenlive extensively to edit a variety of different videos.
|
||||
|
||||
- This was a project I did for my school to advertise their Computer Science courses. You can watch it [here](https://nations.lol/s/EjgsfR6wjLfwHMX)
|
||||
|
||||
![My CSHS Ad Image 1](images/cshs1.jpg#256x144)
|
||||
![My CSHS Ad Image 2](images/cshs2.jpg#256x144)
|
||||
![My CSHS Ad Image 3](images/cshs3.jpg#256x144)
|
||||
|
||||
- I've made other things in Kdenlive, but I haven't been able to find them at this time. For instance, I edited a video for my mother's [Upcycled Book Making Business](https://scrappapercircus.com)
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
# Python Experience
|
||||
|
||||
Most of my Computer Science courses in primary school were in Python. Most of the stuff I made in those classes aren't anything special. Other than that, I haven't made much in Python, see my [Rust](#rust) experience
|
||||
|
||||
- I got this from my Advanced Programming DE class in high school.
|
||||
|
||||
![Microsoft Technology Associate certificate](images/mta.jpg#512x377)
|
||||
|
|
12
src/rust.dj
|
@ -16,3 +16,15 @@ This portfolio uses these Rust crates including but not limited to:
|
|||
You can view the code for this portfolio [here](https://git.nations.lol/fnmain/portfolio)
|
||||
|
||||
![A screenshot of my GitHub projects I've worked on in Rust](images/rust_contribs.jpg#256x256)
|
||||
|
||||
- This is a slideshow program I made that uses a custom plain-text language to make animated and engaging presentations.
|
||||
|
||||
![A grezi slide](images/grezi1.jpg#256x144)
|
||||
![A grezi slide](images/grezi2.jpg#256x144)
|
||||
![A grezi slide](images/grezi3.jpg#256x144)
|
||||
|
||||
Grezi has a native, as well as a WebAssembly runtime; and can export to any `cairo` supported format. Including PDF, PostScript, SVG/JPG/PNG per slide, etc. You can view the full presentations above in the web runtime
|
||||
|
||||
- [Hashing: Sets & Maps](https://git.nations.lol/grezi/#Hashing%20Sets%20Maps.slideshow)
|
||||
- [Linked Lists](https://git.nations.lol/grezi/#Linked%20Lists.slideshow)
|
||||
- [Recursion](https://git.nations.lol/grezi/#recursion.slideshow)
|
||||
|
|