Back to index

lightning-sunbird  0.9+nobinonly
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | Private Member Functions | Static Private Member Functions | Private Attributes
nsInstallDlg Class Reference

#include <nsInstallDlg.h>

Inheritance diagram for nsInstallDlg:
Inheritance graph
[legend]
Collaboration diagram for nsInstallDlg:
Collaboration graph
[legend]

List of all members.

Public Types

enum  { ACT_DOWNLOAD, ACT_EXTRACT, ACT_INSTALL }
enum  { E_DL_PAUSE = -1101, E_DL_CANCEL = -1102, E_DL_DROP_CXN = -1103 }
enum  { ACT_DOWNLOAD, ACT_EXTRACT, ACT_INSTALL, ACT_COMPLETE }
enum  { E_DL_PAUSE = -1101, E_DL_CANCEL = -1102, E_DL_DROP_CXN = -1103 }
enum  { SKIP_DIALOG = 0, SHOW_DIALOG = 1, FORWARD_MOVE = 555, BACKWARD_MOVE = -555 }
enum  { SKIP_DIALOG = 0, SHOW_DIALOG = 1 }

Public Member Functions

 nsInstallDlg ()
 ~nsInstallDlg ()
int Parse (nsINIParser *aParser)
int Show (int aDirection)
int Hide (int aDirection)
int ShowTable ()
int HideTable ()
void ReInitUI ()
void ShowCRCDlg ()
void DestroyCRCDlg ()
int SetMsg0 (char *aMsg)
char * GetMsg0 ()
 nsInstallDlg ()
 ~nsInstallDlg ()
int Parse (nsINIParser *aParser)
int Show ()
int Hide ()
int ShowTable ()
int HideTable ()
void ReInitUI ()
void ShowCRCDlg ()
void DestroyCRCDlg ()
int SetMsg0 (char *aMsg)
char * GetMsg0 ()
int SetShowDlg (int aShowDlg)
int SetShowDlg (int aShowDlg)
int GetShowDlg ()
int GetShowDlg ()
int SetTitle (char *aTitle)
int SetTitle (char *aTitle)
char * GetTitle ()
char * GetTitle ()
void SetPageNum (int aPageNum)
void SetPageNum (int aPageNum)
int GetPageNum ()
int GetPageNum ()

Static Public Member Functions

static void Back (GtkWidget *aWidget, gpointer aData)
static void Next (GtkWidget *aWidget, gpointer aData)
static void XPIProgressCB (const char *aMsg, int aVal, int aMax)
static void MajorProgressCB (char *aName, int aNum, int aTotal, int aActivity)
static int DownloadCB (int aBytesRd, int aTotal)
static void SetDownloadComp (nsComponent *aComp, int aURLIndex, int aNum, int aTotal)
static void ClearRateLabel ()
static int CancelOrPause ()
static void Back (GtkWidget *aWidget, gpointer aData)
static void Next (GtkWidget *aWidget, gpointer aData)
static void XPIProgressCB (const char *aMsg, int aVal, int aMax)
static void MajorProgressCB (char *aName, int aNum, int aTotal, int aActivity)
static int DownloadCB (int aBytesRd, int aTotal)
static void SetDownloadComp (nsComponent *aComp, int aURLIndex, int aNum, int aTotal)
static void ClearRateLabel ()
static int CancelOrPause ()

Protected Attributes

int mShowDlg
char * mTitle
char * mSubTitle
int mPageNum
int mWidgetsInit
GtkWidget * mTable

Private Member Functions

int AppendRunApp (nsRunApp *aNewRunApp)
int AppendRunApp (nsRunApp **aRunAppList, nsRunApp *aNewRunApp)

Static Private Member Functions

static int PerformInstall (void)
static void SaveModulesToggled (GtkWidget *aWidget, gpointer aData)
static void ShowProxySettings (GtkWidget *aWidget, gpointer aData)
static void PSDlgOK (GtkWidget *aWidget, gpointer aData)
static void PSDlgCancel (GtkWidget *aWidget, gpointer aData)
static void RunApps ()
static void FreeRunAppList ()
static void DLPause (GtkWidget *aWidget, gpointer aData)
static void DLResume (GtkWidget *aWidget, gpointer aData)
static void DLCancel (GtkWidget *aWidget, gpointer aData)
static int ShowCRCFailedDlg ()
static int ShowCxnDroppedDlg ()
static void CRCFailedOK (GtkWidget *aWidget, gpointer aData)
static void CxnDroppedOK (GtkWidget *aWidget, gpointer aData)
static void CRCOKCb (GtkWidget *aWidget, gpointer aData)
static void HideNavButtons ()
static void InitInstallProgress ()
static int TotalDLSize ()
static void CompressToFit (char *aOrigStr, char *aOutStr, int aOutStrLen)
static void InitDLProgress (int IsFirst)
static int PerformInstall (void)
static void SaveModulesToggled (GtkWidget *aWidget, gpointer aData)
static void ShowProxySettings (GtkWidget *aWidget, gpointer aData)
static void PSDlgOK (GtkWidget *aWidget, gpointer aData)
static void PSDlgCancel (GtkWidget *aWidget, gpointer aData)
static void RunApps (nsRunApp *aRunAppList, int aSequential)
static void FreeRunAppList (nsRunApp *aRunAppList)
static void DLPause (GtkWidget *aWidget, gpointer aData)
static void DLResume (GtkWidget *aWidget, gpointer aData)
static void DLCancel (GtkWidget *aWidget, gpointer aData)
static int ShowCxnDroppedDlg ()
static void CxnDroppedOK (GtkWidget *aWidget, gpointer aData)
static void CRCOKCb (GtkWidget *aWidget, gpointer aData)
static void HideNavButtons ()
static void InitInstallProgress ()
static int TotalDLSize ()
static void CompressToFit (char *aOrigStr, char *aOutStr, int aOutStrLen)
static void InitDLProgress (int IsFirst)

Private Attributes

char * mMsg0

Detailed Description

Definition at line 49 of file nsInstallDlg.h.


Member Enumeration Documentation

anonymous enum
Enumerator:
ACT_DOWNLOAD 
ACT_EXTRACT 
ACT_INSTALL 

Definition at line 81 of file nsInstallDlg.h.

anonymous enum
Enumerator:
E_DL_PAUSE 
E_DL_CANCEL 
E_DL_DROP_CXN 

Definition at line 88 of file nsInstallDlg.h.

    {
        E_DL_PAUSE      = -1101,
        E_DL_CANCEL     = -1102,
        E_DL_DROP_CXN   = -1103
    };
anonymous enum [inherited]
Enumerator:
SKIP_DIALOG 
SHOW_DIALOG 
FORWARD_MOVE 
BACKWARD_MOVE 

Definition at line 85 of file nsXInstallerDlg.h.

    {
        SKIP_DIALOG     = 0,
        SHOW_DIALOG     = 1,

        FORWARD_MOVE    = 555,
        BACKWARD_MOVE   = -555
    };
anonymous enum
Enumerator:
ACT_DOWNLOAD 
ACT_EXTRACT 
ACT_INSTALL 
ACT_COMPLETE 

Definition at line 81 of file nsInstallDlg.h.

anonymous enum
Enumerator:
E_DL_PAUSE 
E_DL_CANCEL 
E_DL_DROP_CXN 

Definition at line 89 of file nsInstallDlg.h.

    {
        E_DL_PAUSE      = -1101,
        E_DL_CANCEL     = -1102,
        E_DL_DROP_CXN   = -1103
    };
anonymous enum [inherited]
Enumerator:
SKIP_DIALOG 
SHOW_DIALOG 

Definition at line 85 of file nsXInstallerDlg.h.

    {
        SKIP_DIALOG     = 0,
        SHOW_DIALOG     = 1
    };

Constructor & Destructor Documentation

Definition at line 86 of file nsInstallDlg.cpp.

                           :
    mMsg0(NULL)
{
}

Definition at line 91 of file nsInstallDlg.cpp.


Member Function Documentation

int nsInstallDlg::AppendRunApp ( nsRunApp aNewRunApp) [private]

Definition at line 262 of file nsInstallDlg.cpp.

{
    int err = OK;
    nsRunApp *currRunApp = NULL, *nextRunApp = NULL;

    /* param check */
    if (!aNewRunApp)
        return E_PARAM;

    /* special case: list is empty */
    if (!sRunAppList)
    {
        sRunAppList = aNewRunApp;
        return OK;
    }

    /* list has at least one element */
    currRunApp = sRunAppList;
    while (currRunApp)
    {
      if (!(nextRunApp = currRunApp->GetNext()))
        {
            currRunApp->SetNext(aNewRunApp);
            break;
        }
        currRunApp = nextRunApp;
    }
    return err;
}

Here is the call graph for this function:

Here is the caller graph for this function:

int nsInstallDlg::AppendRunApp ( nsRunApp **  aRunAppList,
nsRunApp aNewRunApp 
) [private]

Definition at line 294 of file nsInstallDlg.cpp.

{
    int err = OK;
    nsRunApp *currRunApp = NULL, *nextRunApp = NULL;

    /* param check */
    if (!aNewRunApp)
        return E_PARAM;

    /* special case: list is empty */
    if (!*aRunAppList)
    {
        *aRunAppList = aNewRunApp;
        return OK;
    }

    /* list has at least one element */
    currRunApp = *aRunAppList;
    while (currRunApp)
    {
        if (!(nextRunApp = currRunApp->GetNext()))
        {
            currRunApp->SetNext(aNewRunApp);
            break;
        }
        currRunApp = nextRunApp;
    }
    return err;
}

Here is the call graph for this function:

static void nsInstallDlg::Back ( GtkWidget *  aWidget,
gpointer  aData 
) [static]
void nsInstallDlg::Back ( GtkWidget *  aWidget,
gpointer  aData 
) [static]

Definition at line 97 of file nsInstallDlg.cpp.

{
    DUMP("Back");
    if (aData != gCtx->idlg) return;

    // hide this notebook page
    gCtx->idlg->Hide(nsXInstallerDlg::BACKWARD_MOVE);

    // disconnect this dlg's nav btn signal handlers
    gtk_signal_disconnect(GTK_OBJECT(gCtx->back), gCtx->backID);
    gtk_signal_disconnect(GTK_OBJECT(gCtx->next), gCtx->nextID);

    // show the last dlg
    if (gCtx->opt->mSetupType == (gCtx->sdlg->GetNumSetupTypes() - 1))
        gCtx->cdlg->Show(nsXInstallerDlg::BACKWARD_MOVE);
    else
        gCtx->sdlg->Show(nsXInstallerDlg::BACKWARD_MOVE);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1133 of file nsInstallDlg.cpp.

{
    int err = OK;

    if (bDLPause)
    {
        err = E_DL_PAUSE;
    }
    else if (bDLCancel)
    {
        err = E_DL_CANCEL;
    }
    
    return err;
}

Here is the caller graph for this function:

static int nsInstallDlg::CancelOrPause ( ) [static]
static void nsInstallDlg::ClearRateLabel ( ) [static]

Definition at line 907 of file nsInstallDlg.cpp.

{
    gtk_label_set_text(GTK_LABEL(sRateLabel), "");
    gtk_progress_set_activity_mode(GTK_PROGRESS(sMajorProgBar), FALSE); 
    XI_GTK_UPDATE_UI();
}

Here is the caller graph for this function:

static void nsInstallDlg::CompressToFit ( char *  aOrigStr,
char *  aOutStr,
int  aOutStrLen 
) [static, private]
void nsInstallDlg::CompressToFit ( char *  aOrigStr,
char *  aOutStr,
int  aOutStrLen 
) [static, private]

Definition at line 1429 of file nsInstallDlg.cpp.

{
    int origStrLen;
    int halfOutStrLen;
    char *lastPart; // last aOrigStr part start

    if (!aOrigStr || !aOutStr || aOutStrLen <= 0)
        return;

    origStrLen = strlen(aOrigStr);
    halfOutStrLen = (aOutStrLen/2) - 2; // minus 2 since ellipsis is 3 chars
    lastPart = aOrigStr + origStrLen - halfOutStrLen;

    strncpy(aOutStr, aOrigStr, halfOutStrLen);
    *(aOutStr + halfOutStrLen) = 0;
    strcat(aOutStr, "...");
    strncat(aOutStr, lastPart, strlen(lastPart));
    *(aOutStr + aOutStrLen + 1) = 0;
}

Here is the caller graph for this function:

void nsInstallDlg::CRCFailedOK ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]

Definition at line 1238 of file nsInstallDlg.cpp.

{
  gtk_main_quit();
  return;
}

Here is the caller graph for this function:

static void nsInstallDlg::CRCOKCb ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]
void nsInstallDlg::CRCOKCb ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]

Definition at line 1251 of file nsInstallDlg.cpp.

{
    if (crcDlg != (GtkWidget *) NULL)
        gtk_widget_destroy(crcDlg);
    crcDlg = (GtkWidget *) NULL;

    return;
}

Here is the caller graph for this function:

static void nsInstallDlg::CxnDroppedOK ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]
void nsInstallDlg::CxnDroppedOK ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]

Definition at line 1261 of file nsInstallDlg.cpp.

{
    GtkWidget *cxnDroppedDlg = (GtkWidget *) aData;
    
    if (cxnDroppedDlg)
        gtk_widget_destroy(cxnDroppedDlg);

    return;
}

Here is the caller graph for this function:

Definition at line 1245 of file nsInstallDlg.cpp.

{
  CRCOKCb( (GtkWidget *) NULL, (gpointer) NULL );
}

Here is the call graph for this function:

Here is the caller graph for this function:

void nsInstallDlg::DLCancel ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]

Definition at line 1110 of file nsInstallDlg.cpp.

{
    DUMP("DLCancel");

    // show cancellation confirm dialog
    // XXX    TO DO

    // set cancel for download callback to return to libxpnet
    bDLCancel = TRUE;

#ifdef DEBUG
    printf("%s %d: bDLPause: %d\tbDLCancel: %d\n", __FILE__, __LINE__, 
                   bDLPause, bDLCancel);
#endif

    // already paused then take explicit action to quit
    if (bDLPause)
    {
         gtk_main_quit();
    }
}

Here is the caller graph for this function:

static void nsInstallDlg::DLCancel ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]
void nsInstallDlg::DLPause ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]

Definition at line 1066 of file nsInstallDlg.cpp.

{
    DUMP("DLPause");

    // set pause for download callback to return to libxpnet
    bDLPause = TRUE;

    // disbale pause button
    gtk_widget_set_sensitive(gCtx->back, FALSE);

    // enable resume button
    gtk_widget_set_sensitive(gCtx->next, TRUE);

    gtk_main();
}

Here is the caller graph for this function:

static void nsInstallDlg::DLPause ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]
void nsInstallDlg::DLResume ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]

Definition at line 1083 of file nsInstallDlg.cpp.

{
    DUMP("DLResume");

    if (!bDLPause)
    {
        DUMP("Not paused");
        return;
    }

    DUMP("Unsetting bDLPause");
    bDLPause = FALSE;

    // disable resume button
    gtk_widget_set_sensitive(gCtx->next, FALSE);

    // enable pause button
    gtk_widget_set_sensitive(gCtx->back, TRUE);

    gtk_main_quit();

    PerformInstall();
 
    return;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void nsInstallDlg::DLResume ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]
int nsInstallDlg::DownloadCB ( int  aBytesRd,
int  aTotal 
) [static]

Definition at line 832 of file nsInstallDlg.cpp.

