registerOption("background", $this, "optSetBackground"); $opt->registerOptionAlias("bg", "background"); $this->registerColourScheme( "plain", array( "default" => "", "value" => "", "exception" => "", "reset" => "")); $this->registerColourScheme( "dark", array( "default" => self::C_YELLOW, "value" => self::C_WHITE, "exception" => self::C_PURPLE)); $this->registerColourScheme( "light", array( "default" => self::C_BLACK, "value" => self::C_BLUE, "exception" => self::C_RED)); } /** * background colours */ public function optSetBackground($key, $value) { if (is_null($value)) { print(':set '.$key.' needs a colour-scheme, e.g. :set '.$key.'=dark'); return; } if (false == $this->applyColourScheme($value)) { print('setting colourscheme failed: colourscheme '.$value.' is unknown'); return; } } /** * get a colour for the shell * * @param string $type one of (value|exception|reset|default) * @return string a colour string or a empty string */ public function getColour($type) { return isset($this->colour[$type]) ? $this->colour[$type] : ''; } /** * apply a colour scheme to the current shell * * @param string $scheme name of the scheme * @return false if colourscheme is not known, otherwise true */ public function applyColourScheme($scheme) { if (!isset($this->colour_scheme[$scheme])) return false; $this->colour = $this->colour_scheme[$scheme]; return true; } /** * registers a colour scheme * * @param string $scheme name of the colour scheme * @param array a array of colours */ public function registerColourScheme($scheme, $colours) { if (!is_array($colours)) return; /* set a reset colour if it is not supplied from the outside */ if (!isset($colours["reset"])) $colours["reset"] = self::C_RESET; $this->colour_scheme[$scheme] = $colours; } }