LINUX.ORG.RU

Сообщения spike_by

 

[Chromium] картинки как в опере

Форум — Talks

После некоторого разочарования в FF решил потестить хромиум. Все неплохо, но жалко трафик (есть еще и такие).
В FF был плагин ImgLikeOpera.
Есть ли такое же для Chromium?

 

spike_by
()

[NGSPICE] MOS SOI example (МОП на КНИ)

Форум — Talks

Уважаемый пипл!
На сколько я понимаю, тут находятся не только программисты но и схемотехники.
Вопрос такой: можно ли в NGSPICE промоделировать КНИ КМОП транзистор? Если да, то можно ли пример. Сам что-то не могу разобраться, ибо вроде, в мануале пишут, что модель есьт, но при перечислении аргументов параметра LEVEL указывается, что bsimsoi недоступна. В исходниках есть, но использовать ее пока не получилось.
Есть ли другое открытые SPICE-программы, где можно использовать bsimsoi?
На electronix.ru не отвечают(

spike_by
()

[сново QT] XML

Форум — Development

Уважаемые, вот кусо кода:

QDomElement file = newcurve.toDocument().createElement("file");
            file.setAttribute("num",QString::number(i+1));
            newcurve.appendChild(file);

...................................................

QDomElement cir = file.toDocument().createElement("Cir");
            cir.appendChild(cir.toDocument().createTextNode(QString::fromStdString(cur.inFile.at(i))));            
            file.appendChild(cir);            

qDebug()<<"cir.text() : "<<(cir.text())<<" cur.inFile.at(i): "<<QString::fromStdString(cur.inFile.at(i));

а вот, что получается (см. последние символы строк):
cir.text() :  "power/10yq045/idvg-0.cis"  cur.inFile.at(i):  "power/10yq045/idvg-0.cir"

Кстати, вот, что еще выводится в консоли при закрытии программы:

*** glibc detected *** ./SpiceParamExtractor: double free or corruption (out): 0x0817c020 ***

Почему так? Что с последним символом строк? («power/10yq045/idvg-0.cis» и «power/10yq045/idvg-0.cir»)
Далее,
из исходников собрал KDE 4.5 под Debian Etch, скомпилял исходники и там ничего такого плохого нету.
Все работает, как я хочу и никаких «double free or corruption» нету.
Неужели дело в QT? (OpenSuse 11.2 QT 4.5.3-2.4.2)...

spike_by
()

[QT] изменение значения в ячейке

Форум — Development

Уважаемые форумчане, снова я к вам обращаюсь!
Подскажите, как отловить факт изменения значения ячейки в QTableWidget (и желательно само новое значение). Т.е. когда я ввожу или изменяю значение ячейки таблицы, я нажимая клавишу ввода. Возможно, я невнимательно смотрел, но я не заметил сигнала, который бы генерировался в данном случае. Есть сигнал смены ячейки, но это не очень катит.
Пробовал перехватить нажатие ввода на форме, но если фокус находится на виджете таблицы, то событие не генерируется (не обрабатывается нажатие ввода).
Подскажите как быть?
Спасибо.

 

spike_by
()

[любопытно][жж-зло] А каким Вы клиентом пользуетесь под KDE4?

Форум — Talks

собсно сабж)

spike_by
()

.cshrc добавить файл

Форум — General

Подскажите, plz, как правильно в cshrc подключить настройки из другого файла?
В bashrc это делается с помощью команды source <путь к файлу>.
Спасибо!

spike_by
()

ffmpeg в mencoder

Форум — General

Уважаемые, честно признаюсь: влом ман читать по mencoder'у.
Есть скрипт, которым я конвертирую лоя моей motorola z6 видео (нашел на просторах тырнета). Только ради этого ffmpeg влом. Хочу mencoder. Помогите

#!/bin/sh

VBR=296k          #полнимаем для лучшего видео
ABR=64k           #поднимаем для лучшего звука
FRAME=15          #25 для MPlayer;)
VCODEC=mpeg4    #или mpeg4
ACODEC=libfaac        #в некоторых версиях ffmpeg - libfaac
VIDEOSIZE=320x240 #no comments
CONTAINER=mp4     #можно менять на 3gp

SRC=$1
if [ "$2" == "" ]; then
    DST=$SRC.$CONTAINER
else
    DST=$2
fi


