mirror of
https://github.com/servo/servo.git
synced 2025-07-24 15:50:21 +01:00
Support tinyfiledialogs on Windows
This commit is contained in:
parent
521f8c0135
commit
06142b37b8
9 changed files with 22 additions and 21 deletions
|
@ -46,5 +46,5 @@ git = "https://github.com/servo/webrender_traits"
|
||||||
default_features = false
|
default_features = false
|
||||||
features = ["serde_macros"]
|
features = ["serde_macros"]
|
||||||
|
|
||||||
[target.'cfg(any(target_os = "macos", target_os = "linux"))'.dependencies]
|
[target.'cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))'.dependencies]
|
||||||
tinyfiledialogs = {git = "https://github.com/jdm/tinyfiledialogs"}
|
tinyfiledialogs = {git = "https://github.com/jdm/tinyfiledialogs"}
|
||||||
|
|
|
@ -14,7 +14,7 @@ use std::ops::Index;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::sync::atomic::{self, AtomicUsize, AtomicBool, Ordering};
|
use std::sync::atomic::{self, AtomicUsize, AtomicBool, Ordering};
|
||||||
use std::sync::{Arc, RwLock};
|
use std::sync::{Arc, RwLock};
|
||||||
#[cfg(any(target_os = "macos", target_os = "linux"))]
|
#[cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))]
|
||||||
use tinyfiledialogs;
|
use tinyfiledialogs;
|
||||||
use url::Url;
|
use url::Url;
|
||||||
use util::prefs::PREFS;
|
use util::prefs::PREFS;
|
||||||
|
@ -37,7 +37,7 @@ pub trait UIProvider where Self: Sync {
|
||||||
pub struct TFDProvider;
|
pub struct TFDProvider;
|
||||||
|
|
||||||
impl UIProvider for TFDProvider {
|
impl UIProvider for TFDProvider {
|
||||||
#[cfg(any(target_os = "macos", target_os = "linux"))]
|
#[cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))]
|
||||||
fn open_file_dialog(&self, path: &str, patterns: Vec<FilterPattern>) -> Option<String> {
|
fn open_file_dialog(&self, path: &str, patterns: Vec<FilterPattern>) -> Option<String> {
|
||||||
let mut filter = vec![];
|
let mut filter = vec![];
|
||||||
for p in patterns {
|
for p in patterns {
|
||||||
|
@ -52,7 +52,7 @@ impl UIProvider for TFDProvider {
|
||||||
tinyfiledialogs::open_file_dialog("Pick a file", path, filter_opt)
|
tinyfiledialogs::open_file_dialog("Pick a file", path, filter_opt)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(target_os = "macos", target_os = "linux"))]
|
#[cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))]
|
||||||
fn open_file_dialog_multi(&self, path: &str, patterns: Vec<FilterPattern>) -> Option<Vec<String>> {
|
fn open_file_dialog_multi(&self, path: &str, patterns: Vec<FilterPattern>) -> Option<Vec<String>> {
|
||||||
let mut filter = vec![];
|
let mut filter = vec![];
|
||||||
for p in patterns {
|
for p in patterns {
|
||||||
|
@ -67,13 +67,13 @@ impl UIProvider for TFDProvider {
|
||||||
tinyfiledialogs::open_file_dialog_multi("Pick files", path, filter_opt)
|
tinyfiledialogs::open_file_dialog_multi("Pick files", path, filter_opt)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(not(any(target_os = "macos", target_os = "linux")))]
|
#[cfg(not(any(target_os = "macos", target_os = "linux", target_os = "windows")))]
|
||||||
fn open_file_dialog(&self, path: &str, patterns: Vec<FilterPattern>) -> Option<String> {
|
fn open_file_dialog(&self, _path: &str, _patterns: Vec<FilterPattern>) -> Option<String> {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(not(any(target_os = "macos", target_os = "linux")))]
|
#[cfg(not(any(target_os = "macos", target_os = "linux", target_os = "windows")))]
|
||||||
fn open_file_dialog_multi(&self, path: &str, patterns: Vec<FilterPattern>) -> Option<Vec<String>> {
|
fn open_file_dialog_multi(&self, _path: &str, _patterns: Vec<FilterPattern>) -> Option<Vec<String>> {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ use std::sync::mpsc::Sender;
|
||||||
use std::sync::{Arc, RwLock};
|
use std::sync::{Arc, RwLock};
|
||||||
use time;
|
use time;
|
||||||
use time::Tm;
|
use time::Tm;
|
||||||
#[cfg(any(target_os = "macos", target_os = "linux"))]
|
#[cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))]
|
||||||
use tinyfiledialogs;
|
use tinyfiledialogs;
|
||||||
use url::{Url, Position};
|
use url::{Url, Position};
|
||||||
use util::prefs::PREFS;
|
use util::prefs::PREFS;
|
||||||
|
@ -843,13 +843,13 @@ pub trait UIProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UIProvider for TFDProvider {
|
impl UIProvider for TFDProvider {
|
||||||
#[cfg(any(target_os = "macos", target_os = "linux"))]
|
#[cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))]
|
||||||
fn input_username_and_password(&self, prompt: &str) -> (Option<String>, Option<String>) {
|
fn input_username_and_password(&self, prompt: &str) -> (Option<String>, Option<String>) {
|
||||||
(tinyfiledialogs::input_box(prompt, "Username:", ""),
|
(tinyfiledialogs::input_box(prompt, "Username:", ""),
|
||||||
tinyfiledialogs::input_box(prompt, "Password:", ""))
|
tinyfiledialogs::input_box(prompt, "Password:", ""))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(not(any(target_os = "macos", target_os = "linux")))]
|
#[cfg(not(any(target_os = "macos", target_os = "linux", target_os = "windows")))]
|
||||||
fn input_username_and_password(&self, _prompt: &str) -> (Option<String>, Option<String>) {
|
fn input_username_and_password(&self, _prompt: &str) -> (Option<String>, Option<String>) {
|
||||||
(None, None)
|
(None, None)
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ extern crate rand;
|
||||||
extern crate rustc_serialize;
|
extern crate rustc_serialize;
|
||||||
extern crate threadpool;
|
extern crate threadpool;
|
||||||
extern crate time;
|
extern crate time;
|
||||||
#[cfg(any(target_os = "macos", target_os = "linux"))]
|
#[cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))]
|
||||||
extern crate tinyfiledialogs;
|
extern crate tinyfiledialogs;
|
||||||
extern crate unicase;
|
extern crate unicase;
|
||||||
extern crate url;
|
extern crate url;
|
||||||
|
|
|
@ -14,7 +14,7 @@ path = "lib.rs"
|
||||||
[features]
|
[features]
|
||||||
debugmozjs = ['js/debugmozjs']
|
debugmozjs = ['js/debugmozjs']
|
||||||
|
|
||||||
[target.'cfg(any(target_os = "macos", target_os = "linux"))'.dependencies]
|
[target.'cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))'.dependencies]
|
||||||
tinyfiledialogs = {git = "https://github.com/jdm/tinyfiledialogs"}
|
tinyfiledialogs = {git = "https://github.com/jdm/tinyfiledialogs"}
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|
|
@ -95,7 +95,7 @@ use task_source::networking::NetworkingTaskSource;
|
||||||
use task_source::user_interaction::UserInteractionTaskSource;
|
use task_source::user_interaction::UserInteractionTaskSource;
|
||||||
use time;
|
use time;
|
||||||
use timers::{IsInterval, OneshotTimerCallback, OneshotTimerHandle, OneshotTimers, TimerCallback};
|
use timers::{IsInterval, OneshotTimerCallback, OneshotTimerHandle, OneshotTimers, TimerCallback};
|
||||||
#[cfg(any(target_os = "macos", target_os = "linux"))]
|
#[cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))]
|
||||||
use tinyfiledialogs::{self, MessageBoxIcon};
|
use tinyfiledialogs::{self, MessageBoxIcon};
|
||||||
use url::Url;
|
use url::Url;
|
||||||
use util::geometry::{self, MAX_RECT};
|
use util::geometry::{self, MAX_RECT};
|
||||||
|
@ -361,14 +361,14 @@ impl Window {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(target_os = "macos", target_os = "linux"))]
|
#[cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))]
|
||||||
fn display_alert_dialog(message: &str) {
|
fn display_alert_dialog(message: &str) {
|
||||||
tinyfiledialogs::message_box_ok("Alert!", message, MessageBoxIcon::Warning);
|
tinyfiledialogs::message_box_ok("Alert!", message, MessageBoxIcon::Warning);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(not(any(target_os = "macos", target_os = "linux")))]
|
#[cfg(not(any(target_os = "macos", target_os = "linux", target_os = "windows")))]
|
||||||
fn display_alert_dialog(_message: &str) {
|
fn display_alert_dialog(_message: &str) {
|
||||||
// tinyfiledialogs not supported on Windows
|
// tinyfiledialogs not supported on Android
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/#atob
|
// https://html.spec.whatwg.org/multipage/#atob
|
||||||
|
|
|
@ -82,7 +82,7 @@ extern crate smallvec;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate style;
|
extern crate style;
|
||||||
extern crate time;
|
extern crate time;
|
||||||
#[cfg(any(target_os = "macos", target_os = "linux"))]
|
#[cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))]
|
||||||
extern crate tinyfiledialogs;
|
extern crate tinyfiledialogs;
|
||||||
extern crate url;
|
extern crate url;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
|
@ -186,4 +186,3 @@ pub fn init(sw_senders: SWManagerSenders) {
|
||||||
pub unsafe fn script_can_initiate_scroll(_: *mut JSContext, _: Handle<*mut JSObject>) -> bool {
|
pub unsafe fn script_can_initiate_scroll(_: *mut JSContext, _: Handle<*mut JSObject>) -> bool {
|
||||||
!opts::get().use_webrender
|
!opts::get().use_webrender
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
3
components/servo/Cargo.lock
generated
3
components/servo/Cargo.lock
generated
|
@ -2316,8 +2316,9 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tinyfiledialogs"
|
name = "tinyfiledialogs"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/jdm/tinyfiledialogs#3a30f8f95686195cb3bcecfc77ff77277a624a53"
|
source = "git+https://github.com/jdm/tinyfiledialogs#54f6aa4f579edbc726b8a764fd759a6d6ed0dd84"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"gcc 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
3
ports/cef/Cargo.lock
generated
3
ports/cef/Cargo.lock
generated
|
@ -2185,8 +2185,9 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tinyfiledialogs"
|
name = "tinyfiledialogs"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/jdm/tinyfiledialogs#3a30f8f95686195cb3bcecfc77ff77277a624a53"
|
source = "git+https://github.com/jdm/tinyfiledialogs#54f6aa4f579edbc726b8a764fd759a6d6ed0dd84"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"gcc 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue