1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
// $Id: progressmeter.cc,v 1.4 1998/09/18 02:42:48 jgg Exp $
/* ######################################################################
Progress Meter - Graphical progress meter from the package library's
progress meter class
This is split into two halfs, one is a meter dialog window the
other is an interfacing module for the libapt-pkg progress class.
It was designed to either run from a thread or directly within the
main task.
##################################################################### */
/*}}}*/
// Include /*{{{*/
#include "progressmeter.h"
#include <deity/utils.h>
#include <deity/widget-thread.h>
/*}}}*/
// ProgressWindow::ProgressWindow - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
ProgressWindow::ProgressWindow(string Title,Widget *Parent) :
GUIWindow(Title,Parent)
{
Meter = new Progress(this);
Operation = new TextWidget(this);
SubOp = new TextWidget(this);
Divider = new Separator(this);
Operation->Text("Initializing...");
}
/*}}}*/
// ProgressWindow::~ProgressWindow - Destructor /*{{{*/
// ---------------------------------------------------------------------
/* */
ProgressWindow::~ProgressWindow()
{
delete Meter;
delete Operation;
delete SubOp;
delete Divider;
}
/*}}}*/
// ProgressWindow::Realize - Size the window /*{{{*/
// ---------------------------------------------------------------------
/* */
void ProgressWindow::Realize()
{
ExtentFamily();
if (TextGC::GC != 0)
{
Operation->Resize(Rect(1,0,58,1));
SubOp->Resize(Rect(1,1,58,1));
Meter->Resize(Rect(0,3,58,1));
Divider->Resize(Rect(0,2,58,1));
Resize(Rect(0,0,60,6));
Meter->Foreground(Wc_Magenta);
Meter->BorderWidth(0);
Meter->Background(Wc_Black);
}
if (GraphicGC::GC != 0)
{
Operation->Font(SimpleFont("helvetica",140,SimpleFont::Bold));
unsigned int UnitHeight = SubOp->Size().h;
Resize(Rect(0,0,300,100));
Operation->Resize(Rect(0.2*UnitHeight,0.6*UnitHeight,
Size().w - UnitHeight,Operation->IdealSize().y));
SubOp->Resize(Rect(UnitHeight,Operation->Loc().y2 + 0.3*UnitHeight,
Size().w - UnitHeight,SubOp->Size().h));
Divider->Resize(Rect(0,SubOp->Loc().y2 + 0.5*UnitHeight,
Size().w,Divider->Size().h));
Meter->Resize(Rect(0.7*UnitHeight,Divider->Loc().y2 + 0.5*UnitHeight,
Size().w - 2*0.7*UnitHeight,Meter->Size().h));
Meter->Foreground(Wc_Blue);
Meter->Background(Wc_White);
}
CenterWidget(this,Rect(0,0,Parent->Pos.w,Parent->Pos.h));
GUIWindow::Realize();
}
/*}}}*/
// ProgressMeter::ProgressMeter - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
ProgressMeter::ProgressMeter(string Title,Widget *Parent)
{
Win = new ProgressWindow(Title,Parent);
}
/*}}}*/
// ProgressMeter::~ProgressMeter - Destructor /*{{{*/
// ---------------------------------------------------------------------
/* */
ProgressMeter::~ProgressMeter()
{
delete Win;
}
/*}}}*/
// ProgressMeter::Update - Update the display /*{{{*/
// ---------------------------------------------------------------------
/* */
void ProgressMeter::Update()
{
if (CheckChange(0.5) == false)
return;
Widget::Lock Lock;
Win->SetOp(Op);
Win->SetSubOp(SubOp);
Win->Percent(Percent);
}
/*}}}*/
// ProgressMeter::Done - Finalize the display /*{{{*/
// ---------------------------------------------------------------------
/* */
void ProgressMeter::Done()
{
Widget::Lock Lock;
Win->SetOp(Op);
Win->SetSubOp(SubOp);
Win->Percent(Percent);
}
/*}}}*/
|