Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
maoschanz committed Dec 23, 2017
1 parent 6ba5ff5 commit 8d41a00
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 60 deletions.
80 changes: 58 additions & 22 deletions extension.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,32 @@

const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const St = imports.gi.St;
const Main = imports.ui.main;
const OsdWindow = imports.ui.osdWindow;
const AppDisplay = imports.ui.appDisplay;

const Overview = imports.ui.overview;

const Signals = imports.signals;

const ExtensionUtils = imports.misc.extensionUtils;
const Me = ExtensionUtils.getCurrentExtension();
const Convenience = Me.imports.convenience;

//------------------------------------------------
const Gettext = imports.gettext.domain('set-columns');
const _ = Gettext.gettext;

//-------------------------------------------------

let _settings;

function init() {
Convenience.initTranslations();
Convenience.initTranslations();
}

//------------------------------------------------
//-------------------------------------------------
/* do not edit this section */

function injectToFunction(parent, name, func) {
let origin = parent[name];
Expand All @@ -35,31 +49,53 @@ function removeInjection(object, injection, name) {

let injections=[];

//---------------------------------------------
//--------------------------------------------------------------

function enable() {
function reload() {
Main.overview.viewSelector.appDisplay._views[1].view._redisplay();

// let _folderIcons = Main.overview.viewSelector.appDisplay._views[1].view.folderIcons;
// _folderIcons.forEach(function(i){
// i._redisplay();
// });
}

//-------------------------------------------------

function setNbColumns(setting) {

let _settings = Convenience.getSettings('org.gnome.shell.extensions.move-osd-windows');
if (!injections['_init']) {
injections['_init'] = injectToFunction(AppDisplay.BaseAppView.prototype, '_init', function(){
this._grid._colLimit = setting;
});
}

let _views = Main.overview.viewSelector.appDisplay._views;
for (let i = 0; i < _views.length; i++) {
_views[i].view._grid._colLimit = setting;
}

injections['show'] = injectToFunction(OsdWindow.OsdWindow.prototype, 'show', function(){
let monitor = Main.layoutManager.monitors[this._monitorIndex];
let h_percent = _settings.get_int('horizontal');
let v_percent = _settings.get_int('vertical');
let _folderIcons = Main.overview.viewSelector.appDisplay._views[1].view.folderIcons;
_folderIcons.forEach(function(i){
i.view._grid._colLimit = setting;

this._box.translation_x = h_percent * monitor.width / 100;
this._box.translation_y = v_percent * monitor.height / 100;
});
}

//-------------------------------------------------

function enable() {
_settings = Convenience.getSettings('org.gnome.shell.extensions.set-columns');
setNbColumns( _settings.get_int('columns-max') );
reload();
}

//-------------------------------------------------

function disable() {

let arrayOSD = Main.osdWindowManager._osdWindows

for (let i = 0; i < arrayOSD.length; i++) {
arrayOSD[i]._relayout();
arrayOSD[i]._box.translation_x = 0;
}

removeInjection(OsdWindow.OsdWindow.prototype, injections, 'show');
setNbColumns( 6 );
removeInjection(AppDisplay.BaseAppView.prototype, injections, '_init');
reload();
}

//-------------------------------------------------
59 changes: 21 additions & 38 deletions prefs.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const GObject = imports.gi.GObject;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;

const Gettext = imports.gettext.domain('move-osd-windows');
const Gettext = imports.gettext.domain('set-columns');
const _ = Gettext.gettext;

const ExtensionUtils = imports.misc.extensionUtils;
Expand All @@ -18,9 +18,9 @@ function init() {

//-----------------------------------------------

const OSDSettingsWidget = new GObject.Class({
Name: 'OSD.Prefs.Widget',
GTypeName: 'OSDPrefsWidget',
const setColumnsSettingsWidget = new GObject.Class({
Name: 'setColumns.Prefs.Widget',
GTypeName: 'setColumnsPrefsWidget',
Extends: Gtk.Box,

_init: function(params) {
Expand All @@ -29,48 +29,31 @@ const OSDSettingsWidget = new GObject.Class({
this.spacing = 25;
this.fill = true;
this.set_orientation(Gtk.Orientation.VERTICAL);

this._settings = Convenience.getSettings('org.gnome.shell.extensions.move-osd-windows');

let labelMain = '<b>' + _("Modifications will be effective after reloading the extension.") + '</b>';
this.add(new Gtk.Label({ label: labelMain, use_markup: true, halign: Gtk.Align.START }));

this._settings = Convenience.getSettings('org.gnome.shell.extensions.set-columns');

let labelHorizontalPercentage = _("Horizontal position (percentage) :");
let label = _("Maximum number of columns :");

let horizontalPercentage = new Gtk.SpinButton();
horizontalPercentage.set_sensitive(true);
horizontalPercentage.set_range(-60, 60);
horizontalPercentage.set_value(0);
horizontalPercentage.set_value(this._settings.get_int('horizontal'));
horizontalPercentage.set_increments(1, 2);
let nbColumns = new Gtk.SpinButton();
nbColumns.set_sensitive(true);
nbColumns.set_range(4, 10);
nbColumns.set_value(6);
nbColumns.set_value(this._settings.get_int('columns-max'));
nbColumns.set_increments(1, 2);

horizontalPercentage.connect('value-changed', Lang.bind(this, function(w){
nbColumns.connect('value-changed', Lang.bind(this, function(w){
var value = w.get_value_as_int();
this._settings.set_int('horizontal', value);
this._settings.set_int('columns-max', value);
}));

let hBox = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL, spacing: 15 });
hBox.pack_start(new Gtk.Label({ label: labelHorizontalPercentage, use_markup: true, halign: Gtk.Align.START }), false, false, 0);
hBox.pack_end(horizontalPercentage, false, false, 0);
hBox.pack_start(new Gtk.Label({ label: label, use_markup: true, halign: Gtk.Align.START }), false, false, 0);
hBox.pack_end(nbColumns, false, false, 0);
this.add(hBox);

//-------------------------------------------------------

let labelVerticalPercentage = _("Vertical position (percentage) :");

let verticalPercentage = new Gtk.SpinButton();
verticalPercentage.set_sensitive(true);
verticalPercentage.set_range(-110, 110);
verticalPercentage.set_value(70);
verticalPercentage.set_value(this._settings.get_int('vertical'));
verticalPercentage.set_increments(1, 2);

verticalPercentage.connect('value-changed', Lang.bind(this, function(w){
var value = w.get_value_as_int();
this._settings.set_int('vertical', value);
}));

let vBox = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL, spacing: 15 });
vBox.pack_start(new Gtk.Label({ label: labelVerticalPercentage, use_markup: true, halign: Gtk.Align.START }), false, false, 0);
vBox.pack_end(verticalPercentage, false, false, 0);
this.add(vBox);
}
});

Expand All @@ -79,7 +62,7 @@ const OSDSettingsWidget = new GObject.Class({
//I guess this is like the "enable" in extension.js : something called each
//time he user try to access the settings' window
function buildPrefsWidget() {
let widget = new OSDSettingsWidget();
let widget = new setColumnsSettingsWidget();
widget.show_all();

return widget;
Expand Down

0 comments on commit 8d41a00

Please sign in to comment.