news download themes documentation links










Toolbar Class Reference

#include <Toolbar.hh>

Inheritance diagram for Toolbar:

FbTk::EventHandler List of all members.

Public Types

enum  Placement {
  TOPLEFT = 1, BOTTOMLEFT, TOPCENTER, BOTTOMCENTER,
  TOPRIGHT, BOTTOMRIGHT, LEFTCENTER, LEFTBOTTOM,
  LEFTTOP, RIGHTCENTER, RIGHTBOTTOM, RIGHTTOP
}
 Toolbar placement on the screen.


Public Member Functions

 Toolbar (BScreen &screen, FbTk::XLayer &layer, size_t width=200)
 Create a toolbar on the screen with specific width.

void raise ()
void lower ()
void updateVisibleState ()
void toggleHidden ()
void moveToLayer (int layernum)
void saveOnHead (int head)
void edit ()
 enter edit mode on workspace label

void reconfigure ()
void setPlacement (Placement where)
void update (FbTk::Subject *subj)
FbTk::XLayerItem & layerItem ()
const FbTk::Menumenu () const
FbTk::Menumenu ()
FbTk::MenuplacementMenu ()
const FbTk::MenuplacementMenu () const
FbTk::Menulayermenu ()
const FbTk::Menulayermenu () const
bool isHidden () const
 are we hidden?

bool doAutoHide () const
 do we auto hide the toolbar?

const FbTk::FbWindowwindow () const
 X window of the toolbar.

BScreenscreen ()
const BScreenscreen () const
unsigned int width () const
unsigned int height () const
unsigned int exposedHeight () const
int x () const
int y () const
Placement placement () const
const ToolbarThemetheme () const
 pointer to iconbar if it got one, else 0

ToolbarThemetheme ()
bool isVertical () const
int getOnHead () const
eventhandlers
void buttonPressEvent (XButtonEvent &be)
void buttonReleaseEvent (XButtonEvent &be)
void enterNotifyEvent (XCrossingEvent &ce)
void leaveNotifyEvent (XCrossingEvent &ce)
void exposeEvent (XExposeEvent &ee)
void handleEvent (XEvent &event)

Detailed Description

The toolbar. Handles iconbar, workspace name view and clock view

Definition at line 76 of file fluxbox.cc.


Member Function Documentation

void Toolbar::handleEvent XEvent &  event  )  [virtual]
 

Events that don't have an specific event function

Reimplemented from FbTk::EventHandler.

Definition at line 554 of file Toolbar.cc.

References FbTk::FbWindow::window(), and window().

00554                                        {
00555     if (event.type == ConfigureNotify &&
00556         event.xconfigure.window != window().window())
00557             rearrangeItems();
00558 }

void Toolbar::setPlacement Toolbar::Placement  where  ) 
 

! TODO: change this

Definition at line 567 of file Toolbar.cc.

References ToolbarTheme::bevelWidth(), ToolbarTheme::border(), ToolbarTheme::height(), ToolFactory::maxFontHeight(), theme(), BorderTheme::width(), and BScreen::width().