ffmpeg -y -i "$SRC" -s $VIDEOSIZE -aspect 4:3 -vcodec $VCODEC -b $VBR -r $FRAME  -acodec $ACODEC -ac 1 -ab $ABR "$DST" -pass 2 -passlogfile  passlogfile.log

Вопрос ессно в последней строчке.

spike_by
()

Убить поток

Форум — Development

Уважаемый ALL!
Опять взываю к вашей помощи!

Есть класс, унаследованный от QThread.
Данный класс запускается по нажатию на кнопку «Start» в GUI (название кнопки меняется на «Stop» и по нажатию на этот «Stop» все расчеты должны прекратиться).
из метода run вызывается go():

void ExtrThread::go(){
     emit started();

     /*SpiceExtr*/ *spe;
     spe= new SpiceExtr(path);
     connect(spe, SIGNAL(startModelChanging()), this, SLOT(MEdStarted()));
     connect(spe, SIGNAL(stopModelChanging()), this, SLOT(MEdStoped()));

     ........

     spe->MultiRun(dim, x, fx, result);

     emit stopped(cur);
     
}

Ф-я MultiRun - многократно запускает функцию для расчета. Помимо прочего вызываемая из MultiRun ф-я на каждой итерации читает и изменяет текстовый файл:
void SpiceExtr::setSpiceInputValues(string sl){
    emit startModelChanging();
	
..................................

        QFile new_f(QString::fromStdString(filename.c_str()));
        QFile old_f(QString::fromStdString(sl.c_str()));
        if(old_f.open(QIODevice::ReadWrite)){
            if(new_f.open(QIODevice::ReadWrite)){
                QTextStream in_stream( &old_f );
                QTextStream out_stream( &new_f );
                QString line;
                while(!in_stream.atEnd()){
		............................
		}
            }else{
                qDebug()<<"setSpiceInputValues NewFil Error\n";
                exit(0);
            }
        }else{
            qDebug()<<"setSpiceInputValues OldFil Error\n";
            exit(0);
        }
        old_f.close();
        new_f.close();

        if(old_f.remove()){

            if(!new_f.rename(QString::fromStdString(sl.c_str()))){
                qDebug()<<"Error file"<< QString::fromStdString(filename.c_str())<<" renaming failed\n";
                exit(0);
            }else {
            }
        }else{
        }
        emit stopModelChanging();
};
Теперь сам вопрос: Как мне правильно завершить выполнение данного потока. Если он завершается сам по себе, то его повторный вызов отлично работает. Если же его надо убивать (по нажатию на «Stop»), то при следующем вызове нету доступа к файлу.
setSpiceInputValues OldFil Error

Вот так я все убиваю:

void ExtrThread::kill(){

    if(yesToKill) {
        del();
        spe->deleteLater();
        delete spe;

        this->terminate();
        this->exit();
            }
}

А как правильно?
SpiceExtr изначально делался для консольного приложения, поэтому можно наследовать от чего угодно (пока это QObject).

З.Ы За помесь STL и QT прошу не ругать. Устрою субботник и все подправлю).

spike_by
()

разрезать файл

Форум — General

Уважаемые,

Есть исошка на 4 с копейками гигов и есть две флехи: на 2 и на 4 гига. Подскажите чем сожно разбить исошку для транспортировки), и потом ее склеить?

spike_by
()

[plasmoid] Device Manager кодировка

Форум — General

Уважаемые, установлена opensuse 11.2. Изначально стоял виджет «подключаемые устроиства». При его использовании с отображением файлов с русскими именами проблем не было, но надо было руками подключать устройства.
Поставил себе «device manager», который поддерживет автомантирование. Но при его использовании файлы с русскими именами отображаются вопросительными знаками.
Как это исправить? Спасибо.

 

spike_by
()

[QT] QThread

Форум — Development

Снова вопросы...)

Есть GUI и есть функция, которая очень долго считает. Хочу эту функцию запустить в отдельном потоке, чтобы можно было в GUI на кнопочки жмякать. Сделал наследника от QThread

ExtrThread::ExtrThread(curve *c, string p, QPushButton *b): QThread()
{
    cur = c;
    path = p;
    button = b;
    //run();
    moveToThread( this );
}
сделал для него метод run:
void ExtrThread::run(){
    isRuning = true;
    button->setText("Stop");
    qDebug()<<"Thread Start\n";

    core(cur, path);// моя функция, которую хочу запустить параллельно с GUI

    //system("cat /dev/random");

    button->setText("Run");
    qDebug()<<"Thread Stop\n";
    isRuning = false;
    exec();
        emit stopped();
}