{
    struct timeval now;
    char label[64];
    int rate;
    gfloat percent = 0;
    static int timesCalled = 0;
    static int activityCount = 0;
    int dlKB;
    static int lastTotal = 0;
    static int lastBytesRd = 0;

    // new component being downloaded
    if (lastTotal != aTotal)
    {
        lastBytesRd = 0; // reset
        lastTotal = aTotal;
    }
    
    if ((aBytesRd - lastBytesRd) > 0)
    {
        sDLProgress.downloadedBytes += aBytesRd - lastBytesRd;
        lastBytesRd = aBytesRd;
    }

    if (bDLPause || bDLCancel)
    {
        return nsHTTPConn::E_USER_CANCEL;
    }

    if (++timesCalled < SHOW_EVERY_N_KB)
        return 0; 
    else
        timesCalled = 0;

    gettimeofday(&now, NULL);
    rate = (int) nsSocket::CalcRate(&sDLStartTime, &now, aBytesRd);

    // update the status -- bytes thus far, rate, percent in prog bar
    dlKB = sDLProgress.downloadedBytes/1024;
    sprintf(label, gCtx->Res("DL_STATUS_STR"), dlKB, sDLProgress.totalKB, rate);
    gtk_label_set_text(GTK_LABEL(sDLProgress.status), label);

/*
    // only update rate in major label line
    XXX remove this: DLRATE no longer exists
    sprintf(label, gCtx->Res("DLRATE"), rate);
    gtk_label_set_text(GTK_LABEL(sRateLabel), label);
*/

    if (sDLProgress.totalKB <= 0) 
    {
        // show some activity
        if (activityCount >= 5) activityCount = 0;
        percent = (gfloat)( (gfloat)activityCount++/ (gfloat)5 ); 
        gtk_progress_set_activity_mode(GTK_PROGRESS(sDLProgress.progBar), TRUE);
        gtk_progress_bar_update(GTK_PROGRESS_BAR(sDLProgress.progBar), percent);
    }
    else
    {
        percent = (gfloat)dlKB/(gfloat)sDLProgress.totalKB;
#ifdef DEBUG
    printf("DLProgress: %d of %d (%f percent) at %d KB/sec\n", dlKB,
            sDLProgress.totalKB, percent, rate);
#endif
        gtk_progress_set_activity_mode(GTK_PROGRESS(sDLProgress.progBar), 
            FALSE); 
        gtk_progress_bar_update(GTK_PROGRESS_BAR(sDLProgress.progBar), percent);
    }

    XI_GTK_UPDATE_UI();
    return 0;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static int nsInstallDlg::DownloadCB ( int  aBytesRd,
int  aTotal 
) [static]
void nsInstallDlg::FreeRunAppList ( ) [static, private]

Definition at line 293 of file nsInstallDlg.cpp.

{
    nsRunApp *currRunApp = NULL, *nextRunApp = NULL;

    currRunApp = sRunAppList;
    while (currRunApp)
    {
        nextRunApp = currRunApp->GetNext();
        delete currRunApp;
        currRunApp = nextRunApp;
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void nsInstallDlg::FreeRunAppList ( nsRunApp aRunAppList) [static, private]

Definition at line 325 of file nsInstallDlg.cpp.

{
    nsRunApp *currRunApp = aRunAppList, *nextRunApp = NULL;

    while (currRunApp)
    {
        nextRunApp = currRunApp->GetNext();
        delete currRunApp;
        currRunApp = nextRunApp;
    }
}

Here is the call graph for this function:

Definition at line 571 of file nsInstallDlg.cpp.

{
    if (mMsg0)
        return mMsg0;

    return NULL;
}

Definition at line 70 of file nsXInstallerDlg.cpp.

{
    return mShowDlg;
}
char * nsXInstallerDlg::GetTitle ( ) [inherited]

Definition at line 87 of file nsXInstallerDlg.cpp.

{
    if (mTitle)
        return mTitle;

    return NULL;
}
char* nsXInstallerDlg::GetTitle ( ) [inherited]
int nsInstallDlg::Hide ( int  aDirection) [virtual]

Implements nsXInstallerDlg.

Definition at line 530 of file nsInstallDlg.cpp.

{
    gtk_widget_hide(mTable);

    return OK;
}

Here is the caller graph for this function:

int nsInstallDlg::Hide ( void  ) [virtual]

Implements nsXInstallerDlg.

Definition at line 539 of file nsInstallDlg.cpp.

{
    if (bDownload && sDLTable)
        gtk_widget_hide(sDLTable);

    gtk_widget_hide(mTable);

    // disconnect and remove this dlg's nav btns
    gtk_signal_disconnect(GTK_OBJECT(gCtx->back), gCtx->backID);
    gtk_signal_disconnect(GTK_OBJECT(gCtx->next), gCtx->nextID);

    gtk_container_remove(GTK_CONTAINER(gCtx->back), gCtx->backLabel); 
    gtk_container_remove(GTK_CONTAINER(gCtx->next), gCtx->installLabel); 

    gtk_widget_hide(gCtx->back);
    gtk_widget_hide(gCtx->next);

    return OK;
}
static void nsInstallDlg::HideNavButtons ( ) [static, private]
void nsInstallDlg::HideNavButtons ( ) [static, private]

Definition at line 1272 of file nsInstallDlg.cpp.

{
    gtk_signal_disconnect(GTK_OBJECT(gCtx->back), gCtx->backID);
    gtk_signal_disconnect(GTK_OBJECT(gCtx->next), gCtx->nextID);
    gtk_signal_disconnect(GTK_OBJECT(gCtx->cancel), gCtx->cancelID);

    gtk_widget_set_sensitive(gCtx->back, FALSE);
    gtk_widget_set_sensitive(gCtx->next, FALSE);
    gtk_widget_set_sensitive(gCtx->cancel, FALSE);
}

Here is the caller graph for this function:

Definition at line 549 of file nsInstallDlg.cpp.

{
    if (!mTable)
        return E_PARAM;

    gtk_widget_hide(mTable);

    return OK;
}

Here is the caller graph for this function:

static void nsInstallDlg::InitDLProgress ( int  IsFirst) [static, private]
void nsInstallDlg::InitDLProgress ( int  IsFirst) [static, private]

Definition at line 1284 of file nsInstallDlg.cpp.

{
    GtkWidget *titles[4];
    GtkWidget *hbox;
    GtkWidget *table;

    gCtx->idlg->HideTable();

    if ( isFirst == TRUE ) {
            sDLProgress.vbox = gtk_vbox_new(FALSE, 10);
            gtk_notebook_append_page(GTK_NOTEBOOK(gCtx->notebook), 
                sDLProgress.vbox, NULL);
            gtk_widget_show(sDLProgress.vbox);
                    
            table = gtk_table_new(5, 2, FALSE);
            gtk_box_pack_start(GTK_BOX(sDLProgress.vbox), table, FALSE, 
                FALSE, 0);
            gtk_widget_show(table);

            // setup static title progress labels in table left column
            titles[0] = gtk_label_new(gCtx->Res("DOWNLOADING"));
            titles[1] = gtk_label_new(gCtx->Res("FROM"));
            titles[2] = gtk_label_new(gCtx->Res("TO"));
            titles[3] = gtk_label_new(gCtx->Res("STATUS"));

            // setup dynamic progress labels in right column
            sDLProgress.compName = gtk_label_new(gCtx->Res("UNKNOWN"));
            sDLProgress.URL = gtk_label_new(gCtx->Res("UNKNOWN"));
            sDLProgress.localPath = gtk_label_new(gCtx->Res("UNKNOWN"));
            sDLProgress.status = gtk_label_new(gCtx->Res("UNKNOWN"));

            // pack and show titles
            for (int i = 0; i < 4; ++i)
            {
                hbox = gtk_hbox_new(FALSE, 10);
                gtk_box_pack_end(GTK_BOX(hbox), titles[i], FALSE, FALSE, 0);
                gtk_table_attach(GTK_TABLE(table), hbox, 
                    0, 1, i, i + 1, GTK_FILL, GTK_FILL, 5, 5);
                gtk_widget_show(titles[i]);
                gtk_widget_show(hbox);
            }

            // pack and show dynamic labels 
            hbox = gtk_hbox_new(FALSE, 10);
            gtk_box_pack_start(GTK_BOX(hbox), sDLProgress.compName, FALSE, FALSE, 0);
            gtk_table_attach(GTK_TABLE(table), hbox, 1, 2, 0, 1,
                GTK_FILL, GTK_FILL, 5, 5);
            gtk_widget_show(sDLProgress.compName);
            gtk_widget_show(hbox);

            hbox = gtk_hbox_new(FALSE, 10);
            gtk_box_pack_start(GTK_BOX(hbox), sDLProgress.URL, FALSE, FALSE, 0);
            gtk_table_attach(GTK_TABLE(table), hbox, 1, 2, 1, 2,
                GTK_FILL, GTK_FILL, 5, 5);
            gtk_widget_show(sDLProgress.URL);
            gtk_widget_show(hbox);

            hbox = gtk_hbox_new(FALSE, 10);
            gtk_box_pack_start(GTK_BOX(hbox), sDLProgress.localPath, FALSE, 
                FALSE, 0);
            gtk_table_attach(GTK_TABLE(table), hbox, 1, 2, 2, 3,
                GTK_FILL, GTK_FILL, 5, 5);
            gtk_widget_show(sDLProgress.localPath);
            gtk_widget_show(hbox);

            hbox = gtk_hbox_new(FALSE, 10);
            gtk_box_pack_start(GTK_BOX(hbox), sDLProgress.status, FALSE, 
                FALSE, 0);
            gtk_table_attach(GTK_TABLE(table), hbox, 1, 2, 3, 4,
                GTK_FILL, GTK_FILL, 5, 5);
            gtk_widget_show(sDLProgress.status);
            gtk_widget_show(hbox);

            // init and show prog bar
            sDLProgress.progBar = gtk_progress_bar_new();

            // show prog bar
            hbox = gtk_hbox_new(TRUE, 10);
            gtk_box_pack_start(GTK_BOX(hbox), sDLProgress.progBar, FALSE, 
              TRUE, 0);
            gtk_box_pack_start(GTK_BOX(sDLProgress.vbox), hbox, FALSE, 
              FALSE, 0);
            gtk_widget_show(sDLProgress.progBar);
            gtk_widget_show(hbox);
    }

    // set to non-activity mode and initialize 
    gtk_progress_set_activity_mode(GTK_PROGRESS(sDLProgress.progBar), FALSE);
    gtk_progress_bar_update(GTK_PROGRESS_BAR(sDLProgress.progBar), (gfloat) 0);

    // compute total download size
    sDLProgress.downloadedBytes = 0;
    sDLProgress.totalKB = TotalDLSize();

    XI_GTK_UPDATE_UI();
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void nsInstallDlg::InitInstallProgress ( ) [static, private]
void nsInstallDlg::InitInstallProgress ( ) [static, private]

Definition at line 1382 of file nsInstallDlg.cpp.

{
    if ( sDLProgress.vbox )
            gtk_widget_hide(sDLProgress.vbox);
    gCtx->idlg->ShowTable();
}

Here is the call graph for this function:

Here is the caller graph for this function:

void nsInstallDlg::MajorProgressCB ( char *  aName,
int  aNum,
int  aTotal,
int  aActivity 
) [static]

Definition at line 732 of file nsInstallDlg.cpp.

{
    // DUMP("MajorProgressCB");

    char msg[256];

    if (!aName)
       return;

#ifdef DEBUG
    printf("%s %d: Name = %s\tNum = %d\tTotal = %d\tAct = %d\n", 
    __FILE__, __LINE__, aName, aNum, aTotal, aActivity);
#endif

    switch (aActivity)
    {
        case ACT_DOWNLOAD:
            if (!bDownload)
                sprintf(msg, gCtx->Res("PREPARING"), aName);
            break;

        case ACT_EXTRACT:
            sprintf(msg, gCtx->Res("EXTRACTING"), aName);
            break;

        case ACT_INSTALL:
            sprintf(msg, gCtx->Res("INSTALLING_XPI"), aName);
            break;

        default:
            break;
    }

    gtk_label_set_text(GTK_LABEL(sMajorLabel), msg);
    gtk_widget_show(sMajorLabel);

    if (aTotal <= 0)
    {
        XI_ASSERT(0, "aTotal was <= 0");
        XI_GTK_UPDATE_UI();
        return;
    }

    gfloat percent = (gfloat)((gfloat)aNum/(gfloat)aTotal);
    gtk_progress_bar_update(GTK_PROGRESS_BAR(sMajorProgBar), percent);
    gtk_widget_show(sMajorProgBar);

    // reset minor progress ui
    if (aActivity == ACT_INSTALL)
    {
        gtk_label_set_text(GTK_LABEL(sMinorLabel), "");
        gtk_progress_bar_update(GTK_PROGRESS_BAR(sMinorProgBar), (gfloat)0);
        gtk_widget_show(sMinorLabel);
        gtk_widget_show(sMinorProgBar);
    }

    XI_GTK_UPDATE_UI();
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void nsInstallDlg::MajorProgressCB ( char *  aName,
int  aNum,
int  aTotal,
int  aActivity 
) [static]
void nsInstallDlg::Next ( GtkWidget *  aWidget,
gpointer  aData 
) [static]

Definition at line 117 of file nsInstallDlg.cpp.

{
    DUMP("Next");
    int bCus;
    nsComponentList *comps = NULL;

    if (aData != gCtx->idlg) return;

    bCus = (gCtx->opt->mSetupType == (gCtx->sdlg->GetNumSetupTypes() - 1));
    comps = gCtx->sdlg->GetSelectedSetupType()->GetComponents();

    // initialize progress bar cleanly
    int totalComps = 0;
    if (nsXIEngine::ExistAllXPIs(bCus, comps, &totalComps))
        bDownload = FALSE;
    else
        bDownload = TRUE;

    if (gCtx->opt->mMode != nsXIOptions::MODE_SILENT) {
        gtk_progress_set_activity_mode(GTK_PROGRESS(sMajorProgBar), FALSE);
        gtk_progress_bar_update(GTK_PROGRESS_BAR(sMajorProgBar), (gfloat) 0);
        gtk_label_set_text(GTK_LABEL(sMajorLabel), "");

        if (bDownload)
        {
            InitDLProgress( TRUE );

            gtk_button_set_label(GTK_BUTTON(gCtx->back), gCtx->Res("PAUSE"));
            gtk_button_set_label(GTK_BUTTON(gCtx->next), gCtx->Res("RESUME"));

            gtk_signal_disconnect(GTK_OBJECT(gCtx->back), gCtx->backID);
            gtk_signal_disconnect(GTK_OBJECT(gCtx->next), gCtx->nextID);
            gtk_signal_disconnect(GTK_OBJECT(gCtx->cancel), gCtx->cancelID);

            // disable resume button
            gtk_widget_set_sensitive(gCtx->next, FALSE);

            XI_GTK_UPDATE_UI();

            // hook up buttons with callbacks
            gCtx->backID = gtk_signal_connect(GTK_OBJECT(gCtx->back), "clicked",
                GTK_SIGNAL_FUNC(DLPause), NULL);
            gCtx->nextID = gtk_signal_connect(GTK_OBJECT(gCtx->next), "clicked",
                GTK_SIGNAL_FUNC(DLResume), NULL);
            gCtx->cancelID = gtk_signal_connect(GTK_OBJECT(gCtx->cancel), "clicked",
                GTK_SIGNAL_FUNC(DLCancel), NULL);
        }
        else
        {
            gtk_widget_show(sMajorLabel);
            gtk_widget_show(sMajorProgBar);

            gtk_widget_set_sensitive(gCtx->back, FALSE);
            gtk_widget_set_sensitive(gCtx->next, FALSE);
            gtk_widget_set_sensitive(gCtx->cancel, FALSE);
        }

        gtk_widget_hide(sMsg0Label);
        gtk_widget_hide(sTextBox);
        if (bDownload && sDLTable)
            gtk_widget_hide(sDLTable);
        XI_GTK_UPDATE_UI();
    }

    PerformInstall();
    // mode auto has no call to gtk_main()
    if (gCtx->opt->mMode == nsXIOptions::MODE_DEFAULT)
      gtk_main_quit();
    
    return;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void nsInstallDlg::Next ( GtkWidget *  aWidget,
gpointer  aData 
) [static]
int nsInstallDlg::Parse ( nsINIParser aParser) [virtual]

Implements nsXInstallerDlg.

int nsInstallDlg::Parse ( nsINIParser aParser) [virtual]

Implements nsXInstallerDlg.

Definition at line 190 of file nsInstallDlg.cpp.

{
    int err = OK;
    int bufsize = 0;
    char *showDlg = NULL;
    char secName[64];
    int i;
    char *app = NULL, *args = NULL;
    nsRunApp *newRunApp = NULL;
    
    /* compulsory keys */
    XI_ERR_BAIL(aParser->GetStringAlloc(DLG_START_INSTALL, XPINSTALL_ENGINE,
                &sXPInstallEngine, &bufsize));
    if (bufsize == 0 || !sXPInstallEngine)
        return E_INVALID_KEY;

    /* optional keys */
    err = aParser->GetStringAlloc(DLG_START_INSTALL, TITLE, &mTitle, &bufsize);
    if (err != OK && err != nsINIParser::E_NO_KEY) goto BAIL; else err = OK;
    if (bufsize == 0)
      XI_IF_FREE(mTitle); 

    aParser->GetStringAlloc(DLG_START_INSTALL, SUBTITLE, &mSubTitle, &bufsize);
    if (bufsize == 0)
      XI_IF_FREE(mSubTitle);

    bufsize = 0;
    err = aParser->GetStringAlloc(DLG_START_INSTALL, MSG0, &mMsg0, &bufsize);
    if (err != OK && err != nsINIParser::E_NO_KEY) goto BAIL; else err = OK;

    bufsize = 5;
    XI_ERR_BAIL(aParser->GetStringAlloc(DLG_START_INSTALL, SHOW_DLG, 
                &showDlg, &bufsize));
    if (bufsize != 0 && showDlg)
    {
        if (0 == strncmp(showDlg, "TRUE", 4))
            mShowDlg = nsXInstallerDlg::SHOW_DIALOG;
        else if (0 == strncmp(showDlg, "FALSE", 5))
            mShowDlg = nsXInstallerDlg::SKIP_DIALOG;
    }

    bufsize = 0;
    XI_ERR_BAIL(aParser->GetStringAlloc(DLG_START_INSTALL, TITLE, 
                &mTitle, &bufsize));
    if (bufsize == 0)
        XI_IF_FREE(mTitle); 

    for (i = 0; err == OK; i++)
    {
        /* construct RunAppX section name */
        sprintf(secName, RUNAPPd, i);
        err = aParser->GetStringAlloc(secName, TARGET, &app, &bufsize);
        if (err == OK && bufsize > 0)
        {
            /* "args" is optional: this may return E_NO_KEY which we ignore */
            err = aParser->GetStringAlloc(secName, ARGS, &args, &bufsize);
            newRunApp = new nsRunApp(app, args);
            if (!newRunApp)
                return E_MEM;
            err = AppendRunApp(newRunApp);
        }
    }
    err = OK; /* reset error since RunAppX sections are optional
                 and we could have gotten a parse error (E_NO_SEC) */

    return err;

BAIL:
    return err;
}

Here is the call graph for this function:

Here is the caller graph for this function:

int nsInstallDlg::PerformInstall ( void  ) [static, private]

Definition at line 580 of file nsInstallDlg.cpp.

{
    DUMP("PerformInstall");

    int err = OK;

    // perform the installation
    nsXIEngine *engine = new nsXIEngine();
    if (!engine)
    {
        ErrorHandler(E_MEM);
        return E_MEM;
    }

    // get the component list for the current setup type
    nsComponentList *comps = NULL;
    nsComponent *xpiengine = NULL;
    int bCus = (gCtx->opt->mSetupType == (gCtx->sdlg->GetNumSetupTypes() - 1));
    comps = gCtx->sdlg->GetSelectedSetupType()->GetComponents(); 
    if (!comps)
    {
        ErrorHandler(E_NO_COMPONENTS);
        return E_NO_COMPONENTS;
    }
    
    if (!sXPInstallEngine) return E_PARAM;
    xpiengine = comps->GetCompByArchive(sXPInstallEngine);

    // 1> download
    err = engine->Download(bCus, comps);
    if (err == E_DL_DROP_CXN)
    {
        ShowCxnDroppedDlg();
        if (gCtx->opt->mMode != nsXIOptions::MODE_SILENT)
            DLPause(NULL, NULL);
        return err;
    }
    else if (err == E_CRC_FAILED)
    {
        ShowCRCFailedDlg();
        goto BAIL;
    }
    else if (err == E_DL_PAUSE || err == E_DL_CANCEL)
    {
        DUMP("Pause or Cancel pressed");
        goto BAIL;
    }
    else if (err != OK)
    {
        DUMP("dammit... hopped into the wrong hole!");
        ErrorHandler(err);
        goto BAIL;
    }

    // prepare install UI
    if (gCtx->opt->mMode != nsXIOptions::MODE_SILENT)
    {
        InitInstallProgress();
        HideNavButtons();
    }

    // 2> extract engine
    XI_ERR_BAIL(engine->Extract(xpiengine));
    
    // 3> install .xpis
    XI_ERR_BAIL(engine->Install(bCus, comps, gCtx->opt->mDestination));

    // delete xpis if user didn't request saving them
    if (bDownload && !gCtx->opt->mSaveModules)
    {
        engine->DeleteXPIs(bCus, comps);
    }

    // run all specified applications after installation
    if (sRunAppList)
    {
        if (gCtx->opt->mShouldRunApps)
            RunApps();
        FreeRunAppList();
    }

BAIL:
    // destroy installer engine thread object
    XI_IF_DELETE(engine);

    return err;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static int nsInstallDlg::PerformInstall ( void  ) [static, private]
void nsInstallDlg::PSDlgCancel ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]

Definition at line 1057 of file nsInstallDlg.cpp.

{
    GtkWidget *dlg = (GtkWidget *) aData;

    if (dlg)
        gtk_widget_destroy(dlg);
}

Here is the caller graph for this function:

static void nsInstallDlg::PSDlgCancel ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]
void nsInstallDlg::PSDlgOK ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]

Definition at line 1003 of file nsInstallDlg.cpp.

{
    GtkWidget *dlg = (GtkWidget *) aData;
    char *text;

    // grab proxy host field
    if (sPSTextEntry[0])
    {
        text = gtk_editable_get_chars(GTK_EDITABLE(sPSTextEntry[0]), 0, -1);
        if (text)
        {
            XI_IF_FREE(gCtx->opt->mProxyHost);
            gCtx->opt->mProxyHost = text;
        }
    }

    // grab proxy port field
    if (sPSTextEntry[1])
    {
        text = gtk_editable_get_chars(GTK_EDITABLE(sPSTextEntry[1]), 0, -1);
        if (text)
        {
            XI_IF_FREE(gCtx->opt->mProxyPort);
            gCtx->opt->mProxyPort = text;
        }
    }

    // grab proxy user field
    if (sPSTextEntry[2])
    {
        text = gtk_editable_get_chars(GTK_EDITABLE(sPSTextEntry[2]), 0, -1);
        if (text)
        {
            XI_IF_FREE(gCtx->opt->mProxyUser);
            gCtx->opt->mProxyUser = text;
        }
    }

    // grab proxy pswd field
    if (sPSTextEntry[3])
    {
        text = gtk_editable_get_chars(GTK_EDITABLE(sPSTextEntry[3]), 0, -1);
        if (text)
        {
            XI_IF_FREE(gCtx->opt->mProxyPswd);
            gCtx->opt->mProxyPswd = text;
        }
    }

    if (dlg)
        gtk_widget_destroy(dlg);
}

Here is the caller graph for this function:

static void nsInstallDlg::PSDlgOK ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]

Definition at line 1450 of file nsInstallDlg.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void nsInstallDlg::RunApps ( ) [static, private]

Definition at line 307 of file nsInstallDlg.cpp.

{
    nsRunApp *currRunApp = sRunAppList;
    char *argv[3], *dest;
    char apppath[MAXPATHLEN];
    extern NS_IMPORT_(char **) environ; /* globally available to all processes */
    int pid;

    dest = gCtx->opt->mDestination;
    if (chdir(dest) < 0) 
        fprintf(stderr,"chdir(%s): %s\n",dest,strerror(errno));

    while (currRunApp)
    {
        /* run application with supplied args */
        if ((pid = fork()) == 0)
        {
            /* child */

            if (*(dest + strlen(dest)) == '/') /* trailing slash */
                sprintf(apppath, "%s%s", dest, currRunApp->GetApp());
            else                               /* no trailing slash */
                sprintf(apppath, "%s/%s", dest, currRunApp->GetApp());

            argv[0] = apppath;
            argv[1] = currRunApp->GetArgs();
            argv[2] = NULL; /* null-terminate arg vector */
            execve(apppath, argv, environ);

            /* shouldn't reach this but in case execve fails we will */
            exit(0);
        }
        /* parent continues running to finish installation */

        currRunApp = currRunApp->GetNext();
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void nsInstallDlg::RunApps ( nsRunApp aRunAppList,
int  aSequential 
) [static, private]

Definition at line 338 of file nsInstallDlg.cpp.

{
    nsRunApp *currRunApp = aRunAppList;
    char *argv[3], *dest;
    char apppath[MAXPATHLEN];
    extern NS_IMPORT_(char **) environ; /* globally available to all processes */

    dest = gCtx->opt->mDestination;
    if (chdir(dest) < 0) 
        fprintf(stderr,"chdir(%s): %s\n",dest,strerror(errno));

    while (currRunApp)
    {
        /* run application with supplied args */
        sprintf(apppath, "%s/%s", dest, currRunApp->GetApp());

        argv[0] = apppath;
        argv[1] = currRunApp->GetArgs();
        argv[2] = NULL; /* null-terminate arg vector */

        if (!fork())
        {
            /* child */

            execve(apppath, argv, environ);

            /* shouldn't reach this but in case execve fails we will */
            _exit(0);
        }
        /* parent continues running to finish installation */

        if (aSequential)
        {
           wait(NULL);
        }

        currRunApp = currRunApp->GetNext();
    }


}

Here is the call graph for this function:

void nsInstallDlg::SaveModulesToggled ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]

Definition at line 915 of file nsInstallDlg.cpp.

{
    if (GTK_TOGGLE_BUTTON(aWidget)->active)
    {
        DUMP("Save modules toggled on");
        gCtx->opt->mSaveModules = TRUE;
    }
    else
    {
        DUMP("Save modules toggled off");
        gCtx->opt->mSaveModules = FALSE;
    }
}

Here is the caller graph for this function:

static void nsInstallDlg::SaveModulesToggled ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]
void nsInstallDlg::SetDownloadComp ( nsComponent aComp,
int  aURLIndex,
int  aNum,
int  aTotal 
) [static]

Definition at line 794 of file nsInstallDlg.cpp.

{
    static char xpiDir[MAXPATHLEN];
    static int bHaveXPIDir = FALSE;
    char label[MAXPATHLEN];
    char localPath[MAXPATHLEN];
    
    if (!aComp)
       return;

    if (!bHaveXPIDir)
    {
        getcwd(xpiDir, MAXPATHLEN);
        strcat(xpiDir, "/xpi");
        bHaveXPIDir = TRUE;
    }

    // update comp name 
    sprintf(label, "%s [%d/%d]", aComp->GetDescShort(), aNum, aTotal);
    gtk_label_set_text(GTK_LABEL(sDLProgress.compName), label);

    // update from URL 
    label[0] = 0;
    CompressToFit(aComp->GetURL(aURLIndex), label, kCharsInDLLabel);
    gtk_label_set_text(GTK_LABEL(sDLProgress.URL), label);

    // to local path 
    label[0] = 0;
    sprintf(localPath, "%s/%s", xpiDir, aComp->GetArchive());
    CompressToFit(localPath, label, kCharsInDLLabel);
    gtk_label_set_text(GTK_LABEL(sDLProgress.localPath), label);
    
    gettimeofday(&sDLStartTime, NULL);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void nsInstallDlg::SetDownloadComp ( nsComponent aComp,
int  aURLIndex,
int  aNum,
int  aTotal 
) [static]
int nsInstallDlg::SetMsg0 ( char *  aMsg)

Definition at line 560 of file nsInstallDlg.cpp.

{
    if (!aMsg)
        return E_PARAM;

    mMsg0 = aMsg;

    return OK;
}
int nsInstallDlg::SetMsg0 ( char *  aMsg)
void nsXInstallerDlg::SetPageNum ( int  aPageNum) [inherited]
void nsXInstallerDlg::SetPageNum ( int  aPageNum) [inherited]
int nsXInstallerDlg::SetShowDlg ( int  aShowDlg) [inherited]

Definition at line 58 of file nsXInstallerDlg.cpp.

{
    if ( aShowDlg != nsXInstallerDlg::SHOW_DIALOG &&
         aShowDlg != nsXInstallerDlg::SKIP_DIALOG )
        return E_PARAM;

    mShowDlg = aShowDlg;

    return OK;
}
int nsXInstallerDlg::SetShowDlg ( int  aShowDlg) [inherited]
int nsXInstallerDlg::SetTitle ( char *  aTitle) [inherited]

Definition at line 76 of file nsXInstallerDlg.cpp.

{
    if (!aTitle)
        return E_PARAM;
    
    mTitle = aTitle;

    return OK;
}
int nsXInstallerDlg::SetTitle ( char *  aTitle) [inherited]
int nsInstallDlg::Show ( void  ) [virtual]

Implements nsXInstallerDlg.

Definition at line 381 of file nsInstallDlg.cpp.

{
    int err = OK;
    GtkWidget *hbox = NULL;
    GtkWidget *vbox = NULL;
    GtkWidget *dlFrame, *dlCheckbox, *dlProxyBtn;
    int bCus;
    nsComponentList *comps = NULL;

    XI_VERIFY(gCtx);
    XI_VERIFY(gCtx->notebook);

    if (mWidgetsInit == FALSE)
    {
        // create a new table and add it as a page of the notebook
        mTable = gtk_table_new(4, 1, FALSE);
        gtk_notebook_append_page(GTK_NOTEBOOK(gCtx->notebook), mTable, NULL);
        mPageNum = gtk_notebook_get_current_page(GTK_NOTEBOOK(gCtx->notebook));
        gtk_widget_show(mTable);

        // insert a static text widget in the first row
        sMsg0Label = gtk_label_new(mMsg0);
        hbox = gtk_hbox_new(FALSE, 0);
        gtk_box_pack_start(GTK_BOX(hbox), sMsg0Label, FALSE, FALSE, 0);
        gtk_widget_show(hbox);
        gtk_table_attach(GTK_TABLE(mTable), hbox, 0, 1, 0, 1,
            static_cast<GtkAttachOptions>(GTK_FILL | GTK_EXPAND),
                     GTK_FILL, 20, 20);
        gtk_widget_show(sMsg0Label);

        // Proxy Settings
        // insert a [ x ] heterogenous table
        sDLTable = gtk_table_new(2, 2, FALSE);

        gtk_table_attach(GTK_TABLE(mTable), sDLTable, 0, 1, 1, 4, 
            static_cast<GtkAttachOptions>(GTK_FILL | GTK_EXPAND),
            GTK_FILL, 20, 20);
            
        // download settings groupbox
        dlFrame = gtk_frame_new(gCtx->Res("DL_SETTINGS"));
        gtk_table_attach_defaults(GTK_TABLE(sDLTable), dlFrame, 0, 2, 0, 2);
        gtk_widget_show(dlFrame);
    
        // save installer modules checkbox and label
        dlCheckbox = gtk_check_button_new_with_label(
                        gCtx->Res("SAVE_MODULES"));
        gtk_widget_show(dlCheckbox);
        gtk_table_attach(GTK_TABLE(sDLTable), dlCheckbox, 0, 2, 0, 1,
            GTK_FILL, GTK_FILL, 10, 20);
        gtk_signal_connect(GTK_OBJECT(dlCheckbox), "toggled",
            GTK_SIGNAL_FUNC(SaveModulesToggled), NULL);

        // proxy settings button
        dlProxyBtn = gtk_button_new_with_label(gCtx->Res("PROXY_SETTINGS"));
        gtk_widget_show(dlProxyBtn);
        gtk_table_attach(GTK_TABLE(sDLTable), dlProxyBtn, 0, 1, 1, 2,
            GTK_FILL, GTK_FILL, 10, 10);
        gtk_signal_connect(GTK_OBJECT(dlProxyBtn), "clicked",
            GTK_SIGNAL_FUNC(ShowProxySettings), NULL);

        // vbox with two widgets packed in: label0 / progmeter0 (major)
        vbox = gtk_vbox_new(FALSE, 0);
        hbox = gtk_hbox_new(FALSE, 0);
        sMajorLabel = gtk_label_new("");
        sRateLabel = gtk_label_new("");
        gtk_box_pack_start(GTK_BOX(hbox), sMajorLabel, FALSE, FALSE, 0);
        gtk_box_pack_start(GTK_BOX(hbox), sRateLabel, FALSE, FALSE, 0);
        gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
        gtk_widget_show(hbox);
        gtk_widget_show(sMajorLabel);
        gtk_widget_show(sRateLabel);

        sMajorProgBar = gtk_progress_bar_new();
        gtk_box_pack_start(GTK_BOX(vbox), sMajorProgBar, FALSE, FALSE, 0);
        // gtk_widget_show(sMajorProgBar);

        gtk_table_attach(GTK_TABLE(mTable), vbox, 0, 1, 2, 3, 
            static_cast<GtkAttachOptions>(GTK_FILL | GTK_EXPAND),
                     GTK_FILL, 20, 20);
        gtk_widget_show(vbox); 

        // vbox with two widgets packed in: label1 / progmeter1 (minor)
        vbox = gtk_vbox_new(FALSE, 0);
        hbox = gtk_hbox_new(FALSE, 0);
        sMinorLabel = gtk_label_new("");
        gtk_box_pack_start(GTK_BOX(hbox), sMinorLabel, FALSE, FALSE, 0);
        gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
        gtk_widget_show(hbox);
        gtk_widget_show(sMinorLabel);

        sMinorProgBar = gtk_progress_bar_new();
        gtk_box_pack_start(GTK_BOX(vbox), sMinorProgBar, FALSE, FALSE, 0);
        // gtk_widget_show(sMinorProgBar); 

        gtk_table_attach(GTK_TABLE(mTable), vbox, 0, 1, 3, 4, 
            static_cast<GtkAttachOptions>(GTK_FILL | GTK_EXPAND),
                     GTK_FILL, 20, 20);
        gtk_widget_show(vbox); 
        
        mWidgetsInit = TRUE;
    }
    else
    {
        gtk_notebook_set_page(GTK_NOTEBOOK(gCtx->notebook), mPageNum);
        gtk_widget_show(mTable);
    }

    bCus = (gCtx->opt->mSetupType == (gCtx->sdlg->GetNumSetupTypes() - 1));
    comps = gCtx->sdlg->GetSelectedSetupType()->GetComponents();

    if (!nsXIEngine::ExistAllXPIs(bCus, comps))
    {
        bDownload = TRUE;
        gtk_widget_show(sDLTable);
    }
    else
    {
        bDownload = FALSE;
    }

    // signal connect the buttons
    gCtx->backID = gtk_signal_connect(GTK_OBJECT(gCtx->back), "clicked",
                   GTK_SIGNAL_FUNC(nsInstallDlg::Back), gCtx->idlg);
    gCtx->nextID = gtk_signal_connect(GTK_OBJECT(gCtx->next), "clicked",
                   GTK_SIGNAL_FUNC(nsInstallDlg::Next), gCtx->idlg);

    if (gCtx->opt->mSetupType != (gCtx->sdlg->GetNumSetupTypes() - 1))
    {
        // show back btn again after setup type dlg where we couldn't go back
        gtk_widget_show(gCtx->back);
    }

    GTK_WIDGET_SET_FLAGS(gCtx->next, GTK_CAN_DEFAULT);
    gtk_widget_grab_default(gCtx->next);
    gtk_widget_grab_focus(gCtx->next);

    // show back and next button, but make title of next button "Install"
    gCtx->backLabel = gtk_label_new(gCtx->Res("BACK"));
    gCtx->installLabel = gtk_label_new(gCtx->Res("INSTALL"));
    gtk_container_add(GTK_CONTAINER(gCtx->back), gCtx->backLabel);
    gtk_container_add(GTK_CONTAINER(gCtx->next), gCtx->installLabel);
    gtk_widget_show(gCtx->backLabel);
    gtk_widget_show(gCtx->installLabel);
    gtk_widget_show(gCtx->back);
    gtk_widget_show(gCtx->next);

    if (!mShowDlg)
    {
       gCtx->bMoving = FALSE;
       nsInstallDlg::Next((GtkWidget *)NULL, gCtx->idlg);
       return err;
    }
   

    return err;
}

Here is the call graph for this function:

int nsInstallDlg::Show ( int  aDirection) [virtual]

Implements nsXInstallerDlg.

Definition at line 346 of file nsInstallDlg.cpp.

{
    int err = OK;
    int totalComps = 0;
    GtkWidget *hbox = NULL;
    GtkWidget *vbox = NULL;
    GtkWidget *dlFrame, *dlCheckbox, *dlProxyBtn;

    XI_VERIFY(gCtx);
    XI_VERIFY(gCtx->notebook);

    if (mWidgetsInit == FALSE)
    {
        int bCus = 
            (gCtx->opt->mSetupType == (gCtx->sdlg->GetNumSetupTypes() - 1));
        nsComponentList *comps = 
            gCtx->sdlg->GetSelectedSetupType()->GetComponents(); 

        // create a new table and add it as a page of the notebook
        mTable = gtk_table_new(5, 1, FALSE);
        gtk_notebook_append_page(GTK_NOTEBOOK(gCtx->notebook), mTable, NULL);
        mPageNum = gtk_notebook_get_current_page(GTK_NOTEBOOK(gCtx->notebook));
        gtk_widget_show(mTable);

        // Show the text:
        // Setup will now install the following components:
        //  [component1]
        //  [component2]
        // to the following location:
        //  [install path]
        //
        // Click next to continue.

        sTextBox = gtk_vbox_new(FALSE, 6);
        gtk_container_set_border_width(GTK_CONTAINER(sTextBox), 12);
        gtk_table_attach(GTK_TABLE(mTable), sTextBox, 0, 1, 0, 1,
                         GtkAttachOptions(GTK_FILL | GTK_EXPAND),
                         GtkAttachOptions(0), 0, 0);

        GtkWidget *msg = gtk_label_new(gCtx->Res("WILL_INSTALL"));
        gtk_misc_set_alignment(GTK_MISC(msg), 0.0, 0.5);
        gtk_box_pack_start(GTK_BOX(sTextBox), msg, FALSE, FALSE, 0);

        nsComponent *currComp;
        for (currComp = comps->GetHead(); currComp;
             currComp = comps->GetNext()) {

          if (currComp->IsMainComponent() ||
              (!currComp->IsInvisible() && currComp->IsSelected())) {
            msg = gtk_label_new(currComp->GetDescShort());
            gtk_misc_set_alignment(GTK_MISC(msg), 0.0, 0.5);
            gtk_misc_set_padding(GTK_MISC(msg), 20, 0);
            gtk_box_pack_start(GTK_BOX(sTextBox), msg, FALSE, FALSE, 0);
          }
        }

        msg = gtk_label_new(gCtx->Res("TO_LOCATION"));
        gtk_misc_set_alignment(GTK_MISC(msg), 0.0, 0.5);
        gtk_box_pack_start(GTK_BOX(sTextBox), msg, FALSE, FALSE, 0);

        msg = gtk_label_new(gCtx->opt->mDestination);
        gtk_misc_set_alignment(GTK_MISC(msg), 0.0, 0.5);
        gtk_misc_set_padding(GTK_MISC(msg), 20, 0);
        gtk_box_pack_start(GTK_BOX(sTextBox), msg, FALSE, FALSE, 0);

        gtk_widget_show_all(sTextBox);

        if (!nsXIEngine::ExistAllXPIs(bCus, comps, &totalComps))
        {
            // insert a [ x ] heterogenous table
            sDLTable = gtk_table_new(2, 2, FALSE);
            gtk_widget_show(sDLTable);

            gtk_table_attach(GTK_TABLE(mTable), sDLTable, 0, 1, 1, 4, 
                static_cast<GtkAttachOptions>(GTK_FILL | GTK_EXPAND),
                     GtkAttachOptions(0), 20, 20);
            
            // download settings groupbox
            dlFrame = gtk_frame_new(gCtx->Res("DL_SETTINGS"));
            gtk_table_attach_defaults(GTK_TABLE(sDLTable), dlFrame, 0, 2, 0, 2);
            gtk_widget_show(dlFrame);
    
            // save installer modules checkbox and label
            dlCheckbox = gtk_check_button_new_with_label(
                            gCtx->Res("SAVE_MODULES"));
            gtk_widget_show(dlCheckbox);
            gtk_table_attach(GTK_TABLE(sDLTable), dlCheckbox, 0, 2, 0, 1,
                GTK_FILL, GTK_FILL, 10, 20);
            gtk_signal_connect(GTK_OBJECT(dlCheckbox), "toggled",
                GTK_SIGNAL_FUNC(SaveModulesToggled), NULL);

            // proxy settings button
            dlProxyBtn = gtk_button_new_with_label(gCtx->Res("PROXY_SETTINGS"));
            gtk_widget_show(dlProxyBtn);
            gtk_table_attach(GTK_TABLE(sDLTable), dlProxyBtn, 0, 1, 1, 2,
                GTK_FILL, GTK_FILL, 10, 10);
            gtk_signal_connect(GTK_OBJECT(dlProxyBtn), "clicked",
                   GTK_SIGNAL_FUNC(ShowProxySettings), NULL);
        }

        // vbox with two widgets packed in: label0 / progmeter0 (major)
        vbox = gtk_vbox_new(FALSE, 0);
        hbox = gtk_hbox_new(FALSE, 0);
        sMajorLabel = gtk_label_new("");
        sRateLabel = gtk_label_new("");
        gtk_box_pack_start(GTK_BOX(hbox), sMajorLabel, FALSE, FALSE, 0);
        gtk_box_pack_start(GTK_BOX(hbox), sRateLabel, FALSE, FALSE, 0);
        gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
        gtk_widget_show(hbox);
        gtk_widget_show(sMajorLabel);
        gtk_widget_show(sRateLabel);

        sMajorProgBar = gtk_progress_bar_new();
        gtk_box_pack_start(GTK_BOX(vbox), sMajorProgBar, FALSE, FALSE, 0);
        // gtk_widget_show(sMajorProgBar);

        gtk_table_attach(GTK_TABLE(mTable), vbox, 0, 1, 2, 3, 
            static_cast<GtkAttachOptions>(GTK_FILL | GTK_EXPAND),
                     GtkAttachOptions(0), 20, 20);
        gtk_widget_show(vbox); 

        // vbox with two widgets packed in: label1 / progmeter1 (minor)
        vbox = gtk_vbox_new(FALSE, 0);
        hbox = gtk_hbox_new(FALSE, 0);
        sMinorLabel = gtk_label_new("");
        gtk_box_pack_start(GTK_BOX(hbox), sMinorLabel, FALSE, FALSE, 0);
        gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
        gtk_widget_show(hbox);
        gtk_widget_show(sMinorLabel);

        sMinorProgBar = gtk_progress_bar_new();
        gtk_box_pack_start(GTK_BOX(vbox), sMinorProgBar, FALSE, FALSE, 0);
        // gtk_widget_show(sMinorProgBar); 

        gtk_table_attach(GTK_TABLE(mTable), vbox, 0, 1, 3, 4, 
            static_cast<GtkAttachOptions>(GTK_FILL | GTK_EXPAND),
                     GtkAttachOptions(0), 20, 20);
        gtk_widget_show(vbox); 

        vbox = gtk_vbox_new(FALSE, 0);
        sMsg0Label = gtk_label_new(mMsg0);
        gtk_misc_set_alignment(GTK_MISC(sMsg0Label), 0.0, 1.0);
        gtk_misc_set_padding(GTK_MISC(sMsg0Label), 6, 12);
        gtk_box_pack_start(GTK_BOX(vbox), sMsg0Label, TRUE, TRUE, 0);
        gtk_table_attach(GTK_TABLE(mTable), vbox, 0, 1, 4, 5,
            static_cast<GtkAttachOptions>(GTK_FILL | GTK_EXPAND),
                     GtkAttachOptions(GTK_FILL | GTK_EXPAND), 0, 0);
        gtk_widget_show(sMsg0Label);
        gtk_widget_show(vbox);

        
        mWidgetsInit = TRUE;
    }
    else
    {
        gtk_notebook_set_page(GTK_NOTEBOOK(gCtx->notebook), mPageNum);
        gtk_widget_show(mTable);
    }

    // <b>title</b>\0
    char *titleBuf = new char[strlen(mTitle) + 9];
    sprintf(titleBuf, "<b>%s</b>", mTitle);

    gtk_label_set_markup(GTK_LABEL(gCtx->header_title), titleBuf);
    gtk_label_set_text(GTK_LABEL(gCtx->header_subtitle), mSubTitle);

    delete[] titleBuf;

    // signal connect the buttons
    gCtx->backID = gtk_signal_connect(GTK_OBJECT(gCtx->back), "clicked",
                   GTK_SIGNAL_FUNC(nsInstallDlg::Back), gCtx->idlg);
    gCtx->nextID = gtk_signal_connect(GTK_OBJECT(gCtx->next), "clicked",
                   GTK_SIGNAL_FUNC(nsInstallDlg::Next), gCtx->idlg);

    if (gCtx->opt->mSetupType != (gCtx->sdlg->GetNumSetupTypes() - 1))
      gtk_widget_set_sensitive(gCtx->back, TRUE);

    // always change title of next button to "Install"
    gtk_button_set_label(GTK_BUTTON(gCtx->next), gCtx->Res("INSTALL"));

    return err;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1152 of file nsInstallDlg.cpp.

{
    GtkWidget *label;

    if (gCtx->opt->mMode == nsXIOptions::MODE_SILENT) {
       ErrorHandler(E_CRC_FAILED);
       return;
    }

    if ( crcDlg == (GtkWidget *) NULL ) {
       // throw up dialog informing user to press resume
       // or to cancel out
      crcDlg = gtk_dialog_new_with_buttons(gCtx->opt->mTitle, NULL,
                                           (GtkDialogFlags) 0,
                                           GTK_STOCK_OK,
                                           GTK_RESPONSE_NONE,
                                           NULL);

      label = gtk_label_new(gCtx->Res("CRC_CHECK"));

      g_signal_connect_swapped(GTK_OBJECT(crcDlg), "response",
                               G_CALLBACK(CRCOKCb), GTK_OBJECT(crcDlg));

      gtk_container_add(GTK_CONTAINER(GTK_DIALOG(crcDlg)->vbox), label);
      gtk_widget_show_all(crcDlg);
    }
    XI_GTK_UPDATE_UI();
}

Here is the call graph for this function:

Here is the caller graph for this function:

int nsInstallDlg::ShowCRCFailedDlg ( ) [static, private]

Definition at line 1182 of file nsInstallDlg.cpp.

{
    GtkWidget *crcFailedDlg, *label;

    // throw up dialog informing user to press resume
    // or to cancel out
    if (gCtx->opt->mMode == nsXIOptions::MODE_SILENT) {
       ErrorHandler(E_CRC_FAILED);
       return OK;
    }

    crcFailedDlg = gtk_dialog_new_with_buttons(gCtx->opt->mTitle, NULL,
                                               GTK_DIALOG_MODAL,
                                               GTK_STOCK_OK,
                                               GTK_RESPONSE_NONE,
                                               NULL);
    label = gtk_label_new(gCtx->Res("CRC_FAILED"));

    g_signal_connect_swapped(GTK_OBJECT(crcFailedDlg), "response",
                             G_CALLBACK(CRCFailedOK), GTK_OBJECT(crcFailedDlg));
    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(crcFailedDlg)->vbox), label);
    gtk_widget_show_all(crcFailedDlg);
    XI_GTK_UPDATE_UI();

    return OK;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static int nsInstallDlg::ShowCxnDroppedDlg ( ) [static, private]
int nsInstallDlg::ShowCxnDroppedDlg ( ) [static, private]

Definition at line 1210 of file nsInstallDlg.cpp.

{
    GtkWidget *cxnDroppedDlg, *label;

    // throw up dialog informing user to press resume
    // or to cancel out
    if (gCtx->opt->mMode == nsXIOptions::MODE_SILENT) {
       ErrorHandler(E_NO_DOWNLOAD);
       return OK;
    }

    cxnDroppedDlg = gtk_dialog_new_with_buttons(gCtx->opt->mTitle, NULL,
                                                GTK_DIALOG_MODAL,
                                                GTK_STOCK_OK,
                                                GTK_RESPONSE_NONE,
                                                NULL);

    label = gtk_label_new(gCtx->Res("CXN_DROPPED"));
    g_signal_connect_swapped(GTK_OBJECT(cxnDroppedDlg), "response",
                             G_CALLBACK(CxnDroppedOK), GTK_OBJECT(cxnDroppedDlg));
    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(cxnDroppedDlg)->vbox), label);
    gtk_widget_show_all(cxnDroppedDlg);
    XI_GTK_UPDATE_UI();

    return OK;
}

Here is the call graph for this function:

Here is the caller graph for this function:

void nsInstallDlg::ShowProxySettings ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]

Definition at line 930 of file nsInstallDlg.cpp.

{
    GtkWidget *psDlg, *psTable;
    GtkWidget *okButton, *cancelButton;
    GtkWidget *psLabel[NUM_PS_ENTRIES];
    int i;
    char resName[16], *text = nsnull;

    psDlg = gtk_dialog_new();
    gtk_window_set_title(GTK_WINDOW(psDlg), gCtx->opt->mTitle);
    gtk_window_set_position(GTK_WINDOW(psDlg), GTK_WIN_POS_CENTER);

    psTable = gtk_table_new(5, 2, FALSE);
    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(psDlg)->vbox), psTable);
    gtk_widget_show(psTable);

    // create labels
    for (i = 0; i < NUM_PS_ENTRIES; ++i) 
    {
        sprintf(resName, "PS_LABEL%d", i);
        psLabel[i] = gtk_label_new(gCtx->Res(resName));
        gtk_widget_show(psLabel[i]);

        gtk_table_attach_defaults(GTK_TABLE(psTable), psLabel[i],
                                  0, 1, i, i + 1);
    }
    
    // create text entry fields
    for (i = 0; i < NUM_PS_ENTRIES; ++i)
    {
        sPSTextEntry[i] = gtk_entry_new();
        gtk_entry_set_editable(GTK_ENTRY(sPSTextEntry[i]), TRUE);

        // reset text if we already opened this dlg before
        if (i == 0) text = gCtx->opt->mProxyHost;
        if (i == 1) text = gCtx->opt->mProxyPort;
        if (i == 2) text = gCtx->opt->mProxyUser;
        if (i == 3) text = gCtx->opt->mProxyPswd;

        if (text)
            gtk_entry_set_text(GTK_ENTRY(sPSTextEntry[i]), text);

        // password field
        if (i + 1 == NUM_PS_ENTRIES)
            gtk_entry_set_visibility(GTK_ENTRY(sPSTextEntry[i]), FALSE); 

        gtk_widget_show(sPSTextEntry[i]);

        gtk_table_attach(GTK_TABLE(psTable), sPSTextEntry[i], 
            1, 2, i, i + 1,
            static_cast<GtkAttachOptions>(GTK_FILL | GTK_EXPAND),
            static_cast<GtkAttachOptions>(GTK_FILL | GTK_EXPAND), 5, 5);
    }

    // pre-populate text entry fields if data already stored
    okButton = gtk_button_new_with_label(gCtx->Res("OK_LABEL"));
    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(psDlg)->action_area),
        okButton);
    gtk_signal_connect(GTK_OBJECT(okButton), "clicked",
                   GTK_SIGNAL_FUNC(PSDlgOK), psDlg);
    gtk_widget_show(okButton);

    cancelButton = gtk_button_new_with_label(gCtx->Res("CANCEL_LABEL"));
    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(psDlg)->action_area),
        cancelButton);
    gtk_signal_connect(GTK_OBJECT(cancelButton), "clicked",
                   GTK_SIGNAL_FUNC(PSDlgCancel), psDlg);
    gtk_widget_show(cancelButton);

    gtk_widget_show(psDlg);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void nsInstallDlg::ShowProxySettings ( GtkWidget *  aWidget,
gpointer  aData 
) [static, private]

