Implemented job list handling.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2093 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Printers Preference Application.
|
||||
* Copyright (C) 2001 OpenBeOS. All Rights Reserved.
|
||||
* Copyright (C) 2001, 2002 OpenBeOS. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -260,6 +260,8 @@ void AddPrinterDialog::BuildGUI(int stage)
|
||||
// Auto resize window
|
||||
ResizeTo(ok->Frame().right + H_MARGIN, ok->Frame().bottom + V_MARGIN);
|
||||
|
||||
fName->MakeFocus(true);
|
||||
|
||||
Update();
|
||||
// Stage == 0
|
||||
// init_icon 64x114 Add a Local or Network Printer
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
* Printers Preference Application.
|
||||
* Copyright (C) 2001, 2002 OpenBeOS. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef ADDPRINTERDIALOG_H
|
||||
#define ADDPRINTERDIALOG_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
* Printers Preference Application.
|
||||
* Copyright (C) 2001, 2002 OpenBeOS. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "Globals.h"
|
||||
#include "pr_server.h"
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
* Printers Preference Application.
|
||||
* Copyright (C) 2001, 2002 OpenBeOS. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef GLOBALS_H
|
||||
#define GLOBALS_H
|
||||
|
||||
|
||||
+11
-2
@@ -1,6 +1,6 @@
|
||||
SubDir OBOS_TOP src prefs print ;
|
||||
|
||||
UsePrivateHeaders interface ;
|
||||
UsePrivateHeaders interface shared print ;
|
||||
|
||||
AddResources Printers : Printers.FileTypes.rsrc ;
|
||||
|
||||
@@ -9,6 +9,15 @@ Preference Printers :
|
||||
Printers.cpp
|
||||
PrintersWindow.cpp
|
||||
PrinterListView.cpp
|
||||
JobListView.cpp
|
||||
SpoolFolder.cpp
|
||||
Globals.cpp ;
|
||||
|
||||
LinkSharedOSLibs Printers : be ;
|
||||
# TODO remove dependency to libtranslation (BeUtils)
|
||||
LinkSharedOSLibs
|
||||
Printers
|
||||
:
|
||||
be
|
||||
translation
|
||||
libprint.a
|
||||
;
|
||||
|
||||
@@ -0,0 +1,258 @@
|
||||
/*
|
||||
* Printers Preference Application.
|
||||
* Copyright (C) 2001, 2002 OpenBeOS. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "JobListView.h"
|
||||
#include "pr_server.h"
|
||||
|
||||
#include "Messages.h"
|
||||
#include "Globals.h"
|
||||
#include "Jobs.h"
|
||||
#include "SpoolFolder.h"
|
||||
|
||||
#include <Messenger.h>
|
||||
#include <Bitmap.h>
|
||||
#include <String.h>
|
||||
#include <Alert.h>
|
||||
#include <Mime.h>
|
||||
#include <Roster.h>
|
||||
|
||||
JobListView::JobListView(BRect frame)
|
||||
: Inherited(frame, "jobs_list", B_SINGLE_SELECTION_LIST, B_FOLLOW_ALL)
|
||||
{
|
||||
}
|
||||
|
||||
void JobListView::AttachedToWindow()
|
||||
{
|
||||
Inherited::AttachedToWindow();
|
||||
|
||||
SetSelectionMessage(new BMessage(MSG_JOB_SELECTED));
|
||||
SetTarget(Window());
|
||||
}
|
||||
|
||||
|
||||
void JobListView::SetSpoolFolder(SpoolFolder* folder)
|
||||
{
|
||||
BPath path;
|
||||
|
||||
// clear list
|
||||
const BListItem** items = Items();
|
||||
for (int i = CountItems() - 1; i >= 0; i --) {
|
||||
delete items[i];
|
||||
}
|
||||
MakeEmpty();
|
||||
if (folder == NULL) return;
|
||||
|
||||
// Find directory containing printer definition nodes
|
||||
for (int32 i = 0; i < folder->CountJobs(); i ++) {
|
||||
Job* job = folder->JobAt(i);
|
||||
AddJob(job);
|
||||
}
|
||||
}
|
||||
|
||||
JobItem* JobListView::Find(Job* job)
|
||||
{
|
||||
const int32 n = CountItems();
|
||||
for (int32 i = 0; i < n; i ++) {
|
||||
JobItem* item = dynamic_cast<JobItem*>(ItemAt(i));
|
||||
if (item && item->GetJob() == job) return item;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
JobItem* JobListView::SelectedItem() {
|
||||
BListItem* item = ItemAt(CurrentSelection());
|
||||
return dynamic_cast<JobItem*>(item);
|
||||
}
|
||||
|
||||
void JobListView::AddJob(Job* job)
|
||||
{
|
||||
JobItem* item = new JobItem(job);
|
||||
AddItem(item);
|
||||
Invalidate();
|
||||
}
|
||||
|
||||
void JobListView::RemoveJob(Job* job)
|
||||
{
|
||||
JobItem* item = Find(job);
|
||||
if (item) {
|
||||
RemoveItem(item);
|
||||
delete item;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
void JobListView::UpdateJob(Job* job)
|
||||
{
|
||||
JobItem* item = Find(job);
|
||||
if (item) {
|
||||
item->Update();
|
||||
InvalidateItem(IndexOf(item));
|
||||
}
|
||||
}
|
||||
|
||||
void JobListView::RestartJob()
|
||||
{
|
||||
JobItem* item = SelectedItem();
|
||||
if (item && item->GetJob()->Status() == kFailed) {
|
||||
// setting the state changes the file attribute and
|
||||
// we will receive a notification from SpoolFolder
|
||||
item->GetJob()->SetStatus(kWaiting);
|
||||
}
|
||||
}
|
||||
|
||||
void JobListView::CancelJob()
|
||||
{
|
||||
JobItem* item = SelectedItem();
|
||||
if (item && item->GetJob()->Status() != kProcessing) {
|
||||
item->GetJob()->SetStatus(kFailed);
|
||||
item->GetJob()->Remove();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Implementation of JobItem
|
||||
|
||||
JobItem::JobItem(Job* job)
|
||||
: BListItem(0, false)
|
||||
, fJob(job)
|
||||
, fIcon(NULL)
|
||||
{
|
||||
fJob->Acquire();
|
||||
|
||||
Update();
|
||||
}
|
||||
|
||||
JobItem::~JobItem() {
|
||||
fJob->Release();
|
||||
}
|
||||
|
||||
void JobItem::Update()
|
||||
{
|
||||
BNode node(&fJob->EntryRef());
|
||||
if (node.InitCheck() != B_OK) return;
|
||||
|
||||
node.ReadAttrString(PSRV_SPOOL_ATTR_DESCRIPTION, &fName);
|
||||
|
||||
BString mimeType;
|
||||
node.ReadAttrString(PSRV_SPOOL_ATTR_MIMETYPE, &mimeType);
|
||||
entry_ref ref;
|
||||
if (fIcon == NULL && be_roster->FindApp(mimeType.String(), &ref) == B_OK) {
|
||||
fIcon = new BBitmap(BRect(0,0,B_MINI_ICON-1,B_MINI_ICON-1), B_CMAP8);
|
||||
BMimeType type(mimeType.String());
|
||||
if (type.GetIcon(fIcon, B_MINI_ICON) != B_OK) {
|
||||
delete fIcon; fIcon = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
int32 pages;
|
||||
fPages = ""; fSize = ""; fStatus = "";
|
||||
|
||||
if (node.ReadAttr(PSRV_SPOOL_ATTR_PAGECOUNT, B_INT32_TYPE, 0, &pages, sizeof(pages)) == sizeof(pages)) {
|
||||
fPages << pages;
|
||||
if (pages > 1) fPages << " pages.";
|
||||
else fPages << " page.";
|
||||
} else {
|
||||
fPages = "??? pages.";
|
||||
}
|
||||
|
||||
off_t size;
|
||||
if (node.GetSize(&size) == B_OK) {
|
||||
char buffer[80];
|
||||
sprintf(buffer, "%.2f KB", size / 1024.0);
|
||||
fSize = buffer;
|
||||
}
|
||||
|
||||
switch (fJob->Status()) {
|
||||
case kWaiting: fStatus = "Waiting";
|
||||
break;
|
||||
case kProcessing: fStatus = "Processing";
|
||||
break;
|
||||
case kFailed: fStatus = "Failed";
|
||||
break;
|
||||
case kCompleted: fStatus = "Completed";
|
||||
break;
|
||||
default: fStatus = "Unkown status";
|
||||
}
|
||||
}
|
||||
|
||||
void JobItem::Update(BView *owner, const BFont *font)
|
||||
{
|
||||
BListItem::Update(owner, font);
|
||||
|
||||
font_height height;
|
||||
font->GetHeight(&height);
|
||||
|
||||
SetHeight( (height.ascent+height.descent+height.leading) * 2.0 +4 );
|
||||
}
|
||||
|
||||
void JobItem::DrawItem(BView *owner, BRect, bool complete)
|
||||
{
|
||||
BListView* list = dynamic_cast<BListView*>(owner);
|
||||
if (list)
|
||||
{
|
||||
font_height height;
|
||||
BFont font;
|
||||
owner->GetFont(&font);
|
||||
font.GetHeight(&height);
|
||||
float fntheight = height.ascent+height.descent+height.leading;
|
||||
|
||||
BRect bounds = list->ItemFrame(list->IndexOf(this));
|
||||
|
||||
rgb_color color = owner->ViewColor();
|
||||
if ( IsSelected() )
|
||||
color = tint_color(color, B_HIGHLIGHT_BACKGROUND_TINT);
|
||||
|
||||
rgb_color oldviewcolor = owner->ViewColor();
|
||||
rgb_color oldlowcolor = owner->LowColor();
|
||||
rgb_color oldcolor = owner->HighColor();
|
||||
owner->SetViewColor( color );
|
||||
owner->SetHighColor( color );
|
||||
owner->SetLowColor( color );
|
||||
owner->FillRect(bounds);
|
||||
owner->SetLowColor( oldlowcolor );
|
||||
owner->SetHighColor( oldcolor );
|
||||
|
||||
BPoint iconPt(bounds.LeftTop() + BPoint(2, 2));
|
||||
BPoint leftTop(bounds.LeftTop() + BPoint(12+B_MINI_ICON, 2));
|
||||
BPoint namePt(leftTop + BPoint(0, fntheight));
|
||||
BPoint statusPt(leftTop + BPoint(0, fntheight*2));
|
||||
|
||||
float width = owner->StringWidth(fPages.String());
|
||||
BPoint pagePt(bounds.RightTop() + BPoint(-width-32, fntheight));
|
||||
width = owner->StringWidth(fSize.String());
|
||||
BPoint sizePt(bounds.RightTop() + BPoint(-width-32, fntheight*2));
|
||||
|
||||
drawing_mode mode = owner->DrawingMode();
|
||||
owner->SetDrawingMode(B_OP_OVER);
|
||||
|
||||
if (fIcon) owner->DrawBitmap(fIcon, iconPt);
|
||||
|
||||
// left of item
|
||||
owner->DrawString(fName.String(), fName.Length(), namePt);
|
||||
owner->DrawString(fStatus.String(), fStatus.Length(), statusPt);
|
||||
|
||||
// right of item
|
||||
owner->DrawString(fPages.String(), fPages.Length(), pagePt);
|
||||
owner->DrawString(fSize.String(), fSize.Length(), sizePt);
|
||||
|
||||
owner->SetDrawingMode(mode);
|
||||
|
||||
owner->SetViewColor(oldviewcolor);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* Printers Preference Application.
|
||||
* Copyright (C) 2001, 2002 OpenBeOS. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef JOBLISTVIEW_H
|
||||
#define JOBLISTVIEW_H
|
||||
|
||||
#include <Messenger.h>
|
||||
#include <ListView.h>
|
||||
#include <String.h>
|
||||
|
||||
#include "Jobs.h"
|
||||
|
||||
class JobItem;
|
||||
class JobListView;
|
||||
class SpoolFolder;
|
||||
|
||||
class JobListView : public BListView
|
||||
{
|
||||
typedef BListView Inherited;
|
||||
private:
|
||||
JobItem* Find(Job* job);
|
||||
|
||||
public:
|
||||
JobListView(BRect frame);
|
||||
void AttachedToWindow();
|
||||
void SetSpoolFolder(SpoolFolder* folder);
|
||||
|
||||
void AddJob(Job* job);
|
||||
void RemoveJob(Job* job);
|
||||
void UpdateJob(Job* job);
|
||||
|
||||
JobItem* SelectedItem();
|
||||
|
||||
void RestartJob();
|
||||
void CancelJob();
|
||||
};
|
||||
|
||||
class BBitmap;
|
||||
class JobItem : public BListItem
|
||||
{
|
||||
public:
|
||||
JobItem(Job* job);
|
||||
~JobItem();
|
||||
|
||||
void Update();
|
||||
|
||||
void Update(BView *owner, const BFont *font);
|
||||
void DrawItem(BView *owner, BRect bounds, bool complete);
|
||||
|
||||
Job* GetJob() { return fJob; }
|
||||
|
||||
private:
|
||||
|
||||
Job* fJob;
|
||||
BBitmap* fIcon;
|
||||
BString fName, fPages;
|
||||
BString fStatus, fSize;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Printers Preference Application.
|
||||
* Copyright (C) 2001 OpenBeOS. All Rights Reserved.
|
||||
* Copyright (C) 2001, 2002 OpenBeOS. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -28,6 +28,7 @@ const uint32 MSG_MKDEF_PRINTER = 'MDfP';
|
||||
const uint32 MSG_PRINTER_SELECTED = 'PSel';
|
||||
const uint32 MSG_CANCEL_JOB = 'CncJ';
|
||||
const uint32 MSG_RESTART_JOB = 'RstJ';
|
||||
const uint32 MSG_JOB_SELECTED = 'JSel';
|
||||
|
||||
const uint32 MSG_TRANSPORT_SELECTED = 'TSel';
|
||||
const uint32 MSG_NAME_CHANGED = 'NCgd';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Printers Preference Application.
|
||||
* Copyright (C) 2001 OpenBeOS. All Rights Reserved.
|
||||
* Copyright (C) 2001, 2002 OpenBeOS. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -22,41 +22,48 @@
|
||||
|
||||
#include "Messages.h"
|
||||
#include "Globals.h"
|
||||
#include "PrintersWindow.h"
|
||||
#include "SpoolFolder.h"
|
||||
|
||||
#include <Messenger.h>
|
||||
#include <Bitmap.h>
|
||||
#include <String.h>
|
||||
#include <Alert.h>
|
||||
#include <Mime.h>
|
||||
#include <StorageKit.h>
|
||||
|
||||
// Implementation of PrinterListView
|
||||
|
||||
PrinterListView::PrinterListView(BRect frame)
|
||||
: Inherited(frame, "printers_list", B_SINGLE_SELECTION_LIST, B_FOLLOW_ALL)
|
||||
, fFolder(NULL)
|
||||
{
|
||||
// TODO: Fixup situation in which PrintServer is not running
|
||||
BMessenger msgr;
|
||||
if (GetPrinterServerMessenger(msgr) == B_OK)
|
||||
{
|
||||
BMessage count(B_COUNT_PROPERTIES);
|
||||
count.AddSpecifier("Printers");
|
||||
|
||||
BMessage reply;
|
||||
msgr.SendMessage(&count, &reply);
|
||||
}
|
||||
|
||||
int32 countPrinters;
|
||||
if (reply.FindInt32("result", &countPrinters) == B_OK)
|
||||
{
|
||||
for (int32 printerIdx=0; printerIdx < countPrinters; printerIdx++)
|
||||
{
|
||||
BMessage getPrinter(B_GET_PROPERTY);
|
||||
getPrinter.AddSpecifier("Printer", printerIdx);
|
||||
msgr.SendMessage(&getPrinter, &reply);
|
||||
|
||||
reply.PrintToStream();
|
||||
|
||||
BMessenger thePrinter;
|
||||
if (reply.FindMessenger("result", &thePrinter) == B_OK) {
|
||||
AddItem(new PrinterItem(thePrinter), CountItems());
|
||||
}
|
||||
void PrinterListView::BuildPrinterList() {
|
||||
// clear list
|
||||
const BListItem** items = Items();
|
||||
for (int32 i = CountItems()-1; i >= 0; i --) {
|
||||
delete items[i];
|
||||
}
|
||||
MakeEmpty();
|
||||
|
||||
// TODO: Fixup situation in which PrintServer is not running
|
||||
BEntry entry;
|
||||
status_t rc;
|
||||
BPath path;
|
||||
|
||||
// Find directory containing printer definition nodes
|
||||
if ((rc=::find_directory(B_USER_PRINTERS_DIRECTORY, &path)) == B_OK) {
|
||||
BDirectory dir(path.Path());
|
||||
|
||||
// Can we reach the directory?
|
||||
if ((rc = dir.InitCheck()) == B_OK) {
|
||||
fNode = dir;
|
||||
// Yes, so loop over it's entries
|
||||
while((rc = dir.GetNextEntry(&entry)) == B_OK) {
|
||||
BDirectory printer(&entry);
|
||||
AddPrinter(printer);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -70,6 +77,8 @@ void PrinterListView::AttachedToWindow()
|
||||
SetInvocationMessage(new BMessage(MSG_MKDEF_PRINTER));
|
||||
SetTarget(Window());
|
||||
|
||||
BuildPrinterList();
|
||||
|
||||
// Select active printer
|
||||
for (int32 i = 0; i < CountItems(); i ++) {
|
||||
PrinterItem* item = dynamic_cast<PrinterItem*>(ItemAt(i));
|
||||
@@ -77,14 +86,89 @@ void PrinterListView::AttachedToWindow()
|
||||
Select(i); break;
|
||||
}
|
||||
}
|
||||
|
||||
BPath path;
|
||||
if (find_directory(B_USER_PRINTERS_DIRECTORY, &path) == B_OK) {
|
||||
BDirectory dir(path.Path());
|
||||
if (dir.InitCheck() == B_OK) {
|
||||
fFolder = new FolderWatcher(this->Window(), dir, true);
|
||||
fFolder->SetListener(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool PrinterListView::QuitRequested() {
|
||||
delete fFolder; fFolder = NULL;
|
||||
return true;
|
||||
}
|
||||
|
||||
void PrinterListView::AddPrinter(BDirectory& printer) {
|
||||
BString state;
|
||||
node_ref node;
|
||||
// If the entry is a directory
|
||||
if (printer.InitCheck() == B_OK &&
|
||||
printer.GetNodeRef(&node) == B_OK &&
|
||||
FindItem(&node) == NULL &&
|
||||
printer.ReadAttrString(PSRV_PRINTER_ATTR_STATE, &state) == B_OK &&
|
||||
state == "free") {
|
||||
// Check it's Mime type for a spool director
|
||||
BNodeInfo info(&printer);
|
||||
char buffer[256];
|
||||
|
||||
if (info.GetType(buffer) == B_OK &&
|
||||
strcmp(buffer, PSRV_PRINTER_FILETYPE) == 0) {
|
||||
// Yes, it is a printer definition node
|
||||
AddItem(new PrinterItem(dynamic_cast<PrintersWindow*>(Window()), printer));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PrinterItem* PrinterListView::FindItem(node_ref* node) {
|
||||
for (int32 i = CountItems()-1; i >= 0; i --) {
|
||||
PrinterItem* item = dynamic_cast<PrinterItem*>(ItemAt(i));
|
||||
node_ref ref;
|
||||
if (item && item->Node()->GetNodeRef(&ref) == B_OK && ref == *node) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void PrinterListView::EntryCreated(node_ref* node, entry_ref* entry) {
|
||||
BDirectory printer(node);
|
||||
AddPrinter(printer);
|
||||
}
|
||||
|
||||
void PrinterListView::EntryRemoved(node_ref* node) {
|
||||
PrinterItem* item = FindItem(node);
|
||||
if (item) {
|
||||
RemoveItem(item);
|
||||
delete item;
|
||||
}
|
||||
}
|
||||
|
||||
void PrinterListView::AttributeChanged(node_ref* node) {
|
||||
BDirectory printer(node);
|
||||
AddPrinter(printer);
|
||||
}
|
||||
|
||||
void PrinterListView::UpdateItem(PrinterItem* item) {
|
||||
item->UpdatePendingJobs();
|
||||
InvalidateItem(IndexOf(item));
|
||||
}
|
||||
|
||||
PrinterItem* PrinterListView::SelectedItem() {
|
||||
BListItem* item = ItemAt(CurrentSelection());
|
||||
return dynamic_cast<PrinterItem*>(item);
|
||||
}
|
||||
|
||||
BBitmap* PrinterItem::sIcon = NULL;
|
||||
BBitmap* PrinterItem::sSelectedIcon = NULL;
|
||||
|
||||
PrinterItem::PrinterItem(const BMessenger& thePrinter)
|
||||
: BListItem(0, false),
|
||||
fMessenger(thePrinter)
|
||||
PrinterItem::PrinterItem(PrintersWindow* window, const BDirectory& node)
|
||||
: BListItem(0, false)
|
||||
, fFolder(NULL)
|
||||
, fNode(node)
|
||||
{
|
||||
if (sIcon == NULL)
|
||||
{
|
||||
@@ -101,19 +185,29 @@ PrinterItem::PrinterItem(const BMessenger& thePrinter)
|
||||
}
|
||||
|
||||
// Get Name of printer
|
||||
GetStringProperty("Name", fName);
|
||||
GetStringProperty("Comments", fComments);
|
||||
GetStringProperty("TransportAddon", fTransport);
|
||||
GetStringProperty("PrinterAddon", fDriverName);
|
||||
GetStringProperty(PSRV_PRINTER_ATTR_PRT_NAME, fName);
|
||||
GetStringProperty(PSRV_PRINTER_ATTR_COMMENTS, fComments);
|
||||
GetStringProperty(PSRV_PRINTER_ATTR_TRANSPORT, fTransport);
|
||||
GetStringProperty(PSRV_PRINTER_ATTR_DRV_NAME, fDriverName);
|
||||
|
||||
BPath path;
|
||||
// Setup spool folder
|
||||
if (find_directory(B_USER_PRINTERS_DIRECTORY, &path) == B_OK) {
|
||||
path.Append(fName.String());
|
||||
BDirectory dir(path.Path());
|
||||
if (dir.InitCheck() != B_OK) return;
|
||||
fFolder = new SpoolFolder(window, this, dir);
|
||||
}
|
||||
UpdatePendingJobs();
|
||||
}
|
||||
|
||||
PrinterItem::~PrinterItem() {
|
||||
delete fFolder; fFolder = NULL;
|
||||
}
|
||||
|
||||
void PrinterItem::GetStringProperty(const char* propName, BString& outString)
|
||||
{
|
||||
BMessage script(B_GET_PROPERTY);
|
||||
BMessage reply;
|
||||
script.AddSpecifier(propName);
|
||||
fMessenger.SendMessage(&script,&reply);
|
||||
reply.FindString("result", &outString);
|
||||
fNode.ReadAttrString(propName, &outString);
|
||||
}
|
||||
|
||||
void PrinterItem::Update(BView *owner, const BFont *font)
|
||||
@@ -126,7 +220,7 @@ void PrinterItem::Update(BView *owner, const BFont *font)
|
||||
SetHeight( (height.ascent+height.descent+height.leading) * 3.0 +4 );
|
||||
}
|
||||
|
||||
void PrinterItem::Remove(BListView* view)
|
||||
bool PrinterItem::Remove(BListView* view)
|
||||
{
|
||||
BMessenger msgr;
|
||||
|
||||
@@ -137,9 +231,11 @@ void PrinterItem::Remove(BListView* view)
|
||||
|
||||
script.AddSpecifier("Printer", view->IndexOf(this));
|
||||
|
||||
if (msgr.SendMessage(&script,&reply) == B_OK)
|
||||
view->RemoveItem(this);
|
||||
if (msgr.SendMessage(&script,&reply) == B_OK) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void PrinterItem::DrawItem(BView *owner, BRect /*bounds*/, bool complete)
|
||||
@@ -174,7 +270,7 @@ void PrinterItem::DrawItem(BView *owner, BRect /*bounds*/, bool complete)
|
||||
BPoint driverPt = iconPt + BPoint(B_LARGE_ICON+8, fntheight*2);
|
||||
BPoint commentPt = iconPt + BPoint(B_LARGE_ICON+8, fntheight*3);
|
||||
|
||||
float width = owner->StringWidth("No jobs pending.");
|
||||
float width = owner->StringWidth("No pending jobs.");
|
||||
BPoint pendingPt(bounds.right - width -8, namePt.y);
|
||||
BPoint transportPt(bounds.right - width -8, driverPt.y);
|
||||
|
||||
@@ -188,7 +284,7 @@ void PrinterItem::DrawItem(BView *owner, BRect /*bounds*/, bool complete)
|
||||
owner->DrawString(fComments.String(), fComments.Length(), commentPt);
|
||||
|
||||
// right of item
|
||||
owner->DrawString("No jobs pending.", 16, pendingPt);
|
||||
owner->DrawString(fPendingJobs.String(), 16, pendingPt);
|
||||
owner->DrawString(fTransport.String(), fTransport.Length(), transportPt);
|
||||
|
||||
owner->SetDrawingMode(mode);
|
||||
@@ -218,3 +314,28 @@ bool PrinterItem::IsActivePrinter()
|
||||
return rc;
|
||||
}
|
||||
|
||||
bool PrinterItem::HasPendingJobs() {
|
||||
return fFolder && fFolder->CountJobs() > 0;
|
||||
}
|
||||
|
||||
SpoolFolder* PrinterItem::Folder() {
|
||||
return fFolder;
|
||||
}
|
||||
|
||||
BDirectory* PrinterItem::Node() {
|
||||
return &fNode;
|
||||
}
|
||||
|
||||
void PrinterItem::UpdatePendingJobs() {
|
||||
if (fFolder) {
|
||||
uint32 pendingJobs = fFolder->CountJobs();
|
||||
fPendingJobs = "";
|
||||
if (pendingJobs == 1) {
|
||||
fPendingJobs = "1 pending job.";
|
||||
} else if (pendingJobs > 1) {
|
||||
fPendingJobs << pendingJobs << " pending jobs.h";
|
||||
}
|
||||
if (pendingJobs >= 1) return;
|
||||
}
|
||||
fPendingJobs = "No pending jobs.";
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Printers Preference Application.
|
||||
* Copyright (C) 2001 OpenBeOS. All Rights Reserved.
|
||||
* Copyright (C) 2001, 2002 OpenBeOS. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -25,37 +25,72 @@ class PrinterListView;
|
||||
#include <Messenger.h>
|
||||
#include <ListView.h>
|
||||
#include <String.h>
|
||||
#include <Directory.h>
|
||||
#include <Entry.h>
|
||||
|
||||
class PrinterListView : public BListView
|
||||
#include "FolderWatcher.h"
|
||||
|
||||
class SpoolFolder;
|
||||
class PrinterItem;
|
||||
class PrinterListView;
|
||||
|
||||
class PrinterListView : public BListView, public FolderListener
|
||||
{
|
||||
typedef BListView Inherited;
|
||||
|
||||
BDirectory fNode;
|
||||
FolderWatcher* fFolder;
|
||||
|
||||
void AddPrinter(BDirectory& printer);
|
||||
PrinterItem* FindItem(node_ref* node);
|
||||
|
||||
void EntryCreated(node_ref* node, entry_ref* entry);
|
||||
void EntryRemoved(node_ref* node);
|
||||
void AttributeChanged(node_ref* node);
|
||||
|
||||
public:
|
||||
PrinterListView(BRect frame);
|
||||
void AttachedToWindow();
|
||||
bool QuitRequested();
|
||||
|
||||
void BuildPrinterList();
|
||||
PrinterItem* SelectedItem();
|
||||
|
||||
void UpdateItem(PrinterItem* item);
|
||||
};
|
||||
|
||||
class BBitmap;
|
||||
class PrintersWindow;
|
||||
class PrinterItem : public BListItem
|
||||
{
|
||||
public:
|
||||
PrinterItem(const BMessenger& thePrinter);
|
||||
|
||||
PrinterItem(PrintersWindow* window, const BDirectory& node/*const BMessenger& thePrinter*/);
|
||||
~PrinterItem();
|
||||
|
||||
void DrawItem(BView *owner, BRect bounds, bool complete);
|
||||
void Update(BView *owner, const BFont *font);
|
||||
|
||||
void Remove(BListView* view);
|
||||
bool Remove(BListView* view);
|
||||
bool IsActivePrinter();
|
||||
bool HasPendingJobs();
|
||||
|
||||
const char* Name() const
|
||||
{ return fName.String(); }
|
||||
|
||||
SpoolFolder* Folder();
|
||||
BDirectory* Node();
|
||||
void UpdatePendingJobs();
|
||||
|
||||
private:
|
||||
void GetStringProperty(const char* propName, BString& outString);
|
||||
|
||||
BMessenger fMessenger;
|
||||
SpoolFolder *fFolder;
|
||||
BDirectory fNode;
|
||||
BString fComments;
|
||||
BString fTransport;
|
||||
BString fDriverName;
|
||||
BString fName;
|
||||
BString fPendingJobs;
|
||||
static BBitmap* sIcon;
|
||||
static BBitmap* sSelectedIcon;
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Printers Preference Application.
|
||||
* Copyright (C) 2001 OpenBeOS. All Rights Reserved.
|
||||
* Copyright (C) 2001, 2002 OpenBeOS. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -40,3 +40,16 @@ void PrintersApp::ReadyToRun()
|
||||
PrintersWindow* win = new PrintersWindow(BRect(78.0, 71.0, 561.0, 409.0));
|
||||
win->Show();
|
||||
}
|
||||
|
||||
void PrintersApp::MessageReceived(BMessage* msg) {
|
||||
if (msg->what == B_PRINTER_CHANGED) {
|
||||
// broadcast message
|
||||
BWindow* w;
|
||||
for (int32 i = 0; (w = WindowAt(i)) != NULL; i ++) {
|
||||
BMessenger msgr(NULL, w);
|
||||
msgr.SendMessage(B_PRINTER_CHANGED);
|
||||
}
|
||||
} else {
|
||||
BApplication::MessageReceived(msg);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Printers Preference Application.
|
||||
* Copyright (C) 2001 OpenBeOS. All Rights Reserved.
|
||||
* Copyright (C) 2001, 2002 OpenBeOS. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -32,6 +32,7 @@ class PrintersApp : public BApplication
|
||||
public:
|
||||
PrintersApp();
|
||||
void ReadyToRun();
|
||||
void MessageReceived(BMessage* msg);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Printers Preference Application.
|
||||
* Copyright (C) 2001 OpenBeOS. All Rights Reserved.
|
||||
* Copyright (C) 2001, 2002 OpenBeOS. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -24,6 +24,8 @@
|
||||
#include "pr_server.h"
|
||||
#include "Globals.h"
|
||||
#include "Messages.h"
|
||||
#include "JobListView.h"
|
||||
#include "SpoolFolder.h"
|
||||
|
||||
// BeOS API
|
||||
#include <Box.h>
|
||||
@@ -31,9 +33,11 @@
|
||||
#include <ListView.h>
|
||||
#include <ScrollView.h>
|
||||
#include <Application.h>
|
||||
#include <FindDirectory.h>
|
||||
|
||||
PrintersWindow::PrintersWindow(BRect frame)
|
||||
: Inherited(BRect(78.0, 71.0, 561.0, 409.0), "Printers", B_TITLED_WINDOW, B_NOT_H_RESIZABLE)
|
||||
, fSelectedPrinter(NULL)
|
||||
{
|
||||
BuildGUI();
|
||||
}
|
||||
@@ -54,52 +58,35 @@ void PrintersWindow::MessageReceived(BMessage* msg)
|
||||
{
|
||||
case MSG_PRINTER_SELECTED:
|
||||
{
|
||||
int32 prIndex = fPrinterListView->CurrentSelection();
|
||||
if (prIndex >= 0)
|
||||
PrinterItem* fSelectedPrinter = fPrinterListView->SelectedItem();
|
||||
if (fSelectedPrinter)
|
||||
{
|
||||
BMessenger msgr;
|
||||
if (::GetPrinterServerMessenger(msgr) == B_OK)
|
||||
{
|
||||
BMessage script(B_GET_PROPERTY);
|
||||
BMessage reply;
|
||||
BString name;
|
||||
|
||||
script.AddSpecifier("Name");
|
||||
script.AddSpecifier("Printer", fPrinterListView->CurrentSelection());
|
||||
msgr.SendMessage(&script,&reply);
|
||||
if (reply.FindString("result", &name) == B_OK)
|
||||
{
|
||||
fJobsBox->SetLabel((BString("Print Jobs for ") << name).String());
|
||||
fMakeDefault->SetEnabled(true);
|
||||
fRemove->SetEnabled(true);
|
||||
}
|
||||
}
|
||||
fJobsBox->SetLabel((BString("Print Jobs for ") << fSelectedPrinter->Name()).String());
|
||||
fMakeDefault->SetEnabled(true);
|
||||
fRemove->SetEnabled(true);
|
||||
fJobListView->SetSpoolFolder(fSelectedPrinter->Folder());
|
||||
}
|
||||
else
|
||||
{
|
||||
fJobsBox->SetLabel("Print Jobs: No printer selected");
|
||||
fMakeDefault->SetEnabled(false);
|
||||
fRemove->SetEnabled(false);
|
||||
fSelectedPrinter = NULL;
|
||||
fJobListView->SetSpoolFolder(NULL);
|
||||
}
|
||||
UpdateJobButtons();
|
||||
UpdatePrinterButtons();
|
||||
}
|
||||
break;
|
||||
|
||||
case MSG_ADD_PRINTER:
|
||||
if (AddPrinterDialog::Start() == B_OK);
|
||||
AddPrinterDialog::Start();
|
||||
break;
|
||||
|
||||
case MSG_REMOVE_PRINTER:
|
||||
{
|
||||
// Get selection
|
||||
int32 idx = fPrinterListView->CurrentSelection();
|
||||
|
||||
// If a printer is selected
|
||||
if (idx >= 0)
|
||||
{
|
||||
PrinterItem* item = (PrinterItem*)fPrinterListView->ItemAt(idx);
|
||||
if (item != NULL)
|
||||
item->Remove(fPrinterListView);
|
||||
}
|
||||
fSelectedPrinter = fPrinterListView->SelectedItem();
|
||||
if (fSelectedPrinter) fSelectedPrinter->Remove(fPrinterListView);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -118,19 +105,27 @@ void PrintersWindow::MessageReceived(BMessage* msg)
|
||||
msgr.SendMessage(&setActivePrinter);
|
||||
|
||||
fPrinterListView->Invalidate();
|
||||
UpdatePrinterButtons();
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case MSG_CANCEL_JOB:
|
||||
case MSG_CANCEL_JOB: fJobListView->CancelJob();
|
||||
break;
|
||||
|
||||
case MSG_RESTART_JOB:
|
||||
case MSG_RESTART_JOB: fJobListView->RestartJob();
|
||||
break;
|
||||
|
||||
case MSG_JOB_SELECTED: UpdateJobButtons();
|
||||
break;
|
||||
|
||||
case B_PRINTER_CHANGED:
|
||||
// active printer could have been changed
|
||||
fPrinterListView->Invalidate();
|
||||
break;
|
||||
|
||||
default:
|
||||
Inherited::MessageReceived(msg);
|
||||
}
|
||||
@@ -216,6 +211,7 @@ void PrintersWindow::BuildGUI()
|
||||
BButton* cancelButton = new BButton(BRect(5,5,5,5), "cancel", "Cancel Job", new BMessage(MSG_CANCEL_JOB), B_FOLLOW_RIGHT+B_FOLLOW_TOP);
|
||||
fJobsBox->AddChild(cancelButton);
|
||||
cancelButton->ResizeToPreferred();
|
||||
fCancel = cancelButton;
|
||||
|
||||
maxWidth = cancelButton->Bounds().Width();
|
||||
|
||||
@@ -223,6 +219,7 @@ void PrintersWindow::BuildGUI()
|
||||
BButton* restartButton = new BButton(BRect(5,30,5,30), "restart", "Restart Job", new BMessage(MSG_RESTART_JOB), B_FOLLOW_RIGHT+B_FOLLOW_TOP);
|
||||
fJobsBox->AddChild(restartButton);
|
||||
restartButton->ResizeToPreferred();
|
||||
fRestart = restartButton;
|
||||
|
||||
if (restartButton->Bounds().Width() > maxWidth)
|
||||
maxWidth = restartButton->Bounds().Width();
|
||||
@@ -242,7 +239,7 @@ void PrintersWindow::BuildGUI()
|
||||
// Create listview with scroller
|
||||
listBounds = BRect(boxInset, boxInset+5, cancelButton->Frame().left - boxInset - B_V_SCROLL_BAR_WIDTH,
|
||||
fJobsBox->Bounds().Height()-boxInset);
|
||||
fJobListView = new BListView(listBounds, "jobs_list", B_SINGLE_SELECTION_LIST, B_FOLLOW_ALL);
|
||||
fJobListView = new JobListView(listBounds);
|
||||
BScrollView* jscroller = new BScrollView("jobs_scroller", fJobListView,
|
||||
B_FOLLOW_ALL, B_WILL_DRAW | B_FRAME_EVENTS, false, true, B_FANCY_BORDER);
|
||||
fJobsBox->AddChild(jscroller);
|
||||
@@ -258,3 +255,50 @@ void PrintersWindow::BuildGUI()
|
||||
|
||||
SetSizeLimits(Bounds().Width(), Bounds().Width(), Bounds().Height(), 20000);
|
||||
}
|
||||
|
||||
bool PrintersWindow::IsSelected(PrinterItem* printer) {
|
||||
return fSelectedPrinter && fSelectedPrinter == printer;
|
||||
}
|
||||
|
||||
void PrintersWindow::AddJob(SpoolFolder* folder, Job* job) {
|
||||
if (IsSelected(folder->Item())) {
|
||||
fJobListView->AddJob(job);
|
||||
}
|
||||
fPrinterListView->UpdateItem(folder->Item());
|
||||
UpdatePrinterButtons();
|
||||
}
|
||||
|
||||
void PrintersWindow::RemoveJob(SpoolFolder* folder, Job* job) {
|
||||
if (IsSelected(folder->Item())) {
|
||||
fJobListView->RemoveJob(job);
|
||||
}
|
||||
fPrinterListView->UpdateItem(folder->Item());
|
||||
UpdatePrinterButtons();
|
||||
}
|
||||
|
||||
void PrintersWindow::UpdateJob(SpoolFolder* folder, Job* job) {
|
||||
if (IsSelected(folder->Item())) {
|
||||
fJobListView->UpdateJob(job);
|
||||
UpdateJobButtons();
|
||||
}
|
||||
fPrinterListView->UpdateItem(folder->Item());
|
||||
UpdatePrinterButtons();
|
||||
}
|
||||
|
||||
void PrintersWindow::UpdatePrinterButtons() {
|
||||
PrinterItem* item = fPrinterListView->SelectedItem();
|
||||
fRemove->SetEnabled(item && !item->HasPendingJobs());
|
||||
fMakeDefault->SetEnabled(item && !item->IsActivePrinter());
|
||||
}
|
||||
|
||||
void PrintersWindow::UpdateJobButtons() {
|
||||
JobItem* item = fJobListView->SelectedItem();
|
||||
if (item != NULL) {
|
||||
Job* job = item->GetJob();
|
||||
fCancel->SetEnabled(job->Status() != kProcessing);
|
||||
fRestart->SetEnabled(job->Status() == kFailed);
|
||||
} else {
|
||||
fCancel->SetEnabled(false);
|
||||
fRestart->SetEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Printers Preference Application.
|
||||
* Copyright (C) 2001 OpenBeOS. All Rights Reserved.
|
||||
* Copyright (C) 2001, 2002 OpenBeOS. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -21,6 +21,11 @@
|
||||
#define PRINTERSWINDOW_H
|
||||
|
||||
class PrintersWindow;
|
||||
class PrinterListView;
|
||||
class JobListView;
|
||||
class Job;
|
||||
class SpoolFolder;
|
||||
class PrinterItem;
|
||||
|
||||
#include <Window.h>
|
||||
|
||||
@@ -32,15 +37,28 @@ public:
|
||||
|
||||
void MessageReceived(BMessage* msg);
|
||||
bool QuitRequested();
|
||||
|
||||
void AddJob(SpoolFolder* folder, Job* job);
|
||||
void RemoveJob(SpoolFolder* folder, Job* job);
|
||||
void UpdateJob(SpoolFolder* folder, Job* job);
|
||||
|
||||
private:
|
||||
void BuildGUI();
|
||||
bool IsSelected(PrinterItem* printer);
|
||||
void UpdatePrinterButtons();
|
||||
void UpdateJobButtons();
|
||||
|
||||
BListView* fPrinterListView;
|
||||
PrinterListView* fPrinterListView;
|
||||
BButton* fMakeDefault;
|
||||
BButton* fRemove;
|
||||
|
||||
BListView* fJobListView;
|
||||
JobListView* fJobListView;
|
||||
BButton* fRestart;
|
||||
BButton* fCancel;
|
||||
|
||||
BBox* fJobsBox;
|
||||
|
||||
PrinterItem* fSelectedPrinter;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Printers Preference Application.
|
||||
* Copyright (C) 2002 OpenBeOS. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "SpoolFolder.h"
|
||||
#include "JobListView.h"
|
||||
#include "pr_server.h"
|
||||
|
||||
#include "Messages.h"
|
||||
#include "Globals.h"
|
||||
#include "Jobs.h"
|
||||
#include "PrintersWindow.h"
|
||||
|
||||
#include <Messenger.h>
|
||||
#include <Bitmap.h>
|
||||
#include <String.h>
|
||||
#include <Alert.h>
|
||||
#include <Mime.h>
|
||||
#include <Roster.h>
|
||||
|
||||
SpoolFolder::SpoolFolder(PrintersWindow* window, PrinterItem* item, const BDirectory& spoolDir)
|
||||
: Folder(NULL, window, spoolDir)
|
||||
, fWindow(window)
|
||||
, fItem(item)
|
||||
{
|
||||
}
|
||||
|
||||
void SpoolFolder::Notify(Job* job, int kind)
|
||||
{
|
||||
switch (kind) {
|
||||
case kJobAdded: fWindow->AddJob(this, job);
|
||||
break;
|
||||
case kJobRemoved: fWindow->RemoveJob(this, job);
|
||||
break;
|
||||
case kJobAttrChanged: fWindow->UpdateJob(this, job);
|
||||
break;
|
||||
default: ;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Printers Preference Application.
|
||||
* Copyright (C) 2001, 2002 OpenBeOS. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef SPOOL_FOLDER_H
|
||||
#define SPOOL_FODLER_H
|
||||
|
||||
#include <Messenger.h>
|
||||
#include <ListView.h>
|
||||
#include <String.h>
|
||||
|
||||
#include "Jobs.h"
|
||||
|
||||
class PrintersWindow;
|
||||
class PrinterItem;
|
||||
|
||||
class SpoolFolder : public Folder {
|
||||
protected:
|
||||
void Notify(Job* job, int kind);
|
||||
|
||||
PrintersWindow* fWindow;
|
||||
PrinterItem* fItem;
|
||||
|
||||
public:
|
||||
SpoolFolder(PrintersWindow* window, PrinterItem* item, const BDirectory& spoolDir);
|
||||
PrinterItem* Item() const { return fItem; }
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,691 @@
|
||||
# Doxyfile 1.2.1
|
||||
|
||||
# This file describes the settings to be used by doxygen for a project
|
||||
#
|
||||
# All text after a hash (#) is considered a comment and will be ignored
|
||||
# The format is:
|
||||
# TAG = value [value, ...]
|
||||
# For lists items can also be appended using:
|
||||
# TAG += value [value, ...]
|
||||
# Values that contain spaces should be placed between quotes (" ")
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# General configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
|
||||
# by quotes) that should identify the project.
|
||||
|
||||
PROJECT_NAME = "Printer Preferences"
|
||||
|
||||
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
|
||||
# This could be handy for archiving the generated documentation or
|
||||
# if some version control system is used.
|
||||
|
||||
PROJECT_NUMBER = "Beta 3"
|
||||
|
||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
||||
# base path where the generated documentation will be put.
|
||||
# If a relative path is entered, it will be relative to the location
|
||||
# where doxygen was started. If left blank the current directory will be used.
|
||||
|
||||
OUTPUT_DIRECTORY = doxygen
|
||||
|
||||
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
|
||||
# documentation generated by doxygen is written. Doxygen will use this
|
||||
# information to generate all constant output in the proper language.
|
||||
# The default language is English, other supported languages are:
|
||||
# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese,
|
||||
# Spanish, Russian, Croatian, Polish, and Portuguese.
|
||||
|
||||
OUTPUT_LANGUAGE = English
|
||||
|
||||
# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
|
||||
# documentation are documented, even if no documentation was available.
|
||||
# Private class members and static file members will be hidden unless
|
||||
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
|
||||
|
||||
EXTRACT_ALL = YES
|
||||
|
||||
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
|
||||
# will be included in the documentation.
|
||||
|
||||
EXTRACT_PRIVATE = YES
|
||||
|
||||
# If the EXTRACT_STATIC tag is set to YES all static members of a file
|
||||
# will be included in the documentation.
|
||||
|
||||
EXTRACT_STATIC = YES
|
||||
|
||||
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
|
||||
# undocumented members of documented classes, files or namespaces.
|
||||
# If set to NO (the default) these members will be included in the
|
||||
# various overviews, but no documentation section is generated.
|
||||
# This option has no effect if EXTRACT_ALL is enabled.
|
||||
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
|
||||
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
|
||||
# undocumented classes that are normally visible in the class hierarchy.
|
||||
# If set to NO (the default) these class will be included in the various
|
||||
# overviews. This option has no effect if EXTRACT_ALL is enabled.
|
||||
|
||||
HIDE_UNDOC_CLASSES = NO
|
||||
|
||||
# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
|
||||
# include brief member descriptions after the members that are listed in
|
||||
# the file and class documentation (similar to JavaDoc).
|
||||
# Set to NO to disable this.
|
||||
|
||||
BRIEF_MEMBER_DESC = YES
|
||||
|
||||
# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
|
||||
# the brief description of a member or function before the detailed description.
|
||||
# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
|
||||
# brief descriptions will be completely suppressed.
|
||||
|
||||
REPEAT_BRIEF = YES
|
||||
|
||||
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
|
||||
# Doxygen will generate a detailed section even if there is only a brief
|
||||
# description.
|
||||
|
||||
ALWAYS_DETAILED_SEC = NO
|
||||
|
||||
# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
|
||||
# path before files name in the file list and in the header files. If set
|
||||
# to NO the shortest path that makes the file name unique will be used.
|
||||
|
||||
FULL_PATH_NAMES = NO
|
||||
|
||||
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
|
||||
# can be used to strip a user defined part of the path. Stripping is
|
||||
# only done if one of the specified strings matches the left-hand part of
|
||||
# the path. It is allowed to use relative paths in the argument list.
|
||||
|
||||
STRIP_FROM_PATH =
|
||||
|
||||
# The INTERNAL_DOCS tag determines if documentation
|
||||
# that is typed after a \internal command is included. If the tag is set
|
||||
# to NO (the default) then the documentation will be excluded.
|
||||
# Set it to YES to include the internal documentation.
|
||||
|
||||
INTERNAL_DOCS = NO
|
||||
|
||||
# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
|
||||
# generate a class diagram (in Html and LaTeX) for classes with base or
|
||||
# super classes. Setting the tag to NO turns the diagrams off.
|
||||
|
||||
CLASS_DIAGRAMS = YES
|
||||
|
||||
# If the SOURCE_BROWSER tag is set to YES then a list of source files will
|
||||
# be generated. Documented entities will be cross-referenced with these sources.
|
||||
|
||||
SOURCE_BROWSER = YES
|
||||
|
||||
# Setting the INLINE_SOURCES tag to YES will include the body
|
||||
# of functions and classes directly in the documentation.
|
||||
|
||||
INLINE_SOURCES = NO
|
||||
|
||||
# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
|
||||
# doxygen to hide any special comment blocks from generated source code
|
||||
# fragments. Normal C and C++ comments will always remain visible.
|
||||
|
||||
STRIP_CODE_COMMENTS = YES
|
||||
|
||||
# If the CASE_SENSE_NAMES tag is set to NO (the default) then Doxygen
|
||||
# will only generate file names in lower case letters. If set to
|
||||
# YES upper case letters are also allowed. This is useful if you have
|
||||
# classes or files whose names only differ in case and if your file system
|
||||
# supports case sensitive file names.
|
||||
|
||||
CASE_SENSE_NAMES = YES
|
||||
|
||||
# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
|
||||
# will show members with their full class and namespace scopes in the
|
||||
# documentation. If set to YES the scope will be hidden.
|
||||
|
||||
HIDE_SCOPE_NAMES = NO
|
||||
|
||||
# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
|
||||
# will generate a verbatim copy of the header file for each class for
|
||||
# which an include is specified. Set to NO to disable this.
|
||||
|
||||
VERBATIM_HEADERS = YES
|
||||
|
||||
# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
|
||||
# will put list of the files that are included by a file in the documentation
|
||||
# of that file.
|
||||
|
||||
SHOW_INCLUDE_FILES = YES
|
||||
|
||||
# If the JAVADOC_AUTOBRIEF tag is set to YES (the default) then Doxygen
|
||||
# will interpret the first line (until the first dot) of a JavaDoc-style
|
||||
# comment as the brief description. If set to NO, the Javadoc-style will
|
||||
# behave just like the Qt-style comments.
|
||||
|
||||
JAVADOC_AUTOBRIEF = YES
|
||||
|
||||
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
|
||||
# member inherits the documentation from any documented member that it
|
||||
# reimplements.
|
||||
|
||||
INHERIT_DOCS = YES
|
||||
|
||||
# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
|
||||
# is inserted in the documentation for inline members.
|
||||
|
||||
INLINE_INFO = YES
|
||||
|
||||
# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
|
||||
# will sort the (detailed) documentation of file and class members
|
||||
# alphabetically by member name. If set to NO the members will appear in
|
||||
# declaration order.
|
||||
|
||||
SORT_MEMBER_DOCS = YES
|
||||
|
||||
# The TAB_SIZE tag can be used to set the number of spaces in a tab.
|
||||
# Doxygen uses this value to replace tabs by spaces in code fragments.
|
||||
|
||||
TAB_SIZE = 8
|
||||
|
||||
# The ENABLE_SECTIONS tag can be used to enable conditional
|
||||
# documentation sections, marked by \if sectionname ... \endif.
|
||||
|
||||
ENABLED_SECTIONS =
|
||||
|
||||
# The GENERATE_TODOLIST tag can be used to enable (YES) or
|
||||
# disable (NO) the todo list. This list is created by putting \todo
|
||||
# commands in the documentation.
|
||||
|
||||
GENERATE_TODOLIST = YES
|
||||
|
||||
# The GENERATE_TESTLIST tag can be used to enable (YES) or
|
||||
# disable (NO) the test list. This list is created by putting \test
|
||||
# commands in the documentation.
|
||||
|
||||
GENERATE_TESTLIST = YES
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to warning and progress messages
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# The QUIET tag can be used to turn on/off the messages that are generated
|
||||
# by doxygen. Possible values are YES and NO. If left blank NO is used.
|
||||
|
||||
QUIET = YES
|
||||
|
||||
# The WARNINGS tag can be used to turn on/off the warning messages that are
|
||||
# generated by doxygen. Possible values are YES and NO. If left blank
|
||||
# NO is used.
|
||||
|
||||
WARNINGS = YES
|
||||
|
||||
# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
|
||||
# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
|
||||
# automatically be disabled.
|
||||
|
||||
WARN_IF_UNDOCUMENTED = YES
|
||||
|
||||
# The WARN_FORMAT tag determines the format of the warning messages that
|
||||
# doxygen can produce. The string should contain the $file, $line, and $text
|
||||
# tags, which will be replaced by the file and line number from which the
|
||||
# warning originated and the warning text.
|
||||
|
||||
WARN_FORMAT = "$file:$line: $text"
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the input files
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# The INPUT tag can be used to specify the files and/or directories that contain
|
||||
# documented source files. You may enter file names like "myfile.cpp" or
|
||||
# directories like "/usr/src/myproject". Separate the files or directories
|
||||
# with spaces.
|
||||
|
||||
INPUT = ./
|
||||
|
||||
# If the value of the INPUT tag contains directories, you can use the
|
||||
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
|
||||
# and *.h) to filter out the source-files in the directories. If left
|
||||
# blank all files are included.
|
||||
|
||||
FILE_PATTERNS = *.cpp *.h
|
||||
|
||||
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
|
||||
# should be searched for input files as well. Possible values are YES and NO.
|
||||
# If left blank NO is used.
|
||||
|
||||
RECURSIVE = NO
|
||||
|
||||
# The EXCLUDE tag can be used to specify files and/or directories that should
|
||||
# excluded from the INPUT source files. This way you can easily exclude a
|
||||
# subdirectory from a directory tree whose root is specified with the INPUT tag.
|
||||
|
||||
EXCLUDE =
|
||||
|
||||
# If the value of the INPUT tag contains directories, you can use the
|
||||
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
|
||||
# certain files from those directories.
|
||||
|
||||
EXCLUDE_PATTERNS =
|
||||
|
||||
# The EXAMPLE_PATH tag can be used to specify one or more files or
|
||||
# directories that contain example code fragments that are included (see
|
||||
# the \include command).
|
||||
|
||||
EXAMPLE_PATH =
|
||||
|
||||
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
|
||||
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
|
||||
# and *.h) to filter out the source-files in the directories. If left
|
||||
# blank all files are included.
|
||||
|
||||
EXAMPLE_PATTERNS =
|
||||
|
||||
# The IMAGE_PATH tag can be used to specify one or more files or
|
||||
# directories that contain image that are included in the documentation (see
|
||||
# the \image command).
|
||||
|
||||
IMAGE_PATH =
|
||||
|
||||
# The INPUT_FILTER tag can be used to specify a program that doxygen should
|
||||
# invoke to filter for each input file. Doxygen will invoke the filter program
|
||||
# by executing (via popen()) the command <filter> <input-file>, where <filter>
|
||||
# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
|
||||
# input file. Doxygen will then use the output that the filter program writes
|
||||
# to standard output.
|
||||
|
||||
INPUT_FILTER =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the alphabetical class index
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
|
||||
# of all compounds will be generated. Enable this if the project
|
||||
# contains a lot of classes, structs, unions or interfaces.
|
||||
|
||||
ALPHABETICAL_INDEX = YES
|
||||
|
||||
# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
|
||||
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
|
||||
# in which this list will be split (can be a number in the range [1..20])
|
||||
|
||||
COLS_IN_ALPHA_INDEX = 5
|
||||
|
||||
# In case all classes in a project start with a common prefix, all
|
||||
# classes will be put under the same header in the alphabetical index.
|
||||
# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
|
||||
# should be ignored while generating the index headers.
|
||||
|
||||
IGNORE_PREFIX =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the HTML output
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
|
||||
# generate HTML output.
|
||||
|
||||
GENERATE_HTML = YES
|
||||
|
||||
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
|
||||
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
||||
# put in front of it. If left blank `html' will be used as the default path.
|
||||
|
||||
HTML_OUTPUT = html
|
||||
|
||||
# The HTML_HEADER tag can be used to specify a personal HTML header for
|
||||
# each generated HTML page. If it is left blank doxygen will generate a
|
||||
# standard header.
|
||||
|
||||
HTML_HEADER =
|
||||
|
||||
# The HTML_FOOTER tag can be used to specify a personal HTML footer for
|
||||
# each generated HTML page. If it is left blank doxygen will generate a
|
||||
# standard footer.
|
||||
|
||||
HTML_FOOTER =
|
||||
|
||||
# The HTML_STYLESHEET tag can be used to specify a user defined cascading
|
||||
# style sheet that is used by each HTML page. It can be used to
|
||||
# fine-tune the look of the HTML output. If the tag is left blank doxygen
|
||||
# will generate a default style sheet
|
||||
|
||||
HTML_STYLESHEET =
|
||||
|
||||
# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
|
||||
# files or namespaces will be aligned in HTML using tables. If set to
|
||||
# NO a bullet list will be used.
|
||||
|
||||
HTML_ALIGN_MEMBERS = YES
|
||||
|
||||
# If the GENERATE_HTMLHELP tag is set to YES, additional index files
|
||||
# will be generated that can be used as input for tools like the
|
||||
# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
|
||||
# of the generated HTML documentation.
|
||||
|
||||
GENERATE_HTMLHELP = NO
|
||||
|
||||
# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
|
||||
# top of each HTML page. The value NO (the default) enables the index and
|
||||
# the value YES disables it.
|
||||
|
||||
DISABLE_INDEX = NO
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the LaTeX output
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
|
||||
# generate Latex output.
|
||||
|
||||
GENERATE_LATEX = NO
|
||||
|
||||
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
|
||||
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
||||
# put in front of it. If left blank `latex' will be used as the default path.
|
||||
|
||||
LATEX_OUTPUT = latex
|
||||
|
||||
# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
|
||||
# LaTeX documents. This may be useful for small projects and may help to
|
||||
# save some trees in general.
|
||||
|
||||
COMPACT_LATEX = NO
|
||||
|
||||
# The PAPER_TYPE tag can be used to set the paper type that is used
|
||||
# by the printer. Possible values are: a4, a4wide, letter, legal and
|
||||
# executive. If left blank a4wide will be used.
|
||||
|
||||
PAPER_TYPE = a4wide
|
||||
|
||||
# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
|
||||
# packages that should be included in the LaTeX output.
|
||||
|
||||
EXTRA_PACKAGES =
|
||||
|
||||
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
|
||||
# the generated latex document. The header should contain everything until
|
||||
# the first chapter. If it is left blank doxygen will generate a
|
||||
# standard header. Notice: only use this tag if you know what you are doing!
|
||||
|
||||
LATEX_HEADER =
|
||||
|
||||
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
|
||||
# is prepared for conversion to pdf (using ps2pdf). The pdf file will
|
||||
# contain links (just like the HTML output) instead of page references
|
||||
# This makes the output suitable for online browsing using a pdf viewer.
|
||||
|
||||
PDF_HYPERLINKS = NO
|
||||
|
||||
# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
|
||||
# plain latex in the generated Makefile. Set this option to YES to get a
|
||||
# higher quality PDF documentation.
|
||||
|
||||
USE_PDFLATEX = NO
|
||||
|
||||
# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
|
||||
# command to the generated LaTeX files. This will instruct LaTeX to keep
|
||||
# running if errors occur, instead of asking the user for help.
|
||||
# This option is also used when generating formulas in HTML.
|
||||
|
||||
LATEX_BATCHMODE = NO
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the RTF output
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
|
||||
# The RTF output is optimised for Word 97 and may not look very pretty with
|
||||
# other RTF readers or editors.
|
||||
|
||||
GENERATE_RTF = NO
|
||||
|
||||
# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
|
||||
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
||||
# put in front of it. If left blank `rtf' will be used as the default path.
|
||||
|
||||
RTF_OUTPUT = rtf
|
||||
|
||||
# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
|
||||
# RTF documents. This may be useful for small projects and may help to
|
||||
# save some trees in general.
|
||||
|
||||
COMPACT_RTF = NO
|
||||
|
||||
# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
|
||||
# will contain hyperlink fields. The RTF file will
|
||||
# contain links (just like the HTML output) instead of page references.
|
||||
# This makes the output suitable for online browsing using a WORD or other.
|
||||
# programs which support those fields.
|
||||
# Note: wordpad (write) and others do not support links.
|
||||
|
||||
RTF_HYPERLINKS = NO
|
||||
|
||||
# Load stylesheet definitions from file. Syntax is similar to doxygen's
|
||||
# config file, i.e. a series of assigments. You only have to provide
|
||||
# replacements, missing definitions are set to their default value.
|
||||
|
||||
RTF_STYLESHEET_FILE =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the man page output
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
|
||||
# generate man pages
|
||||
|
||||
GENERATE_MAN = NO
|
||||
|
||||
# The MAN_OUTPUT tag is used to specify where the man pages will be put.
|
||||
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
||||
# put in front of it. If left blank `man' will be used as the default path.
|
||||
|
||||
MAN_OUTPUT = man
|
||||
|
||||
# The MAN_EXTENSION tag determines the extension that is added to
|
||||
# the generated man pages (default is the subroutine's section .3)
|
||||
|
||||
MAN_EXTENSION = .3
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the XML output
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If the GENERATE_XML tag is set to YES Doxygen will
|
||||
# generate an XML file that captures the structure of
|
||||
# the code including all documentation. Warning: This feature
|
||||
# is still experimental and very incomplete.
|
||||
|
||||
GENERATE_XML = NO
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the preprocessor
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
|
||||
# evaluate all C-preprocessor directives found in the sources and include
|
||||
# files.
|
||||
|
||||
ENABLE_PREPROCESSING = YES
|
||||
|
||||
# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
|
||||
# names in the source code. If set to NO (the default) only conditional
|
||||
# compilation will be performed. Macro expansion can be done in a controlled
|
||||
# way by setting EXPAND_ONLY_PREDEF to YES.
|
||||
|
||||
MACRO_EXPANSION = NO
|
||||
|
||||
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
|
||||
# then the macro expansion is limited to the macros specified with the
|
||||
# PREDEFINED and EXPAND_AS_PREDEFINED tags.
|
||||
|
||||
EXPAND_ONLY_PREDEF = NO
|
||||
|
||||
# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
|
||||
# in the INCLUDE_PATH (see below) will be search if a #include is found.
|
||||
|
||||
SEARCH_INCLUDES = YES
|
||||
|
||||
# The INCLUDE_PATH tag can be used to specify one or more directories that
|
||||
# contain include files that are not input files but should be processed by
|
||||
# the preprocessor.
|
||||
|
||||
INCLUDE_PATH =
|
||||
|
||||
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
|
||||
# patterns (like *.h and *.hpp) to filter out the header-files in the
|
||||
# directories. If left blank, the patterns specified with FILE_PATTERNS will
|
||||
# be used.
|
||||
|
||||
INCLUDE_FILE_PATTERNS =
|
||||
|
||||
# The PREDEFINED tag can be used to specify one or more macro names that
|
||||
# are defined before the preprocessor is started (similar to the -D option of
|
||||
# gcc). The argument of the tag is a list of macros of the form: name
|
||||
# or name=definition (no spaces). If the definition and the = are
|
||||
# omitted =1 is assumed.
|
||||
|
||||
PREDEFINED =
|
||||
|
||||
# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then
|
||||
# this tag can be used to specify a list of macro names that should be expanded.
|
||||
# The macro definition that is found in the sources will be used.
|
||||
# Use the PREDEFINED tag if you want to use a different macro definition.
|
||||
|
||||
EXPAND_AS_DEFINED =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::addtions related to external references
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# The TAGFILES tag can be used to specify one or more tagfiles.
|
||||
|
||||
TAGFILES =
|
||||
|
||||
# When a file name is specified after GENERATE_TAGFILE, doxygen will create
|
||||
# a tag file that is based on the input files it reads.
|
||||
|
||||
GENERATE_TAGFILE =
|
||||
|
||||
# If the ALLEXTERNALS tag is set to YES all external classes will be listed
|
||||
# in the class index. If set to NO only the inherited external classes
|
||||
# will be listed.
|
||||
|
||||
ALLEXTERNALS = NO
|
||||
|
||||
# The PERL_PATH should be the absolute path and name of the perl script
|
||||
# interpreter (i.e. the result of `which perl').
|
||||
|
||||
PERL_PATH = /boot/apps/GeekGadgets/bin/perl
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the dot tool
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
|
||||
# available from the path. This tool is part of Graphviz, a graph visualization
|
||||
# toolkit from AT&T and Lucent Bell Labs. The other options in this section
|
||||
# have no effect if this option is set to NO (the default)
|
||||
|
||||
HAVE_DOT = YES
|
||||
|
||||
# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
|
||||
# will generate a graph for each documented class showing the direct and
|
||||
# indirect inheritance relations. Setting this tag to YES will force the
|
||||
# the CLASS_DIAGRAMS tag to NO.
|
||||
|
||||
CLASS_GRAPH = YES
|
||||
|
||||
# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
|
||||
# will generate a graph for each documented class showing the direct and
|
||||
# indirect implementation dependencies (inheritance, containment, and
|
||||
# class references variables) of the class with other documented classes.
|
||||
|
||||
COLLABORATION_GRAPH = YES
|
||||
|
||||
# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to
|
||||
# YES then doxygen will generate a graph for each documented file showing
|
||||
# the direct and indirect include dependencies of the file with other
|
||||
# documented files.
|
||||
|
||||
INCLUDE_GRAPH = YES
|
||||
|
||||
# If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to
|
||||
# YES then doxygen will generate a graph for each documented header file showing
|
||||
# the documented files that directly or indirectly include this file
|
||||
|
||||
INCLUDED_BY_GRAPH = YES
|
||||
|
||||
# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
|
||||
# will graphical hierarchy of all classes instead of a textual one.
|
||||
|
||||
GRAPHICAL_HIERARCHY = YES
|
||||
|
||||
# The tag DOT_PATH can be used to specify the path where the dot tool can be
|
||||
# found. If left blank, it is assumed the dot tool can be found on the path.
|
||||
|
||||
DOT_PATH =
|
||||
|
||||
# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
|
||||
# (in pixels) of the graphs generated by dot. If a graph becomes larger than
|
||||
# this value, doxygen will try to truncate the graph, so that it fits within
|
||||
# the specified constraint. Beware that most browsers cannot cope with very
|
||||
# large images.
|
||||
|
||||
MAX_DOT_GRAPH_WIDTH = 1024
|
||||
|
||||
# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
|
||||
# (in pixels) of the graphs generated by dot. If a graph becomes larger than
|
||||
# this value, doxygen will try to truncate the graph, so that it fits within
|
||||
# the specified constraint. Beware that most browsers cannot cope with very
|
||||
# large images.
|
||||
|
||||
MAX_DOT_GRAPH_HEIGHT = 1024
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::addtions related to the search engine
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# The SEARCHENGINE tag specifies whether or not a search engine should be
|
||||
# used. If set to NO the values of all tags below this one will be ignored.
|
||||
|
||||
SEARCHENGINE = NO
|
||||
|
||||
# The CGI_NAME tag should be the name of the CGI script that
|
||||
# starts the search engine (doxysearch) with the correct parameters.
|
||||
# A script with this name will be generated by doxygen.
|
||||
|
||||
CGI_NAME = search.cgi
|
||||
|
||||
# The CGI_URL tag should be the absolute URL to the directory where the
|
||||
# cgi binaries are located. See the documentation of your http daemon for
|
||||
# details.
|
||||
|
||||
CGI_URL =
|
||||
|
||||
# The DOC_URL tag should be the absolute URL to the directory where the
|
||||
# documentation is located. If left blank the absolute path to the
|
||||
# documentation, with file:// prepended to it, will be used.
|
||||
|
||||
DOC_URL =
|
||||
|
||||
# The DOC_ABSPATH tag should be the absolute path to the directory where the
|
||||
# documentation is located. If left blank the directory on the local machine
|
||||
# will be used.
|
||||
|
||||
DOC_ABSPATH =
|
||||
|
||||
# The BIN_ABSPATH tag must point to the directory where the doxysearch binary
|
||||
# is installed.
|
||||
|
||||
BIN_ABSPATH = /usr/local/bin/
|
||||
|
||||
# The EXT_DOC_PATHS tag can be used to specify one or more paths to
|
||||
# documentation generated for other projects. This allows doxysearch to search
|
||||
# the documentation for these projects as well.
|
||||
|
||||
EXT_DOC_PATHS =
|
||||
Reference in New Issue
Block a user