[PC-BSD Commits] r17715 - pcbsd-projects/PCDM
svn at pcbsd.org
svn at pcbsd.org
Thu Jul 12 13:33:26 PDT 2012
Author: kenmoore
Date: 2012-07-12 20:33:26 +0000 (Thu, 12 Jul 2012)
New Revision: 17715
Modified:
pcbsd-projects/PCDM/pcdm-backend.h
pcbsd-projects/PCDM/pcdm-gui.cpp
pcbsd-projects/PCDM/pcdm-gui.h
pcbsd-projects/PCDM/pcdm-themes.cpp
pcbsd-projects/PCDM/pcdm-themes.h
pcbsd-projects/PCDM/sample.pcdm-theme
Log:
Add the beginnings of auto-generating the UI for PCDM, also clean up the theme configuration file a bit.
Modified: pcbsd-projects/PCDM/pcdm-backend.h
===================================================================
--- pcbsd-projects/PCDM/pcdm-backend.h 2012-07-12 17:37:49 UTC (rev 17714)
+++ pcbsd-projects/PCDM/pcdm-backend.h 2012-07-12 20:33:26 UTC (rev 17715)
@@ -16,6 +16,7 @@
static QStringList keyVariants(const QString &, QStringList &savedKeyVariants);
static void changeKbMap(QString model, QString layout, QString variant);
static void loadConfFile(QString, QList<QPixmap>, QStringList);
+ static QStringList getSystemUsers();
};
Modified: pcbsd-projects/PCDM/pcdm-gui.cpp
===================================================================
--- pcbsd-projects/PCDM/pcdm-gui.cpp 2012-07-12 17:37:49 UTC (rev 17714)
+++ pcbsd-projects/PCDM/pcdm-gui.cpp 2012-07-12 20:33:26 UTC (rev 17715)
@@ -2,11 +2,14 @@
#include <QTimer>
#include <QGraphicsPixmapItem>
+#include "pcdm-gui.h"
#include "pcdm-backend.h"
+#include "pcdm-themes.h"
-PCDMgui::PCDMgui(QWidget *parent) : QWidget(parent)
+PCDMgui::PCDMgui()
{
- setupUi(this);
+ //Create the GUI based upon the current Theme
+ createGUIfromTheme();
connect(abortButton, SIGNAL(clicked()), this, SLOT(slotAbort()));
connect(backButton, SIGNAL(clicked()), this, SLOT(slotBack()));
@@ -40,6 +43,153 @@
//delete ui;
}
+void PCDMgui::createGUIfromTheme(){
+ //Create the Toolbar
+ QToolbar* toolbar;
+ //Put it in the proper location
+ this->addToolBar( Theme::toolbarLocation(), toolbar ); //use the theme location
+ toolbar->setMovable(FALSE);
+ toolbar->setFloatable(FALSE);
+ //Set the default style and icon sizes
+ toolbar->setToolButtonStyle( Theme::toolbarStyle() ); //use the theme style
+ toolbar->setIconSize( QSize(Theme::toolbarSizeWidth(),Theme::toolbarSizeHeight()) ); //use theme size
+
+ //Populate the Toolbar with items
+ //----Locale Switcher
+
+ //----Keyboard Layout Switcher
+
+ //----System Shutdown/Restart
+ QToolButton* systemButton = new QToolButton(toolbar);
+ QMenu* systemMenu;
+ systemMenu->addAction( tr("Restart"),this, SLOT(slotRestartComputer()) );
+ systemMenu->addAction( tr("Shut Down"), this, SLOT(slotShutdownComputer()) );
+ systemMenu->addAction( tr("Close PCDM"), this, SLOT(slotClosePCDM()) );
+ systemButton->setMenu(systemMenu);
+ systemButton->setToolButtonStyle(Qt::ToolButtonIconOnly);
+
+
+ //Create the grid layout
+ QGridLayout* grid;
+
+ //Populate the grid with items
+ //----Header Image
+ QString hLayout = Theme::objectIconStyle("header");
+ QLabel* header;
+ if(hLayout!="disabled"){
+ header->setPixmap( QPixmap( Theme::objectIconPath("header") ) );
+ grid->addWidget( header, Theme::objectLocationRow("header"), \
+ Theme::objectLocationColumn("header"), \
+ Theme::objectLocationRowSpan("header"), \
+ Theme::objectLocationColumnSpan("header"), Qt::AlignCenter);
+ }
+
+ //----Username Input collection
+ QString pLayout = Theme::objectIconStyle("user");
+ QComboBox* unameline;
+ unameline->addItems(Backend::getSystemUsers());
+ unameline->setCurrentIndex(0); //select the first username on the list
+ if(pLayout == "disabled"){
+ //Icon Disabled - just add widget to the grid
+ grid->addWidget( unameline, Theme::objectLocationRow("user"), \
+ Theme::objectLocationColumn("user"), \
+ Theme::objectLocationRowSpan("user"), \
+ Theme::objectLocationColumnSpan("user"), Qt::AlignCenter);
+ }else{
+ //Put the Icon and Widget in their own layout before adding to the main grid
+ int rI,rW,cI,cW;
+ if(pLayout=="above"){ rI=0; cI=0; rW=1; cW=0; } //icon above
+ if(pLayout=="below"){ rI=1; cI=0; rW=0; cW=0; } //icon below
+ if(pLayout=="left") { rI=0; cI=1; rW=0; cW=0; } //icon to the left
+ if(pLayout=="right"){ rI=0; cI=0; rW=0; cW=1; } //icon to the right
+ QGridLayout* ugrid;
+ QPixmap tmp( Theme::objectIconPath("user") );
+ QLabel* unameIcon; unameIcon->setPixmap(tmp.scaled(Theme::objectIconSize("user")));
+ ugrid->addWidget(unameline,rW,cW,Qt::AlignCenter);
+ ugrid->addWidget(unameIcon,rI,cI,Qt::AlignCenter);
+
+ grid->addLayout( ugrid, Theme::objectLocationRow("user"), \
+ Theme::objectLocationColumn("user"), \
+ Theme::objectLocationRowSpan("user"), \
+ Theme::objectLocationColumnSpan("user"), Qt::AlignCenter);
+ }
+
+ //----Password Input collection
+ QString pLayout = Theme::objectIconStyle("password");
+ QLineEdit* pwline; pwline->setEchoMode(QLineEdit::Password);
+ if(pLayout == "disabled"){
+ //Icon Disabled - just add widget to the grid
+ grid->addWidget( pwline, Theme::objectLocationRow("password"), \
+ Theme::objectLocationColumn("password"), \
+ Theme::objectLocationRowSpan("password"), \
+ Theme::objectLocationColumnSpan("password"), Qt::AlignCenter);
+ }else{
+ //Put the Icon and Widget in their own layout before adding to the main grid
+ int rI,rW,cI,cW;
+ if(pLayout=="above"){ rI=0; cI=0; rW=1; cW=0; } //icon above
+ if(pLayout=="below"){ rI=1; cI=0; rW=0; cW=0; } //icon below
+ if(pLayout=="left") { rI=0; cI=1; rW=0; cW=0; } //icon to the left
+ if(pLayout=="right"){ rI=0; cI=0; rW=0; cW=1; } //icon to the right
+ QGridLayout* pgrid;
+ QPixmap tmp( Theme::objectIconPath("password") );
+ QLabel* pwIcon; pwIcon->setPixmap(tmp.scaled(Theme::objectIconSize("password")));
+ pgrid->addWidget(pwline,rW,cW,Qt::AlignCenter);
+ pgrid->addWidget(pwIcon,rI,cI,Qt::AlignCenter);
+
+ grid->addLayout( pgrid, Theme::objectLocationRow("password"), \
+ Theme::objectLocationColumn("password"), \
+ Theme::objectLocationRowSpan("password"), \
+ Theme::objectLocationColumnSpan("password"), Qt::AlignCenter);
+ }
+
+ //----Login Button
+ QString lLayout = Theme::objectIconStyle("login");
+ if(lLayout=="disabled"){ QPushButton* pushlogin = new QPushButton(tr("Login")); }
+ else{ QPushButton* pushlogin = new QPushButton( QIcon(Theme::objectIconPath("login")),tr("Login") ); }
+ pushlogin
+ grid->addWidget( pwline, Theme::objectLocationRow("password"), \
+ Theme::objectLocationColumn("password"), \
+ Theme::objectLocationRowSpan("password"), \
+ Theme::objectLocationColumnSpan("password"), Qt::AlignCenter);
+
+ //----Desktop Environment Switcher
+ //NOTE: This will be changed to a "fancy" switcher later)
+ QString deLayout = Theme::objectIconStyle("desktop");
+ QComboBox* deSwitcher;
+ deSwitcher->addItems(Backend::getAvailableDesktops());
+ deSwitcher->setCurrentIndex(0); //select the first desktop on the list (for now)
+ if(deLayout == "disabled"){
+ //Icon Disabled - just add widget to the grid
+ grid->addWidget( deSwitcher, Theme::objectLocationRow("desktop"), \
+ Theme::objectLocationColumn("desktop"), \
+ Theme::objectLocationRowSpan("desktop"), \
+ Theme::objectLocationColumnSpan("desktop"), Qt::AlignCenter);
+ }else{
+ //Put the Icon and Widget in their own layout before adding to the main grid
+ int rI,rW,cI,cW;
+ if(deLayout=="above"){ rI=0; cI=0; rW=1; cW=0; } //icon above
+ if(deLayout=="below"){ rI=1; cI=0; rW=0; cW=0; } //icon below
+ if(deLayout=="left") { rI=0; cI=1; rW=0; cW=0; } //icon to the left
+ if(deLayout=="right"){ rI=0; cI=0; rW=0; cW=1; } //icon to the right
+ QGridLayout* degrid;
+ QPixmap tmp( Theme::objectIconPath("desktop") );
+ QLabel* deIcon; pwIcon->setPixmap(tmp.scaled(Theme::objectIconSize("desktop")));
+ degrid->addWidget(deSwitcher,rW,cW,Qt::AlignCenter);
+ degrid->addWidget(deIcon,rI,cI,Qt::AlignCenter);
+
+ grid->addLayout( degrid, Theme::objectLocationRow("desktop"), \
+ Theme::objectLocationColumn("desktop"), \
+ Theme::objectLocationRowSpan("desktop"), \
+ Theme::objectLocationColumnSpan("desktop"), Qt::AlignCenter);
+ }
+
+ //Connect the grid to the Window
+ this->setLayout(grid);
+
+ //Connect all the buttons to their proper slots
+
+}
+
void PCDMgui::slotPushKeyLayout()
{
wKey = new widgetKeyboard();
Modified: pcbsd-projects/PCDM/pcdm-gui.h
===================================================================
--- pcbsd-projects/PCDM/pcdm-gui.h 2012-07-12 17:37:49 UTC (rev 17714)
+++ pcbsd-projects/PCDM/pcdm-gui.h 2012-07-12 20:33:26 UTC (rev 17715)
@@ -1,5 +1,5 @@
-#ifndef PCDEGUI_H
-#define PCDEGUI_H
+#ifndef PCDMGUI_H
+#define PCDMGUI_H
#include <QtGui/QWidget>
#include <QMessageBox>
@@ -9,17 +9,20 @@
#include "pcdm-backend.h"
#include "pcdm-themes.h"
-class PCDMgui : public QWidget, private Ui::PCDMgui
+class PCDMgui : public QMainWindow
{
Q_OBJECT
public:
- PCDMgui(QWidget *parent = 0);
+ PCDMgui();
~PCDMgui();
void changeLang(QString code);
void progInit();
private slots:
+ void slotRestartComputer();
+ void slotShutdownComputer();
+
void slotChangeLanguage();
// Start xvkbd
@@ -34,6 +37,9 @@
QGraphicsScene *customScene;
QStringList languages;
+ //Functions
+ void createGUIfromTheme();
+
// Internal functions for the GUI
bool toggleKeyLayout;
@@ -44,4 +50,4 @@
};
-#endif // PCDEGUI_H
+#endif // PCDMGUI_H
Modified: pcbsd-projects/PCDM/pcdm-themes.cpp
===================================================================
--- pcbsd-projects/PCDM/pcdm-themes.cpp 2012-07-12 17:37:49 UTC (rev 17714)
+++ pcbsd-projects/PCDM/pcdm-themes.cpp 2012-07-12 20:33:26 UTC (rev 17715)
@@ -1,10 +1,15 @@
#include "pcdm-themes.h"
//Setup variables that save the current theme data
-QStringList images, imSizes, imLayout, gridLayout;
+QStringList images, imSizes, imLayout, gridLayout, tbFormat, validLayouts, needText;
bool isFullscreen=TRUE;
int windowWidth, windowHeight, gridWidth, gridHeight;
+validLayouts << "above" << "below" << "left" << "right" << "none" << "icononly";
+needText << "user" << "password" << "login";
+/*
+tbFormat = [locationString, styleString, widthInt, heightInt]
+*/
//Create the functions to read and output the theme data
void Theme::loadDefaults(QString vars){
@@ -24,6 +29,7 @@
images <<":images/keyboard.png"; imSizes << "32x32"; // [10]=Virtual Keyboard
}
if( (vars=="all") || (vars=="layout") ){
+ tbLocation="bottom";
gridWidth=5; gridHeight=6;
//Default Layout for the application
imLayout.clear(); gridLayout.clear();
@@ -33,13 +39,19 @@
imLayout << "left"; gridLayout << "1-3x1"; // [3]=User
imLayout << "left"; gridLayout << "1-3x2"; // [4]=Password
imLayout << "left"; gridLayout << "1-3x3"; // [5]=Login
- imLayout << "icononly"; gridLayout << "0x5"; // [6]=Keyboard Layout
- imLayout << "icononly"; gridLayout << "1x5"; // [7]=Locale
- imLayout << "icononly"; gridLayout << "2x5"; // [8]=System
- imLayout << "icononly"; gridLayout << "3x5"; // [9]=Desktop
- imLayout << "icononly"; gridLayout << "4x5"; // [10]=Virtual Keyboard
+ imLayout << "icononly"; gridLayout << ""; // [6]=Keyboard Layout
+ imLayout << "icononly"; gridLayout << ""; // [7]=Locale
+ imLayout << "icononly"; gridLayout << ""; // [8]=System
+ imLayout << "icononly"; gridLayout << "4x5"; // [9]=Desktop
+ imLayout << "icononly"; gridLayout << ""; // [10]=Virtual Keyboard
}
-
+ if( (vars=="all") || (vars=="toolbar") ){
+ tbFormat.clear();
+ tbFormat << "bottom"; // [0] Location [bottom | top | left | right]
+ tbFormat << "icononly"; // [1] Style [icononly | textonly | textbeside | textunder]
+ tbFormat << "32"; // [2] Width in pixels
+ tbFormat << "32"; // [3] Height in pixels
+ }
}
void Theme::loadTheme(QString themeFile){
@@ -76,7 +88,73 @@
return TRUE;
}
+//********** WINDOW OBJECTS *************
+QString objectIconStyle(QString obj){
+ int i = getObjectIndex(obj);
+ bool invalid = FALSE;
+ QString output = imLayout[i].toLower();
+ if(output="icononly" && needText.contains(obj)){ invalid=TRUE; }
+ if(!validLayouts.contains(output) || invalid){
+ qDebug() << "PCDM: Invalid layout detected for" << obj << "- defaulting to \"left\"";
+ return "left";
+ }
+ QString
+ return imLayout[i].toLower();
+}
+QString objectIconPath(QString obj){
+ int i = getObjectIndex(obj);
+ return images[i];
+}
+
+QSize objectIconSize(QString obj){
+ int i = getObjectIndex(obj);
+ int width = imSizes[i].section("x",0,0).toInt();
+ int height = imSizes[i].section("x",1,1).toInt();
+ if(width.isEmpty()){
+ qDebug() << "PCDM: No image size given for" << obj << "- defaulting to 64x64";
+ width=64;
+ height=64;
+ }
+ if(height.isEmpty()){
+ qDebug() << "PCDM: No image height given for" << obj << "- assuming a square image";
+ height = width;
+ }
+ return QSize(width,height);
+}
+
+int objectLocationRow(QString obj){
+ int i = getObjectIndex(obj);
+ QString row = gridLayout[i].section("x",0,0).section("-",0,0);
+ return row.toInt();
+}
+
+int objectLocationColumn(QString obj){
+ int i = getObjectIndex(obj);
+ QString col = gridLayout[i].section("x",1,1).section("-",0,0);
+ return col.toInt();
+}
+
+int objectLocationRowSpan(QString obj){
+ int i = getObjectIndex(obj);
+ QString row = gridLayout[i].section("x",0,0).section("-",1,1);
+ if(row.isEmpty()){ return 1; }
+ int rowSpan = row.toInt() - objectLocationRow(obj);
+ if(rowSpan < 1){ rowSpan=1; }
+ return rowSpan;
+}
+
+int objectLocationColumnSpan(QString obj){
+ int i = getObjectIndex(obj);
+ QString col = gridLayout[i].section("x",1,1).section("-",1,1);
+ if(col.isEmpty()){ return 1; }
+ int colSpan = col.toInt() - objectLocationColumn(obj);
+ if(colSpan < 1){ colSpan=1; }
+ return colSpan;
+}
+
+
+//********** SPLASH SCREEN ***********
bool Theme::useSplashscreen(){
if(images[2].isEmpty() || images[2] == "disabled"){ return FALSE; }
else
@@ -84,6 +162,36 @@
}
QString Theme::splashscreen(){
- return splashPath;
+ return images[2];
};
+//********** TOOLBAR INFORMATION ***********
+Qt::ToolBarArea Theme::toolbarLocation(){
+ if(tbFormat[0].toLower()=="left"){ return Qt::LeftToolBarArea; }
+ else if(tbFormat[0].toLower()=="right"){ return Qt::RightToolBarArea; }
+ else if(tbFormat[0].toLower()=="top"){ return Qt::TopToolBarArea; }
+ else if(tbFormat[0].toLower()=="bottom"){ return Qt::BottomToolBarArea; }
+ else{
+ qDebug() << "PCDM: Invalid toolbar location - defaulting to the bottom";
+ return Qt::BottomToolBarArea;
+ }
+}
+
+Qt::ToolButtonStyle Theme::toolbarStyle(){
+ if(tbFormat[1].toLower()=="icononly"){ return Qt::ToolButtonIconOnly; }
+ else if(tbFormat[1].toLower()=="textonly"){ return Qt::ToolButtonTextOnly; }
+ else if(tbFormat[1].toLower()=="textbeside"){ return Qt::ToolButtonTextBesideIcon; }
+ else if(tbFormat[1].toLower()=="textunder"){ return Qt::ToolButtonTextUnderIcon; }
+ else{
+ qDebug() << "PCDM: Invalid toolbar style - defaulting to show icon only";
+ return Qt::ToolButtonIconOnly;
+ }
+}
+
+int Theme::toolbarSizeWidth(){
+ return tbFormat[3].toInt();
+}
+
+int Theme::toolbarSizeHeight(){
+ return tbFormat[4].toInt();
+}
Modified: pcbsd-projects/PCDM/pcdm-themes.h
===================================================================
--- pcbsd-projects/PCDM/pcdm-themes.h 2012-07-12 17:37:49 UTC (rev 17714)
+++ pcbsd-projects/PCDM/pcdm-themes.h 2012-07-12 20:33:26 UTC (rev 17715)
@@ -14,16 +14,30 @@
static void readThemeFile(QString);
public:
+ //General Theme Settings
static void loadTheme(QString);
static bool isFullScreen();
static int windowSize(QString);
- static int gridSize(QString);
+ //Window Layout
static QString imagePath(QString);
static int imageSize(QString,QString);
static int objectLocation(QString,QString);
+ //Window objects
+ static QString objectIconStyle(QString);
+ static QString objectIconPath(QString);
+ static QSize objectIconSize(QString);
+ static int objectLocationRow(QString);
+ static int objectLocationColumn(QString);
+ static int objectLocationRowSpan(QString);
+ static int objectLocationColumnSpan(QString);
+ //Splash Screen
static QString splashscreen();
static bool useSplashscreen();
-
+ //Toolbar functions
+ static Qt::ToolBarArea toolbarLocation();
+ static Qt::ToolButtonStyle toolbarStyle();
+ static int toolbarSizeWidth();
+ static int toolbarSizeHeight();
};
Modified: pcbsd-projects/PCDM/sample.pcdm-theme
===================================================================
--- pcbsd-projects/PCDM/sample.pcdm-theme 2012-07-12 17:37:49 UTC (rev 17714)
+++ pcbsd-projects/PCDM/sample.pcdm-theme 2012-07-12 20:33:26 UTC (rev 17715)
@@ -3,39 +3,14 @@
########################################
# **** NOTE: Any option that is not set here will use the default PCDM setting *****
-## Base Directories for files ##
-IMAGE_DIR=/usr/local/share/PCDM/images #location of all image files for this theme
+## Base directory for images (if absolute path not explicitly declared) ##
+IMAGE_DIR=/usr/local/share/PCDM/images #location of all/most image files for this theme
#### Images (relative to IMAGE_DIR) ####
-## (set any of these to "disabled" to disable that image/icon) ##
-HEADER_IMAGE=default-header.png # Default image to be displayed as a window header
-
BACKGROUND_IMAGE=background.jpg # will fit to the window size if possible
+SPLASHSCREEN_IMAGE=default-splash.png #Image to use as a splash screen (set to "disabled" if none)
-SPLASHSCREEN_IMAGE=default-splash.png #Image to use as a splash screen
-
-USER_IMAGE=default-user.png # Default image for the user selection pulldown
-USER_IMAGE_SIZE=64x64 #use this to scale the image file (in pixels), otherwise use actual size
-
-PASSWORD_IMAGE=default-password.png # Default image for the password entry box
-PASSWORD_IMAGE_SIZE=64x64
-
-LOGIN_IMAGE=default-login.png # Default image contained in the login button
-LOGIN_IMAGE_SIZE=15x15
-
-KEYBOARD_LAYOUT_IMAGE=keyboard-layout.png # Default image for keyboard layout selection pulldown
-KEYBOARD_IMAGE_SIZE=32x32
-
-LANGUAGE_IMAGE=language-setting.png # Default image for language selection pulldown
-LANGUAGE_IMAGE_SIZE=32x32
-
-DE_SELECT_IMAGE=default-de-select.png # Default image for the DE selection pulldown (cannot be disabled)
-DE_SELECT_IMAGE_SIZE=32x32
-
-SYSTEM_IMAGE=default-system.png # Default image for the System box (shutdown/reboot options)
-SYSTEM_IMAGE_SIZE=32x32
-
#### Screen Display ####
# MAIN WINDOW DISPLAY #
@@ -45,29 +20,42 @@
# ADD WINDOW ITEMS ON A GRID LAYOUT
WINDOW_GRID_SIZE=[7,3] # number of [rows,columns] to fill the window
# FORMAT: WINDOW_ITEM=<item>::<relative icon location>::[row,column]
- # <item>: [header | login | user | password | keyboard | locale | desktop | system]
- # <relative icon location>: [above|below|left|right|none|icononly] (not used for header item)
+ # <item>: [header | login | user | password]
+ # <relative icon location>: [above|below|left|right|none] (not used for header item)
# [row,column]: positive integers designating grid point(s) to use for the object (starting at 0)
# Note: [0,0]=upper left corner, therefore if number of rows=4, valid row entries are 0->3
- WINDOW_ITEM=header::icononly::[0,0-2] #(optional) top row, columns 0-3 (all of them in this example)
- WINDOW_ITEM=user::left::[2,1] #(required) user icon can NOT be "icononly" (input required)
- WINDOW_ITEM=password::left::[3,1] #(required) password icon can NOT be "icononly" (input required)
- WINDOW_ITEM=login::left::[4,1] #(required) login icon MUST be "none", "icononly", or "left"
- WINDOW_ITEM=desktop::above::[6,1] #(required) Desktop environment switcher
+ WINDOW_ITEM=header::icononly::[0,0-2] # MUST be "icononly" or "none"
+ HEADER_IMAGE=default-header.png # Default image to be displayed as a window header
+ WINDOW_ITEM=user::left::[2,1] #(required) username input display
+ USER_IMAGE=default-user.png # Default image for the user selection pulldown
+ USER_IMAGE_SIZE=64x64 # Size for the image (in pixels)
- # Add Toolbar Items
+ WINDOW_ITEM=password::left::[3,1] #(required) password input display
+ PASSWORD_IMAGE=default-password.png # Default image for the password entry box
+ PASSWORD_IMAGE_SIZE=64x64 # size for the image (in pixels)
+
+ WINDOW_ITEM=login::left::[4,1] #(required) login icon MUST be "none" or "left"
+ LOGIN_IMAGE=default-login.png # Small image contained in the login button (auto-scaled)
+
+ WINDOW_ITEM=desktop::above::[6,1] #(required) Desktop environment switcher
+ DE_SELECT_IMAGE=default-de-select.png # (required) Default image for the DE selection pulldown
+
+ # ADD TOOLBAR ITEMS
WINDOW_TOOLBAR_LOCATION=bottom # [bottom,top,left,right]
TOOLBAR_DEFAULT_SIZE=32x32 # Set the default size for all images in the toolbar
TOOLBAR_STYLE=icononly # [icononly | textonly | textbesideicon | textundericon]
- # FORMAT: TOOLBAR_ITEM=<item>::<style>::<location>
+ # FORMAT: TOOLBAR_ITEM=<item>::<style>
# <item>: [keyboard | locale | desktop | system]
# <style>: [currentstyle | pulldown]
- # <location>: positive integer value for order on toolbar (0 = top/leftmost item)
- TOOLBAR_ITEM=system::currentstyle::0 #(required) system options MUST exist
- TOOLBAR_ITEM=locale::pulldown::1 #(optional) locale switcher
- TOOLBAR_ITEM=keyboard::pulldown::2 #(optional) keyboard layout switcher
-
+ TOOLBAR_ITEM=system::currentstyle #(required) system options MUST exist
+ SYSTEM_IMAGE=default-system.png # Default image for the System box (shutdown/reboot options)
+
+ TOOLBAR_ITEM=locale::pulldown #(optional) locale switcher
+ LOCALE_IMAGE=language-setting.png # Default image for language selection pulldown
+
+ TOOLBAR_ITEM=keyboard::pulldown #(optional) keyboard layout switcher
+ KEYBOARD_IMAGE=keyboard-layout.png # Default image for keyboard layout selection pulldown
More information about the Commits
mailing list