long DccDialog::onTableChanged(FXObject*, FXSelector, void *ptr) { FXTablePos *tp = (FXTablePos*)ptr; m_contents->recalc(); m_path->setText(dxirc::instance()->getDccFilesList()[tp->row].path); m_ip->setText(dxirc::instance()->getDccFilesList()[tp->row].ip); m_port->setText(FXStringVal(dxirc::instance()->getDccFilesList()[tp->row].port)); m_nick->setText(dxirc::instance()->getDccFilesList()[tp->row].nick); return 1; }
/** Get a filesize in string * * \param filesize The filesize in bytes * * \return The string * */ FXString RainbruRPG::Gui::FtpClientWindow::filesizeToString(int filesize){ FXString s; float fs; int mo=1024*1024; if (filesize>mo){ fs=filesize/mo; s+=FXStringVal(fs, 2, FALSE); s+=" Mb"; } else if (filesize>1024){ fs=filesize/1024; s+=FXStringVal(fs, 2, FALSE); s+=" kb"; } else{ s+=FXStringVal(filesize, 10); s+=" b"; } return s; }
FXbool FXTabSim::intro(stEntrada reg) { FXint nFilas, nCols, i, j, npars; FXString id; FXint colFin, num; FXString strAux; FXint nuevoBlq; FXint indx, fin, posMarca; nFilas = getNumRows(); if ( (tope+1) == nFilas ) insertRows(nFilas); if ( reg.tipoTs == MARCA ) { numRegs++; tope++; posMarca = tope; setItemText(tope, COL_LEXEMA, "FIN_PARAMS"); setItemText(tope, COL_TIPOTS, nomTiposTS[reg.tipoTs]); setItemText(tope, COL_NPAR, "<ACTIVOS>"); // El bloque empieza en la posicion siguiente a la marca bloques->append(posMarca+1); // Copia de los parametros como variables locales indx = tope; fin = 0; do { nFilas = getNumRows(); if ( (tope+1) == nFilas ) insertRows(nFilas, 5); indx--; strAux = getItemText(indx, COL_TIPOTS); if ( strcmp(strAux.text(), "PAR_FORMAL") == 0 ) { tope++; strAux = getItemText(indx, COL_LEXEMA); setItemText(tope, COL_LEXEMA, strAux.text()); setItemText(tope, COL_TIPOTS, "COPIA_PARAM"); strAux = getItemText(indx, COL_TDATO); setItemText(tope, COL_TDATO, strAux.text()); } else { fin = 1; } } while ( !fin ); itemSelMin = posMarca; itemSelMax = tope+1; setSelTextColor(colores[NEW_FG]); setSelBackColor(colores[NEW_BG]); // selectRange(posMarca, tope, COL_LEXEMA, COL_NPAR); selectRange(posMarca, tope, COL_LEXEMA, COL_ETQ_ELSE); return true; } if ( reg.tipoTs == DESC_CTRL ) { tope++; numRegs++; setItemText(tope, COL_LEXEMA, reg.lexema); setItemText(tope, COL_TIPOTS, nomTiposTS[reg.tipoTs]); setItemText(tope, COL_NOM_CTRL, reg.nomVarCtrl); setItemText(tope, COL_ETQ_ENT, reg.etqtEnt); setItemText(tope, COL_ETQ_SAL, reg.etqtSal); setItemText(tope, COL_ETQ_ELSE, reg.etqtElse); itemSelMin = tope; itemSelMax = tope+1; setSelTextColor(colores[NEW_FG]); setSelBackColor(colores[NEW_BG]); selectRange(tope, tope, COL_LEXEMA, COL_ETQ_ELSE); return true; } // Si es un parametro formal buscamos si el simbolo // esta duplicado hasta el proc/funcion if ( reg.tipoTs == PAR_FORMAL ) { indx = tope; strAux = getItemText(indx, COL_TIPOTS); while ( compare(strAux.text(), "PAR_FORMAL") == 0 ) { strAux = getItemText(indx, COL_LEXEMA); if ( compare(strAux.text(), reg.lexema) == 0 ) { // Simbolo duplicado => Lo marcamos setSelTextColor(colores[DUP_FG]); setSelBackColor(colores[DUP_BG]); //selectRange(indx, indx, COL_LEXEMA, COL_TDATO); selectRange(indx, indx, COL_LEXEMA, COL_ETQ_ELSE); return false; } strAux = getItemText(--indx, COL_TIPOTS); } // Solo queda comparar con el proc/funcion if ( compare(strAux.text(), "PROC") == 0 ) { strAux = getItemText(indx, COL_LEXEMA); if ( compare(strAux.text(), reg.lexema) == 0 ) { // Simbolo duplicado setSelTextColor(colores[DUP_FG]); setSelBackColor(colores[DUP_BG]); //selectRange(indx, indx, COL_LEXEMA, COL_TDATO); selectRange(indx, indx, COL_LEXEMA, COL_ETQ_ELSE); return false; } } // Ya podemos insertarlo tope++; setItemText(tope, COL_LEXEMA, reg.lexema); setItemText(tope, COL_TIPOTS, nomTiposTS[reg.tipoTs]); setItemText(tope, COL_TDATO, nomTiposDato[reg.tipoDato]); // Actualizamos num de parametros del proc setItemText(iniProc, COL_NPAR, FXStringVal(++numPar)); // Seleccionamos nuevo simbolo setSelTextColor(colores[NEW_FG]); setSelBackColor(colores[NEW_BG]); // Otra forma: seleccionar SIEMPRE la fila entera //selectRange(tope, tope, COL_LEXEMA, COL_TDATO); selectRange(tope, tope, COL_LEXEMA, COL_ETQ_ELSE); return true; } // Verificamos que el simbolo NO ha sido declarado previamente // => Hasta encontrar MARCA !!!! if ( bloques->no() > 0 ) j = (*bloques)[bloques->no()-1]; else j = 0; while ( (j <= tope) && (tope != -1) ) { strAux = getItemText(j, COL_TIPOTS); /************ Ya no hace falta if ( strcmp(strAux.text(), "MARCA") == 0 ) j++; ********************************/ if ( strcmp(reg.lexema, getItemText(j, COL_LEXEMA).text()) == 0 ) { // Simbolo ya declarado... Lo Marcamos printf("Simbolo repetido: %s y %s\n" , getItemText(j, COL_LEXEMA).text(), reg.lexema); itemSelMin = j; itemSelMax = j+1; setSelTextColor(colores[DUP_FG]); setSelBackColor(colores[DUP_BG]); // selectRange(j, j, COL_LEXEMA, COL_TDATO); selectRange(j, j, COL_LEXEMA, COL_ETQ_ELSE); return false; } else { j++; } } // Si no lo hemos encontrado podemos insertarlo numRegs++; tope++; FXTable::setItemText(tope, COL_LEXEMA, reg.lexema); FXTable::setItemText(tope, COL_TIPOTS, nomTiposTS[reg.tipoTs]); // FXTable::setItemText(tope, COL_TDATO, nomTiposDato[reg.tipoDato]); if ( reg.tipoTs == PROC ) { FXTable::setItemText(tope, COL_NPAR, "0"); iniProc = tope; numPar = 0; colFin = COL_NPAR; /******************************* blqAnt = (bloque == -1)?0:bloque; bloque = tope; nuevoBlq = tope; bloques->append(nuevoBlq); printf(">> Ini BLOQUE: %d\n", (*bloques)[bloques->no()-1]); ************************************************************/ } else if ( reg.tipoTs == PAR_FORMAL ) { FXTable::setItemText(tope, COL_TDATO, nomTiposDato[reg.tipoDato]); FXTable::setItemText(iniProc, COL_NPAR, FXStringVal(++numPar)); colFin = COL_TDATO; } else { FXTable::setItemText(tope, COL_TDATO, nomTiposDato[reg.tipoDato]); colFin = COL_TDATO; } // Seleccionamos nuevo simbolo setSelTextColor(colores[NEW_FG]); setSelBackColor(colores[NEW_BG]); // Otra forma: seleccionar SIEMPRE la fila entera // selectRange(tope, tope, COL_LEXEMA, colFin); selectRange(tope, tope, COL_LEXEMA, COL_ETQ_ELSE); itemSelMin = tope; itemSelMax = tope+1; return true; }
long FXTransferManager::onProgress(FXObject*,FXSelector,void*) { bool addtimeout=false; FXint timeout=0; FXint response; FXTransferStatus progress; transfer->status(progress); if (getApp()->hasTimeout(this,FXWindow::ID_SHOW)) { timeout = getApp()->remainingTimeout(this,FXWindow::ID_SHOW); getApp()->removeTimeout(this,FXWindow::ID_SHOW); addtimeout=true; } switch(progress.code) { case STATUS_DONE: transfer->join(); getApp()->stopModal(this,FALSE); hide(); fxmessage("Joining...\n"); close(FALSE); break; case STATUS_FATAL: transfer->join(); FXMessageBox::error(this,MBOX_OK,"Fatal Error","%s",progress.error.text()); //getApp()->stopModal(this,FALSE); hide(); close(FALSE); break; case STATUS_OVERWRITE: response = FXMessageBox::question(this,MBOX_YES_NO_CANCEL,"Overwrite File?","File already exists. Overwrite?\nCopying file: %s\nto:%s",progress.srcfile.text(),progress.dstfile.text()); if (response==MBOX_CLICKED_CANCEL) { transfer->respondOverwrite(FALSE,MAYBE,TRUE); transfer->join(); //getApp()->stopModal(this,FALSE); hide(); close(FALSE); } else if (response==MBOX_CLICKED_YES) { transfer->respondOverwrite(TRUE,MAYBE,FALSE); if (addtimeout) getApp()->addTimeout(this,FXWindow::ID_SHOW,timeout); } else { transfer->respondOverwrite(FALSE,MAYBE,FALSE); if (addtimeout) getApp()->addTimeout(this,FXWindow::ID_SHOW,timeout); } break; case STATUS_DELETE: response = FXMessageBox::question(this,MBOX_YES_NO,"Error Deleting File","Unable to remove file:\n%s\nContinue deleting remaining files?",progress.srcfile.text()); if (response==MBOX_CLICKED_NO) { transfer->respondDelete(FALSE); transfer->join(); //getApp()->stopModal(this,FALSE); hide(); close(FALSE); } else { transfer->respondDelete(TRUE); if (addtimeout) getApp()->addTimeout(this,FXWindow::ID_SHOW,timeout); } break; default: text_count->setText(FXStringVal(progress.num)); text_file->setText(progress.srcfile); if (progress_bar) { progress_bar->setTotal(progress.total); progress_bar->setProgress(progress.current); } if (addtimeout) getApp()->addTimeout(this,FXWindow::ID_SHOW,timeout); break; } return 1; }
void DccDialog::updateTable() { FXbool canceled = FALSE; FXbool finished = FALSE; if(!dxirc::instance()->getDccFilesList().no()) { m_buttonClear->disable(); m_buttonCanceled->disable(); m_table->removeRows(0, m_table->getNumRows()); m_group->hide(); m_contents->recalc(); return; } if(!shown()) return; if(m_table->getNumRows() < dxirc::instance()->getDccFilesList().no()) m_table->insertRows(0, dxirc::instance()->getDccFilesList().no()-m_table->getNumRows()); if(m_table->getNumRows() > dxirc::instance()->getDccFilesList().no()) m_table->removeRows(0, m_table->getNumRows()-dxirc::instance()->getDccFilesList().no()); for(FXint i=0; i<dxirc::instance()->getDccFilesList().no(); i++) { if(dxirc::instance()->getDccFilesList()[i].type == DCC_IN || dxirc::instance()->getDccFilesList()[i].type == DCC_PIN) { if(dxirc::instance()->getDccFilesList()[i].currentPosition >= dxirc::instance()->getDccFilesList()[i].size) { if(dxirc::instance()->getDccFilesList()[i].canceled) { m_table->setItemIcon(i, 0, ICO_CANCEL); canceled = TRUE; } else { m_table->setItemIcon(i, 0, ICO_FINISH); finished = TRUE; } m_table->setItemIconPosition(i, 0, FXTableItem::BEFORE); m_table->setItemJustify(i, 0, FXTableItem::LEFT); } else { if(dxirc::instance()->getDccFilesList()[i].canceled) { m_table->setItemIcon(i, 0, ICO_CANCEL); canceled = TRUE; } else m_table->setItemIcon(i, 0, ICO_DOWN); m_table->setItemIconPosition(i, 0, FXTableItem::BEFORE); m_table->setItemJustify(i, 0, FXTableItem::LEFT); } } else { if(dxirc::instance()->getDccFilesList()[i].finishedPosition >= dxirc::instance()->getDccFilesList()[i].size) { if(dxirc::instance()->getDccFilesList()[i].canceled) { m_table->setItemIcon(i, 0, ICO_CANCEL); canceled = TRUE; } else { m_table->setItemIcon(i, 0, ICO_FINISH); finished = TRUE; } m_table->setItemIconPosition(i, 0, FXTableItem::BEFORE); m_table->setItemJustify(i, 0, FXTableItem::LEFT); } else { if(dxirc::instance()->getDccFilesList()[i].canceled) { m_table->setItemIcon(i, 0, ICO_CANCEL); canceled = TRUE; } else m_table->setItemIcon(i, 0, ICO_UP); m_table->setItemIconPosition(i, 0, FXTableItem::BEFORE); m_table->setItemJustify(i, 0, FXTableItem::LEFT); } } m_table->setItemText(i, 0, dxirc::instance()->getDccFilesList()[i].path.rafter(PATHSEP)); m_table->setItemText(i, 1, utils::instance().getFileSize(dxirc::instance()->getDccFilesList()[i].size)); if(dxirc::instance()->getDccFilesList()[i].currentPosition < dxirc::instance()->getDccFilesList()[i].size) { m_table->setItemText(i, 2, utils::instance().getFileSize(dxirc::instance()->getDccFilesList()[i].currentPosition)); m_table->setItemText(i, 3, utils::instance().getPercentPosition(dxirc::instance()->getDccFilesList()[i].size, dxirc::instance()->getDccFilesList()[i].currentPosition)); } else { m_table->setItemText(i, 2, utils::instance().getFileSize(dxirc::instance()->getDccFilesList()[i].size)); m_table->setItemText(i, 3, "100%"); } if(dxirc::instance()->getDccFilesList()[i].currentPosition >= dxirc::instance()->getDccFilesList()[i].size || dxirc::instance()->getDccFilesList()[i].canceled) { m_table->setItemText(i, 4, "--:--"); m_table->setItemText(i, 5, "--:--"); } else { if(!dxirc::instance()->getDccFilesList()[i].currentPosition) { m_table->setItemText(i, 4, "--:--"); m_table->setItemText(i, 5, "--:--"); } else { m_table->setItemText(i, 4, utils::instance().getSpeed(dxirc::instance()->getDccFilesList()[i].speed)); m_table->setItemText(i, 5, utils::instance().getRemaining(dxirc::instance()->getDccFilesList()[i].size-dxirc::instance()->getDccFilesList()[i].currentPosition, dxirc::instance()->getDccFilesList()[i].speed)); } } } if(finished) m_buttonClear->enable(); else m_buttonClear->disable(); if(canceled) m_buttonCanceled->enable(); else m_buttonCanceled->disable(); m_path->setText(dxirc::instance()->getDccFilesList()[m_table->getCurrentRow()].path); m_ip->setText(dxirc::instance()->getDccFilesList()[m_table->getCurrentRow()].ip); m_port->setText(FXStringVal(dxirc::instance()->getDccFilesList()[m_table->getCurrentRow()].port)); m_nick->setText(dxirc::instance()->getDccFilesList()[m_table->getCurrentRow()].nick); m_group->show(); m_contents->recalc(); }