mirror of
				https://github.com/Xetibo/ReSet.git
				synced 2025-11-04 01:35:20 +01:00 
			
		
		
		
	chore: Use actionrow
This commit is contained in:
		
							parent
							
								
									c5c5f6761e
								
							
						
					
					
						commit
						c4af8696a8
					
				
					 6 changed files with 81 additions and 88 deletions
				
			
		| 
						 | 
				
			
			@ -17,7 +17,6 @@ use gtk::{gio, StringObject, Widget};
 | 
			
		|||
use re_set_lib::bluetooth::bluetooth_structures::{BluetoothAdapter, BluetoothDevice};
 | 
			
		||||
use re_set_lib::signals::{BluetoothDeviceAdded, BluetoothDeviceChanged, BluetoothDeviceRemoved};
 | 
			
		||||
 | 
			
		||||
use crate::components::base::list_entry::ListEntry;
 | 
			
		||||
use crate::components::base::utils::Listeners;
 | 
			
		||||
use crate::components::bluetooth::bluetooth_box_impl;
 | 
			
		||||
use crate::components::bluetooth::bluetooth_entry::BluetoothEntry;
 | 
			
		||||
| 
						 | 
				
			
			@ -178,14 +177,13 @@ pub fn populate_conntected_bluetooth_devices(bluetooth_box: Arc<BluetoothBox>) {
 | 
			
		|||
                    let path = device.path.clone();
 | 
			
		||||
                    let connected = device.connected;
 | 
			
		||||
                    let bluetooth_entry = Arc::new(BluetoothEntry::new(&device));
 | 
			
		||||
                    let entry = Arc::new(ListEntry::new(&*bluetooth_entry));
 | 
			
		||||
                    imp.available_devices
 | 
			
		||||
                        .borrow_mut()
 | 
			
		||||
                        .insert(path, (bluetooth_entry.clone(), entry.clone(), device));
 | 
			
		||||
                        .insert(path, (bluetooth_entry.clone(), device));
 | 
			
		||||
                    if connected {
 | 
			
		||||
                        imp.reset_bluetooth_connected_devices.add(&*entry);
 | 
			
		||||
                        imp.reset_bluetooth_connected_devices.add(&*bluetooth_entry);
 | 
			
		||||
                    } else {
 | 
			
		||||
                        imp.reset_bluetooth_available_devices.add(&*entry);
 | 
			
		||||
                        imp.reset_bluetooth_available_devices.add(&*bluetooth_entry);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
| 
						 | 
				
			
			@ -239,15 +237,13 @@ pub fn start_bluetooth_listener(listeners: Arc<Listeners>, bluetooth_box: Arc<Bl
 | 
			
		|||
                    let path = ir.bluetooth_device.path.clone();
 | 
			
		||||
                    let connected = ir.bluetooth_device.connected;
 | 
			
		||||
                    let bluetooth_entry = Arc::new(BluetoothEntry::new(&ir.bluetooth_device));
 | 
			
		||||
                    let entry = Arc::new(ListEntry::new(&*bluetooth_entry));
 | 
			
		||||
                    imp.available_devices.borrow_mut().insert(
 | 
			
		||||
                        path,
 | 
			
		||||
                        (bluetooth_entry.clone(), entry.clone(), ir.bluetooth_device),
 | 
			
		||||
                    );
 | 
			
		||||
                    imp.available_devices
 | 
			
		||||
                        .borrow_mut()
 | 
			
		||||
                        .insert(path, (bluetooth_entry.clone(), ir.bluetooth_device));
 | 
			
		||||
                    if connected {
 | 
			
		||||
                        imp.reset_bluetooth_connected_devices.add(&*entry);
 | 
			
		||||
                        imp.reset_bluetooth_connected_devices.add(&*bluetooth_entry);
 | 
			
		||||
                    } else {
 | 
			
		||||
                        imp.reset_bluetooth_available_devices.add(&*entry);
 | 
			
		||||
                        imp.reset_bluetooth_available_devices.add(&*bluetooth_entry);
 | 
			
		||||
                    }
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
| 
						 | 
				
			
			@ -266,7 +262,7 @@ pub fn start_bluetooth_listener(listeners: Arc<Listeners>, bluetooth_box: Arc<Bl
 | 
			
		|||
                    let imp = bluetooth_box.imp();
 | 
			
		||||
                    let map = imp.available_devices.borrow_mut();
 | 
			
		||||
                    if let Some(list_entry) = map.get(&ir.bluetooth_device) {
 | 
			
		||||
                        imp.reset_bluetooth_connected_devices.remove(&*list_entry.1);
 | 
			
		||||
                        imp.reset_bluetooth_connected_devices.remove(&*list_entry.0);
 | 
			
		||||
                    }
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
| 
						 | 
				
			
			@ -285,16 +281,16 @@ pub fn start_bluetooth_listener(listeners: Arc<Listeners>, bluetooth_box: Arc<Bl
 | 
			
		|||
                    let imp = bluetooth_box.imp();
 | 
			
		||||
                    let map = imp.available_devices.borrow_mut();
 | 
			
		||||
                    if let Some(list_entry) = map.get(&ir.bluetooth_device.path) {
 | 
			
		||||
                        if list_entry.2.connected != ir.bluetooth_device.connected {
 | 
			
		||||
                        if list_entry.1.connected != ir.bluetooth_device.connected {
 | 
			
		||||
                            if ir.bluetooth_device.connected {
 | 
			
		||||
                                imp.reset_bluetooth_connected_devices.add(&*list_entry.1);
 | 
			
		||||
                                imp.reset_bluetooth_available_devices.remove(&*list_entry.1);
 | 
			
		||||
                                imp.reset_bluetooth_connected_devices.add(&*list_entry.0);
 | 
			
		||||
                                imp.reset_bluetooth_available_devices.remove(&*list_entry.0);
 | 
			
		||||
                            } else {
 | 
			
		||||
                                imp.reset_bluetooth_available_devices.add(&*list_entry.1);
 | 
			
		||||
                                imp.reset_bluetooth_connected_devices.remove(&*list_entry.1);
 | 
			
		||||
                                imp.reset_bluetooth_available_devices.add(&*list_entry.0);
 | 
			
		||||
                                imp.reset_bluetooth_connected_devices.remove(&*list_entry.0);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                        if list_entry.2.paired != ir.bluetooth_device.paired {
 | 
			
		||||
                        if list_entry.1.paired != ir.bluetooth_device.paired {
 | 
			
		||||
                            if ir.bluetooth_device.paired {
 | 
			
		||||
                                list_entry
 | 
			
		||||
                                    .0
 | 
			
		||||
| 
						 | 
				
			
			@ -333,7 +329,7 @@ pub fn start_bluetooth_listener(listeners: Arc<Listeners>, bluetooth_box: Arc<Bl
 | 
			
		|||
                        let imp = loop_box.imp();
 | 
			
		||||
                        let mut entries = imp.available_devices.borrow_mut();
 | 
			
		||||
                        for entry in entries.iter() {
 | 
			
		||||
                            imp.reset_bluetooth_available_devices.remove(&*entry.1 .1);
 | 
			
		||||
                            imp.reset_bluetooth_available_devices.remove(&*entry.1 .0);
 | 
			
		||||
                        }
 | 
			
		||||
                        entries.clear();
 | 
			
		||||
                        imp.reset_bluetooth_refresh_button.set_sensitive(true);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,7 +13,7 @@ use crate::components::bluetooth::bluetooth_box;
 | 
			
		|||
use crate::components::bluetooth::bluetooth_entry::BluetoothEntry;
 | 
			
		||||
 | 
			
		||||
type BluetoothMap =
 | 
			
		||||
    RefCell<HashMap<Path<'static>, (Arc<BluetoothEntry>, Arc<ListEntry>, BluetoothDevice)>>;
 | 
			
		||||
    RefCell<HashMap<Path<'static>, (Arc<BluetoothEntry>, BluetoothDevice)>>;
 | 
			
		||||
 | 
			
		||||
#[derive(Default, CompositeTemplate)]
 | 
			
		||||
#[template(resource = "/org/Xetibo/ReSet/resetBluetooth.ui")]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,9 +2,10 @@ use std::sync::Arc;
 | 
			
		|||
use std::time::Duration;
 | 
			
		||||
 | 
			
		||||
use crate::components::bluetooth::bluetooth_entry_impl;
 | 
			
		||||
use adw::glib;
 | 
			
		||||
use adw::glib::Object;
 | 
			
		||||
use adw::prelude::ActionRowExt;
 | 
			
		||||
use adw::subclass::prelude::ObjectSubclassIsExt;
 | 
			
		||||
use adw::{glib, ActionRow};
 | 
			
		||||
use dbus::blocking::Connection;
 | 
			
		||||
use dbus::{Error, Path};
 | 
			
		||||
use gtk::prelude::{ButtonExt, WidgetExt};
 | 
			
		||||
| 
						 | 
				
			
			@ -13,7 +14,7 @@ use re_set_lib::bluetooth::bluetooth_structures::BluetoothDevice;
 | 
			
		|||
 | 
			
		||||
glib::wrapper! {
 | 
			
		||||
    pub struct BluetoothEntry(ObjectSubclass<bluetooth_entry_impl::BluetoothEntry>)
 | 
			
		||||
        @extends gtk::Box, gtk::Widget,
 | 
			
		||||
        @extends ActionRow, gtk::Widget,
 | 
			
		||||
        @implements gtk::Accessible, gtk::Buildable, gtk::Actionable, gtk::ConstraintTarget;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -23,15 +24,13 @@ unsafe impl Sync for BluetoothEntry {}
 | 
			
		|||
impl BluetoothEntry {
 | 
			
		||||
    pub fn new(device: &BluetoothDevice) -> Self {
 | 
			
		||||
        let entry: BluetoothEntry = Object::builder().build();
 | 
			
		||||
        entry.set_sensitive(true);
 | 
			
		||||
        let entry_imp = entry.imp();
 | 
			
		||||
        entry_imp
 | 
			
		||||
            .reset_bluetooth_label
 | 
			
		||||
            .get()
 | 
			
		||||
            .set_text(&device.alias);
 | 
			
		||||
        entry_imp
 | 
			
		||||
            .reset_bluetooth_address
 | 
			
		||||
            .get()
 | 
			
		||||
            .set_text(&device.address);
 | 
			
		||||
        entry.set_subtitle(&device.address);
 | 
			
		||||
        if device.icon.is_empty() {
 | 
			
		||||
            entry_imp
 | 
			
		||||
                .reset_bluetooth_device_type
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,7 @@
 | 
			
		|||
use crate::components::bluetooth::bluetooth_entry;
 | 
			
		||||
use adw::subclass::action_row::ActionRowImpl;
 | 
			
		||||
use adw::subclass::preferences_row::PreferencesRowImpl;
 | 
			
		||||
use adw::ActionRow;
 | 
			
		||||
use gtk::subclass::prelude::*;
 | 
			
		||||
use gtk::{glib, Button, CompositeTemplate, Image, Label};
 | 
			
		||||
use std::cell::RefCell;
 | 
			
		||||
| 
						 | 
				
			
			@ -11,8 +14,6 @@ pub struct BluetoothEntry {
 | 
			
		|||
    #[template_child]
 | 
			
		||||
    pub reset_bluetooth_label: TemplateChild<Label>,
 | 
			
		||||
    #[template_child]
 | 
			
		||||
    pub reset_bluetooth_address: TemplateChild<Label>,
 | 
			
		||||
    #[template_child]
 | 
			
		||||
    pub reset_bluetooth_button: TemplateChild<Button>,
 | 
			
		||||
    pub device_name: RefCell<String>,
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -22,7 +23,7 @@ impl ObjectSubclass for BluetoothEntry {
 | 
			
		|||
    const ABSTRACT: bool = false;
 | 
			
		||||
    const NAME: &'static str = "resetBluetoothEntry";
 | 
			
		||||
    type Type = bluetooth_entry::BluetoothEntry;
 | 
			
		||||
    type ParentType = gtk::Box;
 | 
			
		||||
    type ParentType = ActionRow;
 | 
			
		||||
 | 
			
		||||
    fn class_init(klass: &mut Self::Class) {
 | 
			
		||||
        klass.bind_template();
 | 
			
		||||
| 
						 | 
				
			
			@ -39,7 +40,11 @@ impl ObjectImpl for BluetoothEntry {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl BoxImpl for BluetoothEntry {}
 | 
			
		||||
impl ActionRowImpl for BluetoothEntry {}
 | 
			
		||||
 | 
			
		||||
impl PreferencesRowImpl for BluetoothEntry {}
 | 
			
		||||
 | 
			
		||||
impl ListBoxRowImpl for BluetoothEntry {}
 | 
			
		||||
 | 
			
		||||
impl WidgetImpl for BluetoothEntry {}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,17 +2,17 @@
 | 
			
		|||
<!-- Created with Cambalache 0.17.0 -->
 | 
			
		||||
<interface>
 | 
			
		||||
  <requires lib="gtk" version="4.12"/>
 | 
			
		||||
  <template class="resetBluetoothEntry" parent="GtkBox">
 | 
			
		||||
    <property name="margin-start">5</property>
 | 
			
		||||
  <requires lib="libadwaita" version="1.3"/>
 | 
			
		||||
  <template class="resetBluetoothEntry" parent="AdwActionRow">
 | 
			
		||||
    <property name="child">
 | 
			
		||||
      <object class="GtkBox">
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkImage" id="reset_bluetooth_device_type">
 | 
			
		||||
            <property name="halign">start</property>
 | 
			
		||||
            <property name="icon-name">input-mouse-symbolic</property>
 | 
			
		||||
            <property name="margin-end">15</property>
 | 
			
		||||
          </object>
 | 
			
		||||
        </child>
 | 
			
		||||
    <child>
 | 
			
		||||
      <object class="GtkBox">
 | 
			
		||||
        <property name="orientation">vertical</property>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkLabel" id="reset_bluetooth_label">
 | 
			
		||||
            <property name="ellipsize">end</property>
 | 
			
		||||
| 
						 | 
				
			
			@ -27,25 +27,20 @@
 | 
			
		|||
            <property name="xalign">0.0</property>
 | 
			
		||||
          </object>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkLabel" id="reset_bluetooth_address">
 | 
			
		||||
            <property name="ellipsize">end</property>
 | 
			
		||||
            <property name="halign">start</property>
 | 
			
		||||
            <property name="label">LoremIpsum Wireless Mouse</property>
 | 
			
		||||
            <property name="margin-end">10</property>
 | 
			
		||||
            <property name="single-line-mode">True</property>
 | 
			
		||||
            <property name="valign">end</property>
 | 
			
		||||
            <property name="width-request">200</property>
 | 
			
		||||
            <property name="xalign">0.0</property>
 | 
			
		||||
          </object>
 | 
			
		||||
        </child>
 | 
			
		||||
      </object>
 | 
			
		||||
    </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkButton" id="reset_bluetooth_button">
 | 
			
		||||
            <property name="halign">end</property>
 | 
			
		||||
            <property name="has-frame">False</property>
 | 
			
		||||
        <property name="icon-name">emblem-system-symbolic</property>
 | 
			
		||||
            <property name="icon-name">user-trash-symbolic</property>
 | 
			
		||||
          </object>
 | 
			
		||||
        </child>
 | 
			
		||||
      </object>
 | 
			
		||||
    </property>
 | 
			
		||||
    <property name="focusable">True</property>
 | 
			
		||||
    <property name="hexpand">True</property>
 | 
			
		||||
    <property name="hexpand-set">True</property>
 | 
			
		||||
    <property name="margin-start">5</property>
 | 
			
		||||
    <property name="subtitle-lines">1</property>
 | 
			
		||||
    <property name="title-lines">1</property>
 | 
			
		||||
  </template>
 | 
			
		||||
</interface>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,7 @@
 | 
			
		|||
	(7,14,None,"resetInputStreamEntry.ui",None,None,None,None,None,None,None),
 | 
			
		||||
	(8,1,None,"resetAudioOutput.ui",None,None,None,None,None,None,None),
 | 
			
		||||
	(10,1,None,"resetBluetooth.ui",None,None,None,None,None,None,None),
 | 
			
		||||
	(11,2,None,"resetBluetoothEntry.ui",None,None,None,None,None,None,None),
 | 
			
		||||
	(11,32,None,"resetBluetoothEntry.ui",None,None,None,None,None,None,None),
 | 
			
		||||
	(12,11,None,"resetAudioInput.ui",None,None,None,None,None,None,None),
 | 
			
		||||
	(13,22,None,"resetOutputStreamEntry.ui",None,None,None,None,None,None,None),
 | 
			
		||||
	(14,3,None,"resetSettingBox.ui",None,None,None,None,None,None,None),
 | 
			
		||||
| 
						 | 
				
			
			@ -164,12 +164,11 @@
 | 
			
		|||
	(10,199,"GtkSwitch","reset_bluetooth_pairable_switch",197,None,None,None,1,None),
 | 
			
		||||
	(10,200,"AdwPreferencesGroup","reset_bluetooth_available_devices",179,None,None,None,-1,None),
 | 
			
		||||
	(10,201,"AdwPreferencesGroup","reset_bluetooth_connected_devices",184,None,None,None,-1,None),
 | 
			
		||||
	(11,2,"GtkBox","resetBluetoothEntry",None,None,None,None,None,None),
 | 
			
		||||
	(11,3,"GtkImage","reset_bluetooth_device_type",2,None,None,None,1,None),
 | 
			
		||||
	(11,5,"GtkButton","reset_bluetooth_button",2,None,None,None,3,None),
 | 
			
		||||
	(11,6,"GtkBox",None,2,None,None,None,2,None),
 | 
			
		||||
	(11,7,"GtkLabel","reset_bluetooth_label",6,None,None,None,None,None),
 | 
			
		||||
	(11,8,"GtkLabel","reset_bluetooth_address",6,None,None,None,1,None),
 | 
			
		||||
	(11,32,"AdwActionRow","resetBluetoothEntry",None,None,None,None,-1,None),
 | 
			
		||||
	(11,39,"GtkBox",None,32,None,None,None,-1,None),
 | 
			
		||||
	(11,40,"GtkImage","reset_bluetooth_device_type",39,None,None,None,None,None),
 | 
			
		||||
	(11,44,"GtkButton","reset_bluetooth_button",39,None,None,None,2,None),
 | 
			
		||||
	(11,45,"GtkLabel","reset_bluetooth_label",39,None,None,None,1,None),
 | 
			
		||||
	(12,11,"GtkBox","resetAudioInput",None,None,None,None,None,None),
 | 
			
		||||
	(12,12,"GtkLabel",None,11,None,None,None,None,None),
 | 
			
		||||
	(12,13,"AdwNavigationView",None,11,None,None,None,1,None),
 | 
			
		||||
| 
						 | 
				
			
			@ -602,30 +601,29 @@
 | 
			
		|||
	(10,198,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(10,198,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(10,198,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,2,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,3,"GtkImage","icon-name","input-mouse-symbolic",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,3,"GtkWidget","margin-end","15",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,5,"GtkButton","has-frame","False",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,5,"GtkButton","icon-name","emblem-system-symbolic",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,6,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,7,"GtkLabel","ellipsize","end",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,7,"GtkLabel","label","LoremIpsum Wireless Mouse",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,7,"GtkLabel","single-line-mode","True",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,7,"GtkLabel","xalign","0.0",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,7,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,7,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,7,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,7,"GtkWidget","vexpand","True",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,7,"GtkWidget","vexpand-set","True",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,7,"GtkWidget","width-request","200",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,8,"GtkLabel","ellipsize","end",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,8,"GtkLabel","label","LoremIpsum Wireless Mouse",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,8,"GtkLabel","single-line-mode","True",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,8,"GtkLabel","xalign","0.0",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,8,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,8,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,8,"GtkWidget","valign","end",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,8,"GtkWidget","width-request","200",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,32,"AdwActionRow","subtitle-lines","1",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,32,"AdwActionRow","title-lines","1",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,32,"GtkListBoxRow","child",None,None,None,None,None,39,None,None,None,None),
 | 
			
		||||
	(11,32,"GtkWidget","focusable","True",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,32,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,32,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,32,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,40,"GtkImage","icon-name","input-mouse-symbolic",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,40,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,40,"GtkWidget","margin-end","15",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,44,"GtkButton","has-frame","False",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,44,"GtkButton","icon-name","user-trash-symbolic",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,44,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,45,"GtkLabel","ellipsize","end",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,45,"GtkLabel","label","LoremIpsum Wireless Mouse",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,45,"GtkLabel","single-line-mode","True",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,45,"GtkLabel","xalign","0.0",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,45,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,45,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,45,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,45,"GtkWidget","vexpand","True",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,45,"GtkWidget","vexpand-set","True",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(11,45,"GtkWidget","width-request","200",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(12,11,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(12,11,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
	(12,12,"GtkLabel","label","Input",None,None,None,None,None,None,None,None,None),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue