tootle-linux-client/src/Dialogs/DialogToot.vala

60 lines
1.7 KiB
Vala

using Gtk;
public class Tootle.TootDialog : Gtk.Dialog {
private static TootDialog dialog;
private Gtk.TextView text;
private Gtk.Label counter;
public TootDialog (Gtk.Window? parent) {
Object (
border_width: 5,
deletable: false,
resizable: false,
title: _("Toot"),
transient_for: parent
);
var actions = get_action_area().get_parent() as Gtk.Box;
var content = get_content_area();
var close = add_button(_("Cancel"), 5) as Gtk.Button;
close.clicked.connect(() => {
this.destroy ();
});
var publish = add_button(_("Toot!"), 5) as Gtk.Button;
publish.get_style_context ().add_class (Gtk.STYLE_CLASS_SUGGESTED_ACTION);
text = new Gtk.TextView();
text.margin_start = 6;
text.margin_end = 6;
text.get_style_context ().add_class ("toot-text");
text.hexpand = true;
text.wrap_mode = Gtk.WrapMode.WORD;
text.buffer.changed.connect(update_counter);
counter = new Gtk.Label ("500");
actions.pack_start (counter, false, false, 6);
content.pack_start (text, false, false, 0);
content.set_size_request (300, 100);
}
private void update_counter(){
var len = text.buffer.text.length;
counter.label = (500 - len).to_string ();
}
public static void open(Gtk.Window? parent){
if(dialog == null){
dialog = new TootDialog (parent);
dialog.destroy.connect (() => {
dialog = null;
});
dialog.show_all ();
}
}
}