Definition at line 538 of file nsInstallDlg.cpp.

{
    if (!mTable)
        return E_PARAM;

    gtk_widget_show(mTable);

    return OK;
}

Here is the caller graph for this function:

static int nsInstallDlg::TotalDLSize ( ) [static, private]
int nsInstallDlg::TotalDLSize ( ) [static, private]

Definition at line 1390 of file nsInstallDlg.cpp.

{
    int total = 0; // in KB
    int bCustom;
    nsComponentList *comps;
    nsComponent *currComp;
    int archiveSize, currentSize;

    bCustom = (gCtx->opt->mSetupType == (gCtx->sdlg->GetNumSetupTypes() - 1));
    comps = gCtx->sdlg->GetSelectedSetupType()->GetComponents();
    currComp = comps->GetHead();
    
    // loop through all components
    while (currComp)
    {
        if ((bCustom && currComp->IsSelected()) || (!bCustom))
        {
            // if still have to download 
            if (!currComp->IsDownloaded())
            {
                // find archive size - amount downloaded already
                archiveSize = currComp->GetArchiveSize();
                currentSize = currComp->GetCurrentSize();

#ifdef DEBUG
                printf("%s ar sz = %d cu sz = %d\n", currComp->GetArchive(), 
                        archiveSize, currentSize);
#endif

                total += (archiveSize - currentSize);
            }
        }
        currComp = currComp->GetNext();
    }

    return total;
}

