Update Rust deps

Updates to subclassing and templates.
This commit is contained in:
Christopher Davis 2021-01-30 15:52:32 -08:00
parent b2a15242be
commit 4561b1f4f8
5 changed files with 104 additions and 104 deletions

69
Cargo.lock generated
View file

@ -88,7 +88,7 @@ checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba"
[[package]]
name = "cairo-rs"
version = "0.13.0"
source = "git+https://github.com/gtk-rs/gtk-rs#2418edfb1dd4e511485a47ef7307620f5790ea96"
source = "git+https://github.com/gtk-rs/gtk-rs#82c6b8246ef53de16e97739a701218c5d35b779e"
dependencies = [
"bitflags",
"cairo-sys-rs",
@ -101,7 +101,7 @@ dependencies = [
[[package]]
name = "cairo-sys-rs"
version = "0.13.0"
source = "git+https://github.com/gtk-rs/gtk-rs#2418edfb1dd4e511485a47ef7307620f5790ea96"
source = "git+https://github.com/gtk-rs/gtk-rs#82c6b8246ef53de16e97739a701218c5d35b779e"
dependencies = [
"glib-sys",
"libc",
@ -348,7 +348,7 @@ dependencies = [
[[package]]
name = "gdk-pixbuf"
version = "0.13.0"
source = "git+https://github.com/gtk-rs/gtk-rs#2418edfb1dd4e511485a47ef7307620f5790ea96"
source = "git+https://github.com/gtk-rs/gtk-rs#82c6b8246ef53de16e97739a701218c5d35b779e"
dependencies = [
"gdk-pixbuf-sys",
"gio",
@ -359,7 +359,7 @@ dependencies = [
[[package]]
name = "gdk-pixbuf-sys"
version = "0.13.0"
source = "git+https://github.com/gtk-rs/gtk-rs#2418edfb1dd4e511485a47ef7307620f5790ea96"
source = "git+https://github.com/gtk-rs/gtk-rs#82c6b8246ef53de16e97739a701218c5d35b779e"
dependencies = [
"gio-sys",
"glib-sys",
@ -371,7 +371,7 @@ dependencies = [
[[package]]
name = "gdk4"
version = "0.1.0"
source = "git+https://github.com/gtk-rs/gtk4-rs#0f06879b6c4fb1870112d613e5837e8befea0d02"
source = "git+https://github.com/gtk-rs/gtk4-rs#abea0c9980bc083494eceb30dfab5eeb99a73118"
dependencies = [
"bitflags",
"cairo-rs",
@ -386,7 +386,7 @@ dependencies = [
[[package]]
name = "gdk4-sys"
version = "0.1.0"
source = "git+https://github.com/gtk-rs/gtk4-rs#0f06879b6c4fb1870112d613e5837e8befea0d02"
source = "git+https://github.com/gtk-rs/gtk4-rs#abea0c9980bc083494eceb30dfab5eeb99a73118"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
@ -420,7 +420,7 @@ dependencies = [
[[package]]
name = "gio"
version = "0.13.0"
source = "git+https://github.com/gtk-rs/gtk-rs#2418edfb1dd4e511485a47ef7307620f5790ea96"
source = "git+https://github.com/gtk-rs/gtk-rs#82c6b8246ef53de16e97739a701218c5d35b779e"
dependencies = [
"bitflags",
"futures-channel",
@ -436,7 +436,7 @@ dependencies = [
[[package]]
name = "gio-sys"
version = "0.13.0"
source = "git+https://github.com/gtk-rs/gtk-rs#2418edfb1dd4e511485a47ef7307620f5790ea96"
source = "git+https://github.com/gtk-rs/gtk-rs#82c6b8246ef53de16e97739a701218c5d35b779e"
dependencies = [
"glib-sys",
"gobject-sys",
@ -448,7 +448,7 @@ dependencies = [
[[package]]
name = "glib"
version = "0.13.0"
source = "git+https://github.com/gtk-rs/gtk-rs#2418edfb1dd4e511485a47ef7307620f5790ea96"
source = "git+https://github.com/gtk-rs/gtk-rs#82c6b8246ef53de16e97739a701218c5d35b779e"
dependencies = [
"bitflags",
"futures-channel",
@ -466,7 +466,7 @@ dependencies = [
[[package]]
name = "glib-macros"
version = "0.13.0"
source = "git+https://github.com/gtk-rs/gtk-rs#2418edfb1dd4e511485a47ef7307620f5790ea96"
source = "git+https://github.com/gtk-rs/gtk-rs#82c6b8246ef53de16e97739a701218c5d35b779e"
dependencies = [
"anyhow",
"heck",
@ -481,7 +481,7 @@ dependencies = [
[[package]]
name = "glib-sys"
version = "0.13.0"
source = "git+https://github.com/gtk-rs/gtk-rs#2418edfb1dd4e511485a47ef7307620f5790ea96"
source = "git+https://github.com/gtk-rs/gtk-rs#82c6b8246ef53de16e97739a701218c5d35b779e"
dependencies = [
"libc",
"system-deps",
@ -503,6 +503,7 @@ dependencies = [
"gtk4",
"libadwaita",
"log",
"once_cell",
"pretty_env_logger",
"zbus",
"zvariant",
@ -511,7 +512,7 @@ dependencies = [
[[package]]
name = "gobject-sys"
version = "0.13.0"
source = "git+https://github.com/gtk-rs/gtk-rs#2418edfb1dd4e511485a47ef7307620f5790ea96"
source = "git+https://github.com/gtk-rs/gtk-rs#82c6b8246ef53de16e97739a701218c5d35b779e"
dependencies = [
"glib-sys",
"libc",
@ -521,7 +522,7 @@ dependencies = [
[[package]]
name = "graphene-rs"
version = "0.13.0"
source = "git+https://github.com/gtk-rs/gtk-rs#2418edfb1dd4e511485a47ef7307620f5790ea96"
source = "git+https://github.com/gtk-rs/gtk-rs#82c6b8246ef53de16e97739a701218c5d35b779e"
dependencies = [
"glib",
"graphene-sys",
@ -531,7 +532,7 @@ dependencies = [
[[package]]
name = "graphene-sys"
version = "0.13.0"
source = "git+https://github.com/gtk-rs/gtk-rs#2418edfb1dd4e511485a47ef7307620f5790ea96"
source = "git+https://github.com/gtk-rs/gtk-rs#82c6b8246ef53de16e97739a701218c5d35b779e"
dependencies = [
"glib-sys",
"libc",
@ -542,7 +543,7 @@ dependencies = [
[[package]]
name = "gsk4"
version = "0.1.0"
source = "git+https://github.com/gtk-rs/gtk4-rs#0f06879b6c4fb1870112d613e5837e8befea0d02"
source = "git+https://github.com/gtk-rs/gtk4-rs#abea0c9980bc083494eceb30dfab5eeb99a73118"
dependencies = [
"bitflags",
"cairo-rs",
@ -557,7 +558,7 @@ dependencies = [
[[package]]
name = "gsk4-sys"
version = "0.1.0"
source = "git+https://github.com/gtk-rs/gtk4-rs#0f06879b6c4fb1870112d613e5837e8befea0d02"
source = "git+https://github.com/gtk-rs/gtk4-rs#abea0c9980bc083494eceb30dfab5eeb99a73118"
dependencies = [
"cairo-sys-rs",
"gdk4-sys",
@ -578,7 +579,7 @@ checksum = "1874c48e670519ce192093ac906c08a6dde7cb2d18b28722ef237726a39c3a63"
[[package]]
name = "gtk4"
version = "0.1.0"
source = "git+https://github.com/gtk-rs/gtk4-rs#0f06879b6c4fb1870112d613e5837e8befea0d02"
source = "git+https://github.com/gtk-rs/gtk4-rs#abea0c9980bc083494eceb30dfab5eeb99a73118"
dependencies = [
"bitflags",
"cairo-rs",
@ -600,7 +601,7 @@ dependencies = [
[[package]]
name = "gtk4-macros"
version = "0.1.0"
source = "git+https://github.com/gtk-rs/gtk4-rs#0f06879b6c4fb1870112d613e5837e8befea0d02"
source = "git+https://github.com/gtk-rs/gtk4-rs#abea0c9980bc083494eceb30dfab5eeb99a73118"
dependencies = [
"anyhow",
"heck",
@ -615,7 +616,7 @@ dependencies = [
[[package]]
name = "gtk4-sys"
version = "0.1.0"
source = "git+https://github.com/gtk-rs/gtk4-rs#0f06879b6c4fb1870112d613e5837e8befea0d02"
source = "git+https://github.com/gtk-rs/gtk4-rs#abea0c9980bc083494eceb30dfab5eeb99a73118"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
@ -725,9 +726,9 @@ dependencies = [
[[package]]
name = "libc"
version = "0.2.82"
version = "0.2.84"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89203f3fba0a3795506acaad8ebce3c80c0af93f994d5a1d7a0b1eeb23271929"
checksum = "1cca32fa0182e8c0989459524dc356b8f2b5c10f1b9eb521b7d182c03cf8c5ff"
[[package]]
name = "locale_config"
@ -742,11 +743,11 @@ dependencies = [
[[package]]
name = "log"
version = "0.4.13"
version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcf3805d4480bb5b86070dcfeb9e2cb2ebc148adb753c5cca5f884d1d65a42b2"
checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
dependencies = [
"cfg-if 0.1.10",
"cfg-if 1.0.0",
]
[[package]]
@ -796,7 +797,7 @@ checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0"
[[package]]
name = "pango"
version = "0.13.0"
source = "git+https://github.com/gtk-rs/gtk-rs#2418edfb1dd4e511485a47ef7307620f5790ea96"
source = "git+https://github.com/gtk-rs/gtk-rs#82c6b8246ef53de16e97739a701218c5d35b779e"
dependencies = [
"bitflags",
"glib",
@ -808,7 +809,7 @@ dependencies = [
[[package]]
name = "pango-sys"
version = "0.13.0"
source = "git+https://github.com/gtk-rs/gtk-rs#2418edfb1dd4e511485a47ef7307620f5790ea96"
source = "git+https://github.com/gtk-rs/gtk-rs#82c6b8246ef53de16e97739a701218c5d35b779e"
dependencies = [
"glib-sys",
"gobject-sys",
@ -982,18 +983,18 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
[[package]]
name = "serde"
version = "1.0.121"
version = "1.0.123"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6159e3c76cab06f6bc466244d43b35e77e9500cd685da87620addadc2a4c40b1"
checksum = "92d5161132722baa40d802cc70b15262b98258453e85e5d1d365c757c73869ae"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.121"
version = "1.0.123"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3fcab8778dc651bc65cfab2e4eb64996f3c912b74002fb379c94517e1f27c46"
checksum = "9391c295d64fc0abb2c556bad848f33cb8296276b1ad2677d1ae1ace4f258f31"
dependencies = [
"proc-macro2",
"quote",
@ -1043,9 +1044,9 @@ dependencies = [
[[package]]
name = "syn"
version = "1.0.59"
version = "1.0.60"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "07cb8b1b4ebf86a89ee88cbd201b022b94138c623644d035185c84d3f41b7e66"
checksum = "c700597eca8a5a762beb35753ef6b94df201c81cca676604f547495a0d7f0081"
dependencies = [
"proc-macro2",
"quote",
@ -1098,9 +1099,9 @@ dependencies = [
[[package]]
name = "thread_local"
version = "1.1.1"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "301bdd13d23c49672926be451130892d274d3ba0b410c18e00daa7990ff38d99"
checksum = "d8208a331e1cb318dd5bd76951d2b8fc48ca38a69f5f4e4af1b6a9f8c6236915"
dependencies = [
"once_cell",
]

View file

@ -7,6 +7,7 @@ edition = "2018"
anyhow = "1.0.35"
gtk-macros = "0.2.0"
log = "0.4.11"
once_cell = "1.5.2"
pretty_env_logger = "0.4.0"
zbus = "1.3.0"
zvariant = "2.3.0"

View file

@ -42,6 +42,7 @@ mod imp {
const NAME: &'static str = "IvApplication";
type Type = super::IvApplication;
type ParentType = gtk::Application;
type Interfaces = ();
type Instance = glib::subclass::simple::InstanceStruct<Self>;
type Class = glib::subclass::simple::ClassStruct<Self>;

View file

@ -29,43 +29,15 @@ use libadwaita::subclass::prelude::*;
use anyhow::Context;
use ashpd::desktop::wallpaper::{SetOn, WallpaperOptions, WallpaperProxy};
use ashpd::{BasicResponse as Basic, RequestProxy, Response, WindowIdentifier};
use once_cell::sync::Lazy;
use std::cell::{Cell, RefCell};
mod imp {
use super::*;
use glib::subclass;
static PROPERTIES: [subclass::Property; 3] = [
subclass::Property("header-visible", |header_visible| {
glib::ParamSpec::boolean(
header_visible,
"Header visible",
"Whether or not the headerbar is visible",
false,
glib::ParamFlags::READWRITE,
)
}),
subclass::Property("primary-menu-model", |primary_menu_model| {
glib::ParamSpec::object(
primary_menu_model,
"Primary Menu Model",
"The menu model for the menu button",
gio::MenuModel::static_type(),
glib::ParamFlags::READWRITE,
)
}),
subclass::Property("popover-menu-model", |popover_menu_model| {
glib::ParamSpec::object(
popover_menu_model,
"Popover Menu Model",
"The menu model for the menu button",
gio::MenuModel::static_type(),
glib::ParamFlags::READWRITE,
)
}),
];
#[derive(Debug, CompositeTemplate)]
#[template(resource = "/org/gnome/ImageViewer/gtk/image_view.ui")]
pub struct IvImageView {
#[template_child]
pub headerbar: TemplateChild<gtk::HeaderBar>,
@ -92,6 +64,7 @@ mod imp {
const NAME: &'static str = "IvImageView";
type Type = super::IvImageView;
type ParentType = libadwaita::Bin;
type Interfaces = ();
type Instance = subclass::simple::InstanceStruct<Self>;
type Class = subclass::simple::ClassStruct<Self>;
@ -116,9 +89,7 @@ mod imp {
}
fn class_init(klass: &mut Self::Class) {
klass.install_properties(&PROPERTIES);
klass.set_template_from_resource("/org/gnome/ImageViewer/gtk/image_view.ui");
Self::bind_template_children(klass);
Self::bind_template(klass);
}
fn instance_init(obj: &glib::subclass::InitializingObject<Self::Type>) {
@ -127,6 +98,65 @@ mod imp {
}
impl ObjectImpl for IvImageView {
fn properties() -> &'static [glib::ParamSpec] {
static PROPERTIES: Lazy<Vec<glib::ParamSpec>> = Lazy::new(|| {
vec![
glib::ParamSpec::boolean(
"header-visible",
"Header visible",
"Whether or not the headerbar is visible",
false,
glib::ParamFlags::READWRITE,
),
glib::ParamSpec::object(
"primary-menu-model",
"Primary Menu Model",
"The menu model for the menu button",
gio::MenuModel::static_type(),
glib::ParamFlags::READWRITE,
),
glib::ParamSpec::object(
"popover-menu-model",
"Popover Menu Model",
"The menu model for the menu button",
gio::MenuModel::static_type(),
glib::ParamFlags::READWRITE,
),
]
});
PROPERTIES.as_ref()
}
fn get_property(&self, _obj: &Self::Type, _id: usize, psec: &glib::ParamSpec) -> glib::Value {
match psec.get_name() {
"header-visible" => self.header_visible.get().to_value(),
"primary-menu-model" => self.menu_model.borrow().to_value(),
"popover-menu-model" => self.popover_menu_model.borrow().to_value(),
_ => unimplemented!(),
}
}
fn set_property(&self, _obj: &Self::Type, _id: usize, value: &glib::Value, psec: &glib::ParamSpec) {
match psec.get_name() {
"header-visible" => {
self.header_visible
.set(value.get().unwrap().unwrap_or_default());
}
"primary-menu-model" => {
let model: Option<gio::MenuModel> = value.get().unwrap();
self.menu_button.set_menu_model(model.as_ref());
*self.menu_model.borrow_mut() = model;
}
"popover-menu-model" => {
let model: Option<gio::MenuModel> = value.get().unwrap();
self.popover.set_menu_model(model.as_ref());
*self.popover_menu_model.borrow_mut() = model;
}
_ => unimplemented!(),
}
}
fn constructed(&self, obj: &Self::Type) {
self.parent_constructed(obj);
@ -141,40 +171,6 @@ mod imp {
}));
}
fn get_property(&self, _obj: &Self::Type, id: usize) -> glib::Value {
let prop = &PROPERTIES[id];
match *prop {
subclass::Property("header-visible", ..) => self.header_visible.get().to_value(),
subclass::Property("primary-menu-model", ..) => self.menu_model.borrow().to_value(),
subclass::Property("popover-menu-model", ..) => {
self.popover_menu_model.borrow().to_value()
}
_ => unimplemented!(),
}
}
fn set_property(&self, _obj: &Self::Type, id: usize, value: &glib::Value) {
let prop = &PROPERTIES[id];
match *prop {
subclass::Property("header-visible", ..) => {
self.header_visible
.set(value.get().unwrap().unwrap_or_default());
}
subclass::Property("primary-menu-model", ..) => {
let model: Option<gio::MenuModel> = value.get().unwrap();
self.menu_button.set_menu_model(model.as_ref());
*self.menu_model.borrow_mut() = model;
}
subclass::Property("popover-menu-model", ..) => {
let model: Option<gio::MenuModel> = value.get().unwrap();
self.popover.set_menu_model(model.as_ref());
*self.popover_menu_model.borrow_mut() = model;
}
_ => unimplemented!(),
}
}
}
impl WidgetImpl for IvImageView {

View file

@ -41,6 +41,7 @@ mod imp {
// For this derive macro, you need to have
// `use gtk::CompositeTemplate` in your code.
#[derive(Debug, CompositeTemplate)]
#[template(resource = "/org/gnome/ImageViewer/gtk/window.ui")]
pub struct IvWindow {
// Template children are used with the
// TemplateChild<T> wrapper, where T is the
@ -61,6 +62,7 @@ mod imp {
const NAME: &'static str = "IvWindow";
type Type = super::IvWindow;
type ParentType = libadwaita::ApplicationWindow;
type Interfaces = ();
type Instance = glib::subclass::simple::InstanceStruct<Self>;
type Class = glib::subclass::simple::ClassStruct<Self>;
@ -78,10 +80,9 @@ mod imp {
}
fn class_init(klass: &mut Self::Class) {
klass.set_template_from_resource("/org/gnome/ImageViewer/gtk/window.ui");
// bind_template_children() is a function generated by the
// bind_template() is a function generated by the
// CompositeTemplate macro to bind all children at once.
Self::bind_template_children(klass);
Self::bind_template(klass);
}
fn instance_init(obj: &glib::subclass::InitializingObject<Self::Type>) {
obj.init_template();