Use Hdy.Column for Base views (#174)

This commit is contained in:
Bleak Grey 2020-06-02 12:35:29 +03:00 committed by GitHub
parent c7740785fd
commit 1bf4e6eb19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 624 additions and 621 deletions

View File

@ -7,6 +7,9 @@
background: rgba (150, 150, 150, 0.2);
}
.highlight {
background: @theme_base_color;
.padded.app-view {
margin: 32px 0 32px 0;
}
.app-view:not(.padded) .preferences row {
border-radius: 0px;
}

View File

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.2 -->
<!-- Generated with glade 3.36.0 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<requires lib="libhandy" version="0.0"/>
<template class="TootleViewsBase" parent="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
@ -22,114 +23,144 @@
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
<child>
<object class="GtkStack" id="states">
<object class="HdyColumn" id="column">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="vhomogeneous">False</property>
<property name="transition_type">crossfade</property>
<property name="maximum_width">628</property>
<property name="linear_growth_width">628</property>
<child>
<object class="GtkBox" id="status">
<object class="GtkBox" id="column_view">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">center</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="orientation">vertical</property>
<property name="spacing">16</property>
<child>
<object class="GtkImage">
<property name="width_request">128</property>
<property name="height_request">128</property>
<object class="GtkStack" id="states">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="opacity">0.29999999999999999</property>
<property name="pixel_size">128</property>
<property name="icon_name">com.github.bleakgrey.tootle-symbolic</property>
<property name="icon_size">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkStack" id="status_stack">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="opacity">0.5</property>
<property name="vhomogeneous">False</property>
<property name="transition_type">crossfade</property>
<child>
<object class="GtkLabel" id="status_message_label">
<object class="GtkBox" id="status">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_markup">True</property>
<property name="valign">center</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="orientation">vertical</property>
<property name="spacing">16</property>
<child>
<object class="GtkImage">
<property name="width_request">128</property>
<property name="height_request">128</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="opacity">0.30196078431372547</property>
<property name="pixel_size">128</property>
<property name="icon_name">com.github.bleakgrey.tootle-symbolic</property>
<property name="icon_size">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkStack" id="status_stack">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="opacity">0.5019607843137255</property>
<property name="transition_type">crossfade</property>
<child>
<object class="GtkLabel" id="status_message_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_markup">True</property>
</object>
<packing>
<property name="name">message</property>
<property name="title" translatable="yes">page0</property>
</packing>
</child>
<child>
<object class="GtkSpinner" id="status_spinner">
<property name="height_request">32</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">False</property>
<property name="active">True</property>
</object>
<packing>
<property name="name">spinner</property>
<property name="title" translatable="yes">page1</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="status_button">
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="no_show_all">True</property>
<property name="halign">center</property>
<property name="relief">none</property>
<style>
<class name="flat"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="name">message</property>
<property name="title" translatable="yes">page0</property>
<property name="name">status</property>
<property name="title" translatable="yes">page1</property>
</packing>
</child>
<child>
<object class="GtkSpinner" id="status_spinner">
<property name="height_request">32</property>
<object class="GtkBox" id="content">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">False</property>
<property name="active">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkListBox" id="content_list">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<style>
<class name="preferences"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="name">spinner</property>
<property name="title" translatable="yes">page1</property>
<property name="name">content</property>
<property name="title" translatable="yes">page0</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="status_button">
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="no_show_all">True</property>
<property name="halign">center</property>
<style>
<class name="flat"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="name">status</property>
<property name="title" translatable="yes">page1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="content">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="name">content</property>
<property name="title" translatable="yes">page0</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
@ -139,6 +170,9 @@
<property name="position">1</property>
</packing>
</child>
<style>
<class name="app-view"/>
</style>
</object>
</child>
</object>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<!-- Generated with glade 3.36.0 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkPopover" id="filter_popover">
@ -97,32 +97,23 @@
<property name="width_request">400</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">8</property>
<property name="margin_right">8</property>
<property name="margin_top">8</property>
<property name="margin_bottom">8</property>
<property name="row_spacing">8</property>
<property name="column_spacing">8</property>
<child>
<object class="GtkFrame">
<object class="GtkListBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<property name="shadow_type">in</property>
<property name="selection_mode">none</property>
<property name="activate_on_single_click">False</property>
<child>
<object class="GtkListBox">
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<property name="activate_on_single_click">False</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<child>
<object class="TootleWidgetsRichLabel" id="note">
<object class="TootleWidgetsRichLabel" id="note">
<property name="visible">True</property>
<property name="wrap">True</property>
<property name="can_focus">False</property>
@ -133,14 +124,12 @@
<property name="selectable">True</property>
<property name="width_chars">25</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
<style>
<class name="preferences"/>
</style>
</object>
<packing>
<property name="left_attach">1</property>
@ -148,150 +137,46 @@
</packing>
</child>
<child>
<object class="GtkFrame">
<object class="GtkListBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<property name="shadow_type">in</property>
<property name="selection_mode">none</property>
<property name="activate_on_single_click">False</property>
<child>
<object class="GtkListBox">
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<property name="activate_on_single_click">False</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<child>
<object class="GtkListBoxRow">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<property name="margin_left">8</property>
<property name="margin_right">8</property>
<property name="margin_top">8</property>
<property name="margin_bottom">8</property>
<property name="spacing">8</property>
<child>
<object class="GtkBox">
<property name="height_request">40</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">8</property>
<property name="margin_right">8</property>
<property name="margin_top">8</property>
<property name="margin_bottom">8</property>
<property name="spacing">8</property>
<property name="hexpand">True</property>
<property name="spacing">32</property>
<child>
<object class="GtkBox">
<property name="height_request">40</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="spacing">32</property>
<child>
<object class="GtkRadioButton" id="posts_tab">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<child>
<object class="GtkLabel" id="posts_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label">0 Posts</property>
<property name="use_markup">True</property>
</object>
</child>
<style>
<class name="flat"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="following_tab">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="draw_indicator">True</property>
<property name="group">posts_tab</property>
<child>
<object class="GtkLabel" id="following_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label">0 Follows</property>
<property name="use_markup">True</property>
</object>
</child>
<style>
<class name="flat"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="followers_tab">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="draw_indicator">True</property>
<property name="group">posts_tab</property>
<child>
<object class="GtkLabel" id="followers_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label">0 Followers</property>
<property name="use_markup">True</property>
</object>
</child>
<style>
<class name="flat"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<style>
<class name="linked"/>
<class name="horizontal"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkMenuButton" id="filter_button">
<object class="GtkRadioButton" id="posts_tab">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="relief">none</property>
<property name="receives_default">False</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<property name="popover">filter_popover</property>
<child>
<object class="GtkImage">
<object class="GtkLabel" id="posts_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">view-more-symbolic</property>
<property name="label">0 Posts</property>
<property name="use_markup">True</property>
</object>
</child>
<style>
@ -299,20 +184,119 @@
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="following_tab">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="draw_indicator">True</property>
<property name="group">posts_tab</property>
<child>
<object class="GtkLabel" id="following_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label">0 Follows</property>
<property name="use_markup">True</property>
</object>
</child>
<style>
<class name="flat"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="followers_tab">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="draw_indicator">True</property>
<property name="group">posts_tab</property>
<child>
<object class="GtkLabel" id="followers_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label">0 Followers</property>
<property name="use_markup">True</property>
</object>
</child>
<style>
<class name="flat"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<style>
<class name="linked"/>
<class name="horizontal"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkMenuButton" id="filter_button">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="relief">none</property>
<property name="draw_indicator">True</property>
<property name="popover">filter_popover</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">view-more-symbolic</property>
</object>
</child>
<style>
<class name="flat"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
<style>
<class name="preferences"/>
</style>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
<style>
<class name="preferences"/>
</style>
</object>
<packing>
<property name="left_attach">1</property>
@ -320,36 +304,30 @@
</packing>
</child>
<child>
<object class="GtkFrame">
<object class="GtkListBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<property name="shadow_type">in</property>
<property name="selection_mode">none</property>
<property name="activate_on_single_click">False</property>
<child>
<object class="GtkListBox">
<object class="GtkListBoxRow">
<property name="width_request">100</property>
<property name="height_request">80</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<property name="activate_on_single_click">False</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<child>
<object class="GtkListBoxRow">
<property name="width_request">100</property>
<property name="height_request">80</property>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<property name="margin_left">8</property>
<property name="margin_right">8</property>
<property name="margin_top">8</property>
<property name="margin_bottom">8</property>
<property name="spacing">8</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">8</property>
<property name="margin_right">8</property>
<property name="margin_top">8</property>
<property name="margin_bottom">8</property>
<property name="spacing">8</property>
<child>
<object class="TootleWidgetsAvatar" id="avatar">
<object class="TootleWidgetsAvatar" id="avatar">
<property name="visible">True</property>
<property name="margin_top">8</property>
<property name="margin_bottom">8</property>
@ -357,6 +335,26 @@
<property name="margin_right">8</property>
<property name="size">128</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">center</property>
<property name="margin_top">8</property>
<property name="margin_bottom">8</property>
<property name="orientation">vertical</property>
<property name="spacing">8</property>
<child>
<object class="TootleWidgetsRichLabel" id="name">
<property name="visible">True</property>
<property name="selectable">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
@ -364,130 +362,10 @@
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">center</property>
<property name="margin_top">8</property>
<property name="margin_bottom">8</property>
<property name="orientation">vertical</property>
<property name="spacing">8</property>
<child>
<object class="TootleWidgetsRichLabel" id="name">
<object class="TootleWidgetsRichLabel" id="handle">
<property name="visible">True</property>
<property name="selectable">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="TootleWidgetsRichLabel" id="handle">
<property name="visible">True</property>
<property name="selectable">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">8</property>
<property name="margin_right">8</property>
<property name="margin_top">8</property>
<property name="margin_bottom">8</property>
<property name="spacing">8</property>
<child>
<object class="GtkLabel" id="relationship">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="actions">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">False</property>
<child>
<object class="GtkButton" id="follow_button">
<property name="label" translatable="yes">Follow</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkMenuButton" id="options_button">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="draw_indicator">True</property>
<property name="popup">options</property>
<property name="use_popover">False</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<style>
<class name="horizontal"/>
<class name="linked"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
@ -495,11 +373,98 @@
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">8</property>
<property name="margin_right">8</property>
<property name="margin_top">8</property>
<property name="margin_bottom">8</property>
<property name="spacing">8</property>
<child>
<object class="GtkLabel" id="relationship">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="actions">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">False</property>
<child>
<object class="GtkButton" id="follow_button">
<property name="label" translatable="yes">Follow</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkMenuButton" id="options_button">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="draw_indicator">True</property>
<property name="popup">options</property>
<property name="use_popover">False</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<style>
<class name="horizontal"/>
<class name="linked"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<style>
<class name="preferences"/>
</style>
</object>
<packing>
<property name="left_attach">1</property>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<!-- Generated with glade 3.36.0 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkImage" id="image2">
@ -21,188 +21,170 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkBox">
<object class="GtkGrid" id="grid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">start</property>
<property name="margin_left">8</property>
<property name="margin_right">8</property>
<property name="margin_top">8</property>
<property name="margin_bottom">8</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<property name="column_spacing">8</property>
<child>
<object class="GtkSeparator" id="separator">
<object class="GtkImage" id="header_icon">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<property name="margin_bottom">8</property>
<property name="icon_name">applications-development-symbolic</property>
<property name="icon_size">1</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="grid">
<object class="GtkBox" id="actions">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">8</property>
<property name="margin_right">8</property>
<property name="margin_top">8</property>
<property name="margin_bottom">8</property>
<property name="spacing">8</property>
<child>
<object class="GtkToggleButton" id="reblog_button">
<property name="label" translatable="yes">0</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image">reblog_icon</property>
<property name="always_show_image">True</property>
<style>
<class name="flat"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkToggleButton" id="favorite_button">
<property name="label" translatable="yes">0</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image">image2</property>
<property name="always_show_image">True</property>
<style>
<class name="flat"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="reply_button">
<property name="label" translatable="yes">0</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="image">image3</property>
<property name="always_show_image">True</property>
<style>
<class name="flat"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">4</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<property name="column_spacing">8</property>
<property name="spacing">8</property>
<child>
<object class="GtkImage" id="header_icon">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">start</property>
<property name="margin_bottom">8</property>
<property name="icon_name">applications-development-symbolic</property>
<property name="icon_size">1</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="actions">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_top">8</property>
<property name="spacing">8</property>
<child>
<object class="GtkToggleButton" id="reblog_button">
<property name="label" translatable="yes">0</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image">reblog_icon</property>
<property name="always_show_image">True</property>
<style>
<class name="flat"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkToggleButton" id="favorite_button">
<property name="label" translatable="yes">0</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image">image2</property>
<property name="always_show_image">True</property>
<style>
<class name="flat"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="reply_button">
<property name="label" translatable="yes">0</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="image">image3</property>
<property name="always_show_image">True</property>
<style>
<class name="flat"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">4</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="spacing">8</property>
<child>
<object class="TootleWidgetsRichLabel" id="handle_label">
<object class="TootleWidgetsRichLabel" id="handle_label">
<property name="visible">True</property>
<property name="label">Handle</property>
<property name="ellipsize">end</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="date_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="opacity">0.5</property>
<property name="halign">end</property>
<property name="label" translatable="yes">Yesterday</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="pin_indicator">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="icon_name">view-pin-symbolic</property>
<property name="icon_size">1</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
<property name="width">3</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRevealer" id="revealer">
<object class="GtkLabel" id="date_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="reveal_child">True</property>
<property name="opacity">0.5</property>
<property name="halign">end</property>
<property name="label" translatable="yes">Yesterday</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="pin_indicator">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="icon_name">view-pin-symbolic</property>
<property name="icon_size">1</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="GtkRevealer" id="revealer">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="reveal_child">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="TootleWidgetsRichLabel" id="revealer_content">
<object class="TootleWidgetsRichLabel" id="revealer_content">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
@ -212,59 +194,59 @@
<property name="width_chars">15</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="TootleWidgetsAttachmentBox" id="attachments">
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="TootleWidgetsAttachmentBox" id="attachments">
<property name="visible">True</property>
<property name="margin_top">8</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">3</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="TootleWidgetsAvatar" id="avatar">
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">3</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="TootleWidgetsAvatar" id="avatar">
<property name="width_request">48</property>
<property name="height_request">48</property>
<property name="valign">start</property>
<property name="visible">true</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="height">4</property>
</packing>
</child>
<child>
<object class="TootleWidgetsRichLabel" id="header_label">
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="height">4</property>
</packing>
</child>
<child>
<object class="TootleWidgetsRichLabel" id="header_label">
<property name="visible">True</property>
<property name="ellipsize">end</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="TootleWidgetsRichLabel" id="content">
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="TootleWidgetsRichLabel" id="content">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
@ -274,17 +256,10 @@
<property name="width_chars">15</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">2</property>
<property name="width">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="left_attach">1</property>
<property name="top_attach">2</property>
<property name="width">3</property>
</packing>
</child>
</object>

View File

@ -152,7 +152,7 @@ public class Tootle.Dialogs.MainWindow: Gtk.Window, ISavedWindow {
void on_zoom_level_changed () {
var css ="""
.%s {
.%s label {
font-size: %i%;
}
""".printf (ZOOM_CLASS, settings.post_text_size);

View File

@ -17,10 +17,16 @@ public class Tootle.Views.Base : Box {
[GtkChild]
protected Box view;
[GtkChild]
protected Hdy.Column column;
[GtkChild]
protected Box column_view;
[GtkChild]
protected Stack states;
[GtkChild]
protected Box content;
[GtkChild]
protected ListBox content_list;
[GtkChild]
protected Button status_button;
[GtkChild]
Stack status_stack;
@ -33,7 +39,7 @@ public class Tootle.Views.Base : Box {
public bool empty {
get {
return content.get_children ().length () <= 0;
return content_list.get_children ().length () <= 0;
}
}
@ -45,6 +51,7 @@ public class Tootle.Views.Base : Box {
on_bottom_reached ();
});
content.remove.connect (() => on_content_changed ());
content_list.remove.connect (() => on_content_changed ());
notify["status-message"].connect (() => {
status_message_label.label = @"<span size='large'>$status_message</span>";
@ -57,10 +64,13 @@ public class Tootle.Views.Base : Box {
else
on_hidden ();
});
size_allocate.connect (on_resized);
get_style_context ().add_class (Dialogs.MainWindow.ZOOM_CLASS);
}
public virtual void clear (){
content.forall (widget => {
content_list.forall (widget => {
widget.destroy ();
});
state = "status";
@ -88,4 +98,18 @@ public class Tootle.Views.Base : Box {
state = "status";
}
protected void on_resized () {
Allocation alloc;
get_allocation (out alloc);
var target_w = column.maximum_width;
var view_w = alloc.width;
var ctx = view.get_style_context ();
if (view_w <= target_w && ctx.has_class ("padded"))
ctx.remove_class ("padded");
if (view_w > target_w && !ctx.has_class ("padded"))
ctx.add_class ("padded");
}
}

View File

@ -11,9 +11,6 @@ public class Tootle.Views.ExpandedStatus : Views.Base, IAccountListener {
root_widget = append (status);
root_widget.avatar.button_press_event.connect (root_widget.on_avatar_clicked);
root_widget.get_style_context ().add_class ("card");
root_widget.get_style_context ().add_class ("highlight");
connect_account ();
}
@ -23,16 +20,17 @@ public class Tootle.Views.ExpandedStatus : Views.Base, IAccountListener {
}
private Widgets.Status prepend (API.Status status, bool to_end = false){
var widget = new Widgets.Status (status);
widget.avatar.button_press_event.connect (widget.on_avatar_clicked);
widget.revealer.reveal_child = true;
var w = new Widgets.Status (status);
w.avatar.button_press_event.connect (w.on_avatar_clicked);
w.revealer.reveal_child = true;
content.pack_start (widget, false, false, 0);
if (!to_end)
content.reorder_child (widget, 0);
if (to_end)
content_list.insert (w, -1);
else
content_list.prepend (w);
check_resize ();
return widget;
return w;
}
private Widgets.Status append (API.Status status) {
return prepend (status, true);
@ -65,6 +63,7 @@ public class Tootle.Views.ExpandedStatus : Views.Base, IAccountListener {
int x,y;
translate_coordinates (root_widget, 0, 0, out x, out y);
scrolled.vadjustment.value = (double)(y*-1); //TODO: Animate scrolling?
//content_list.select_row (root_widget);
})
.exec ();
}

View File

@ -24,7 +24,9 @@ public class Tootle.Views.Profile : Views.Timeline {
profile.notify["rs"].connect (on_rs_updated);
var builder = new Builder.from_resource (@"$(Build.RESOURCES)ui/views/profile_header.ui");
view.pack_start (builder.get_object ("grid") as Grid, false, false, 0);
var hdr = builder.get_object ("grid") as Grid;
column_view.pack_start (hdr, false, false, 0);
column_view.reorder_child (hdr, 0);
var avatar = builder.get_object ("avatar") as Widgets.Avatar;
avatar.url = profile.avatar;

View File

@ -2,9 +2,9 @@ using Gtk;
public class Tootle.Views.Search : Views.Base {
private string query = "";
private SearchBar bar;
private SearchEntry entry;
string query = "";
SearchBar bar;
SearchEntry entry;
construct {
bar = new SearchBar ();
@ -23,51 +23,53 @@ public class Tootle.Views.Search : Views.Base {
entry.icon_press.connect (() => request ());
entry.grab_focus_without_selecting ();
status_button.clicked.connect (request);
request ();
}
private void append_account (API.Account acc) {
void append_account (API.Account acc) {
var status = new API.Status.from_account (acc);
var widget = new Widgets.Status (status);
widget.button_press_event.connect (widget.on_avatar_clicked);
content.pack_start (widget, false, false, 0);
var w = new Widgets.Status (status);
w.button_press_event.connect (w.on_avatar_clicked);
content_list.insert (w, -1);
on_content_changed ();
}
private void append_status (API.Status status) {
var widget = new Widgets.Status (status);
widget.button_press_event.connect (widget.on_avatar_clicked);
content.pack_start (widget, false, false, 0);
void append_status (API.Status status) {
var w = new Widgets.Status (status);
w.button_press_event.connect (w.on_avatar_clicked);
content_list.insert (w, -1);
on_content_changed ();
}
private void append_header (string name) {
var widget = new Label (@"<span weight='bold' size='medium'>$name</span>");
widget.halign = Align.START;
widget.margin = 8;
widget.use_markup = true;
widget.show ();
content.pack_start (widget, false, false, 0);
void append_header (string name) {
var w = new Label (@"<span weight='bold' size='medium'>$name</span>");
w.halign = Align.START;
w.margin = 8;
w.use_markup = true;
w.show ();
content_list.insert (w, -1);
on_content_changed ();
}
private void append_hashtag (string name) {
void append_hashtag (string name) {
var encoded = Soup.URI.encode (name, null);
var widget = new Widgets.RichLabel (@"<a href=\"$(accounts.active.instance)/tags/$encoded\">#$name</a>");
widget.use_markup = true;
widget.halign = Align.START;
widget.margin = 6;
widget.margin_bottom = 0;
widget.show ();
content.pack_start (widget, false, false, 0);
var w = new Widgets.RichLabel (@"<a href=\"$(accounts.active.instance)/tags/$encoded\">#$name</a>");
w.use_markup = true;
w.halign = Align.START;
w.margin = 8;
w.show ();
content_list.insert (w, -1);
}
private void request () {
void request () {
query = entry.text;
if (query == "") {
clear ();
return;
}
status_message = STATUS_LOADING;
new Request.GET ("/api/v2/search")
.with_account (accounts.active)
.with_param ("resolve", "true")

View File

@ -53,9 +53,11 @@ public class Tootle.Views.Timeline : IAccountListener, IStreamListener, Views.Ba
if (w == null)
return;
content.pack_start (w, false, false, 0);
if (first)
content.reorder_child (w, 0);
content_list.prepend (w);
else
content_list.insert (w, -1);
on_content_changed ();
}

View File

@ -13,7 +13,6 @@ public class Tootle.Widgets.RichLabel : Label {
single_line_mode = false;
set_line_wrap (true);
activate_link.connect (open_link);
get_style_context ().add_class (Dialogs.MainWindow.ZOOM_CLASS);
}
public RichLabel (string text) {

View File

@ -7,8 +7,6 @@ public class Tootle.Widgets.Status : EventBox {
public API.Status status { get; construct set; }
public API.NotificationType? kind { get; construct set; }
[GtkChild]
protected Separator separator;
[GtkChild]
protected Grid grid;