Here is the call graph for this function:

Here is the caller graph for this function:

void nsInstallDlg::XPIProgressCB ( const char *  aMsg,
int  aVal,
int  aMax 
) [static]

Definition at line 669 of file nsInstallDlg.cpp.

{
    if (gCtx->opt->mMode == nsXIOptions::MODE_SILENT)
       return;
    // DUMP("XPIProgressCB");

    if (!aMsg)
        return;

    static int updates = 0;
    char msg[64];
    const char *colon = NULL, *lastSlash = NULL;

    if (aMax > 0)
    {
        // reset for next component
        if (updates)
            updates = 0;

        gfloat percent = (gfloat)((gfloat)aVal/(gfloat)aMax);
#if 0
    printf("progress percent: %f\taVal: %d\taMax: %d\n", percent, aVal, aMax);
#endif
        gtk_progress_set_activity_mode(GTK_PROGRESS(sMinorProgBar), FALSE);
        gtk_progress_bar_update(GTK_PROGRESS_BAR(sMinorProgBar), percent);
        gtk_widget_show(sMinorProgBar);

        sprintf(msg, gCtx->Res("PROCESSING_FILE"), aVal, aMax);
    }
    else
    {
        updates++;
        if (updates > 5)
            updates = 0;
        gfloat percent = (gfloat)((gfloat)updates/(gfloat)5);

        gtk_progress_set_activity_mode(GTK_PROGRESS(sMinorProgBar), TRUE);
        gtk_progress_bar_update(GTK_PROGRESS_BAR(sMinorProgBar), percent);
        gtk_widget_show(sMinorProgBar);

        /* tack on XPInstall action */
        memset(msg, 0, 64);
        colon = strchr(aMsg, ':');
        if (colon)
            strncpy(msg, aMsg, colon - aMsg);

        strncat(msg, " ", 1);

        /* tack on leaf name */
        lastSlash = strrchr(aMsg, '/');
        if (lastSlash)
            strncat(msg, lastSlash + 1, strlen(lastSlash) - 1);

        strncat(msg, "\0", 1);
    }

    gtk_label_set_text(GTK_LABEL(sMinorLabel), msg);
    gtk_widget_draw(sMinorLabel, NULL);

    XI_GTK_UPDATE_UI();
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void nsInstallDlg::XPIProgressCB ( const char *  aMsg,
int  aVal,
int  aMax 
) [static]

Member Data Documentation

char * nsInstallDlg::mMsg0 [private]

Definition at line 125 of file nsInstallDlg.h.

int nsXInstallerDlg::mPageNum [protected, inherited]

Definition at line 98 of file nsXInstallerDlg.h.

int nsXInstallerDlg::mShowDlg [protected, inherited]

Definition at line 95 of file nsXInstallerDlg.h.

char* nsXInstallerDlg::mSubTitle [protected, inherited]

Definition at line 97 of file nsXInstallerDlg.h.

GtkWidget * nsXInstallerDlg::mTable [protected, inherited]

Definition at line 100 of file nsXInstallerDlg.h.

char * nsXInstallerDlg::mTitle [protected, inherited]

Reimplemented in nsWelcomeDlg.

Definition at line 96 of file nsXInstallerDlg.h.

int nsXInstallerDlg::mWidgetsInit [protected, inherited]

Definition at line 99 of file nsXInstallerDlg.h.


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