• Stars
    star
    160
  • Rank 234,703 (Top 5 %)
  • Language
    CSS
  • License
    MIT License
  • Created about 10 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Package providing customisable toolbar for Atom

Atom Tool Bar

CI apm Chat

This package provides extensible tool bar for Atom.

Note: this package by itself adds an empty toolbar. To propagate it with icons you can install plugins.

Horizontal

Vertical

Different Sizes

Light Theme

Configuration

Position

On which edge of the editor should the tool bar appear. Possible options:

  • Top
  • Right
  • Bottom
  • Left

Icon size

  • Infinitesimal (12px)
  • Tiny (14px)
  • Very Small (16px)
  • Small: (18px)
  • Medium: (21px)
  • Big (24px)
  • Very Big (28px)
  • Huge (32px)

Visibility

  • Visible
  • Hidden

Full Width (available in Atom >= 1.7)

When on top/bottom, expand to full window width.

Use TouchBar

If your computer is equipped with a TouchBar (only Apple MacBook Pro series currently) it can display up to seven tool bar buttons there.

Plugins

Packages using tool-bar

Integrating instructions

By itself this package shows an empty tool bar. To add buttons and spacers to the tool bar, follow the instructions below.

Package.json

Make sure the following properties are part of your package.json.

"consumedServices": {
  "tool-bar": {
    "versions": {
      "^0 || ^1": "consumeToolBar"
    }
  }
}

We recommend using Atom-Package-Deps in your package for installing dependency packages like this package.

Main package file

In your main package file, add the following methods and replace your-package-name with your package name.

let toolBar;

export function consumeToolBar(getToolBar) {
  toolBar = getToolBar('your-package-name');
  // Add buttons and spacers here...
}

export function deactivate() {
  if (toolBar) {
    toolBar.removeItems();
    toolBar = null;
  }
}

Example

let toolBar;

export function consumeToolBar(getToolBar) {
  toolBar = getToolBar('your-package-name');

  // Adding button
  toolBar.addButton({
    icon: 'octoface',
    callback: 'application:about',
    tooltip: 'About Atom'
  });

  // Adding spacer
  toolBar.addSpacer();

  // Using custom icon set (Ionicons)
  const button = toolBar.addButton({
    // For Material style icons, use md- prefix instead
    icon: 'ios-gear-a',
    callback: 'application:show-settings',
    tooltip: 'Show Settings',
    iconset: 'ion'
  });

  // Disable button
  button.setEnabled(false);

  // Function with data in callback
  toolBar.addButton({
    icon: 'alert',
    callback(data) {
      alert(data);
    },
    tooltip: 'Show Alert',
    data: 'foo'
  });

  // Callback with modifiers
  toolBar.addButton({
    icon: 'octoface',
    callback: {
      '': 'application:cmd-1',      // Without modifiers is default action
      'alt': 'application:cmd-2',
      'ctrl': 'application:cmd-3',  // With function callback
      'shift'(data) {
        console.log(data);
      },
      'alt+shift': 'application:cmd-5',       // Multiple modifiers
      'alt+ctrl+shift': 'application:cmd-6'   // All modifiers
    },
    data: 'foo'
  });

  // Calling multiple callbacks at once
  toolBar.addButton({
    icon: 'octoface',
    callback: ['application:cmd-1', 'application:cmd-2']
  });  

  // Adding spacer and button at the beginning of the tool bar
  toolBar.addSpacer({priority: 10});
  toolBar.addButton({
    icon: 'octoface',
    callback: 'application:about',
    priority: 10
  });

  // Adding text button
  toolBar.addButton({
    text: 'hello',
    callback: 'application:about'
  });

  // Text buttons can also have an icon
  toolBar.addButton({
    icon: 'octoface',
    text: 'hello',
    callback: 'application:about'
  });

  // Text buttons can be html
  toolBar.addButton({
    icon: 'octoface',
    text: '<b>BIG</b> button',
    html: true,
    callback: 'application:about'
  });

  // Text buttons can be colored
  toolBar.addButton({
    icon: 'octoface',
    callback: 'application:about',
    tooltip: 'About Atom',
    color: 'red' // color of the text or icon
    background: 'black' // color of the background
  });

  // Buttons can be styled with arbitrary CSS through classes.
  // An example of how the class can be used is show below.
  toolBar.addButton({
    icon: 'octoface',
    callback: 'application:about',
    class: 'my-awesome-class'
  });
  toolBar.addButton({
    icon: 'octoface',
    callback: 'application:about',
    class: ['multiple', 'classes', 'also', 'works']
  });

  // Cleaning up when tool bar is deactivated
  toolBar.onDidDestroy(() => {
    this.toolBar = null;
    // Teardown any stateful code that depends on tool bar ...
  });
}
/*
Follow the instructions at:
https://flight-manual.atom.io/using-atom/sections/basic-customization/#style-tweaks
to define your classes.
*/
.my-awesome-class {
  background-image: url(data:image/svg+xml;base64,...);
  background-repeat: no-repeat;
  background-position: center;
}