00567                                                  {
00568     // disable vertical toolbar
00569     switch (where) {
00570     case LEFTTOP:
00571     case LEFTCENTER:
00572     case LEFTBOTTOM:
00573     case RIGHTTOP:
00574     case RIGHTCENTER:
00575     case RIGHTBOTTOM:
00576         where = BOTTOMCENTER;
00577         break;
00578     default:
00579         break;
00580     }
00581 
00582     *m_rc_placement = where;
00583     int head_x = 0,
00584         head_y = 0,
00585         head_w = screen().width(),
00586         head_h = screen().height();
00587 
00588     if (screen().hasXinerama()) {
00589         int head = *m_rc_on_head;
00590         head_x = screen().getHeadX(head);
00591         head_y = screen().getHeadY(head);
00592         head_w = screen().getHeadWidth(head);
00593         head_h = screen().getHeadHeight(head);
00594     }
00595 
00596     frame.width = head_w * (*m_rc_width_percent) / 100;
00598     // max height of each toolbar items font...
00599     unsigned int max_height = m_tool_factory.maxFontHeight();
00600 
00601     if (theme().height() > 0)
00602         max_height = theme().height();
00603 
00604     if (*m_rc_height > 0 && *m_rc_height < 100)
00605         max_height = *m_rc_height;
00606 
00607     frame.height = max_height;
00608 
00609     frame.height += 2;
00610     frame.height += (frame.bevel_w * 2);
00611 
00612     int bevel_width = theme().bevelWidth();
00613     int border_width = theme().border().width();
00614 
00615     // should we flipp sizes?
00616     if (isVertical()) {
00617         frame.width = frame.height;
00618         frame.height = head_h * (*m_rc_width_percent) / 100;
00619 
00620     } // else horizontal toolbar
00621 
00622 
00623     // So we get at least one pixel visible in hidden mode
00624     if (bevel_width <= border_width)
00625         bevel_width = border_width + 1;
00626 
00627     switch (where) {
00628     case TOPLEFT:
00629         frame.x = head_x;
00630         frame.y = head_y;
00631         frame.x_hidden = head_x;
00632         frame.y_hidden = head_y + bevel_width - border_width - frame.height;
00633         if (m_shape.get())
00634             m_shape->setPlaces(Shape::BOTTOMRIGHT | Shape::BOTTOMLEFT);
00635         break;
00636 
00637     case BOTTOMLEFT:
00638         frame.x = head_x;
00639         frame.y = head_y + head_h - frame.height - border_width*2;
00640         frame.x_hidden = head_x;
00641         frame.y_hidden = head_y + head_h - bevel_width - border_width;
00642         if (m_shape.get())
00643             m_shape->setPlaces(Shape::TOPRIGHT | Shape::TOPLEFT);
00644         break;
00645 
00646     case TOPCENTER:
00647         frame.x = head_x + (head_w - frame.width) / 2;
00648         frame.y = head_y;
00649         frame.x_hidden = frame.x;
00650         frame.y_hidden = head_y + bevel_width - border_width - frame.height;
00651         if (m_shape.get())
00652             m_shape->setPlaces(Shape::BOTTOMRIGHT | Shape::BOTTOMLEFT);
00653         break;
00654     case TOPRIGHT:
00655         frame.x = head_x + head_w - frame.width - border_width*2;
00656         frame.y = head_y;
00657         frame.x_hidden = frame.x;
00658         if (m_shape.get())
00659             m_shape->setPlaces(Shape::BOTTOMRIGHT | Shape::BOTTOMLEFT);
00660         break;
00661 
00662     case BOTTOMRIGHT:
00663         frame.x = head_x + head_w - frame.width - border_width*2;
00664         frame.y = head_y + head_h - frame.height - border_width*2;
00665         frame.x_hidden = frame.x;
00666         frame.y_hidden = head_y + head_h - bevel_width - border_width;
00667         if (m_shape.get())
00668             m_shape->setPlaces(Shape::TOPRIGHT | Shape::TOPLEFT);
00669         break;
00670 
00671     case BOTTOMCENTER: // default is BOTTOMCENTER
00672     default:
00673         frame.x = head_x + (head_w - frame.width) / 2;
00674         frame.y = head_y + head_h - frame.height - border_width*2;
00675         frame.x_hidden = frame.x;
00676         frame.y_hidden = head_y + head_h - bevel_width - border_width;
00677         if (m_shape.get())
00678             m_shape->setPlaces(Shape::TOPRIGHT | Shape::TOPLEFT);
00679         break;
00680     case LEFTCENTER:
00681         frame.x = head_x;
00682         frame.y = head_y + (head_h - frame.height)/2;
00683         frame.x_hidden = frame.x - frame.width + bevel_width + border_width;
00684         frame.y_hidden = frame.y;
00685         if (m_shape.get())
00686             m_shape->setPlaces(Shape::TOPRIGHT | Shape::BOTTOMRIGHT);
00687         break;
00688     case LEFTTOP:
00689         frame.x = head_x;
00690         frame.y = head_y;
00691         frame.x_hidden = frame.x - frame.width + bevel_width + border_width;
00692         frame.y_hidden = frame.y;
00693         if (m_shape.get())
00694             m_shape->setPlaces(Shape::TOPRIGHT | Shape::BOTTOMRIGHT);
00695         break;
00696     case LEFTBOTTOM:
00697         frame.x = head_x;
00698         frame.y = head_y + head_h - frame.height - border_width*2;
00699         frame.x_hidden = frame.x - frame.width + bevel_width + border_width;
00700         frame.y_hidden = frame.y;
00701         if (m_shape.get())
00702             m_shape->setPlaces(Shape::TOPRIGHT | Shape::BOTTOMRIGHT);
00703         break;
00704     case RIGHTCENTER:
00705         frame.x = head_x + head_w - frame.width - border_width*2;
00706         frame.y = head_y + (head_h - frame.height)/2;
00707         frame.x_hidden = frame.x + frame.width - bevel_width - border_width;
00708         frame.y_hidden = frame.y;
00709         if (m_shape.get())
00710             m_shape->setPlaces(Shape::TOPLEFT | Shape::BOTTOMLEFT);
00711         break;
00712     case RIGHTTOP:
00713         frame.x = head_x + head_w - frame.width - border_width*2;
00714         frame.y = head_y;
00715         frame.x_hidden = frame.x + frame.width - bevel_width - border_width;
00716         frame.y_hidden = frame.y;
00717         if (m_shape.get())
00718             m_shape->setPlaces(Shape::TOPLEFT | Shape::BOTTOMLEFT);
00719         break;
00720     case RIGHTBOTTOM:
00721         frame.x = head_x + head_w - frame.width - border_width*2;
00722         frame.y = head_y + head_h - frame.height - border_width*2;
00723         frame.x_hidden = frame.x + frame.width - bevel_width - border_width;
00724         frame.y_hidden = frame.y;
00725         if (m_shape.get())
00726             m_shape->setPlaces(Shape::TOPLEFT | Shape::BOTTOMLEFT);
00727         break;
00728     }
00729 }


The documentation for this class was generated from the following files:

Fluxbox CVS-Jan-2003




      



Got comments about the page? Send them to webmaster.
If you have general Fluxbox related questions ask them on our irc channel or mailing lists.

Show Source








Designed by aLEczapKA