gio/auto/
application_command_line.rs1use crate::{File, InputStream, ffi};
6use glib::{
7 prelude::*,
8 signal::{SignalHandlerId, connect_raw},
9 translate::*,
10};
11use std::boxed::Box as Box_;
12
13glib::wrapper! {
14 #[doc(alias = "GApplicationCommandLine")]
15 pub struct ApplicationCommandLine(Object<ffi::GApplicationCommandLine, ffi::GApplicationCommandLineClass>);
16
17 match fn {
18 type_ => || ffi::g_application_command_line_get_type(),
19 }
20}
21
22impl ApplicationCommandLine {
23 pub const NONE: Option<&'static ApplicationCommandLine> = None;
24}
25
26pub trait ApplicationCommandLineExt: IsA<ApplicationCommandLine> + 'static {
27 #[doc(alias = "g_application_command_line_create_file_for_arg")]
28 fn create_file_for_arg(&self, arg: impl AsRef<std::ffi::OsStr>) -> File {
29 unsafe {
30 from_glib_full(ffi::g_application_command_line_create_file_for_arg(
31 self.as_ref().to_glib_none().0,
32 arg.as_ref().to_glib_none().0,
33 ))
34 }
35 }
36
37 #[cfg(feature = "v2_80")]
38 #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
39 #[doc(alias = "g_application_command_line_done")]
40 fn done(&self) {
41 unsafe {
42 ffi::g_application_command_line_done(self.as_ref().to_glib_none().0);
43 }
44 }
45
46 #[doc(alias = "g_application_command_line_get_arguments")]
47 #[doc(alias = "get_arguments")]
48 fn arguments(&self) -> Vec<std::ffi::OsString> {
49 unsafe {
50 let mut argc = std::mem::MaybeUninit::uninit();
51 let ret = FromGlibContainer::from_glib_full_num(
52 ffi::g_application_command_line_get_arguments(
53 self.as_ref().to_glib_none().0,
54 argc.as_mut_ptr(),
55 ),
56 argc.assume_init() as _,
57 );
58 ret
59 }
60 }
61
62 #[doc(alias = "g_application_command_line_get_cwd")]
63 #[doc(alias = "get_cwd")]
64 fn cwd(&self) -> Option<std::path::PathBuf> {
65 unsafe {
66 from_glib_none(ffi::g_application_command_line_get_cwd(
67 self.as_ref().to_glib_none().0,
68 ))
69 }
70 }
71
72 #[doc(alias = "g_application_command_line_get_environ")]
73 #[doc(alias = "get_environ")]
74 fn environ(&self) -> Vec<std::ffi::OsString> {
75 unsafe {
76 FromGlibPtrContainer::from_glib_none(ffi::g_application_command_line_get_environ(
77 self.as_ref().to_glib_none().0,
78 ))
79 }
80 }
81
82 #[doc(alias = "g_application_command_line_get_is_remote")]
83 #[doc(alias = "get_is_remote")]
84 #[doc(alias = "is-remote")]
85 fn is_remote(&self) -> bool {
86 unsafe {
87 from_glib(ffi::g_application_command_line_get_is_remote(
88 self.as_ref().to_glib_none().0,
89 ))
90 }
91 }
92
93 #[doc(alias = "g_application_command_line_get_options_dict")]
94 #[doc(alias = "get_options_dict")]
95 fn options_dict(&self) -> glib::VariantDict {
96 unsafe {
97 from_glib_none(ffi::g_application_command_line_get_options_dict(
98 self.as_ref().to_glib_none().0,
99 ))
100 }
101 }
102
103 #[doc(alias = "g_application_command_line_get_platform_data")]
104 #[doc(alias = "get_platform_data")]
105 fn platform_data(&self) -> Option<glib::Variant> {
106 unsafe {
107 from_glib_full(ffi::g_application_command_line_get_platform_data(
108 self.as_ref().to_glib_none().0,
109 ))
110 }
111 }
112
113 #[doc(alias = "g_application_command_line_get_stdin")]
114 #[doc(alias = "get_stdin")]
115 fn stdin(&self) -> Option<InputStream> {
116 unsafe {
117 from_glib_full(ffi::g_application_command_line_get_stdin(
118 self.as_ref().to_glib_none().0,
119 ))
120 }
121 }
122
123 #[doc(alias = "g_application_command_line_getenv")]
124 fn getenv(&self, name: impl AsRef<std::ffi::OsStr>) -> Option<glib::GString> {
125 unsafe {
126 from_glib_none(ffi::g_application_command_line_getenv(
127 self.as_ref().to_glib_none().0,
128 name.as_ref().to_glib_none().0,
129 ))
130 }
131 }
132
133 #[cfg(feature = "v2_80")]
139 #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
140 #[doc(alias = "g_application_command_line_print_literal")]
141 fn print_literal(&self, message: &str) {
142 unsafe {
143 ffi::g_application_command_line_print_literal(
144 self.as_ref().to_glib_none().0,
145 message.to_glib_none().0,
146 );
147 }
148 }
149
150 #[cfg(feature = "v2_80")]
156 #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
157 #[doc(alias = "g_application_command_line_printerr_literal")]
158 fn printerr_literal(&self, message: &str) {
159 unsafe {
160 ffi::g_application_command_line_printerr_literal(
161 self.as_ref().to_glib_none().0,
162 message.to_glib_none().0,
163 );
164 }
165 }
166
167 #[doc(alias = "is-remote")]
168 fn connect_is_remote_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
169 unsafe extern "C" fn notify_is_remote_trampoline<
170 P: IsA<ApplicationCommandLine>,
171 F: Fn(&P) + 'static,
172 >(
173 this: *mut ffi::GApplicationCommandLine,
174 _param_spec: glib::ffi::gpointer,
175 f: glib::ffi::gpointer,
176 ) {
177 unsafe {
178 let f: &F = &*(f as *const F);
179 f(ApplicationCommandLine::from_glib_borrow(this).unsafe_cast_ref())
180 }
181 }
182 unsafe {
183 let f: Box_<F> = Box_::new(f);
184 connect_raw(
185 self.as_ptr() as *mut _,
186 c"notify::is-remote".as_ptr(),
187 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
188 notify_is_remote_trampoline::<Self, F> as *const (),
189 )),
190 Box_::into_raw(f),
191 )
192 }
193 }
194}
195
196impl<O: IsA<ApplicationCommandLine>> ApplicationCommandLineExt for O {}