так вызываю:
ExtrThread *extr;
.........
extr = new ExtrThread(&cur, "opt.conf", ui->pushButton);
                extr->start();

При запуске ф-я считает, но окошко не реагирует на нажатия кнопок и пр. Если вместо моей ф-и записать system(«cat /dev/random»), то все ОК: окно ресайзится, кнопочки нажимаются, а в консоли бегут кракозябы.
Вопросы:
1. Почему с функцией так не получается?
2. моя ф-я из себя потом вызывает через system(...) внешнюю программу. Как мне можно перехватить вывод в консоль, чтобы его направить, к примеру, в QTextEdit?

 

spike_by
()

[QTCreator] линковка

Форум — Development

Такая трабла: необходимо слинковать мою программу с libf2c. Если линкую с libf2c.so, то получаю ошибку undefined reference to `MAIN__'
Прочитал, что надо линковать с libf2c.a (в таком случае все нормально). Делал программу в Эклипсе. Там можно было задавать пути к линкуемым либам и все нопмально линковалось.

Для того чтобы слинковать я сделал ссылку /usr/local/lib/libf2c.so, которая ссылается на /usr/lib/libf2c.a
Вопрос 1: Как при компиляции линковать c *.a файлами?
Сейчас делаю в QTCreator'е (навешиваю GUI). Нашел, что в нем надо писать

LIBS += -L/usr/local/lib  -lboost_regex -llapack -lgslcblas -llevmar -lnewton -lga -lnewmat -lopt -lf2c
Но при сборке получаю ту же undefined reference to `MAIN__'
Смотрю вывод компиляции и вижу:
 -L/usr/lib -L/usr/local/lib -lboost_regex -llapack -lgslcblas -llevmar -lnewton -lga -lnewmat -lopt -lf2c
Вопрос 2: Как мне поменять в QTCreator порядок путей (чтобы было -L/usr/local/lib -L/usr/lib)?

spike_by
()

[QT] добавить потомка в treeview

Форум — Development

Помогите! Можно ли по средствам QStandardItemModel добавить потомка в дерево.

фрагмент кода:

QModelIndex idx = ui->treeView->selectionModel()->currentIndex();

            //if(DUT->createDevice(&ui->treeView->selectionModel()->currentIndex(), name)){
            if(DUT->createDevice(&idx, name)){
}

далее правлю XML.
bool DUTconfig::createDevice(QModelIndex *idx, QString name){
    //добавляем узел в DUT
    QDomElement dev = getDevice(idx->data().toString());
    //если прибор с таким именем не существует
    if(dev.isNull()){
        QDomElement node = dut.toElement().toDocument().createElement("device");
        node.setAttribute("name", name);
        dut.appendChild(node);
        save();
        //проверим появился ли девайс
        if(!getDevice(name).isNull()){
            return true;
        }else {
            qDebug()<<"Same-thing wrong\n";
        }
    }
    return false;
}

Все хорошо, но можно ли тут же добавить потомка в idx с именем name? На сколько я понимаю, надо использовать idx->model()->insertRow().... Но не догоняю как( именно. Прошу не пинать. Только разбираюсь. Спасибо!

 

spike_by
()

[снова][QT][QTreeView] обновление модели

Форум — Development

Прошу не пинать - я только начал разбираться с это штукой.

Вопрос такой:
Есть XML файл. Создаю переменную типа QStandardItem и для нее строю дерево в QTreeView элементов (с использованием QStandardItemModel), как показано в примере книжки (C++-GUI-Programming-with-Qt-4-1st-ed). Это у меня работает.


    treeModel = new QStandardItemModel(0,1);
    ui->treeView->setModel(treeModel);
...................

    QFile file(fileName);
    //класс для работы с моим XML
    DUT = new DUTconfig(&file);

...................

    reBbuildTree();

.............

bool MainWindow::reBbuildTree(){
    delete item;
    item = new QStandardItem("DUT");

    DUT->getTree(item);
    treeModel->clear();
    treeModel->setItem(0,0, item->takeChild(0,0));

    return true;
}
Возможно коряво, но ....)

Далее хочу добавить новый элемент.

