widgets/localization: break out as localization functionality
* handle widget `localization` in dedicated subdir * adopt constants to handle widget id's Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
This commit is contained in:
@@ -6,67 +6,73 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// Styles (RON based theme system)
|
// Styles (RON based theme system)
|
||||||
pub static STYLE_BOTTOM_BAR: &'static str = "bottom_bar";
|
pub static STYLE_BOTTOM_BAR: &str = "bottom_bar";
|
||||||
pub static STYLE_HEADER_BAR: &'static str = "header_bar";
|
pub static STYLE_HEADER_BAR: &str = "header_bar";
|
||||||
pub static STYLE_SEPERATOR: &'static str = "seperator";
|
pub static STYLE_SEPERATOR: &str = "seperator";
|
||||||
//pub static STYLE_ITEM_BUTTON: &'static str = "item_button";
|
//pub static STYLE_ITEM_BUTTON: &str = "item_button";
|
||||||
pub static STYLE_MENU: &'static str = "menu";
|
pub static STYLE_MENU: &str = "menu";
|
||||||
pub static STYLE_BUTTON_MENU: &'static str = "button_menu";
|
pub static STYLE_BUTTON_MENU: &str = "button_menu";
|
||||||
pub static STYLE_STACK_MENU: &'static str = "stack_menu";
|
pub static STYLE_STACK_MENU: &str = "stack_menu";
|
||||||
|
|
||||||
// Widget IDs (DCES: Entity[id] => [Component1, .. , Component<n>] -> data or state)
|
// Widget IDs (DCES: Entity[id] => [Component1, .. , Component<n>] -> data or state)
|
||||||
pub static ID_POLICY_CHECK_FORM: &'static str = "policy_check_form";
|
|
||||||
pub static ID_POLICY_CHECK_FORM_ROW_0: &'static str = "policy_check_form_row_0";
|
|
||||||
pub static ID_POLICY_CHECK_FORM_ROW_1: &'static str = "policy_check_form_row_1";
|
|
||||||
pub static ID_POLICY_CHECK_FORM_ROW_2: &'static str = "policy_check_form_row_2";
|
|
||||||
pub static ID_POLICY_CHECK_HEADER: &'static str = "policy_check_header";
|
|
||||||
pub static ID_POLICY_CHECK_ITEMS_WIDGET: &'static str = "policy_check_items_widget";
|
|
||||||
pub static ID_POLICY_CHECK_BUTTON_RESULT: &'static str = "policy_check_button_result";
|
|
||||||
pub static ID_POLICY_CHECK_BUTTON_MENU: &'static str = "policy_check_button_menu";
|
|
||||||
pub static ID_POLICY_CHECK_DATA_COUNT_BLOCK: &'static str = "policy_check_data_count_block";
|
|
||||||
pub static ID_POLICY_CHECK_HINT: &'static str = "policy_check_hint";
|
|
||||||
pub static ID_POLICY_CHECK_LABEL_HINT: &'static str = "policy_check_label_hint";
|
|
||||||
pub static ID_POLICY_CHECK_LABEL_MENU: &'static str = "policy_check_label_menu";
|
|
||||||
pub static ID_POLICY_CHECK_LABEL_POLICY_NUMBER: &'static str = "policy_check_label_policy_number";
|
|
||||||
pub static ID_POLICY_CHECK_LABEL_RESULT: &'static str = "policy_check_label_result";
|
|
||||||
pub static ID_POLICY_CHECK_MENU: &'static str = "policy_check_menu";
|
|
||||||
pub static ID_POLICY_CHECK_MENU_LABEL_ACCOUNT: &'static str = "policy_check_menu_label_account";
|
|
||||||
pub static ID_POLICY_CHECK_MENU_LABEL_QUIT: &'static str = "policy_check_menu_label_quit";
|
|
||||||
pub static ID_POLICY_CHECK_MENU_SHORTCUT_QUIT: &'static str = "policy_check_menu_shortcut_quit";
|
|
||||||
pub static ID_POLICY_CHECK_MENU_LABEL_TOGGLE_THEME: &'static str = "policy_check_menu_label_toggle_theme";
|
|
||||||
pub static ID_POLICY_CHECK_POLICY_NUMBER: &'static str = "policy_check_policy_number";
|
|
||||||
pub static ID_POLICY_CHECK_POPUP_MENU: &'static str = "policy_check_popup_menu";
|
|
||||||
pub static ID_POLICY_CHECK_POPUP_MENU_TOGGLE_THEME: &'static str = "policy_check_popup_menu_toggle_theme";
|
|
||||||
pub static ID_POLICY_CHECK_POPUP_PROGRESS: &'static str = "policy_check_popup_progress";
|
|
||||||
pub static ID_POLICY_CHECK_PROGRESS_BAR: &'static str = "policy_check_progress_bar";
|
|
||||||
pub static ID_POLICY_CHECK_PROGRESS_TIME: &'static str = "policy_check_progress_time";
|
|
||||||
pub static ID_POLICY_CHECK_PROGRESS_TEXT: &'static str = "policy_check_progress_text";
|
|
||||||
pub static ID_POLICY_CHECK_RESULT: &'static str = "policy_check_result";
|
|
||||||
pub static ID_POLICY_CHECK_WIDGET: &'static str = "policy_check_widget";
|
|
||||||
|
|
||||||
pub static ID_POLICY_DATA_ADD_BUTTON: &'static str = "policy_data_add_button";
|
pub static ID_LOCALIZATION_FORM: &str = "localization_form";
|
||||||
pub static ID_POLICY_DATA_COUNT: &'static str = "policy_data_count";
|
pub static ID_LOCALIZATION_HEADER: &str = "localization_header";
|
||||||
pub static ID_POLICY_DATA_LABEL: &'static str = "policy_data_label";
|
pub static ID_LOCALIZATION_LANGUAGES: &str = "localization_languages";
|
||||||
pub static ID_POLICY_DATA_ITEMS_WIDGET: &'static str = "policy_data_items_widget";
|
pub static ID_LOCALIZATION_LANGUAGE_NAME: &str = "localization_language_name";
|
||||||
pub static ID_POLICY_DATA_DATE_INSERTED: &'static str = "policy_data_date_inserted";
|
|
||||||
pub static ID_POLICY_DATA_DION: &'static str = "policy_data_dion";
|
|
||||||
pub static ID_POLICY_DATA_POLICY_CODE: &'static str = "policy_data_policy_code";
|
|
||||||
pub static ID_POLICY_DATA_POLICY_NUMBER: &'static str = "policy_data_policy_number";
|
|
||||||
pub static ID_POLICY_DATA_STACK: &'static str = "policy_data_stack";
|
|
||||||
pub static ID_POLICY_DATA_STATUS: &'static str = "policy_data_status";
|
|
||||||
pub static ID_POLICY_DATA_LIST_NAME: &'static str = "policy_data_list_name";
|
|
||||||
|
|
||||||
pub static ID_POLICY_LIST_ADD_BUTTON: &'static str = "policy_list_add_button";
|
pub static ID_POLICY_CHECK_FORM: &str = "policy_check_form";
|
||||||
pub static ID_POLICY_LIST_ITEMS_WIDGET: &'static str = "policy_list_items_widget";
|
pub static ID_POLICY_CHECK_FORM_ROW_0: &str = "policy_check_form_row_0";
|
||||||
pub static ID_POLICY_LIST_TEXT_BOX: &'static str = "policy_list_text_box";
|
pub static ID_POLICY_CHECK_FORM_ROW_1: &str = "policy_check_form_row_1";
|
||||||
|
pub static ID_POLICY_CHECK_FORM_ROW_2: &str = "policy_check_form_row_2";
|
||||||
|
pub static ID_POLICY_CHECK_HEADER: &str = "policy_check_header";
|
||||||
|
pub static ID_POLICY_CHECK_ITEMS_WIDGET: &str = "policy_check_items_widget";
|
||||||
|
pub static ID_POLICY_CHECK_BUTTON_RESULT: &str = "policy_check_button_result";
|
||||||
|
pub static ID_POLICY_CHECK_BUTTON_MENU: &str = "policy_check_button_menu";
|
||||||
|
pub static ID_POLICY_CHECK_DATA_COUNT_BLOCK: &str = "policy_check_data_count_block";
|
||||||
|
pub static ID_POLICY_CHECK_HINT: &str = "policy_check_hint";
|
||||||
|
pub static ID_POLICY_CHECK_LABEL_HINT: &str = "policy_check_label_hint";
|
||||||
|
pub static ID_POLICY_CHECK_LABEL_MENU: &str = "policy_check_label_menu";
|
||||||
|
pub static ID_POLICY_CHECK_LABEL_POLICY_NUMBER: &str = "policy_check_label_policy_number";
|
||||||
|
pub static ID_POLICY_CHECK_LABEL_RESULT: &str = "policy_check_label_result";
|
||||||
|
pub static ID_POLICY_CHECK_MENU: &str = "policy_check_menu";
|
||||||
|
pub static ID_POLICY_CHECK_MENU_LABEL_ACCOUNT: &str = "policy_check_menu_label_account";
|
||||||
|
pub static ID_POLICY_CHECK_MENU_LABEL_QUIT: &str = "policy_check_menu_label_quit";
|
||||||
|
pub static ID_POLICY_CHECK_MENU_SHORTCUT_QUIT: &str = "policy_check_menu_shortcut_quit";
|
||||||
|
pub static ID_POLICY_CHECK_MENU_LABEL_TOGGLE_THEME: &str = "policy_check_menu_label_toggle_theme";
|
||||||
|
pub static ID_POLICY_CHECK_POLICY_NUMBER: &str = "policy_check_policy_number";
|
||||||
|
pub static ID_POLICY_CHECK_POPUP_MENU: &str = "policy_check_popup_menu";
|
||||||
|
pub static ID_POLICY_CHECK_POPUP_MENU_TOGGLE_THEME: &str = "policy_check_popup_menu_toggle_theme";
|
||||||
|
pub static ID_POLICY_CHECK_POPUP_PROGRESS: &str = "policy_check_popup_progress";
|
||||||
|
pub static ID_POLICY_CHECK_PROGRESS_BAR: &str = "policy_check_progress_bar";
|
||||||
|
pub static ID_POLICY_CHECK_PROGRESS_TIME: &str = "policy_check_progress_time";
|
||||||
|
pub static ID_POLICY_CHECK_PROGRESS_TEXT: &str = "policy_check_progress_text";
|
||||||
|
pub static ID_POLICY_CHECK_RESULT: &str = "policy_check_result";
|
||||||
|
pub static ID_POLICY_CHECK_WIDGET: &str = "policy_check_widget";
|
||||||
|
|
||||||
|
pub static ID_POLICY_DATA_ADD_BUTTON: &str = "policy_data_add_button";
|
||||||
|
pub static ID_POLICY_DATA_COUNT: &str = "policy_data_count";
|
||||||
|
pub static ID_POLICY_DATA_LABEL: &str = "policy_data_label";
|
||||||
|
pub static ID_POLICY_DATA_ITEMS_WIDGET: &str = "policy_data_items_widget";
|
||||||
|
pub static ID_POLICY_DATA_DATE_INSERTED: &str = "policy_data_date_inserted";
|
||||||
|
pub static ID_POLICY_DATA_DION: &str = "policy_data_dion";
|
||||||
|
pub static ID_POLICY_DATA_POLICY_CODE: &str = "policy_data_policy_code";
|
||||||
|
pub static ID_POLICY_DATA_POLICY_NUMBER: &str = "policy_data_policy_number";
|
||||||
|
pub static ID_POLICY_DATA_STACK: &str = "policy_data_stack";
|
||||||
|
pub static ID_POLICY_DATA_STATUS: &str = "policy_data_status";
|
||||||
|
pub static ID_POLICY_DATA_LIST_NAME: &str = "policy_data_list_name";
|
||||||
|
|
||||||
|
pub static ID_POLICY_LIST_ADD_BUTTON: &str = "policy_list_add_button";
|
||||||
|
pub static ID_POLICY_LIST_ITEMS_WIDGET: &str = "policy_list_items_widget";
|
||||||
|
pub static ID_POLICY_LIST_TEXT_BOX: &str = "policy_list_text_box";
|
||||||
|
|
||||||
// Component Values (Properties)
|
// Component Values (Properties)
|
||||||
pub static PROP_ADVOTRACKER: &'static str = "advotracker";
|
pub static PROP_ADVOTRACKER: &str = "advotracker";
|
||||||
pub static PROP_POLICY_CHECK: &'static str = "policy_check";
|
pub static PROP_POLICY_CHECK: &str = "policy_check";
|
||||||
pub static PROP_POLICY_PROGRESS_COUNT: &'static str = "policy_progress_count";
|
pub static PROP_POLICY_PROGRESS_COUNT: &str = "policy_progress_count";
|
||||||
|
|
||||||
pub static PROP_POLICY_DATA_LIST: &'static str = "policy_data_list";
|
pub static PROP_POLICY_DATA_LIST: &str = "policy_data_list";
|
||||||
pub static PROP_POLICY_DATA_COUNT: &'static str = "policy_data_count";
|
pub static PROP_POLICY_DATA_COUNT: &str = "policy_data_count";
|
||||||
|
|
||||||
pub static PROP_POLICY_LIST: &'static str = "policy_list";
|
pub static PROP_POLICY_LIST: &str = "policy_list";
|
||||||
pub static PROP_POLICY_LIST_COUNT: &'static str = "policy_list_count";
|
pub static PROP_POLICY_LIST_COUNT: &str = "policy_list_count";
|
||||||
|
|||||||
40
advotracker/src/widgets/localization/localization_state.rs
Normal file
40
advotracker/src/widgets/localization/localization_state.rs
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* advotracker - Hotline tackingtool for Advocats
|
||||||
|
*
|
||||||
|
* Copyright 2020 Ralf Zerres <ralf.zerres@networkx.de>
|
||||||
|
* SPDX-License-Identifier: (0BSD or MIT)
|
||||||
|
*/
|
||||||
|
|
||||||
|
use orbtk::prelude::*;
|
||||||
|
|
||||||
|
use crate::widgets::localization::localization_view::LocalizationView;
|
||||||
|
|
||||||
|
#[derive(AsAny, Debug, Default)]
|
||||||
|
pub struct LocalizationState {
|
||||||
|
change_language: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl LocalizationState {
|
||||||
|
pub fn change_language(&mut self) {
|
||||||
|
self.change_language = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl State for LocalizationState {
|
||||||
|
fn update(&mut self, _registry: &mut Registry, ctx: &mut Context<'_>) {
|
||||||
|
if !self.change_language {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let index = *LocalizationView::selected_index_ref(&ctx.widget()) as usize;
|
||||||
|
let selected_language = LocalizationView::languages_ref(&ctx.widget())[index].clone();
|
||||||
|
|
||||||
|
match selected_language.as_str() {
|
||||||
|
"English" => ctx.set_language("en_US"),
|
||||||
|
"German" => ctx.set_language("de_DE"),
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
|
||||||
|
self.change_language = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
85
advotracker/src/widgets/localization/localization_view.rs
Normal file
85
advotracker/src/widgets/localization/localization_view.rs
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
/*
|
||||||
|
* advotracker - Hotline tackingtool for Advocats
|
||||||
|
*
|
||||||
|
* Copyright 2020 Ralf Zerres <ralf.zerres@networkx.de>
|
||||||
|
* SPDX-License-Identifier: (0BSD or MIT)
|
||||||
|
*/
|
||||||
|
|
||||||
|
use orbtk::prelude::*;
|
||||||
|
|
||||||
|
use crate::{
|
||||||
|
data::constants::*,
|
||||||
|
widgets::localization::localization_state::LocalizationState,
|
||||||
|
};
|
||||||
|
|
||||||
|
type List = Vec<String>;
|
||||||
|
|
||||||
|
// Macro that initializes the widget structures/variables for our view
|
||||||
|
widget!(LocalizationView<LocalizationState> {
|
||||||
|
languages: List,
|
||||||
|
selected_index: i32 }
|
||||||
|
);
|
||||||
|
|
||||||
|
/// The template implementation of the localization view
|
||||||
|
/// All GUI elements are styled using the "style" attribute referencing to a ron based css
|
||||||
|
impl Template for LocalizationView {
|
||||||
|
fn template(self, id: Entity, ctx: &mut BuildContext<'_>) -> Self {
|
||||||
|
let languages = vec!["English".to_string(), "German".to_string()];
|
||||||
|
let count = languages.len();
|
||||||
|
|
||||||
|
self.languages(languages)
|
||||||
|
.selected_index(1)
|
||||||
|
.child(
|
||||||
|
Grid::new()
|
||||||
|
.id(ID_LOCALIZATION_FORM)
|
||||||
|
.margin(4)
|
||||||
|
.columns(
|
||||||
|
Columns::create()
|
||||||
|
.push(120)
|
||||||
|
.push(12)
|
||||||
|
.push("auto")
|
||||||
|
)
|
||||||
|
.rows(Rows::create()
|
||||||
|
.push("auto")
|
||||||
|
.push(4)
|
||||||
|
.push("auto")
|
||||||
|
.push(4)
|
||||||
|
.push("auto")
|
||||||
|
.push(12)
|
||||||
|
.push("auto"),
|
||||||
|
)
|
||||||
|
.child(
|
||||||
|
TextBlock::new()
|
||||||
|
.id(ID_LOCALIZATION_HEADER)
|
||||||
|
.h_align("start")
|
||||||
|
.attach(Grid::column(0))
|
||||||
|
.attach(Grid::row(0))
|
||||||
|
.attach(Grid::column_span(3))
|
||||||
|
.text("Localization dialog")
|
||||||
|
.style("header")
|
||||||
|
.build(ctx),
|
||||||
|
)
|
||||||
|
.child(
|
||||||
|
ComboBox::new()
|
||||||
|
.id(ID_LOCALIZATION_LANGUAGES)
|
||||||
|
.count(count)
|
||||||
|
.items_builder(move |bc, index| {
|
||||||
|
let text = bc.get_widget(id)
|
||||||
|
.get::<Vec<String>>("languages")[index]
|
||||||
|
.clone();
|
||||||
|
TextBlock::new()
|
||||||
|
.id(ID_LOCALIZATION_LANGUAGE_NAME)
|
||||||
|
.v_align("center")
|
||||||
|
.text(text)
|
||||||
|
.build(bc)
|
||||||
|
})
|
||||||
|
.on_changed("selected_index", move |states, _| {
|
||||||
|
states.get_mut::<LocalizationState>(id).change_language();
|
||||||
|
})
|
||||||
|
.selected_index(id)
|
||||||
|
.build(ctx),
|
||||||
|
)
|
||||||
|
.build(ctx),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
12
advotracker/src/widgets/localization/mod.rs
Normal file
12
advotracker/src/widgets/localization/mod.rs
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
/*
|
||||||
|
* advotracker - Hotline tackingtool for Advocats
|
||||||
|
*
|
||||||
|
* Copyright 2020 Ralf Zerres <ralf.zerres@networkx.de>
|
||||||
|
* SPDX-License-Identifier: (0BSD or MIT)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/// The localization state
|
||||||
|
pub mod localization_state;
|
||||||
|
|
||||||
|
/// The localizatin view
|
||||||
|
pub mod localization_view;
|
||||||
@@ -10,10 +10,9 @@ use orbtk::prelude::*;
|
|||||||
use crate::{
|
use crate::{
|
||||||
data::structures::PolicyCheck,
|
data::structures::PolicyCheck,
|
||||||
widgets::policycheck::policycheck_view::PolicycheckView,
|
widgets::policycheck::policycheck_view::PolicycheckView,
|
||||||
|
widgets::localization::localization_view::LocalizationView,
|
||||||
};
|
};
|
||||||
|
|
||||||
type List = Vec<String>;
|
|
||||||
|
|
||||||
// [START] views
|
// [START] views
|
||||||
|
|
||||||
widget!(MainView {
|
widget!(MainView {
|
||||||
@@ -63,44 +62,6 @@ impl Template for MainView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
widget!(LocalizationView<LocalizationState> {
|
|
||||||
languages: List,
|
|
||||||
selected_index: i32 }
|
|
||||||
);
|
|
||||||
|
|
||||||
impl Template for LocalizationView {
|
|
||||||
fn template(self, id: Entity, ctx: &mut BuildContext<'_>) -> Self {
|
|
||||||
let languages = vec!["English".to_string(), "German".to_string()];
|
|
||||||
let count = languages.len();
|
|
||||||
|
|
||||||
self.languages(languages).selected_index(1).child(
|
|
||||||
Stack::new()
|
|
||||||
.width(120)
|
|
||||||
.margin(16)
|
|
||||||
.spacing(8)
|
|
||||||
.child(TextBlock::new().text("Hello").build(ctx))
|
|
||||||
.child(TextBlock::new().text("User").build(ctx))
|
|
||||||
.child(TextBlock::new().text("Localization dialog").build(ctx))
|
|
||||||
.child(
|
|
||||||
ComboBox::new()
|
|
||||||
.count(count)
|
|
||||||
.items_builder(move |bc, index| {
|
|
||||||
let text = bc.get_widget(id)
|
|
||||||
.get::<Vec<String>>("languages")[index]
|
|
||||||
.clone();
|
|
||||||
TextBlock::new().v_align("center").text(text).build(bc)
|
|
||||||
})
|
|
||||||
.on_changed("selected_index", move |states, _| {
|
|
||||||
states.get_mut::<LocalizationState>(id).change_language();
|
|
||||||
})
|
|
||||||
.selected_index(id)
|
|
||||||
.build(ctx),
|
|
||||||
)
|
|
||||||
.build(ctx),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
widget!(
|
widget!(
|
||||||
ConfigurationView<ConfigurationState> {
|
ConfigurationView<ConfigurationState> {
|
||||||
configuration_file: String,
|
configuration_file: String,
|
||||||
@@ -222,35 +183,6 @@ impl Template for ConfigurationView {
|
|||||||
|
|
||||||
// [START] states
|
// [START] states
|
||||||
|
|
||||||
#[derive(AsAny, Debug, Default)]
|
|
||||||
struct LocalizationState {
|
|
||||||
change_language: bool,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl LocalizationState {
|
|
||||||
fn change_language(&mut self) {
|
|
||||||
self.change_language = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl State for LocalizationState {
|
|
||||||
fn update(&mut self, _registry: &mut Registry, ctx: &mut Context<'_>) {
|
|
||||||
if !self.change_language {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let index = *LocalizationView::selected_index_ref(&ctx.widget()) as usize;
|
|
||||||
let selected_language = LocalizationView::languages_ref(&ctx.widget())[index].clone();
|
|
||||||
|
|
||||||
match selected_language.as_str() {
|
|
||||||
"English" => ctx.set_language("en_US"),
|
|
||||||
"German" => ctx.set_language("de_DE"),
|
|
||||||
_ => {}
|
|
||||||
}
|
|
||||||
|
|
||||||
self.change_language = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Default, AsAny)]
|
#[derive(Debug, Default, AsAny)]
|
||||||
struct ConfigurationState {}
|
struct ConfigurationState {}
|
||||||
|
|||||||
@@ -8,14 +8,17 @@
|
|||||||
/// global helper functions
|
/// global helper functions
|
||||||
pub mod global_state;
|
pub mod global_state;
|
||||||
|
|
||||||
/// The starting point (Main View)
|
/// The localization widget.
|
||||||
|
pub mod localization;
|
||||||
|
|
||||||
|
/// The starting point (Main View).
|
||||||
pub mod main_view;
|
pub mod main_view;
|
||||||
|
|
||||||
/// The policy check wigdet
|
/// The policycheck wigdet.
|
||||||
pub mod policycheck;
|
pub mod policycheck;
|
||||||
|
|
||||||
// /// The policy data widget
|
// /// The policydata widget.
|
||||||
// pub mod policydata;
|
// pub mod policydata;
|
||||||
|
|
||||||
// /// The policy lists widget
|
// /// The policylists widget.
|
||||||
// pub mod policylist;
|
// pub mod policylist;
|
||||||
|
|||||||
Reference in New Issue
Block a user