Methods

.addButton({icon, iconset, text, html, callback, priority, tooltip, data, color, background})

The method addButton requires an object with at least the property callback. The callback must be an Atom command string, a custom callback function or an object where the keys are key modifiers (alt, ctrl or shift) and the values are commands or custom functions (see example).

The remaining properties tooltip (default there is no tooltip), text (default there is no text), html (default false), icon (default there is no icon), iconset (defaults to Octicons), data, priority (defaults 50), color, background, and class are optional.

The tooltip option may be a string or an object that is passed to Atom's TooltipManager

The return value of this method shares another method called setEnabled(enabled) to enable or disable the button.

.addSpacer({priority})

The method addSpacer has only one optional property priority (defaults 50).

.addItem({element, priority})

Adds a custom HTML element as an item to the tool-bar. Arguments are:

  • element: pass your HTML element.
  • priority: optional field specifying the position of the item.

.removeItems()

Use the method removeItems to remove the buttons added by your package. This is particular useful in your package deactivate method, but can be used at any time.

.onDidDestroy(callback)

The onDidDestroy method takes a function that will be called when the tool-bar package is destroyed. This is useful if your package needs to do cleanup when the tool-bar is deactivated but your package continues running.

Supported icon sets

Supported commands

  • tool-bar:toggle
  • tool-bar:position-top
  • tool-bar:position-right
  • tool-bar:position-bottom
  • tool-bar:position-left

Authors

Contributors

Issues and pull requests are very welcome. Feel free to write your own packages using this one. For all contributions credits are due:

More Repositories

1

sync-settings

Synchronize all your settings and packages across atom instances
JavaScript
1,139
star
2

atom-script

πŸƒ Run ( scripts | selections | source ) in Atom
JavaScript
733
star
3

markdown-preview-plus

Markdown Preview + Community Features
TypeScript
370
star
4

ide-python

Python language support for Atom-IDE :atom: 🐍
JavaScript
237
star
5

autocomplete-paths

Autocomplete Paths for Atom
JavaScript
152
star
6

ui-theme-template

A starter template for creating Atom UI themes.
Less
97
star
7

language-scala

Language support for Scala in Atom.
52
star
8

atom-ide-base

Atom IDE packages for Atom
JavaScript
45
star
9

atom-languageclient

Provide integration support for adding Language Server Protocol servers to Atom.
TypeScript
44
star
10

atom-ide-datatip

Datatips for Atom IDE
TypeScript
32
star
11

atom-community.github.io

The Atom Community website.
TypeScript
27
star
12

atom-ide-definitions

Definitions for Atom IDE
JavaScript
25
star
13

zadeh

Blazing fast library for fuzzy filtering, matching, and other fuzzy things!
C++
24
star
14

terminal

Terminal integrated with atom-community/atom
JavaScript
19
star
15

atom-ide-signature-help

Provides signature help functionality for Atom IDE
TypeScript
17
star
16

atom-ide-javascript

JavaScript support for Atom IDE
JavaScript
17
star
17

atom-ide-outline

Outline UI compatible with IDE packages
TypeScript
13
star
18

atom-ide-vue

Vue language support for Atom IDE
JavaScript
13
star
19

atom-vscode

Use VsCode extentions inside Atom! [WIP]
TypeScript
12
star
20

atom-ide-markdown-service

A service component offering markdown rendering
TypeScript
11
star
21

atom-ide-debugger

Debugger for Atom IDE
JavaScript
9
star
22

papm

Performant Atom Package Manager
TypeScript
8
star
23

atom-ide-hyperclick

Pluggable text-clicking UI for Atom.
JavaScript
7
star
24

atom-ide-diagnostics

(Deprecated Use Linter/LinterUI instead) Diagnostics functionality for Atom-IDE.
JavaScript
7
star
25

prettier-config-atomic

The Prettier configuration used in atom-ide-community
TypeScript
6
star
26

etch-solid

fast DOM library - etch with solid backend
JavaScript
6
star
27

ide-sourcekit

Swift language support for Atom-IDE. C, Objective-C, and C++ will be supported when Apple adds them.
JavaScript
5
star
28

atom-ide-code-format

Code formatting for Atom-IDE
TypeScript
4
star
29

atom-ide-template

Template project for atom packages in TypeScript
JavaScript
4
star
30

eslint-config-atomic

A collection of awesome constructive Eslint rules used in Atom community
TypeScript
4
star
31

atom-ide-console

Aggregate and display output from various sources and provide an user interface for REPL-like functionality.
JavaScript
3
star
32

rollup-plugin-atomic

Rollup plugin used in atom-ide-community
TypeScript
2
star
33

terser-config-atomic

Terser config used in Atom community
TypeScript
1
star