Для этого узнаю выбранный элемент в дереве и добавляю в XML файле в соответствующую позицию. XML файл изменяется и структура итемов тоже.

void MainWindow::newDev(){

 bool ok;
     QString name = QInputDialog::getText(this, tr("Input dialog"),
                                          tr("Enter device name:"), QLineEdit::Normal,
                                          //QDir::home().dirName(), &ok);
                                          QString(""), &ok);

    
    if(name!=""){
        if(ui->treeView->selectionModel()->currentIndex().isValid()){
            
//bool DUTconfig::createDevice(QModelIndex idx, QString name)
//эта ф-я и правит мой XML
if(DUT->createDevice(ui->treeView->selectionModel()->currentIndex(), name)){                
                
                 //В следующей строке заново формирую дерево
                // этот момент мне очень не нравится
                reBbuildTree();


            }
            else QMessageBox::warning(this, "Warning!", "Device is not reated :(...");
        }
         qDebug()<<"newDev ui->treeView->selectionModel()->currentIndex().isValid()\n";
    }
    qDebug()<<"newDev Finish\n";
}

Теперь вопрос: Как мне (можно ли) добавить новый элемент уже в дерево, не переделывая его заново?
как мне правильно использовать void QStandardItemModel::itemChanged ( QStandardItem * item ) (на сколько я понимаю он для этого и предназначен)?
Где мне подавать этот сигнал или он сам генерится? И как потом его обрабатывать?
Не совсем ясен принцип обработки такого действия.
еще раз прошу не пинать)
Спасибо!

 

spike_by
()

[QT] контекстное меню и пр.

Форум — Development

Уважаемый ALL! Помогите новичку в QT!

Есть Qtreview с деревом. При нажатии на конкретную ветку выпадает контекстное меню. Это я сделал.
Но! По нажатию на один из пунктов меню я должен добавить нового потомка к дереву. Через Qpoint получаю позицию где надо отобразить само меню а также из Qpoint получаю QmodelIndex.
Вопрос в том как мне передать этот индекс в функцию добавления потомка, если у QAction в меню есть слот activaded, но нету слота, который передает Qpoint или A QmodelIndex?
Как это реализовать?


ui_mainwindow.h:

QObject::connect(treeView, SIGNAL(customContextMenuRequested(QPoint)), MainWindow, SLOT(showPopup(QPoint)));

