[demo] Add helper macros for linking to the source code on GitHub

This commit is contained in:
Emil Ernerfeldt 2020-10-31 09:17:15 +01:00
parent 496fdb52b4
commit 82d55cb67e
3 changed files with 48 additions and 4 deletions

View file

@ -43,3 +43,49 @@ pub fn warn_if_debug_build(ui: &mut crate::Ui) {
.on_hover_text("Egui has detect that debug assertions are enabled.");
}
}
// ----------------------------------------------------------------------------
/// Create a `Hyperlink` to this file (and line) on Github
/// Example: `ui.add(github_link_file_line!("https://github.com/YOUR/PROJECT/blob/master/", "(source code)"));`
#[macro_export]
macro_rules! github_link_file_line {
($github_url:expr, $label:expr) => {{
let url = format!("{}{}#L{}", $github_url, file!(), line!());
Hyperlink::new(url).text($label)
}};
}
/// Create a `Hyperlink` to this file on github.
/// Example: `ui.add(github_link_file!("https://github.com/YOUR/PROJECT/blob/master/", "(source code)"));`
#[macro_export]
macro_rules! github_link_file {
($github_url:expr, $label:expr) => {{
let url = format!("{}{}", $github_url, file!());
Hyperlink::new(url).text($label)
}};
}
/// Create a `Hyperlink` to this egui source code file on github.
#[doc(hidden)]
#[macro_export]
macro_rules! __egui_github_link_file {
() => {
__egui_github_link_file!("(source code)")
};
($label:expr) => {
github_link_file!("https://github.com/emilk/egui/blob/master/", $label).small()
};
}
/// Create a `Hyperlink` to this egui source code file and line on github.
#[doc(hidden)]
#[macro_export]
macro_rules! __egui_github_link_file_line {
() => {
__egui_github_link_file_line!("(source code)")
};
($label:expr) => {
github_link_file_line!("https://github.com/emilk/egui/blob/master/", $label).small()
};
}

View file

@ -90,10 +90,9 @@ fn toggle_compact(ui: &mut Ui, on: &mut bool) -> Response {
pub fn demo(ui: &mut Ui, on: &mut bool) {
ui.label("It's easy to create your own widgets!");
let url = format!("https://github.com/emilk/egui/blob/master/{}", file!());
ui.horizontal(|ui| {
ui.label("Like this toggle switch:");
toggle(ui, on).on_hover_text("Click to toggle");
ui.add(Hyperlink::new(url).text("(source code)"));
ui.add(__egui_github_link_file!());
});
}

View file

@ -46,8 +46,7 @@ impl Default for Widgets {
impl Widgets {
pub fn ui(&mut self, ui: &mut Ui) {
let url = format!("https://github.com/emilk/egui/blob/master/{}", file!());
ui.add(Hyperlink::new(url).text("Click here to read the source code for this section"));
ui.add(crate::__egui_github_link_file_line!());
ui.horizontal(|ui| {
ui.style_mut().spacing.item_spacing.x = 0.0;