Skip to content

Commit e670333

Browse files
committed
add more command palatte commands
1 parent 88039cb commit e670333

File tree

6 files changed

+108
-35
lines changed

6 files changed

+108
-35
lines changed

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ fn run() -> (IcyBrowser<Ultralight>, Task<Message>) {
3030
IcyBrowser::new()
3131
.with_tab_bar()
3232
.with_nav_bar()
33-
.with_bookmark_bar(&[Bookmark::new("https://www.rust-lang.org", "rust-lang.org")])
33+
.bookmarks(&[Bookmark::new("https://www.rust-lang.org", "rust-lang.org")])
34+
.with_bookmark_bar()
3435
.build(),
3536
Task::none(),
3637
)

examples/basic_browser.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ fn run() -> (IcyBrowser<Ultralight>, Task<Message>) {
88
IcyBrowser::new()
99
.with_tab_bar()
1010
.with_nav_bar()
11-
.with_bookmark_bar(&[Bookmark::new("https://www.rust-lang.org", "rust-lang.org")])
11+
.bookmarks(&[Bookmark::new("https://www.rust-lang.org", "rust-lang.org")])
12+
.with_bookmark_bar()
1213
.build(),
1314
Task::none(),
1415
)

examples/keyboard_driven.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,15 @@ impl Default for Browser {
5050
let widgets = IcyBrowser::new()
5151
.with_custom_shortcuts(shortcuts)
5252
.with_tab_bar()
53-
.with_bookmark_bar(&[
53+
.bookmarks(&[
5454
Bookmark::new("https://www.rust-lang.org", "rust-lang.org"),
5555
Bookmark::new(
5656
"https://github.com/LegitCamper/icy_browser",
5757
"icy_browser github",
5858
),
5959
Bookmark::new("https://docs.rs/iced/latest/iced/", "iced docs"),
6060
])
61+
.with_bookmark_bar()
6162
.build();
6263

6364
Self {

src/engines/ultralight.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -874,7 +874,7 @@ fn iced_key_to_ultralight_key(
874874
#[cfg(windows)]
875875
189,
876876
#[cfg(unix)]
877-
12,
877+
74,
878878
),
879879
"+" => (
880880
VirtualKeyCode::OemPlus,

src/widgets/command_palatte.rs

+12-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ impl ResultType {
1717
pub fn inner_name(&self) -> String {
1818
match self {
1919
ResultType::Commands(command) => command.to_string(),
20-
ResultType::Bookmarks(bookmark) => format!("Go to: {}", bookmark.url()),
20+
ResultType::Bookmarks(bookmark) => format!("{} -> {}", bookmark.name(), bookmark.url()),
2121
}
2222
}
2323
}
@@ -40,6 +40,17 @@ impl CommandWindowState {
4040
Message::Refresh,
4141
Message::GoHome,
4242
Message::CloseCurrentTab,
43+
Message::CreateTab,
44+
Message::HideOverlay,
45+
Message::ToggleTabBar,
46+
Message::ShowTabBar,
47+
Message::HideTabBar,
48+
Message::ToggleNavBar,
49+
Message::ShowNavBar,
50+
Message::HideNavBar,
51+
Message::ToggleBookmarkBar,
52+
Message::ShowBookmarkBar,
53+
Message::HideBookmarkBar,
4354
]
4455
.into_iter()
4556
.map(ResultType::Commands),

src/widgets/mod.rs

+89-30
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,24 @@ pub enum Message {
6767
ShowOverlay,
6868
#[strum(to_string = "Hide Command Palatte")]
6969
HideOverlay,
70+
#[strum(to_string = "Toggle Tab Bar")]
71+
ToggleTabBar,
72+
#[strum(to_string = "Show Tab Bar")]
73+
ShowTabBar,
74+
#[strum(to_string = "Hide Tab Bar")]
75+
HideTabBar,
76+
#[strum(to_string = "Toggle Nav Bar")]
77+
ToggleNavBar,
78+
#[strum(to_string = "Show Nav Bar")]
79+
ShowNavBar,
80+
#[strum(to_string = "Hide Nav Bar")]
81+
HideNavBar,
82+
#[strum(to_string = "Toggle Bookmark Bar")]
83+
ToggleBookmarkBar,
84+
#[strum(to_string = "Show Bookmark Bar")]
85+
ShowBookmarkBar,
86+
#[strum(to_string = "Hide Bookmark Bar")]
87+
HideBookmarkBar,
7088

7189
// Internal only - for widgets
7290
Update,
@@ -95,10 +113,11 @@ impl Default for TabSelectionType {
95113
pub struct IcyBrowser<Engine: BrowserEngine> {
96114
engine: Engine,
97115
home: Url,
98-
nav_bar_state: Option<NavBarState>,
116+
nav_bar_state: NavBarState,
99117
command_window_state: CommandWindowState,
100118
with_tab_bar: bool,
101119
with_nav_bar: bool,
120+
with_bookmark_bar: bool,
102121
bookmarks: Option<Bookmarks>,
103122
show_overlay: bool,
104123
shortcuts: Shortcuts,
@@ -111,10 +130,11 @@ impl<Engine: BrowserEngine> Default for IcyBrowser<Engine> {
111130
Self {
112131
engine: Engine::new(),
113132
home,
114-
nav_bar_state: None,
133+
nav_bar_state: NavBarState::new(),
115134
command_window_state: CommandWindowState::new(None),
116135
with_tab_bar: false,
117136
with_nav_bar: false,
137+
with_bookmark_bar: false,
118138
bookmarks: None,
119139
show_overlay: false,
120140
shortcuts: Shortcuts::default(),
@@ -142,16 +162,21 @@ impl<Engine: BrowserEngine> IcyBrowser<Engine> {
142162

143163
pub fn with_nav_bar(mut self) -> Self {
144164
self.with_nav_bar = true;
145-
self.nav_bar_state = Some(NavBarState::new());
165+
self.nav_bar_state = NavBarState::new();
146166
self
147167
}
148168

149-
pub fn with_bookmark_bar(mut self, bookmarks: &[Bookmark]) -> Self {
169+
pub fn bookmarks(mut self, bookmarks: &[Bookmark]) -> Self {
150170
self.bookmarks = Some(bookmarks.to_vec());
151171
self.command_window_state = CommandWindowState::new(self.bookmarks.clone());
152172
self
153173
}
154174

175+
pub fn with_bookmark_bar(mut self) -> Self {
176+
self.with_bookmark_bar = true;
177+
self
178+
}
179+
155180
pub fn with_custom_shortcuts(mut self, shortcuts: Shortcuts) -> Self {
156181
self.shortcuts = shortcuts;
157182
self
@@ -235,9 +260,7 @@ impl<Engine: BrowserEngine> IcyBrowser<Engine> {
235260
TabSelectionType::Index(index) => self.engine.get_tabs().index_to_id(index),
236261
};
237262
self.engine.get_tabs_mut().set_current_id(id);
238-
if let Some(state) = self.nav_bar_state.as_mut() {
239-
state.0 = self.engine.get_tabs().get_current().url();
240-
}
263+
self.nav_bar_state.0 = self.engine.get_tabs().get_current().url();
241264
Task::none()
242265
}
243266
Message::CloseCurrentTab => Task::done(Message::CloseTab(TabSelectionType::Id(
@@ -254,15 +277,11 @@ impl<Engine: BrowserEngine> IcyBrowser<Engine> {
254277
TabSelectionType::Index(index) => self.engine.get_tabs().index_to_id(index),
255278
};
256279
self.engine.get_tabs_mut().remove(id);
257-
if let Some(state) = self.nav_bar_state.as_mut() {
258-
state.0 = self.engine.get_tabs().get_current().url();
259-
}
280+
self.nav_bar_state.0 = self.engine.get_tabs().get_current().url();
260281
Task::none()
261282
}
262283
Message::CreateTab => {
263-
if let Some(state) = self.nav_bar_state.as_mut() {
264-
state.0 = self.home.to_string();
265-
}
284+
self.nav_bar_state.0 = self.home.to_string();
266285
let home = self.home.clone();
267286
let bounds = self.view_size;
268287
let tab = self.engine.new_tab(
@@ -278,16 +297,12 @@ impl<Engine: BrowserEngine> IcyBrowser<Engine> {
278297
}
279298
Message::GoBackward => {
280299
self.engine.go_back();
281-
if let Some(state) = self.nav_bar_state.as_mut() {
282-
state.0 = self.engine.get_tabs().get_current().url();
283-
}
300+
self.nav_bar_state.0 = self.engine.get_tabs().get_current().url();
284301
Task::none()
285302
}
286303
Message::GoForward => {
287304
self.engine.go_forward();
288-
if let Some(state) = self.nav_bar_state.as_mut() {
289-
state.0 = self.engine.get_tabs().get_current().url();
290-
}
305+
self.nav_bar_state.0 = self.engine.get_tabs().get_current().url();
291306
Task::none()
292307
}
293308
Message::Refresh => {
@@ -303,17 +318,61 @@ impl<Engine: BrowserEngine> IcyBrowser<Engine> {
303318
Task::none()
304319
}
305320
Message::UpdateUrl => {
306-
if let Some(state) = self.nav_bar_state.as_mut() {
307-
state.0 = self.engine.get_tabs().get_current().url();
308-
}
321+
self.nav_bar_state.0 = self.engine.get_tabs().get_current().url();
309322
Task::none()
310323
}
311324
Message::UrlChanged(url) => {
312-
if let Some(state) = self.nav_bar_state.as_mut() {
313-
state.0 = url;
325+
self.nav_bar_state.0 = url;
326+
Task::none()
327+
}
328+
Message::ToggleTabBar => {
329+
if self.with_tab_bar {
330+
self.with_tab_bar = false;
331+
} else {
332+
self.with_tab_bar = true;
314333
}
315334
Task::none()
316335
}
336+
Message::ShowTabBar => {
337+
self.with_tab_bar = true;
338+
Task::none()
339+
}
340+
Message::HideTabBar => {
341+
self.with_tab_bar = false;
342+
Task::none()
343+
}
344+
Message::ToggleNavBar => {
345+
if self.with_nav_bar {
346+
self.with_nav_bar = false;
347+
} else {
348+
self.with_nav_bar = true;
349+
}
350+
Task::none()
351+
}
352+
Message::ShowNavBar => {
353+
self.with_nav_bar = true;
354+
Task::none()
355+
}
356+
Message::HideNavBar => {
357+
self.with_nav_bar = false;
358+
Task::none()
359+
}
360+
Message::ToggleBookmarkBar => {
361+
if self.with_bookmark_bar {
362+
self.with_bookmark_bar = false;
363+
} else {
364+
self.with_bookmark_bar = true;
365+
}
366+
Task::none()
367+
}
368+
Message::ShowBookmarkBar => {
369+
self.with_bookmark_bar = true;
370+
Task::none()
371+
}
372+
Message::HideBookmarkBar => {
373+
self.with_bookmark_bar = false;
374+
Task::none()
375+
}
317376
Message::CommandPalatteQueryChanged(query) => {
318377
self.command_window_state.query = query.clone();
319378
self.command_window_state.filtered_results = self
@@ -501,13 +560,13 @@ impl<Engine: BrowserEngine> IcyBrowser<Engine> {
501560
column = column.push(tab_bar(self.engine.get_tabs()))
502561
}
503562
if self.with_nav_bar {
504-
column = column.push(
505-
hoverable(nav_bar(self.nav_bar_state.as_ref().unwrap()))
506-
.on_focus_change(Message::UpdateUrl),
507-
)
563+
column = column
564+
.push(hoverable(nav_bar(&self.nav_bar_state)).on_focus_change(Message::UpdateUrl))
508565
}
509-
if let Some(bookmarks) = self.bookmarks.as_ref() {
510-
column = column.push(bookmark_bar(bookmarks))
566+
if self.with_bookmark_bar {
567+
if let Some(bookmarks) = self.bookmarks.as_ref() {
568+
column = column.push(bookmark_bar(bookmarks))
569+
}
511570
}
512571

513572
let browser_view = browser_view(self.engine.get_tabs().get_current().get_view());

0 commit comments

Comments
 (0)