Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Backports:SLE-15
scratch
scratch-2.4.1-gtk.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File scratch-2.4.1-gtk.patch of Package scratch
diff -ruN scratch-text-editor-2.4.1.orig/plugins/pastebin/pastebin_dialog.vala scratch-text-editor-2.4.1/plugins/pastebin/pastebin_dialog.vala --- scratch-text-editor-2.4.1.orig/plugins/pastebin/pastebin_dialog.vala 2017-02-20 14:37:19.000000000 +0300 +++ scratch-text-editor-2.4.1/plugins/pastebin/pastebin_dialog.vala 2018-01-24 09:55:15.314903530 +0300 @@ -18,13 +18,11 @@ END LICENSE ***/ -using Gtk; - using Scratch.Services; namespace Scratch.Dialogs { - public class PasteBinDialog : Granite.Widgets.LightWindow { + public class PasteBinDialog : Gtk.Dialog { public string[,] languages = { //if default, code, desc, scratch-equivalent @@ -227,63 +225,49 @@ {"n", "xpp", "XPP", ""}, {"n", "yaml", "YAML", ""}, {"n", "z80", "Z80 Assembler", ""}, - {"n", "zxbasic", "ZXBasic", ""} }; - - private Scratch.Services.Document doc; - - private Box content; - private Box padding; + {"n", "zxbasic", "ZXBasic", ""} + }; - private Entry name_entry; - private ComboBoxText expiry_combo; - private CheckButton private_check; - - private ComboBoxText format_combo; - private Window format_others_win; - private TreeView format_others_view; - private Gtk.ListStore format_store; - - private Button send_button; + public Scratch.Services.Document doc { get; construct; } + + private Gtk.Button send_button; + private Gtk.Entry name_entry; + private Gtk.ComboBoxText expiry_combo; + private Gtk.CheckButton private_check; + private Gtk.ComboBoxText format_combo; + private Gtk.Window format_others_win; + private Gtk.TreeView format_others_view; + private Gtk.ListStore format_store; + private Gtk.Stack stack; public PasteBinDialog (Gtk.Window? parent, Scratch.Services.Document doc) { - this.doc = doc; - - if (parent != null) - this.set_transient_for (parent); - this.title = _("Share via PasteBin"); - this.type_hint = Gdk.WindowTypeHint.DIALOG; - - create_dialog (); - - send_button.clicked.connect (send_button_clicked); - this.destroy.connect (() => { - write_settings (); - }); + Object ( + border_width: 5, + deletable: false, + doc: doc, + transient_for: parent, + title: _("Share via PasteBin") + ); } - private void create_dialog () { + construct { + name_entry = new Gtk.Entry (); - content = new Box (Gtk.Orientation.VERTICAL, 10); - padding = new Box (Gtk.Orientation.HORIZONTAL, 10); + var name_entry_l = new Gtk.Label (_("Name:")); + name_entry_l.halign = Gtk.Align.END; - name_entry = new Entry (); - name_entry.text = "Test"; - var name_entry_l = new Label (_("Name:")); - var name_entry_box = new Box (Gtk.Orientation.HORIZONTAL, 58); - name_entry_box.pack_start (name_entry_l, false, true, 0); - name_entry_box.pack_start (name_entry, true, true, 0); - - - var format_label = new Label (_("Format: ")); - format_combo = new ComboBoxText(); - var format_button = new Button.with_label (_("Others...")); - format_button.clicked.connect (format_button_clicked); + var format_label = new Gtk.Label (_("Format:")); + format_label.halign = Gtk.Align.END; + + format_combo = new Gtk.ComboBoxText (); + + var format_button = new Gtk.Button.with_label (_("Others...")); + format_button.clicked.connect (format_button_clicked); //populate combo box var sel_lang = doc.get_language_id (); for (var i=0; i < languages.length[0]; i++) { - //insert all languages that are in the scratch combo, and also those that are marked with "y" if ( (languages[i, 3] != "") || (languages[i, 0] == "y")) format_combo.append (languages[i, 1], languages[i, 2]); //if the inserted language is selected in scratch combo, select it as default @@ -294,85 +278,106 @@ if (format_combo.get_active_id() == null) format_combo.set_active_id("text"); - var format_box = new Box (Gtk.Orientation.HORIZONTAL, 28); - format_box.pack_start (format_label); - format_box.pack_start (format_combo); - format_box.pack_start (format_button); - - - expiry_combo = new ComboBoxText (); + var expiry_combo_l = new Gtk.Label (_("Expiry time:")); + expiry_combo_l.halign = Gtk.Align.END; + expiry_combo = new Gtk.ComboBoxText (); populate_expiry_combo (); - var expiry_combo_l = new Label (_("Expiry time:")); - var expiry_combo_box = new Box (Gtk.Orientation.HORIZONTAL, 28); - expiry_combo_box.pack_start (expiry_combo_l, false, true, 0); - expiry_combo_box.pack_start (expiry_combo, true, true, 0); - - private_check = new CheckButton.with_label (_("Keep this paste private")); - - send_button = new Button.with_label (_("Upload")); - - var bottom_buttons = new ButtonBox (Gtk.Orientation.HORIZONTAL); - bottom_buttons.set_layout (ButtonBoxStyle.CENTER); - bottom_buttons.set_spacing (10); - bottom_buttons.pack_end (send_button); - - content.pack_start (wrap_alignment (name_entry_box, 12, 0, 0, 0), true, true, 0); - content.pack_start (format_box, true, true, 0); - content.pack_start (expiry_combo_box, true, true, 0); - content.pack_start (private_check, true, true, 0); - content.pack_end (bottom_buttons, true, true, 12); - - padding.pack_start (content, false, true, 12); - - add (padding); + + private_check = new Gtk.CheckButton.with_label (_("Keep this paste private")); + private_check.margin_top = 12; + + var grid = new Gtk.Grid (); + grid.column_spacing = 6; + grid.row_spacing = 12; + grid.margin = 5; + grid.margin_top = 0; + grid.attach (name_entry_l, 0, 0, 1, 1); + grid.attach (name_entry, 1, 0, 1, 1); + grid.attach (format_label, 0, 1, 1, 1); + grid.attach (format_combo, 1, 1, 1, 1); + grid.attach (format_button, 2, 1, 1, 1); + grid.attach (expiry_combo_l, 0, 2, 1, 1); + grid.attach (expiry_combo, 1, 2, 1, 1); + grid.attach (private_check, 1, 3, 2, 1); + + var spinner = new Gtk.Spinner (); + spinner.active = true; + spinner.height_request = 32; + spinner.valign = Gtk.Align.CENTER; + + stack = new Gtk.Stack (); + stack.add (grid); + stack.add (spinner); + + var content_area = get_content_area () as Gtk.Box; + content_area.add (stack); + + send_button = new Gtk.Button.with_label (_("Upload")); + + var cancel_button = new Gtk.Button.with_label (_("Close")); + + var action_area = get_action_area () as Gtk.Box; + action_area.margin_top = 7; + action_area.add (cancel_button); + action_area.add (send_button); read_settings (); show_all (); - send_button.grab_focus (); - + send_button.clicked.connect (() => { + stack.visible_child = spinner; + send_button_clicked (); + }); + cancel_button.clicked.connect (() => { + destroy (); + }); + + this.destroy.connect (() => { + write_settings (); + }); } private void format_button_clicked() { - format_others_win = new Window(); + format_others_win = new Gtk.Window(); format_others_win.set_modal(true); format_others_win.set_title(_("Other formats")); format_others_win.set_default_size (250, 300); - format_others_view = new TreeView(); - format_others_view.set_headers_visible(false); - format_store = new Gtk.ListStore (2, typeof (string), typeof (string)); - format_others_view.set_model (format_store); - format_others_view.insert_column_with_attributes (-1, "Language", new CellRendererText (), "text", 0); - - TreeIter iter; - for (var i=0; i < languages.length[0]; i++) { - format_store.append (out iter); - format_store.set (iter, 0, languages[i, 2], 1, languages[i, 1]); - } - - var format_others_scroll = new ScrolledWindow(null, null); - format_others_scroll.add(format_others_view); - - var format_others_ok = new Button.from_icon_name ("dialog-ok", IconSize.BUTTON); - format_others_ok.clicked.connect (format_others_ok_clicked); - var format_others_cancel = new Button.from_icon_name ("dialog-cancel", IconSize.BUTTON); - format_others_cancel.clicked.connect (format_others_cancel_clicked); - var format_others_buttons = new ButtonBox (Orientation.HORIZONTAL); - format_others_buttons.set_layout (ButtonBoxStyle.CENTER); - format_others_buttons.pack_start (format_others_cancel); - format_others_buttons.pack_start (format_others_ok); - - var format_others_box = new Box (Gtk.Orientation.VERTICAL, 10); - format_others_box.pack_start (format_others_scroll); - format_others_box.pack_start (format_others_buttons); + format_others_view = new Gtk.TreeView(); + format_others_view.set_headers_visible(false); + format_store = new Gtk.ListStore (2, typeof (string), typeof (string)); + format_others_view.set_model (format_store); + format_others_view.insert_column_with_attributes (-1, "Language", new Gtk.CellRendererText (), "text", 0); + + Gtk.TreeIter iter; + for (var i=0; i < languages.length[0]; i++) { + format_store.append (out iter); + format_store.set (iter, 0, languages[i, 2], 1, languages[i, 1]); + } + + var format_others_scroll = new Gtk.ScrolledWindow(null, null); + format_others_scroll.add(format_others_view); + + var format_others_ok = new Gtk.Button.from_icon_name ("dialog-ok", Gtk.IconSize.BUTTON); + format_others_ok.clicked.connect (format_others_ok_clicked); + + var format_others_cancel = new Gtk.Button.from_icon_name ("dialog-cancel", Gtk.IconSize.BUTTON); + format_others_cancel.clicked.connect (format_others_cancel_clicked); + + var format_others_buttons = new Gtk.ButtonBox (Gtk.Orientation.HORIZONTAL); + format_others_buttons.set_layout (Gtk.ButtonBoxStyle.CENTER); + format_others_buttons.pack_start (format_others_cancel); + format_others_buttons.pack_start (format_others_ok); + + var format_others_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 10); + format_others_box.pack_start (format_others_scroll); + format_others_box.pack_start (format_others_buttons); format_others_win.add (format_others_box); format_others_win.show_all(); - } private void format_others_cancel_clicked() { @@ -382,7 +387,7 @@ private void format_others_ok_clicked() { var selection = format_others_view.get_selection (); - TreeIter iter; + Gtk.TreeIter iter; if (selection.get_selected (null, out iter) == true) { Value lang_name; @@ -400,19 +405,6 @@ } - private static Alignment wrap_alignment (Widget widget, int top, int right, - int bottom, int left) { - - var alignment = new Alignment (0.0f, 0.0f, 1.0f, 1.0f); - alignment.top_padding = top; - alignment.right_padding = right; - alignment.bottom_padding = bottom; - alignment.left_padding = left; - - alignment.add(widget); - return alignment; - - } private void read_settings () { @@ -435,29 +427,19 @@ private void send_button_clicked () { - content.hide (); - - // Probably your connection is too fast to not see this - var spinner = new Spinner (); - padding.pack_start (spinner, true, true, 10); - spinner.show (); - spinner.start (); + send_button.sensitive = false; string link; var submit_result = submit_paste (out link); - // Show the new view - spinner.hide (); - - var box = new Box (Gtk.Orientation.VERTICAL, 10); + var box = new Gtk.Box (Gtk.Orientation.VERTICAL, 10); + stack.add (box); if (submit_result == 0) { - //paste successfully - var link_button = new LinkButton (link); + var link_button = new Gtk.LinkButton (link); box.pack_start (link_button, false, true, 25); } else { - //paste error var error_desc = new StringBuilder(); @@ -477,15 +459,13 @@ } error_desc.append("\n" + "The text was sent"); - var err_label = new Label(error_desc.str); + var err_label = new Gtk.Label(error_desc.str); box.pack_start (err_label, false, true, 0); } - padding.pack_start (box, false, true, 12); - padding.halign = Align.CENTER; - box.valign = Align.CENTER; box.show_all (); + stack.visible_child = box; } diff -ruN scratch-text-editor-2.4.1.orig/plugins/source-tree/SourceTreePlugin.vala scratch-text-editor-2.4.1/plugins/source-tree/SourceTreePlugin.vala --- scratch-text-editor-2.4.1.orig/plugins/source-tree/SourceTreePlugin.vala 2017-02-20 14:37:19.000000000 +0300 +++ scratch-text-editor-2.4.1/plugins/source-tree/SourceTreePlugin.vala 2018-01-24 10:05:57.454077453 +0300 @@ -28,7 +28,7 @@ public File file { get; construct set; } bool loaded = false; - const string ATTRIBUTES = FileAttribute.STANDARD_NAME + "," + FileAttribute.STANDARD_TYPE + + const string ATTRIBUTES = FileAttribute.STANDARD_NAME + "," + FileAttribute.STANDARD_TYPE + "," + FileAttribute.STANDARD_ICON; const string[] IGNORED = { "pyc", "class", "pyo", "o" }; @@ -37,16 +37,16 @@ file = dir; name = dir.get_basename (); selectable = false; - + //need to add one item to make the folder appear add (new Granite.Widgets.SourceList.Item (_("Loading..."))); - + toggled.connect (() => { if (!expanded || loaded) return; - + loaded = true; - + load (); var children_tmp = new Gee.ArrayList<Granite.Widgets.SourceList.Item> (); children_tmp.add_all (children); @@ -56,21 +56,21 @@ } }); } - + public void load () { try { var enumerator = file.enumerate_children (ATTRIBUTES, FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null); FileInfo? file_info = null; - + while ((file_info = enumerator.next_file ()) != null) { var file_name = file_info.get_name (); var file_type = file_info.get_file_type (); - + if (file_type == FileType.REGULAR && !file_name.has_suffix ("~") && !file_name.has_prefix (".")) { // Ignore some kind of temporany files bool ignore = false; - for (int n = 0; n < IGNORED.length; n++) { + for (int n = 0; n < IGNORED.length; n++) { string ignored_suffix = IGNORED[n]; debug (ignored_suffix); var tmp = file_name.split ("."); @@ -97,13 +97,13 @@ public Document (File file, Icon icon) { Object (file: file, icon: icon); - + name = file.get_basename (); - + action_activated.connect (() => { if (parent == null) return; - + scratch_interface.close_document (doc); parent.remove (this); }); @@ -119,7 +119,7 @@ doc = _doc; try { activatable = Gtk.IconTheme.get_default ().lookup_by_gicon (new ThemedIcon ("window-close-symbolic"), 16, 0).load_symbolic ({1, 1, 1, 1}); - } catch (Error e) { warning (e.message); } + } catch (Error e) { warning (e.message); } } } @@ -139,7 +139,7 @@ action_activated.connect (() => { if (parent == null) return; - + parent.remove (this); }); } @@ -149,7 +149,7 @@ public class SourceTreePlugin : Peas.ExtensionBase, Peas.Activatable { Scratch.Services.Interface plugins; public Object object { owned get; construct; } - + Gtk.ToolButton? new_button = null; Gtk.ToolButton? bookmark_tool_button = null; Gtk.Notebook scratch_notebook; @@ -163,13 +163,26 @@ bool my_select = false; + bool _in_side_notebook; + bool in_side_notebook { + get { + return _in_side_notebook; + } + + set { + _in_side_notebook = value; + this.bookmark_tool_button.visible = value; + this.bookmark_tool_button.no_show_all = value; + } + } + public void activate () { plugins = (Scratch.Services.Interface) object; plugins.hook_notebook_sidebar.connect (on_hook_sidebar); plugins.hook_document.connect (on_hook_document); plugins.hook_toolbar.connect ((toolbar) => { MainWindow window = plugins.manager.window; - if (this.bookmark_tool_button != null && this.new_button != null) + if (this.bookmark_tool_button != null && this.new_button != null) return; this.new_button = window.main_actions.get_action ("NewTab").create_tool_item() as Gtk.ToolButton; this.bookmark_tool_button = new Gtk.ToolButton (new Gtk.Image.from_icon_name ("bookmark-new", Gtk.IconSize.LARGE_TOOLBAR), _("Bookmark")); @@ -179,25 +192,20 @@ toolbar.pack_start (new_button); //toolbar.insert (bookmark_tool_button, toolbar.get_item_index (toolbar.find_button) + 1); //toolbar.insert (new_button, 0); + in_side_notebook = false; }); plugins.hook_split_view.connect ((view) => { this.bookmark_tool_button.visible = ! view.is_empty (); this.bookmark_tool_button.no_show_all = view.is_empty (); view.welcome_shown.connect (() => { - this.bookmark_tool_button.visible = false; - this.bookmark_tool_button.no_show_all = true; int current_page = this.side_notebook.get_current_page (); if (this.side_notebook.get_nth_page (current_page) == this.view) { this.side_notebook.remove_page (current_page); + in_side_notebook = false; } }); - view.welcome_hidden.connect (() => { - this.bookmark_tool_button.visible = true; - this.bookmark_tool_button.no_show_all = false; - this.side_notebook.append_page (this.view, new Gtk.Label (_("Source Tree"))); - }); }); - + scratch_interface = ((Scratch.Services.Interface)object); } @@ -217,23 +225,14 @@ void on_hook_sidebar (Gtk.Notebook notebook) { if (view != null) return; + side_notebook = notebook; view = new Granite.Widgets.SourceList (); - view.set_sort_func ((a, b) => { - if (a is Folder && b is Folder) - return a.name.collate (b.name); - if (a is Folder) - return -1; - if (b is Folder) - return 1; - - return a.parent == view.root && a.name == "Bookmarks" ? 1 : a.name.collate (b.name); - }); view.get_style_context ().add_class ("sidebar"); - category_files = new Granite.Widgets.SourceList.ExpandableItem (_("Files")); - category_project = new Granite.Widgets.SourceList.ExpandableItem (_("Project")); - category_bookmarks = new Granite.Widgets.SourceList.ExpandableItem (_("Bookmarks")); + category_files = new SourceTreePluginExpandableItem (_("Files")); + category_project = new SourceTreePluginExpandableItem (_("Project")); + category_bookmarks = new SourceTreePluginExpandableItem (_("Bookmarks")); view.root.add (category_files); view.root.add (category_project); view.root.add (category_bookmarks); @@ -254,13 +253,12 @@ var doc = new_current as Document; ((Scratch.Services.Interface)object).open_file (doc.file); }); - } void on_hook_document (Scratch.Services.Document doc) { scratch_notebook = (doc.get_parent () as Gtk.Notebook); scratch_notebook.set_show_tabs (!HIDE_TOOLBAR); - + foreach (var d in category_files.children) { if ((d as Document).file == doc.file) { view.selected = d; @@ -274,6 +272,15 @@ } add_doc (doc); + + ensure_in_notebook (); + } + + void ensure_in_notebook () { + if (!in_side_notebook) { + side_notebook.append_page (this.view, new Gtk.Label (_("Source Tree"))); + in_side_notebook = true; + } } void wait_for_save (Scratch.Services.Document doc) { @@ -287,11 +294,11 @@ my_select = true; view.selected = item; my_select = false; - + var new_root = detect_project (doc.file); if (root == null || root.get_path () != new_root.get_path ()) { root = new_root; - category_project.clear (); + category_project.clear (); category_project.expand_all (); category_project.add (new Folder (root)); } @@ -327,10 +334,41 @@ } else if (dir.get_parent ().get_basename () == "src") { dir = dir.get_parent ().get_parent (); } - + return dir; } } + + internal class SourceTreePluginExpandableItem : Granite.Widgets.SourceList.ExpandableItem, Granite.Widgets.SourceListSortable { + + public SourceTreePluginExpandableItem (string name) { + base (name); + } + + public int compare (Granite.Widgets.SourceList.Item a, Granite.Widgets.SourceList.Item b) { + if (a.get_type () == b.get_type ()) { + return a.name.collate (b.name); + } else if (a is Folder ) { + return -1; + } else if (b is Folder ) { + return 1; + } else if (a is Document ) { + return -1; + } else if (b is Document ) { + return 1; + } else if (a is Bookmark ) { + return -1; + } else if (b is Bookmark ) { + return 1; + } else { + return 0; + } + } + + public bool allow_dnd_sorting () { + return false; + } + } } [ModuleInit]
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor