mirror of
https://github.com/GyulyVGC/sniffnet.git
synced 2025-12-23 22:29:01 -05:00
add active filters info in overview page
This commit is contained in:
@@ -51,7 +51,6 @@ pub fn initial_page(sniffer: &Sniffer) -> Container<'_, Message, StyleType> {
|
||||
|
||||
let col_checkboxes = Column::new()
|
||||
.spacing(10)
|
||||
.push(Space::with_height(66))
|
||||
.push(get_filters_group(&sniffer.filters, font, language))
|
||||
.push_maybe(get_export_pcap_group_maybe(
|
||||
sniffer.capture_source_picklist,
|
||||
@@ -64,6 +63,7 @@ pub fn initial_page(sniffer: &Sniffer) -> Container<'_, Message, StyleType> {
|
||||
let right_col = Column::new()
|
||||
.width(FillPortion(1))
|
||||
.padding(10)
|
||||
.push(Space::with_height(76))
|
||||
.push(col_checkboxes)
|
||||
.push(vertical_space())
|
||||
.push(button_start(
|
||||
@@ -98,7 +98,7 @@ fn button_start<'a>(
|
||||
.align_x(alignment::Alignment::Center)
|
||||
.align_y(alignment::Alignment::Center),
|
||||
)
|
||||
.padding(15)
|
||||
.padding(20)
|
||||
.width(Length::Fill)
|
||||
.class(ButtonType::Gradient(color_gradient))
|
||||
.on_press_maybe(if is_capture_source_consistent {
|
||||
|
||||
@@ -12,22 +12,24 @@
|
||||
use crate::gui::styles::container::ContainerType;
|
||||
use crate::gui::styles::rule::RuleType;
|
||||
use crate::gui::styles::scrollbar::ScrollbarType;
|
||||
use crate::gui::styles::style_constants::FONT_SIZE_TITLE;
|
||||
use crate::gui::styles::style_constants::{FONT_SIZE_FOOTER, FONT_SIZE_TITLE};
|
||||
use crate::gui::styles::text::TextType;
|
||||
use crate::gui::styles::types::palette_extension::PaletteExtension;
|
||||
use crate::gui::types::filters::Filters;
|
||||
use crate::gui::types::message::Message;
|
||||
use crate::networking::types::capture_context::CaptureSource;
|
||||
use crate::networking::types::data_info::DataInfo;
|
||||
use crate::networking::types::data_info_host::DataInfoHost;
|
||||
use crate::networking::types::data_representation::DataRepr;
|
||||
use crate::networking::types::host::Host;
|
||||
use crate::networking::types::my_link_type::MyLinkType;
|
||||
use crate::networking::types::service::Service;
|
||||
use crate::report::get_report_entries::{get_host_entries, get_service_entries};
|
||||
use crate::report::types::search_parameters::SearchParameters;
|
||||
use crate::report::types::sort_type::SortType;
|
||||
use crate::translations::translations::{
|
||||
active_filters_translation, error_translation, incoming_translation, no_addresses_translation,
|
||||
outgoing_translation, traffic_rate_translation, waiting_translation,
|
||||
none_translation, outgoing_translation, traffic_rate_translation, waiting_translation,
|
||||
};
|
||||
use crate::translations::translations_2::{
|
||||
data_representation_translation, dropped_translation, host_translation,
|
||||
@@ -74,7 +76,6 @@ pub fn overview_page(sniffer: &Sniffer) -> Container<'_, Message, StyleType> {
|
||||
|
||||
if tot_packets == 0 {
|
||||
// no packets observed at all
|
||||
// TODO: add info about the capture filters (if any) in the method called below
|
||||
body = body_no_packets(&sniffer.capture_source, font, language, dots);
|
||||
} else {
|
||||
// some packets are there!
|
||||
@@ -112,7 +113,6 @@ pub fn overview_page(sniffer: &Sniffer) -> Container<'_, Message, StyleType> {
|
||||
Container::new(Column::new().push(tab_and_body.push(body))).height(Length::Fill)
|
||||
}
|
||||
|
||||
// TODO: add info about active filters if any
|
||||
fn body_no_packets<'a>(
|
||||
cs: &CaptureSource,
|
||||
font: Font,
|
||||
@@ -436,7 +436,7 @@ fn col_info(sniffer: &Sniffer) -> Container<'_, Message, StyleType> {
|
||||
} = sniffer.configs.settings;
|
||||
let PaletteExtension { font, .. } = style.get_extension();
|
||||
|
||||
let col_device = col_device(language, font, &sniffer.capture_source);
|
||||
let col_device = col_device(language, font, &sniffer.capture_source, &sniffer.filters);
|
||||
|
||||
let col_data_representation =
|
||||
col_data_representation(language, font, sniffer.traffic_chart.data_repr);
|
||||
@@ -496,6 +496,7 @@ fn col_device<'a>(
|
||||
language: Language,
|
||||
font: Font,
|
||||
cs: &CaptureSource,
|
||||
filters: &'a Filters,
|
||||
) -> Column<'a, Message, StyleType> {
|
||||
let link_type = cs.get_link_type();
|
||||
#[cfg(not(target_os = "windows"))]
|
||||
@@ -503,15 +504,34 @@ fn col_device<'a>(
|
||||
#[cfg(target_os = "windows")]
|
||||
let cs_info = cs.get_desc().unwrap_or(cs.get_name());
|
||||
|
||||
let filters_desc = if filters.is_some_filter_active() {
|
||||
filters.bpf()
|
||||
} else {
|
||||
none_translation(language)
|
||||
};
|
||||
|
||||
Column::new()
|
||||
.height(Length::Fill)
|
||||
.spacing(10)
|
||||
.push(
|
||||
Column::new()
|
||||
.push(
|
||||
Text::new(format!("{}:", cs.title(language)))
|
||||
.class(TextType::Subtitle)
|
||||
.font(font),
|
||||
)
|
||||
.push(
|
||||
Row::new()
|
||||
.spacing(10)
|
||||
.push(Text::new(format!(" {}", &cs_info)).font(font))
|
||||
.push(get_link_type_tooltip(link_type, language, font)),
|
||||
),
|
||||
)
|
||||
.push(TextType::highlighted_subtitle_with_desc(
|
||||
cs.title(language),
|
||||
&cs_info,
|
||||
active_filters_translation(language),
|
||||
filters_desc,
|
||||
font,
|
||||
))
|
||||
.push(link_type.link_type_col(language, font))
|
||||
}
|
||||
|
||||
fn col_data_representation<'a>(
|
||||
@@ -731,25 +751,16 @@ fn get_star_button<'a>(is_favorite: bool, host: Host) -> Button<'a, Message, Sty
|
||||
.on_press(Message::AddOrRemoveFavorite(host, !is_favorite))
|
||||
}
|
||||
|
||||
fn get_active_filters_tooltip(
|
||||
bpf: &str,
|
||||
fn get_link_type_tooltip<'a>(
|
||||
link_type: MyLinkType,
|
||||
language: Language,
|
||||
font: Font,
|
||||
) -> Tooltip<'_, Message, StyleType> {
|
||||
let mut ret_val = Column::new().push(
|
||||
Text::new(active_filters_translation(language))
|
||||
.font(font)
|
||||
.class(TextType::Subtitle),
|
||||
);
|
||||
|
||||
ret_val = ret_val.push(Row::new().push(Text::new(bpf).font(font)));
|
||||
|
||||
) -> Tooltip<'a, Message, StyleType> {
|
||||
Tooltip::new(
|
||||
Container::new(
|
||||
Icon::Funnel
|
||||
.to_text()
|
||||
Text::new("i")
|
||||
.size(FONT_SIZE_FOOTER)
|
||||
.font(font)
|
||||
.size(15)
|
||||
.line_height(LineHeight::Relative(1.0)),
|
||||
)
|
||||
.align_x(Alignment::Center)
|
||||
@@ -757,7 +768,7 @@ fn get_active_filters_tooltip(
|
||||
.height(20)
|
||||
.width(20)
|
||||
.class(ContainerType::BadgeInfo),
|
||||
ret_val,
|
||||
Text::new(link_type.full_print_on_one_line(language)).font(font),
|
||||
Position::FollowCursor,
|
||||
)
|
||||
.class(ContainerType::Tooltip)
|
||||
|
||||
@@ -64,7 +64,9 @@ fn active(&self, style: &StyleType) -> Style {
|
||||
radius: match self {
|
||||
ButtonType::Neutral => 0.0.into(),
|
||||
ButtonType::TabActive | ButtonType::TabInactive => Radius::new(0).bottom(30),
|
||||
ButtonType::BorderedRound | ButtonType::BorderedRoundSelected => 12.0.into(),
|
||||
ButtonType::BorderedRound
|
||||
| ButtonType::BorderedRoundSelected
|
||||
| ButtonType::Gradient(_) => 12.0.into(),
|
||||
ButtonType::Starred | ButtonType::NotStarred => 100.0.into(),
|
||||
_ => BORDER_BUTTON_RADIUS.into(),
|
||||
},
|
||||
@@ -154,7 +156,9 @@ fn hovered(&self, style: &StyleType) -> Style {
|
||||
radius: match self {
|
||||
ButtonType::Neutral => 0.0.into(),
|
||||
ButtonType::TabActive | ButtonType::TabInactive => Radius::new(0).bottom(30),
|
||||
ButtonType::BorderedRound | ButtonType::BorderedRoundSelected => 12.0.into(),
|
||||
ButtonType::BorderedRound
|
||||
| ButtonType::BorderedRoundSelected
|
||||
| ButtonType::Gradient(_) => 12.0.into(),
|
||||
ButtonType::Starred | ButtonType::NotStarred => 100.0.into(),
|
||||
_ => BORDER_BUTTON_RADIUS.into(),
|
||||
},
|
||||
@@ -208,7 +212,7 @@ fn disabled(&self, style: &StyleType) -> Style {
|
||||
_ => Background::Color(ext.buttons_color),
|
||||
}),
|
||||
border: Border {
|
||||
radius: BORDER_BUTTON_RADIUS.into(),
|
||||
radius: 12.0.into(),
|
||||
width: BORDER_WIDTH,
|
||||
color: Color {
|
||||
a: ext.alpha_chart_badge,
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
use iced::Font;
|
||||
use iced::widget::Column;
|
||||
use pcap::Linktype;
|
||||
|
||||
use crate::gui::styles::text::TextType;
|
||||
use crate::gui::types::message::Message;
|
||||
use crate::Language;
|
||||
use crate::translations::translations_3::link_type_translation;
|
||||
use crate::{Language, StyleType};
|
||||
|
||||
/// Currently supported link types
|
||||
#[derive(Copy, Clone, Default)]
|
||||
@@ -57,32 +53,4 @@ pub fn full_print_on_one_line(self, language: Language) -> String {
|
||||
Self::NotYetAssigned => String::new(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn link_type_col<'a>(
|
||||
self,
|
||||
language: Language,
|
||||
font: Font,
|
||||
) -> Column<'a, Message, StyleType> {
|
||||
match self {
|
||||
Self::Null(l)
|
||||
| Self::Ethernet(l)
|
||||
| Self::RawIp(l)
|
||||
| Self::Loop(l)
|
||||
| Self::IPv4(l)
|
||||
| Self::IPv6(l)
|
||||
| Self::Unsupported(l) => {
|
||||
let link_info = format!(
|
||||
"{} ({})",
|
||||
l.get_name().unwrap_or_else(|_| l.0.to_string()),
|
||||
l.get_description().unwrap_or_else(|_| String::new())
|
||||
);
|
||||
TextType::highlighted_subtitle_with_desc(
|
||||
link_type_translation(language),
|
||||
&link_info,
|
||||
font,
|
||||
)
|
||||
}
|
||||
Self::NotYetAssigned => Column::new().height(0),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,33 +60,33 @@
|
||||
// }
|
||||
// }
|
||||
|
||||
pub fn select_filters_translation<'a>(language: Language) -> Text<'a, StyleType> {
|
||||
Text::new(match language {
|
||||
Language::EN => "Select filters to be applied on network traffic",
|
||||
Language::IT => "Seleziona i filtri da applicare al traffico di rete",
|
||||
Language::FR => "Sélectionnez les filtres à appliquer sur le traffic réseau",
|
||||
Language::ES => "Seleccionar los filtros que se aplicarán al tráfico de red",
|
||||
Language::PL => "Wybierz filtry, które mają być zastosowane na ruchu sieciowym",
|
||||
Language::DE => "Wähle die Filter, die auf den Netzwerkverkehr angewendet werden sollen",
|
||||
Language::UK => "Виберіть фільтри, які мають бути застосовані до мережевого руху",
|
||||
Language::ZH => "选择需要监控的目标",
|
||||
Language::ZH_TW => "選取要套用於網路流量的篩選器",
|
||||
Language::RO => "Selectați filtre pentru traficul de rețea",
|
||||
Language::KO => "네트워크 트레픽에 적용할 필터 선택",
|
||||
Language::TR => "Ağ trafiğine uygulanacak filtreleri seçiniz",
|
||||
Language::RU => "Выберите фильтры для применения к сетевому трафику",
|
||||
Language::PT => "Selecione os filtros a serem aplicados no tráfego de rede",
|
||||
Language::EL => "Επίλεξε τα φίλτρα για εφαρμογή στην κίνηση του δικτύου",
|
||||
// Language::FA => "صافی ها را جهت اعمال بر آمد و شد شبکه انتخاب کنید",
|
||||
Language::SV => "Välj filtren som ska appliceras på nätverkstrafiken",
|
||||
Language::FI => "Valitse suodattimet verkkoliikenteelle",
|
||||
Language::JA => "トラフィックに適用するフィルターを選択してください",
|
||||
Language::UZ => "Tarmoq trafigiga qo'llaniladigan filtrlarni tanlang",
|
||||
Language::VI => "Hãy chọn bộ lọc cho lưu lượng mạng",
|
||||
Language::ID => "Pilih filter yang ingin dipasang dilalulintas jaringan",
|
||||
Language::NL => "Selecteer filters om toe te passen op netwerkverkeer",
|
||||
})
|
||||
}
|
||||
// pub fn select_filters_translation<'a>(language: Language) -> Text<'a, StyleType> {
|
||||
// Text::new(match language {
|
||||
// Language::EN => "Select filters to be applied on network traffic",
|
||||
// Language::IT => "Seleziona i filtri da applicare al traffico di rete",
|
||||
// Language::FR => "Sélectionnez les filtres à appliquer sur le traffic réseau",
|
||||
// Language::ES => "Seleccionar los filtros que se aplicarán al tráfico de red",
|
||||
// Language::PL => "Wybierz filtry, które mają być zastosowane na ruchu sieciowym",
|
||||
// Language::DE => "Wähle die Filter, die auf den Netzwerkverkehr angewendet werden sollen",
|
||||
// Language::UK => "Виберіть фільтри, які мають бути застосовані до мережевого руху",
|
||||
// Language::ZH => "选择需要监控的目标",
|
||||
// Language::ZH_TW => "選取要套用於網路流量的篩選器",
|
||||
// Language::RO => "Selectați filtre pentru traficul de rețea",
|
||||
// Language::KO => "네트워크 트레픽에 적용할 필터 선택",
|
||||
// Language::TR => "Ağ trafiğine uygulanacak filtreleri seçiniz",
|
||||
// Language::RU => "Выберите фильтры для применения к сетевому трафику",
|
||||
// Language::PT => "Selecione os filtros a serem aplicados no tráfego de rede",
|
||||
// Language::EL => "Επίλεξε τα φίλτρα για εφαρμογή στην κίνηση του δικτύου",
|
||||
// // Language::FA => "صافی ها را جهت اعمال بر آمد و شد شبکه انتخاب کنید",
|
||||
// Language::SV => "Välj filtren som ska appliceras på nätverkstrafiken",
|
||||
// Language::FI => "Valitse suodattimet verkkoliikenteelle",
|
||||
// Language::JA => "トラフィックに適用するフィルターを選択してください",
|
||||
// Language::UZ => "Tarmoq trafigiga qo'llaniladigan filtrlarni tanlang",
|
||||
// Language::VI => "Hãy chọn bộ lọc cho lưu lượng mạng",
|
||||
// Language::ID => "Pilih filter yang ingin dipasang dilalulintas jaringan",
|
||||
// Language::NL => "Selecteer filters om toe te passen op netwerkverkeer",
|
||||
// })
|
||||
// }
|
||||
|
||||
pub fn start_translation(language: Language) -> &'static str {
|
||||
match language {
|
||||
|
||||
Reference in New Issue
Block a user