[gjs.wiki] Move wiki to doc directory
- From: Philip Chimento <pchimento src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs.wiki] Move wiki to doc directory
- Date: Thu, 19 Sep 2019 23:45:18 +0000 (UTC)
commit 551f20e4ab1903f3dde8b118cd02c70f8a4fd185
Author: Philip Chimento <philip chimento gmail com>
Date: Thu Sep 19 23:45:15 2019 +0000
Move wiki to doc directory
Modules.md | 284 +------------------------------------------------------------
1 file changed, 1 insertion(+), 283 deletions(-)
---
diff --git a/Modules.md b/Modules.md
index 38f8c39..994b70b 100644
--- a/Modules.md
+++ b/Modules.md
@@ -1,283 +1 @@
-GJS includes some built-in modules, as well as helpers for some core APIs like DBus like Variants. The
headings below are links to the JavaScript source, which are decently documented and informative of usage.
-
-## [Gio](https://gitlab.gnome.org/GNOME/gjs/blob/master/modules/overrides/Gio.js)
-
-**Import with `const Gio = imports.gi.Gio;`**
-
-The `Gio` override includes a number of utilities for DBus that will be documented further at a later date.
Below is a reasonable overview.
-
-* `Gio.DBus.session`, `Gio.DBus.system`
-
- Convenience properties that wrap `Gio.bus_get_sync()` to return a DBus connection
-* `Gio.DBusNodeInfo.new_for_xml(xmlString)`
-
- Return a new `Gio.DBusNodeInfo` for xmlString
-* `Gio.DBusInterfaceInfo.new_for_xml(xmlString)`
-
- Return a new `Gio.DBusInterfaceInfo` for the first interface node of xmlString
-* `Gio.DBusProxy.makeProxyWrapper(xmlString)`
-
- Returns a `function(busConnection, busName, objectPath, asyncCallback, cancellable)` which can be called
to return a new `Gio.DBusProxy` for the first interface node of `xmlString`. See [here][old-dbus-example] for
the original example.
-* `Gio.DBusExportedObject.wrapJSObject(Gio.DbusInterfaceInfo, jsObj)`
-
- Takes `jsObj`, an object instance implementing the interface described by `Gio.DbusInterfaceInfo`, and
returns an implementation object with these methods:
-
- * `export(busConnection, objectPath)`
- * `unexport()`
- * `flush()`
- * `emit_signal(name, variant)`
- * `emit_property_changed(name, variant)`
-
-[old-dbus-example]: https://wiki.gnome.org/Gjs/Examples/DBusClient
-
-## [GLib](https://gitlab.gnome.org/GNOME/gjs/blob/master/modules/overrides/GLib.js)
-
-**Import with `const GLib = imports.gi.GLib;`**
-
-Mostly GVariant and GBytes compatibility.
-
-* `GLib.log_structured()`: Wrapper for g_log_variant()
-* `GLib.Bytes.toArray()`: Convert a GBytes object to a ByteArray object
-* `GLib.Variant.unpack()`: Unpack a variant to a native type
-* `GLib.Variant.deep_unpack()`: Deep unpack a variant.
-
-## [GObject](https://gitlab.gnome.org/GNOME/gjs/blob/master/modules/overrides/GObject.js)
-
-**Import with `const GObject = imports.gi.GObject;`**
-
-Mostly GObject implementation (properties, signals, GType mapping). May be useful as a reference.
-
-## [Gtk](https://gitlab.gnome.org/GNOME/gjs/blob/master/modules/overrides/Gtk.js)
-
-**Import with `const Gtk = imports.gi.Gtk;`**
-
-Mostly GtkBuilder/composite template implementation. May be useful as a reference.
-
->>>
-**REMINDER:** You should specify a version prior to importing a library with multiple versions:
-
-```js
-imports.gi.versions.Gtk = "3.0";
-const Gtk = imports.gi.Gtk;
-```
->>>
-
-## Cairo
-
-**Import with `const Cairo = imports.cairo;`**
-
-Mostly API compatible with [cairo](https://www.cairographics.org/documentation/), but using camelCase
function names. There is list of constants in [cairo.js][cairo-const] and functions for each object in its
corresponding C++ file (eg. [cairo-context.cpp][cairo-func]). A simple example drawing a 32x32 red circle:
-
-```js
-imports.gi.versions.Gtk = "3.0";
-const Gtk = imports.gi.Gtk;
-const Cairo = imports.cairo;
-
-let drawingArea = new Gtk.DrawingArea({
- height_request: 32,
- width_request: 32
-});
-
-drawingArea.connect("draw", (widget, cr) => {
- // Cairo in GJS uses camelCase function names
- cr.setSourceRGB(1.0, 0.0, 0.0);
- cr.setOperator(Cairo.Operator.DEST_OVER);
- cr.arc(16, 16, 16, 0, 2*Math.PI);
- cr.fill();
- // currently when you connect to a draw signal you have to call
- // cr.$dispose() on the Cairo context or the memory will be leaked.
- cr.$dispose();
- return false;
-});
-```
-
-[cairo-const]: https://gitlab.gnome.org/GNOME/gjs/blob/master/modules/cairo.js
-[cairo-func]: https://gitlab.gnome.org/GNOME/gjs/blob/master/modules/cairo-context.cpp#L825
-
-## [Format](https://gitlab.gnome.org/GNOME/gjs/blob/master/modules/format.js)
-
-**Import with `const Format = imports.format;`**
-
-The format import is mostly obsolete, providing `vprintf()`, `printf()` and `format()`. Native [template
literals][template-literals] should be preferred now, except in few situations like Gettext (See [Bug
#50920][bug-50920]).
-
-```js
-let foo = "Pi";
-let bar = 1;
-let baz = Math.PI;
-
-// Using native template literals (Output: Pi to 2 decimal points: 3.14)
-`${foo} to ${bar*2} decimal points: ${baz.toFixed(bar*2)}`
-
-// Applying format() to the string prototype
-const Format = imports.format;
-String.prototype.format = Format.format;
-
-// Using format() (Output: Pi to 2 decimal points: 3.14)
-"%s to %d decimal points: %.2f".format(foo, bar*2, baz);
-
-// Using format() with Gettext
-_("%d:%d").format(11, 59);
-Gettext.ngettext("I have %d apple", "I have %d apples", num).format(num);
-
-```
-
-[template-literals]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
-[bug-50920]: https://savannah.gnu.org/bugs/?50920
-
-## [Gettext](https://gitlab.gnome.org/GNOME/gjs/blob/master/modules/gettext.js)
-
-**Import with `const Gettext = imports.gettext;`**
-
-Helper functions for gettext. See also [examples/gettext.js][example-gettext] for usage.
-
-[example-gettext]: https://gitlab.gnome.org/GNOME/gjs/blob/master/examples/gettext.js
-
-## [jsUnit](https://gitlab.gnome.org/GNOME/gjs/blob/master/modules/jsUnit.js)
-
-**DEPRECATED**
-
-Deprecated unit test functions. [Jasmine][jasmine-gjs] for GJS should now be preferred, as demonstrated in
the GJS [test suite][gjs-tests].
-
-[jasmine-gjs]: https://github.com/ptomato/jasmine-gjs
-[gjs-tests]: https://gitlab.gnome.org/GNOME/gjs/blob/master/installed-tests/js
-
-## [`Lang`](https://gitlab.gnome.org/GNOME/gjs/blob/master/modules/lang.js)
-
-**DEPRECATED**
-
-Lang is a mostly obsolete library, that should only be used in cases where older versions of GJS must be
supported. For example, `Lang.bind()` was necessary to bind `this` to the function context before the
availability of arrow functions:
-
-```js
-const Lang = imports.lang;
-const FnorbLib = imports.fborbLib;
-
-const MyLegacyClass = new Lang.Class({
- _init: function() {
- let fnorb = new FnorbLib.Fnorb();
- fnorb.connect('frobate', Lang.bind(this, this._onFnorbFrobate));
- },
-
- _onFnorbFrobate: function(fnorb) {
- this._updateFnorb();
- }
-});
-
-var MyNewClass = class {
- constructor() {
- let fnorb = new FnorbLib.Fnorb();
- fnorb.connect('frobate', fnorb => this._onFnorbFrobate);
- }
-
- _onFnorbFrobate(fnorb) {
- this._updateFnorb();
- }
-}
-```
-
-## [Mainloop](https://gitlab.gnome.org/GNOME/gjs/blob/master/modules/mainloop.js)
-
-**DEPRECATED**
-
-Mainloop is simply a layer of convenience and backwards-compatibility over some GLib functions (such as
[`GLib.timeout_add()`][gjs-timeoutadd] which in GJS is mapped to [`g_timeout_add_full()`][c-timeoutaddfull]).
It's use is not generally recommended anymore.
-
-[c-timeoutaddfull]: https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html#g-timeout-add-full
-[gjs-timeoutadd]: http://devdocs.baznga.org/glib20~2.50.0/glib.timeout_add
-
-## [Package](https://gitlab.gnome.org/GNOME/gjs/blob/master/modules/package.js)
-
-Infrastructure and utilities for [standalone applications](Home#standalone-applications).
-
-## [Signals](https://gitlab.gnome.org/GNOME/gjs/blob/master/modules/signals.js)
-
-**Import with `const Signals = imports.signals;`**
-
-A GObject-like signal framework for native Javascript objects.
-
-**NOTE:** Unlike [GObject signals](Mapping#signals), `this` within a signal callback will refer to the
global object (ie. `window`).
-
-```js
-const Signals = imports.signals;
-
-var MyJSClass = class {
- testSignalEmission () {
- this.emit("exampleSignal", "stringArg", 42);
- }
-}
-Signals.addSignalMethods(MyJSClass.prototype);
-
-let obj = new MyJSObject();
-
-// Connect and disconnect like standard GObject signals
-let handlerId = obj.connect("exampleSignal", (obj, stringArg, intArg) => {
- // Remember 'this' === 'window'
-});
-obj.disconnect(handlerId);
-
-// A convenience function not in GObject
-obj.disconnectAll();
-```
-
-## [System](https://gitlab.gnome.org/GNOME/gjs/blob/master/modules/system.cpp)
-
-**Import with `const System = imports.system;`**
-
-The System module offers a number of useful functions and properties for debugging and shell interaction
(eg. ARGV):
-
- * `addressOf(object)`
-
- Return the memory address of any object as a string in hexadecimal, e.g. `0xb4f170f0`.
- Caution, don't use this as a unique identifier!
- JavaScript's garbage collector can move objects around in memory, or deduplicate identical objects, so
this value may change during the execution of a program.
-
- * `refcount(gobject)`
-
- Return the reference count of any GObject-derived type (almost any class from GTK, Clutter, GLib, Gio,
etc.). When an object's reference count is zero, it is cleaned up and erased from memory.
-
- * `breakpoint()`
-
- This is the real gem of the System module! It allows just the tiniest amount of decent debugging
practice in GJS. Put `System.breakpoint()` in your code and run it under GDB like so:
-
- ```
- gdb --args gjs my_program.js
- ```
-
- When GJS reaches the breakpoint, it will stop executing and return you to the GDB prompt, where you can
examine the stack or other things, or type `cont` to continue running. Note that if you run the program
outside of GDB, it will abort at the breakpoint, so make sure to remove the breakpoint when you're done
debugging.
-
- * `gc()`
-
- Run the garbage collector.
-
- * `exit(error_code)`
-
- This works the same as C's `exit()` function; exits the program, passing a certain error code to the
shell. The shell expects the error code to be zero if there was no error, or non-zero (any value you please)
to indicate an error. This value is used by other tools such as `make`; if `make` calls a program that
returns a non-zero error code, then `make` aborts the build.
-
- * `version`
-
- This property contains version information about GJS.
-
- * `programInvocationName`
-
- This property contains the name of the script as it was invoked from the command line. In C and other
languages, this information is contained in the first element of the platform's equivalent of `argv`, but
GJS's `ARGV` only contains the subsequent command-line arguments, so `ARGV[0]` in GJS is the same as
`argv[1]` in C.
-
- For example, passing ARGV to a `Gio.Application`/`Gtk.Application` (See also:
- [examples/gtk-application.js][example-application]):
-
- ```js
- imports.gi.versions.Gtk = "3.0";
- const Gtk = imports.gi.Gtk;
- const System = imports.system;
-
- let myApp = new Gtk.Application();
- myApp.connect("activate", () => log("activated"));
- myApp.run([System.programInvocationName].concat(ARGV));
- ```
-
-[example-application]: https://gitlab.gnome.org/GNOME/gjs/blob/master/examples/gtk-application.js
-
-## [Tweener](https://gitlab.gnome.org/GNOME/gjs/blob/master/modules/tweener/)
-
-**Import with `const Tweener = imports.tweener.tweener;`**
-
-Built-in version of the well-known [Tweener][tweener-www] animation/property transition library.
-
-[tweener-www]: http://hosted.zeh.com.br/tweener/docs/
\ No newline at end of file
+Since the GitLab wiki requires developer permissions to edit, we have moved the wiki pages to the `doc/`
directory where anyone can edit them by submitting a merge request. This page can now be found
[here](https://gitlab.gnome.org/GNOME/gjs/blob/master/doc/Modules.md).
\ No newline at end of file
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]