Remove text widget and add limit-width attribute to label
This commit is contained in:
parent
ca079d149d
commit
715e8e6ecc
3 changed files with 7 additions and 15 deletions
|
@ -148,12 +148,12 @@ impl EwwState {
|
||||||
&mut self,
|
&mut self,
|
||||||
window_name: &WindowName,
|
window_name: &WindowName,
|
||||||
local_env: &HashMap<VarName, AttrValue>,
|
local_env: &HashMap<VarName, AttrValue>,
|
||||||
attributes: HashMap<AttrName, AttrValue>,
|
required_attributes: HashMap<AttrName, AttrValue>,
|
||||||
set_value: F,
|
set_value: F,
|
||||||
) {
|
) {
|
||||||
let handler = StateChangeHandler {
|
let handler = StateChangeHandler {
|
||||||
func: Box::new(set_value),
|
func: Box::new(set_value),
|
||||||
unresolved_values: attributes
|
unresolved_values: required_attributes
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|(attr_name, attr_value)| (attr_name, attr_value.resolve_one_level(local_env)))
|
.map(|(attr_name, attr_value)| (attr_name, attr_value.resolve_one_level(local_env)))
|
||||||
.collect(),
|
.collect(),
|
||||||
|
|
|
@ -6,7 +6,7 @@ use super::*;
|
||||||
/// A value assigned to an attribute in a widget.
|
/// A value assigned to an attribute in a widget.
|
||||||
/// This can be a primitive String that contains any amount of variable
|
/// This can be a primitive String that contains any amount of variable
|
||||||
/// references, as would be generated by the string "foo {{var}} bar".
|
/// references, as would be generated by the string "foo {{var}} bar".
|
||||||
#[derive(Serialize, Deserialize, Clone, PartialEq, derive_more::Into, derive_more::From)]
|
#[derive(Serialize, Deserialize, Clone, PartialEq, derive_more::Into, derive_more::From, Default)]
|
||||||
pub struct AttrValue(Vec<AttrValueElement>);
|
pub struct AttrValue(Vec<AttrValueElement>);
|
||||||
|
|
||||||
impl fmt::Debug for AttrValue {
|
impl fmt::Debug for AttrValue {
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
use super::{run_command, BuilderArgs};
|
use super::{run_command, BuilderArgs};
|
||||||
use crate::{config, eww_state, resolve_block, value::AttrValue};
|
use crate::{config, eww_state, resolve_block, value::AttrValue};
|
||||||
use anyhow::*;
|
use anyhow::*;
|
||||||
|
use gdk_pixbuf;
|
||||||
use gtk::{prelude::*, ImageExt};
|
use gtk::{prelude::*, ImageExt};
|
||||||
use std::{cell::RefCell, rc::Rc};
|
use std::{cell::RefCell, rc::Rc};
|
||||||
|
|
||||||
use gdk_pixbuf;
|
|
||||||
|
|
||||||
// TODO figure out how to
|
// TODO figure out how to
|
||||||
// TODO https://developer.gnome.org/gtk3/stable/GtkFixed.html
|
// TODO https://developer.gnome.org/gtk3/stable/GtkFixed.html
|
||||||
|
|
||||||
|
@ -18,7 +17,6 @@ pub(super) fn widget_to_gtk_widget(bargs: &mut BuilderArgs) -> Result<Option<gtk
|
||||||
"image" => build_gtk_image(bargs)?.upcast(),
|
"image" => build_gtk_image(bargs)?.upcast(),
|
||||||
"button" => build_gtk_button(bargs)?.upcast(),
|
"button" => build_gtk_button(bargs)?.upcast(),
|
||||||
"label" => build_gtk_label(bargs)?.upcast(),
|
"label" => build_gtk_label(bargs)?.upcast(),
|
||||||
"text" => build_gtk_text(bargs)?.upcast(),
|
|
||||||
"literal" => build_gtk_literal(bargs)?.upcast(),
|
"literal" => build_gtk_literal(bargs)?.upcast(),
|
||||||
"input" => build_gtk_input(bargs)?.upcast(),
|
"input" => build_gtk_input(bargs)?.upcast(),
|
||||||
"calendar" => build_gtk_calendar(bargs)?.upcast(),
|
"calendar" => build_gtk_calendar(bargs)?.upcast(),
|
||||||
|
@ -270,19 +268,13 @@ fn build_gtk_label(bargs: &mut BuilderArgs) -> Result<gtk::Label> {
|
||||||
let gtk_widget = gtk::Label::new(None);
|
let gtk_widget = gtk::Label::new(None);
|
||||||
resolve_block!(bargs, gtk_widget, {
|
resolve_block!(bargs, gtk_widget, {
|
||||||
// @prop - the text to display
|
// @prop - the text to display
|
||||||
prop(text: as_string) { gtk_widget.set_text(&text) },
|
prop(text: as_string, limit_width: as_i32 = i32::MAX) {
|
||||||
|
gtk_widget.set_text(&text.chars().take(limit_width as usize).collect::<String>())
|
||||||
|
},
|
||||||
});
|
});
|
||||||
Ok(gtk_widget)
|
Ok(gtk_widget)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @widget text
|
|
||||||
fn build_gtk_text(_bargs: &mut BuilderArgs) -> Result<gtk::Box> {
|
|
||||||
let gtk_widget = gtk::Box::new(gtk::Orientation::Horizontal, 0);
|
|
||||||
gtk_widget.set_halign(gtk::Align::Center);
|
|
||||||
gtk_widget.set_homogeneous(false);
|
|
||||||
Ok(gtk_widget)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @widget literal
|
/// @widget literal
|
||||||
/// @desc a tag that allows you to render arbitrary XML.
|
/// @desc a tag that allows you to render arbitrary XML.
|
||||||
fn build_gtk_literal(bargs: &mut BuilderArgs) -> Result<gtk::Frame> {
|
fn build_gtk_literal(bargs: &mut BuilderArgs) -> Result<gtk::Frame> {
|
||||||
|
|
Loading…
Add table
Reference in a new issue