mirror of
https://gitlab.freedesktop.org/dabrain34/GstPipelineStudio.git
synced 2024-11-21 16:41:03 +00:00
WIP: app: allow to load recent open files
Keep a list of 4 files and be able to load it again
This commit is contained in:
parent
9e4e915b1d
commit
1c04294b3a
4 changed files with 26 additions and 0 deletions
1
TODO.md
1
TODO.md
|
@ -112,6 +112,7 @@
|
||||||
- [ ] reopen the last log on prematured exit (crash)
|
- [ ] reopen the last log on prematured exit (crash)
|
||||||
- [ ] Play/pause should be prevented until the pipeline is ready
|
- [ ] Play/pause should be prevented until the pipeline is ready
|
||||||
- [ ] Filter the elements by class/rank etc.
|
- [ ] Filter the elements by class/rank etc.
|
||||||
|
- [ ] Add a list of recent open files to the burger menu
|
||||||
|
|
||||||
### CI/Infra
|
### CI/Infra
|
||||||
|
|
||||||
|
|
|
@ -483,6 +483,7 @@ impl GPSApp {
|
||||||
GPSApp::get_file_from_dialog(&app, false, move |app, filename| {
|
GPSApp::get_file_from_dialog(&app, false, move |app, filename| {
|
||||||
app.load_graph(&filename)
|
app.load_graph(&filename)
|
||||||
.unwrap_or_else(|_| GPS_ERROR!("Unable to open file {}", filename));
|
.unwrap_or_else(|_| GPS_ERROR!("Unable to open file {}", filename));
|
||||||
|
Settings::add_recent_open_file(&filename);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ use crate::config;
|
||||||
use crate::logger;
|
use crate::logger;
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize, Default)]
|
#[derive(Debug, Serialize, Deserialize, Default)]
|
||||||
|
#[serde(default)]
|
||||||
pub struct Settings {
|
pub struct Settings {
|
||||||
pub app_maximized: bool,
|
pub app_maximized: bool,
|
||||||
pub app_width: i32,
|
pub app_width: i32,
|
||||||
|
@ -24,6 +25,7 @@ pub struct Settings {
|
||||||
|
|
||||||
// values must be emitted before tables
|
// values must be emitted before tables
|
||||||
pub favorites: Vec<String>,
|
pub favorites: Vec<String>,
|
||||||
|
pub recent_open_files: Vec<String>,
|
||||||
pub paned_positions: HashMap<String, i32>,
|
pub paned_positions: HashMap<String, i32>,
|
||||||
pub preferences: HashMap<String, String>,
|
pub preferences: HashMap<String, String>,
|
||||||
}
|
}
|
||||||
|
@ -89,6 +91,24 @@ impl Settings {
|
||||||
favorites
|
favorites
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn add_recent_open_file(filename: &str) {
|
||||||
|
let mut settings = Settings::load_settings();
|
||||||
|
if settings.recent_open_files.len() >= 4 {
|
||||||
|
settings.recent_open_files.pop();
|
||||||
|
}
|
||||||
|
settings.recent_open_files.insert(0, String::from(filename));
|
||||||
|
Settings::save_settings(&settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_recent_open_files() -> Vec<String> {
|
||||||
|
let mut recent_open_files = Vec::new();
|
||||||
|
let settings = Settings::load_settings();
|
||||||
|
for recent in settings.recent_open_files {
|
||||||
|
recent_open_files.push(recent);
|
||||||
|
}
|
||||||
|
recent_open_files
|
||||||
|
}
|
||||||
|
|
||||||
// Save the provided settings to the settings path
|
// Save the provided settings to the settings path
|
||||||
pub fn save_settings(settings: &Settings) {
|
pub fn save_settings(settings: &Settings) {
|
||||||
Settings::settings_file_exist();
|
Settings::settings_file_exist();
|
||||||
|
|
|
@ -18,6 +18,10 @@
|
||||||
<attribute name="action">app.save_as</attribute>
|
<attribute name="action">app.save_as</attribute>
|
||||||
<attribute name="accel"><primary>n</attribute>
|
<attribute name="accel"><primary>n</attribute>
|
||||||
</item>
|
</item>
|
||||||
|
<submenu>
|
||||||
|
<attribute name="label" translatable="yes" comments="Primary menu entry that open recent files">_Open recent ...</attribute>
|
||||||
|
<attribute name="action">app.open_recent</attribute>
|
||||||
|
</submenu>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="label" translatable="yes" comments="Primary menu entry that open the preferences">_Preferences</attribute>
|
<attribute name="label" translatable="yes" comments="Primary menu entry that open the preferences">_Preferences</attribute>
|
||||||
<attribute name="action">app.preferences</attribute>
|
<attribute name="action">app.preferences</attribute>
|
||||||
|
|
Loading…
Reference in a new issue