Turn tabs of your choice into permanent tabs. PermaTabs can't be closed
accidentally no matter what you click (even actions like "Close other tabs"
will not affect them) and will stick around between sessions.
Ideal for keeping URLs you use often, always one tab away. Also, ideal
for picking up specific articles where you left off during a previous session.
From first installation PermaTabs includes three random sample tabs
(from a built in list) to get you started. Maybe you'll discover a useful site
you never knew about?
Adding or removing a permatab is simple - right click a site's tab,
and check/uncheck "Permanent Tab".
Must read: one of the default permatabs installed on first installation
is an affiliate URL to eBay.com. You can of course remove this and the other
sample permatabs, and create your own (which is the whole idea).
Torbutton is a 1-click way to enable or disable the use of Tor. It adds a
panel to the statusbar that says "Tor Enabled" (in green) or "Tor Disabled"
(in red). The user may click on the panel to toggle the status. If the user
(or some other extension) changes the proxy settings, the change is
automatically reflected in the statusbar.
Some users may prefer a toolbar button instead of a statusbar panel. Such a
button is included, and one adds it to the toolbar by right-clicking on the
desired toolbar, selecting "Customize...", and then dragging the Torbutton
icon onto the toolbar. There is an option in the preferences to hide the
statusbar panel (Tools->Extensions, select Torbutton, and click on
Preferences).
Newer Firefox versions have the ability to send DNS resolves through the
socks proxy, and Torbutton will make use of this feature if it is
available.
Gtk2 has a powerful, but complex MVC (Model, View, Controller) system
used to implement list and tree widgets. Gtk2::Ex::Simple::List
automates the complex setup work and allows you to treat the list model
as a more natural list of lists structure.
After creating a new Gtk2::Ex::Simple::List object with the desired
columns you may set the list data with a simple Perl array assignment.
Rows may be added or deleted with all of the normal array operations.
You can treat the data member of the Simple::List object as an array
reference, and manipulate the list data with perl's normal array
operators.
A mechanism has also been put into place allowing columns to be Perl
scalars. The scalar is converted to text through Perl's normal
mechanisms and then displayed in the list. This same mechanism can be
expanded by defining arbitrary new column types before calling the new
function.
Prima is an extensible Perl toolkit for multi-platform GUI development.
Platforms supported include Linux, Windows NT/9x/2K, OS/2 and UNIX/X11
workstations ( FreeBSD, IRIX, SunOS, Solaris and others). The toolkit
contains a rich set of standard widgets and has emphasis on 2D image
processing tasks. A Perl program using PRIMA looks and behaves identically
on X, Win32 and OS/2 PM. The toolkit includes a visual builder ( VB ) and
a graphic pod viewer utility ( podview ). The examples are installed into
perl site in Prima/examples directory.
A 'hello world' code is as simple as follows:
use Prima qw(Application Buttons);
Prima::Window-> create(
text => 'Hello world!',
size => [ 200, 200],
)-> insert( Button =>
centered => 1,
text => 'Hello world!',
onClick => sub { $::application-> close },
);
run Prima;
The purpose of keyboardcast is to allow you to send keystrokes to multiple
X windows at once. This allows you, for example, to control a number of
terminals connected to different but similar hosts for purposes of mass-
administration.
You can also select non-terminals. If you come up with a reasonable use
for this ability I'd be interested in hearing about it.
The program can select windows to send to either by matching their titles
(using a substring) or by clicking on them (in a method similar to GIMP's
screenshot feature).
The program also features the ability to spawn off multiple instances of
gnome-terminal executing a single command on multiple arguments (for example
executing 'ssh' on several hosts). The gnome-terminals are invoked with
the profile 'keyboardcast' if it exists (so, for example, your font size
can be smaller).
Class to transparently deal with the conversion between filters, wavelength,
frequency and other methods of specifying a location in the electro-magentic
spectrum.
Astro::WaveBand tries to determine the natural form of the numbers such that a
request for a summary of the object when it contains 2.2 microns would return
the filter name but would return the wavelength if it was not a standard filter.
In ambiguous cases an instrument name is required to decide what to return. In
really ambiguous cases the user can specify the unit in which to display the
numbers on stringification.
Used mainly as a way of storing a single number in a database table but using
logic to determine the number that an observer is most likely to understand.
Numerical comparison operators can be used to compare two Astro::WaveBand
objects. When checking equality, the "natural" and "instrument" methods are
used, so if two Astro::WaveBand objects return the same value from those
methods, they are considered to be equal. When checking other comparisons such
as greater than, the wavelength is used.
WavPack is a completely open audio compression format providing lossless,
high-quality lossy, and a unique hybrid compression mode. Although the
technology is loosely based on previous versions of WavPack, the new version
4 format has been designed from the ground up to offer unparalleled
performance and functionality.
In the default lossless mode WavPack acts just like a WinZip compressor for
audio files. However, unlike MP3 or WMA encoding which can affect the sound
quality, not a single bit of the original information is lost, so there's no
chance of degradation. This makes lossless mode ideal for archiving audio
material or any other situation where quality is paramount. The compression
ratio depends on the source material, but generally is between 30% and 70%
(generally lower for typical popular music and somewhat better for classical
music and other sources with greater dynamic range).
The hybrid mode provides all the advantages of lossless compression with an
additional bonus. Instead of creating a single file, this mode creates both
a relatively small, high-quality lossy file that can be used all by itself,
and a "correction" file that (when combined with the lossy file) provides
full lossless restoration. For some users this means never having to choose
between lossless and lossy compression!
JSON-GLib is a library providing serialization and deserialization support
for the JavaScript Object Notation (JSON) format described by RFC 4627. JSON is:
a lightweight data-interchange format. It is easy for humans to read and write.
It is easy for machines to parse and generate. It is based on a subset of the
JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999.
JSON is a text format that is completely language independent but uses
conventions that are familiar to programmers of the C-family of languages,
including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These
properties make JSON an ideal data-interchange language. -- From Introducing
JSON
Many high-level languages already provide native modules for parsing, generating
and manipulating JSON data streams. JSON-GLib is a C library based on GLib and
released under the terms of the GNU Lesser General Public License version 2.1.
It provides a parser and a generator GObject classes and various wrappers for
the complex data types employed by JSON, such as arrays and objects.
JSON-GLib uses GLib native data types and the generic value container GValue
for ease of development. It also provides integration with the GObject classes
for direct serialization into, and deserialization from, JSON data streams.
Method modifiers are a powerful feature from the CLOS (Common Lisp Object
System) world.
In its most basic form, a method modifier is just a method that calls
$self->SUPER::foo(@_). I for one have trouble remembering that exact
invocation, so my classes seldom re-dispatch to their base classes. Very bad!
Class::Method::Modifiers provides three modifiers: before, around, and after.
before and after are run just before and after the method they modify, but can
not really affect that original method. around is run in place of the original
method, with a hook to easily call that original method.
One clear benefit of using Class::Method::Modifiers is that you can define
multiple modifiers in a single namespace. These separate modifiers don't need
to know about each other. This makes top-down design easy. Have a base class
that provides the skeleton methods of each operation, and have plugins modify
those methods to flesh out the specifics.
In short, Class::Method::Modifiers solves the problem of making sure you call
$self->SUPER::foo(@_), and provides a cleaner interface for it.
File::NCopy::copy copies files to directories, or a single file to
another file. You can also use a reference to a file handle if you wish
when doing a file to file copy. The functionality is very similar to
cp. If the argument is a directory to directory copy and the recursive
flag is set then it is done recursively like cp -R. In fact it behaves
like cp on Unix for the most part.
If called in array context, an array of successful copies is returned,
otherwise the number of successful copies is returned. If passed a file
handle, it's difficult to make sure the file we are copying isn't the
same that we are copying to, since by opening the file in write mode it
gets pooched. To avoid this use file names instead, if at all possible,
especially for the to file. If passed a file handle, it is not closed
when copy returns, files opened by copy are closed.