mainwindow.cpp:
void MainWindow::showPopup(const QPoint & iPoint) 
{ 
  QTreeWidgetItem * item = 0 ; 
  //item = ui->treeView->itemAt(iPosition) ; 
  if ( 0 == item ) 
  { 
    //QMessageBox::information(this, "Popup", "No item selected" ) ; 
    // Build your menu 
    QMenu menu(ui->treeView); 
    if(isDUT(ui->treeView->indexAt(iPoint))){ 
        menu.addAction(ui->actionNew_device);// - а что дальше - не знаю 
        connect(this, SIGNAL(popupActivated(QModelIndex)), this, SLOT(newDev(QModelIndex ))); 
        //emit popupActivated(ui->treeView->indexAt(iPoint)); // если поместить сюда, то вызывается при выпадении списка, а не при нажатии на меню 
    } 
    if(isDevice(ui->treeView->indexAt(iPoint))){ 
        menu.addAction(ui->actionRemove_device); 
        menu.addAction(ui->actionNew_curve); 
    } 
    if(isCurve(ui->treeView->indexAt(iPoint))) menu.addAction(ui->actionRemove_Curve); 
 
     qDebug()<<":popuprightclickMenu"; //just to see if activated 
    menu.exec(ui->treeView->mapToGlobal(iPoint)); 
 
 
  } 

 

spike_by
()

[QT] string и QString

Форум — Development

Уважаемый ALL! Не могу разобраться! Вот структура:

#ifndef GLOBALS_H
#define GLOBALS_H

#include <string>
#include <vector>
#include <QString>
#include "globals.h"

using namespace std;


struct curve{
        vector<string>  inFile;
        vector<string>  outFile;
        vector<string>  expFile;
        vector<string>  spiceParam;
        vector<string>  spiceMin;
        vector<string>  spiceInit;
        vector<string>  spiceMax;
        string AlgOpt;
    };

#endif // GLOBALS_H

В другом файле: тут я в строковые поля передаюения и потом возвращаю структуру.

curve res;

..........

    QDomElement inf = child.firstChildElement("file");
    while(!inf.isNull()){

        res.inFile.push_back(inf.firstChildElement("Cir").text().toStdString());
        res.outFile.push_back(inf.firstChildElement("Out").text().toStdString());
        res.expFile.push_back(inf.firstChildElement("Exp").text().toStdString());

        inf = inf.nextSiblingElement("file");
    }

В другом файле: тут из уже полученной структуры пытаюсь записать в поля таблицы значения

//теперь заполняем таблицы полученной инфой
            ui->filestableWidget->setRowCount(0);
            for(i=0;i<res.expFile.size();i++){
                ui->filestableWidget->setRowCount(ui->filestableWidget->rowCount()+1);

                ui->filestableWidget->setItem(ui->filestableWidget->rowCount()-1,0, new QTableWidgetItem("TTTTTT"));
                ui->filestableWidget->setItem(ui->filestableWidget->rowCount()-1,0, new QTableWidgetItem(new QString(res.inFile.at(i))));
                ui->filestableWidget->setItem(ui->filestableWidget->rowCount()-1,1, new QTableWidgetItem(new QString (res.outFile.at(i))));
                ui->filestableWidget->setItem(ui->filestableWidget->rowCount()-1,2, new QTableWidgetItem(new QString (res.expFile.at(i))));
            }
            ui->modelparamtableWidget->setRowCount(0)

... Получаю такую ошибку:

.../mainwindow.cpp:146: error: no matching function for call to ‘QString::QString(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)’

Подскажите, где я неправ? Как надо? P.S. Хочу использовать простую строку, так как эта же инфа передается в другие функции, где QT использовать не надо.

 

spike_by
()

mplayer и mp3

Форум — Talks

Уважаемый All!

Возник дурацкий вопрос: Вот есть замечательный mplayer, который показывает кино, а есть ли программы на его основе (типа smplayer, kmplayer...) которые позволяют слушать музыку (типа винампа, xmms не предлагать)?

spike_by
()

Mandriva vs OpenSUSE

Форум — Talks

Не ради холивара!

Я давно юзаю сусю (еще с 9тки), но тут поставил мандриву на виртуалку - так, посмотреть. Первое впечатление положительное. Но влом переставлять, систему туда - обратно.

Хотел бы услышать мнениее сообщества, за что Вы используете первое или второе на домашнем десктопе?

spike_by
()

[:|||||:] Linux в кино

Форум — Talks

Тут такой воарос заинтересовал: как часто можно встретить кадры в фильмах, где показан монитор с линуксом. За боянистость не пинайте, а лечше ссылочки подкиньте, если есть.

Я имею ввиду именно художественные фильмы, а не доки типа RevolutionOS))

spike_by
()

[Java] запуск внешней программы

Форум — Development

Уважаемые форумчане! Написал свою программу (С/С++), которая в своих итерационных расчетах использует внешнюю программу ngspice. Так как расчет итерационный, то ngspice вызывается огромное количество раз. При запуске моей проги из консоли — все ОК, т. е. все что мне надо и сколько надо (по времени и количеству вызовов внешней программы).

Так запускаю NGSPICE в C++:

string exec=spice_path+" -b "+tmpspicein+" > "+tmpspiceout; sys_res=system(exec.c_str());

Далее. Для этой моей программки написал GUI на Java, где теперь моя консольная программа вызывается как внешняя:

Так запускаю свою прогу из Java:

proc = Runtime.getRuntime().exec("./SpiceExtr"+" "+Alg);

Проблема заключается в том, что после некоторого количества вызовов программы ngspice моя консольная программы доходит до строчки sys_res=system(exec.c_str()); и дальше просто перестает работать. Процесс (ngspice) есть, но он не считает (типа висит). Если запустить с теми же наптройками мою программу из консоли, то все работает, а если из GUI — то спустя какое-то количество вызовов программы ngspice — подвисает.

Резюме (для обобщения)

1______________2_________________________3

мой GUI → моя консольная программа → ngspice.

2→3 — OK

1→2→3 — не ОК.

Причем, зависание происходит примерно после тысячного запуска программы ngspice.

Может в java какие то ограничения есть для запуска внешних программ? Там, по памяти или что еще? При подвисании система работает нормально, а процесс ngspice потребряет 0% CPU.

Куда копать?

 

spike_by
()

RSS подписка на новые темы