Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обновления в форуме
Форум на CrossPlatform.RU > Административный > Обратная связь
Страницы: 1, 2, 3
Багира
Обновились до 2.3.5.
Что нового?
Новый профиль, новая страничка "О себе" в профиле - там можно рассказать о себе, показать фото или резюме там оставить. ;) Соответственно, в настройки добавились пункты для редактирования оной информации и нового профиля. Пока все, пробуйте, экспериментируйте. ;) Если еще чего новое обнаружите - пишите тут, самой интересно. ;)

Да, и баги, баги...

Цитата(ViGOur @ 21.4.2008, 11:48) *
Значит получается такой список:
Цитата
* Python
* Perl
* PHP
* XML
* HTML
* CSS
* Java
* C++
* SQL
* Bash
Оставил PHP и Java так как они вроде тоже по нашей тематике. smile.gif
ОК. Ограничила до этого списка. :)

Да! Если у кого-то что-то не работает - сначала попробуйте обновить страницу, не помогло - обновляйтесь через ctrl+f5, снова не помогло - чистите кэш/сносите_местные_куки, если и это не поможет - жалуйтесь. Патаму што ваапче-то все работает. Я проверила. :)
Litkevich Yuriy
насчет подсветки, XML и HTML либо не работают, либо я не понял как это задать:
<ul>
<li>Убедитесь, что вы используете shared Qt библиотеку; вы не может использовать плагины в статической сборке.</li>
<li>Убедитесь, что плагин в правильной директории. Для этого можно использовать <a href="qcoreapplication.html#libraryPaths">QApplication::libraryPaths</a>(), чтобы определить, где Qt ищет плагины.</li>
<li>Убедитесь, что клиентские библиотеки DBMS доступны. Под Unix, выполните команду  <tt>ldd</tt> и введите имя плагина в качестве параметра, например: <tt>ldd libqsqlmysql.so</tt>. Вы получите предупреждение, если какая-то из клиентских библиотек не найдена. Под Windows, вы можете использовать Visual Studio dependency walker.</li>
<li>Скомпилируйте Qt с установленным <tt>QT_DEBUG_COMPONENT</tt>, чтобы получить более подробную отладочную информацию, когда загружаются плагины.</li>
</ul>
Багира
Litkevich Yuriy, видимо, в css-ке я что-то упустила. Проверю, спасибо.
Багира
Ну, что ж, товарищи дорогие. :) Таки, да, у нас теперь работают "репутации" и "благодарности". С чем нас и поздравляю. ;)
Litkevich Yuriy
Спасибо!
Red Devil
Наверное ограничение стоит сделать - чтобы юзер не мог несколько раз поднять/уменьшить репу для одного и того же другого пользователя. Обычно делают 3 дня или неделю.
Багира
Red Devil, покуда стоит 1 день. Если прям приспичит - увеличу. ;)
void*
RedВ Devil, не согласен. Не раз уже у меня например были на других форумах ситуации, когда хотелось за несколько разных полезных советов поставить за каждый спасибо(или плюс) участнику, но из-за этих тупых ограничений не получалось
AD
Цитата(Red Devil @ 26.7.2008, 21:06) *
Наверное ограничение стоит сделать - чтобы юзер не мог несколько раз поднять/уменьшить репу для одного и того же другого пользователя. Обычно делают 3 дня или неделю.

Red Devil, тоже не согласен. Я случайно тебе увеличил дважды за один пост! Считай, что это за разные посты! ;)
Litkevich Yuriy
ну если и вводить, то ограничения на кокретный пост, тык один раз и все, потом только в других постах и без ограничения по времени
void*
LitkevichВ Yuriy, а вот с этим абсолютно согласен :)
Litkevich Yuriy
Цитата(void* @ 27.7.2008, 0:48) *
LitkevichВ Yuriy,

а что эт ты меня так пишешь?
обижусь, отмодерю :)
void*
это у меня Опера так коряво работает с некоторыми буквами, а писать самому впадлу :)
Багира
Цитата(Litkevich Yuriy @ 26.7.2008, 21:22) *
ну если и вводить, то ограничения на кокретный пост, тык один раз и все, потом только в других постах и без ограничения по времени
Это ограничение установлено. Сразу.
Багира
Желательно прочесть всем. ;)

Чтобы не было вопросов "Куда делась картинка из моей подписи":
В ваши настройки отображения форума добавлен новый пункт - "Отображать картинки в подписях пользователей в темах - Да/Нет".
По умолчанию стоИт "нет". Хотите снова видеть картинки в подписях - зайдите с свои настройки (для тех, кто потерялся - вам сюда: http://www.forum.crossplatform.ru/index.ph...rCP&CODE=04 ;)) и смените эту опцию на "Да".

Там же можно отменить оповещение об изменениях в "репутации".
Багира
Ошибку цитирования ников на кирилице в "Опере-9.5" - исправила. :) Проверяйте.
У кого не сработает сразу - чистите кэш браузера. ;)
Litkevich Yuriy
Багира, работает в 9.50b
void*
Багира, в 9.51 тоже все отлично
Багира
Изменила цитирование смайлов. Теперь они будут цитироваться кодом, а не именем картинки. :)
Одно НО: это работает только в новых сообщениях!!! В тех, что были написаны до фикса - работать НЕ будет. :( Если только кто-нить из нас не возьмется их все отредактировать... а это, сами понимаете, анриал.

Так. Ну, а 9.52 есть у кого? ;)
Шучу. На самом деле, если в 9.5 работает, значит и во всей линейке работать будет.

На сегодняшний день с цитированием только одна известная проблема - оно не работает в браузере Apple-Safari. Но с ним как себя вести - я пока не в курсе дела. :(
Багира
Новый тег [ expand] - свернет часть вашего длинного сообщения. Кнопка "Ex" - рядом с кнопкой "Код". :)

В ближайшее время постараюсь сделать подобную штуку для "Кода с подсветкой". :)
Litkevich Yuriy
ща заценим:
---
кнопка не нажимается, т.е. ничего не происходит, опять кэш чистить?
Багира
Litkevich Yuriy, угу
Litkevich Yuriy
Ага, после прочистки Кэша:
Раскрывающийся текст

/*!
* \file mainwindow.cpp
* \brief Реализация класса "Главное окно программы".
*/

#include <QtGui>

#include "mainwindow.h"
#include "mdichild.h"
#include "appearancedialog.h"
#include "syssettings.h"



MainWindow::MainWindow()
{
mdiArea = new QMdiArea;
setCentralWidget(mdiArea);
connect(mdiArea, SIGNAL(subWindowActivated(QMdiSubWindow *)), this, SLOT(updateMenus()));

windowMapper = new QSignalMapper(this);
connect(windowMapper, SIGNAL(mapped(QWidget *)), this, SLOT(setActiveSubWindow(QWidget *)));

createActions(); // Создаем действия
createMenus(); // Создаем меню
createToolBars(); // Создаем панель инструментов
createStatusBar(); // Создаем панель статуса
readWindowSettings();// Читаем настройки окна
// Создаем экземпляр класса сесии
auth = Session::InitInstance();


connect(this, SIGNAL(SigShow()), SLOT(SlotOnShow()));


}

MainWindow::~MainWindow()
{
auth->FreeInstance();
}

bool MainWindow::event(QEvent *p_event)
{
if( p_event->type() == QEvent::ShowToParent)
emit SigShow();

return QWidget::event(p_event);
}

/*=====================================================================
Постинициализация
===================================================================*/
void MainWindow::SlotOnShow()
{
QString errmsg;
QString title = tr("Ошибка программы");

qDebug() << "SlotOnShow: " << QDateTime::currentDateTime() << "\n\r";

// Вход от имени анонимного пользователя
auth->LoginAnonymous();

// Обновляем меню
updateMenus();

// Проверяем все ли хорошо с настройками
if (!auth->isGood(errmsg))
{
QMessageBox::critical(this, title, tr("Ошибка настроек, обратитесь к специалисту. Сообщение: \n\r") + errmsg);
return;
}

// Здесь проверяется и устанавливается соединение с БД.
bool ok;
QSqlDatabase app_db = QSqlDatabase::database("appdb");
QSqlQuery query(app_db);
QString querystr;
QString qerr;

QString db_driver;
QString db_name;
QString db_user_name;
QString db_user_paswd;


querystr="SELECT F_VALUE FROM APPSETTINGS \
WHERE ((F_TYPE='db_driver') OR (F_TYPE='db_name') OR \
(F_TYPE='db_user_name') OR (F_TYPE='db_user_paswd')) \
ORDER BY F_TYPE ASC";
ok = query.exec(querystr);
qDebug() << "select DB settings - " << ok << "\n\r";

if (!ok)
{
qerr = query.lastError().text();
QMessageBox::critical(0, title,
tr("Невозможно прочитать настройки БД.\n\r Причина: ")+qerr,
QMessageBox::ok);
}

query.first();
if (!query.isValid())
{
qerr = query.lastError().text();
QMessageBox::critical(0, title,
tr("Невозможно прочитать настройки БД.\n\r Причина: ")+qerr,
QMessageBox::ok);
}

db_driver = query.value(0).toString();
query.next();
db_name = query.value(0).toString();
query.next();
db_user_name = query.value(0).toString();
query.next();
db_user_paswd = query.value(0).toString();

db_main = QSqlDatabase::addDatabase(db_driver,"maindb");
db_main.setDatabaseName(db_name);
db_main.setUserName(db_user_name);
db_main.setPassword(db_user_paswd);
qDebug() << "db_main.open: " << QDateTime::currentDateTime() << "\n\r";
ok = db_main.open();

if (!ok)
{
qerr = db_main.lastError().text();
QMessageBox::critical(0, title,
QObject::tr("Невозможно установить соединение c БД.\n\r")+qerr,
QMessageBox::ok);
}
qDebug() << "db_main.open: " << QDateTime::currentDateTime() << "\n\r";
qDebug() << db_main << "\n\r";
}


/*=====================================================================
Создание действий
===================================================================*/
void MainWindow::createActions()
{

// Меню "Файл"
menuFile = menuBar()->addMenu(tr("&Файл"));

newAct = new QAction(QIcon(":/images/new.png"), tr("&Новый"), this);
newAct->setShortcut(tr("Ctrl+N"));
newAct->setStatusTip(tr("Создать новый файл"));
connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
menuFile->addAction(newAct);

openAct = new QAction(QIcon(":/images/open.png"), tr("&Открыть..."), this);
openAct->setShortcut(tr("Ctrl+O"));
openAct->setStatusTip(tr("Открыть существующий файл"));
connect(openAct, SIGNAL(triggered()), this, SLOT(open()));
menuFile->addAction(openAct);

saveAct = new QAction(QIcon(":/images/save.png"), tr("&Сохранить"), this);
saveAct->setShortcut(tr("Ctrl+S"));
saveAct->setStatusTip(tr("Сохранить документ на диск"));
connect(saveAct, SIGNAL(triggered()), this, SLOT(save()));
menuFile->addAction(saveAct);

saveAsAct = new QAction(tr("Сохранить &как..."), this);
saveAsAct->setStatusTip(tr("Сохранить документ под другим именем"));
connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs()));
menuFile->addAction(saveAsAct);

menuFile->addSeparator();

exitAct = new QAction(tr("В&ыход"), this);
exitAct->setShortcut(tr("Ctrl+Q"));
exitAct->setStatusTip(tr("Выход из программы"));
connect(exitAct, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()));
menuFile->addAction(exitAct);

// Меню "Правка"
menuEdit = menuBar()->addMenu(tr("&Правка"));

cutAct = new QAction(QIcon(":/images/cut.png"), tr("&Вырезать"), this);
cutAct->setShortcut(tr("Ctrl+X"));
cutAct->setStatusTip(tr("Cut the current selection's contents to the "
"clipboard"));
connect(cutAct, SIGNAL(triggered()), this, SLOT(cut()));
menuEdit->addAction(cutAct);

copyAct = new QAction(QIcon(":/images/copy.png"), tr("&Копировать"), this);
copyAct->setShortcut(tr("Ctrl+C"));
copyAct->setStatusTip(tr("Copy the current selection's contents to the "
"clipboard"));
connect(copyAct, SIGNAL(triggered()), this, SLOT(copy()));
menuEdit->addAction(copyAct);

pasteAct = new QAction(QIcon(":/images/paste.png"), tr("Вст&авить"), this);
pasteAct->setShortcut(tr("Ctrl+V"));
pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current "
"selection"));
connect(pasteAct, SIGNAL(triggered()), this, SLOT(paste()));
menuEdit->addAction(pasteAct);

// Меню "Вид"
//menuView = menuBar()->addMenu(tr("&Вид"));

// Меню Отчеты
//actLogin = new QAction(tr("Войти..."), this);
//actLogin->setStatusTip(tr("Войти в систему с определенным именем"));
//connect(actLogin, SIGNAL(triggered()), this, SLOT(login()));

// Меню "Оператор"
menuOperator = menuBar()->addMenu(tr("Опе&ратор"));

actLogin = new QAction(tr("Войти..."), this);
actLogin->setStatusTip(tr("Войти в систему с определенным именем"));
connect(actLogin, SIGNAL(triggered()), this, SLOT(login()));
menuOperator->addAction(actLogin);

actLogout = new QAction(tr("Выйти"), this);
actLogout->setStatusTip(tr("Выйти из системы"));
connect(actLogout, SIGNAL(triggered()), this, SLOT(logout()));
menuOperator->addAction(actLogout);

// Меню "Настройка"
menuSetting = menuBar()->addMenu(tr("&Настройка"));

actSettings = new QAction(tr("Программа..."), this);
actSettings->setStatusTip(tr("Настройки ПО"));
connect(actSettings, SIGNAL(triggered()), this, SLOT(Settings()));
menuSetting->addAction(actSettings);

actAppear = new QAction(tr("Оформление..."), this);
actAppear->setStatusTip(tr("Настройки внешнего вида"));
connect(actAppear, SIGNAL(triggered()), this, SLOT(SlotAppearance()));
menuSetting->addAction(actAppear);

actCalibrate = new QAction(tr("Коррекция Т.У. ..."), this);
actCalibrate->setStatusTip(tr("Коррекция показаний эл. счетчиков Т.У."));
connect(actCalibrate, SIGNAL(triggered()), this, SLOT(SlotCalibrate()));
menuSetting->addAction(actCalibrate);

actPoint = new QAction(tr("Настройка Т.У. ..."), this);
actPoint->setStatusTip(tr("Настройка точек учета"));
connect(actPoint, SIGNAL(triggered()), this, SLOT(SlotPoint()));
menuSetting->addAction(actPoint);

// Меню "Окно"
menuWindow = menuBar()->addMenu(tr("&Окно"));

closeAct = new QAction(tr("&Закрыть"), this);
closeAct->setShortcut(tr("Ctrl+F4"));
closeAct->setStatusTip(tr("Закрыть активное окно"));
connect(closeAct, SIGNAL(triggered()),
mdiArea, SLOT(closeActiveSubWindow()));

closeAllAct = new QAction(tr("Закрыть все"), this);
closeAllAct->setStatusTip(tr("Закрыть все окна"));
connect(closeAllAct, SIGNAL(triggered()),
mdiArea, SLOT(closeAllSubWindows()));

tileAct = new QAction(tr("&Мозаика"), this);
tileAct->setStatusTip(tr("Tile the windows"));
connect(tileAct, SIGNAL(triggered()), mdiArea, SLOT(tileSubWindows()));

cascadeAct = new QAction(tr("&Каскад"), this);
cascadeAct->setStatusTip(tr("Cascade the windows"));
connect(cascadeAct, SIGNAL(triggered()), mdiArea, SLOT(cascadeSubWindows()));

nextAct = new QAction(tr("Сл&едующее"), this);
nextAct->setStatusTip(tr("Move the focus to the next window"));
connect(nextAct, SIGNAL(triggered()),
mdiArea, SLOT(activateNextSubWindow()));

previousAct = new QAction(tr("П&редыдущее"), this);
previousAct->setStatusTip(tr("Move the focus to the previous "
"window"));
connect(previousAct, SIGNAL(triggered()),
mdiArea, SLOT(activatePreviousSubWindow()));

separatorAct = new QAction(this);
separatorAct->setSeparator(true);

updateWindowMenu();
connect(menuWindow, SIGNAL(aboutToShow()), this, SLOT(updateWindowMenu()));

menuBar()->addSeparator();

// Меню "Справка"
menuHelp = menuBar()->addMenu(tr("&Справка"));

aboutAct = new QAction(tr("&О программе"), this);
aboutAct->setStatusTip(tr("Show the application's About box"));
connect(aboutAct, SIGNAL(triggered()), this, SLOT(about()));
menuHelp->addAction(aboutAct);

aboutQtAct = new QAction(tr("О библиотеке &Qt"), this);
aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));
connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
menuHelp->addAction(aboutQtAct);


}

/*=====================================================================
Создание Меню
===================================================================*/
void MainWindow::createMenus()
{

}

/*=====================================================================
Создание панели инструментов
===================================================================*/
void MainWindow::createToolBars()
{
// Панель инструментов "Файл"
ToolBarFile = addToolBar(tr("Файл"));
ToolBarFile->addAction(newAct);
ToolBarFile->addAction(openAct);
ToolBarFile->addAction(saveAct);

// Панель инструментов "Правка"
ToolBarEdit = addToolBar(tr("Правка"));
ToolBarEdit->addAction(cutAct);
ToolBarEdit->addAction(copyAct);
ToolBarEdit->addAction(pasteAct);
}

/*=====================================================================
Создание строки статуса
===================================================================*/
void MainWindow::createStatusBar()
{
statusBar()->showMessage(tr("Готов"));
}

/*=====================================================================
Обновление заголовка
===================================================================*/
void MainWindow::updateTitle()
{
setWindowTitle(tr("ЭСТОП АСУ @ %1").arg(auth->GetUserString()));
}


/*===================================================================
Обновление меню
=====================================================================*/
void MainWindow::updateMenus()
{
bool hasMdiChild;
bool hasSelection;

hasMdiChild = (activeMdiChild() != 0);
hasSelection = (activeMdiChild() && activeMdiChild()->textCursor().hasSelection());

// Запрещаем ответственные пункты
actSettings->setEnabled(false);
actPoint->setEnabled(false);
actCalibrate->setEnabled(false);

qDebug() << "MainWindow::updateMenus GetGroupID()= " << auth->GetGroupID() << "\n\r";

switch(auth->GetGroupID())
{
case Session::GID_ROOT:
{

}
case Session::GID_ADMIN:
{
// Делаем доступным для админа пункты в меню "Настройка"
actSettings->setEnabled(true);
actPoint->setEnabled(true);
}
case Session::GID_USER:
{
// Делаем доступным для пользователя пункты в меню "Настройка"
actCalibrate->setEnabled(true);
}
default:
{
// Меню "Файл"
saveAct->setEnabled(hasMdiChild);
saveAsAct->setEnabled(hasMdiChild);
// Меню "Правка"
pasteAct->setEnabled(hasMdiChild);
cutAct->setEnabled(hasSelection);
copyAct->setEnabled(hasSelection);
// Меню "Окно"
closeAct->setEnabled(hasMdiChild);
closeAllAct->setEnabled(hasMdiChild);
tileAct->setEnabled(hasMdiChild);
cascadeAct->setEnabled(hasMdiChild);
nextAct->setEnabled(hasMdiChild);
previousAct->setEnabled(hasMdiChild);
separatorAct->setVisible(hasMdiChild);
}
}

updateTitle(); // Обновляем заголовок главного окна
}


/*===================================================================
Обработка события closeEvent
=====================================================================*/
void MainWindow::closeEvent(QCloseEvent *p_event)
{
mdiArea->closeAllSubWindows();
if (activeMdiChild())
{
p_event->ignore();
//QMessageBox::about(this, tr("MainWindow::closeEvent"), tr("Закройте все окна"));
}
else
{
//QMessageBox::about(this, tr("MainWindow::closeEvent"), tr("activeMdiChild()==false"));
writeWindowSettings();
p_event->accept();
}
}




/*===================================================================
Обновление меню "Окно"
=====================================================================*/
void MainWindow::updateWindowMenu()
{
menuWindow->clear();
menuWindow->addAction(closeAct);
menuWindow->addAction(closeAllAct);
menuWindow->addSeparator();
menuWindow->addAction(tileAct);
menuWindow->addAction(cascadeAct);
menuWindow->addSeparator();
menuWindow->addAction(nextAct);
menuWindow->addAction(previousAct);
menuWindow->addAction(separatorAct);

QList<QMdiSubWindow *> windows = mdiArea->subWindowList();
separatorAct->setVisible(!windows.isEmpty());

for (int i = 0; i < windows.size(); ++i) {
MdiChild *child = qobject_cast<MdiChild *>(windows.at(i)->widget());

QString text;
if (i < 9)
{
text = tr("&%1 %2").arg(i + 1)
.arg(child->userFriendlyCurrentFile());
}
else
{
text = tr("%1 %2").arg(i + 1)
.arg(child->userFriendlyCurrentFile());
}
QAction *action = menuWindow->addAction(text);
action->setCheckable(true);
action->setChecked(child == activeMdiChild());
connect(action, SIGNAL(triggered()), windowMapper, SLOT(map()));
windowMapper->setMapping(action, windows.at(i));
}
}


/*=====================================================================
Создание дочернего окна
===================================================================*/
MdiChild *MainWindow::createMdiChild()
{
MdiChild *child = new MdiChild;
mdiArea->addSubWindow(child);

connect(child, SIGNAL(copyAvailable(bool)), cutAct, SLOT(setEnabled(bool)));
connect(child, SIGNAL(copyAvailable(bool)), copyAct, SLOT(setEnabled(bool)));

return child;
}




/*=====================================================================
Обработка действий
===================================================================*/

/* Файл->Новый */
void MainWindow::newFile()
{
MdiChild *child = createMdiChild();
child->newFile();
child->show();
}
/* Файл->Открыть */
void MainWindow::open()
{
QString fileName = QFileDialog::getOpenFileName(this);
if (!fileName.isEmpty()) {
QMdiSubWindow *existing = findMdiChild(fileName);
if (existing) {
mdiArea->setActiveSubWindow(existing);
return;
}

MdiChild *child = createMdiChild();
if (child->loadFile(fileName)) {
statusBar()->showMessage(tr("Файл загружен"), 2000);
child->show();
} else {
child->close();
}
}
}
/* Файл->Сохранить */
void MainWindow::save()
{
if (activeMdiChild() && activeMdiChild()->save())
statusBar()->showMessage(tr("Файл сохранен"), 2000);
}
/* Файл->Сохранить как */
void MainWindow::saveAs()
{
if (activeMdiChild() && activeMdiChild()->saveAs())
statusBar()->showMessage(tr("Файл сохранен"), 2000);
}

/* Правка->Вырезать */
void MainWindow::cut()
{
if (activeMdiChild())
activeMdiChild()->cut();
}
/* Правка->Копировать */
void MainWindow::copy()
{
if (activeMdiChild())
activeMdiChild()->copy();
}
/* Правка->Вставить */
void MainWindow::paste()
{
if (activeMdiChild())
activeMdiChild()->paste();
}

/* Оператор->Вход */
void MainWindow::login()
{
bool tf=false;

qDebug() << "================ MAIN WINDOW LOGIN ================" << "\n\r";
if (auth->ShowLoginDialog())
{
if (auth->GetGroupID()!=auth->GID_ANONYMOUS)
tf=false;
else
tf=true;
actLogin->setEnabled(tf);
updateMenus();
}
}

/* Оператор->Выход */
void MainWindow::logout()
{
auth->LoginAnonymous(); // Вход от имени анонимного пользователя
actLogin->setEnabled(true);
updateMenus();

}

/* Настройка->Настройка */
void MainWindow::Settings()
{

auth->ShowSettingDialog();
}

/* Настройка->Оформление */
void MainWindow::SlotAppearance()
{
AppearanceDialog dlg;
QSqlDatabase app_db = QSqlDatabase::database("appdb");

bool ok=false;
QSqlQuery query(app_db);
QString querystr;
QString qerr;

if (dlg.exec() == QDialog::Accepted)
{
// Заполняем таблицу прочих настроек
querystr="UPDATE APPSETTINGS SET F_VALUE=:value WHERE (F_TYPE=:type)";
ok = query.prepare(querystr);
if (!ok)
{
QString qerr = query.lastError().text();
QMessageBox::critical(0, QObject::tr("Ошибка"),
QObject::tr("Невозможно сохранить настройки.\n\r")+qerr,
QMessageBox::ok);
return;
}
query.bindValue(":type", "style");
query.bindValue(":value", dlg.box_style->currentText());
ok = query.exec();
if (!ok)
{
QString qerr = query.lastError().text();
QMessageBox::critical(0, QObject::tr("Ошибка"),
QObject::tr("Невозможно сохранить настройки.\n\r")+qerr,
QMessageBox::ok);
}
}

}

/* Настройка->Корекция Т.У. */
void MainWindow::SlotCalibrate()
{

//auth->ShowSettingDialog();
}

/* Настройка->Настойка Т.У. */
void MainWindow::SlotPoint()
{
SysSettings dlg(db_main, this);

dlg.exec();
}


/* Справка->О программе */
void MainWindow::about()
{
QMessageBox::about(this, tr("О программе"),
tr("Программа для ЭСТОП"));
}

/*=====================================================================
Чтение настроек окна
===================================================================*/
void MainWindow::readWindowSettings()
{
QSettings settings;
bool wstate = settings.value("winmax", false).toBool();
QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
QSize size = settings.value("size", QSize(400, 400)).toSize();

move(pos);
resize(size);
if (wstate)
showMaximized();
}
/*=====================================================================
Сохранение настроек окна
===================================================================*/
void MainWindow::writeWindowSettings()
{
QSettings settings;
settings.setValue("winmax",isMaximized());
settings.setValue("pos", pos());
settings.setValue("size", size()); // здесь касяк, надо нетолько размер запоминать но и состояние развернуто или нет
}
/*=====================================================================
Чтение настроек
===================================================================*/
void MainWindow::readSettings()
{
QSettings settings;
QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
QSize size = settings.value("size", QSize(400, 400)).toSize();
move(pos);
resize(size);
}
/*=====================================================================
Сохранение настроек
===================================================================*/
void MainWindow::writeSettings()
{
QSettings settings;
settings.setValue("pos", pos());
settings.setValue("size", size()); // здесь касяк, надо нетолько размер запоминать но и состояние развернуто или нет
}

/*=====================================================================
Чтение основных настроек и их проверка
===================================================================*/
void MainWindow::mainSettings()
{

}

/*=====================================================================

===================================================================*/
MdiChild *MainWindow::activeMdiChild()
{
if (QMdiSubWindow *activeSubWindow = mdiArea->activeSubWindow())
return qobject_cast<MdiChild *>(activeSubWindow->widget());
return 0;
}

QMdiSubWindow *MainWindow::findMdiChild(const QString &fileName)
{
QString canonicalFilePath = QFileInfo(fileName).canonicalFilePath();

foreach (QMdiSubWindow *window, mdiArea->subWindowList()) {
MdiChild *mdiChild = qobject_cast<MdiChild *>(window->widget());
if (mdiChild->currentFile() == canonicalFilePath)
return window;
}
return 0;
}

void MainWindow::setActiveSubWindow(QWidget *window)
{
if (!window)
return;
mdiArea->setActiveSubWindow(qobject_cast<QMdiSubWindow *>(window));
}



надо что-то делать со смйлами :( они там появились, в коде
Багира
Litkevich Yuriy, что должно было быть вместо этих смайлов?
Litkevich Yuriy
QMessageBox::ok);
QMessageBox::Ok);
Багира
Все, нашла. Изменила вызов этому смайлу. :)
Litkevich Yuriy
надо смайловый движек доработать так, чтобы за смайл считалась запись отделенная с двух сторон пробелами от остального текста, иначе тебе возни сними будет много при всякой новой фиче добавленной в форум
Багира
Litkevich Yuriy, все намного проще - меняю вызов смайла, и все дела. :)
AD
int hel = 1;
char c = 'k';
int hel = 1;
char c = 'k';
int hel = 1;
char c = 'k';
int hel = 1;
char c = 'k';
int hel = 1;
char c = 'k';
// Îáðàáîòêà îäíîé ñòðîêè ôàéëà (îäíîãî áëîêà)
void LogReader::ParseBlock()
{
    Event    event;
    GPOINT    gp(GEO_INVALID, GEO_INVALID);
    m_strDate = "00/00/00";
    m_strTime = "00:00:00";
    bool    bBadCoor = false, bBadWSpd = false, bBadHgps = false, bBreak = false;
    bool    bBadCoor_dop = false;

    GetPrivateProfileString("Settings", "Unit", "TTA12", unit, MAXPATH, gl_strIniFile.c_str());
    GPOINT gp1(GEO_INVALID, GEO_INVALID);
    int uti = 0;

    for (unsigned i = 0; i < m_vBlock.size(); i++)
    {
        DWord        var = m_vBlock[i];
        unsigned    adr = var % 256;
        switch (adr)
        {
            case 0002:
                event.i002 = GET_MS( var);
                event.board = temp_.Get( (var & 0x3F8000) << 7);    // ñ 16 ïî 22 áèòû (ñ 1)
                if (m_vTemperatureData.empty() || m_vTemperatureData.back() != var)    {
                    m_vTemperatureData.push_back( var);
                }
                break;
            case 0004:
                // ïðè÷èíà ïåðåçàãðóçêè - ñ÷èòàåì çà ñîáûòèå
                event.codes.push_back( "!_RESET_!");
                event.modes.push_back( "");
                event.actives.push_back( true);
                var = (var >> 10) & 0x1F;
                if (var == 0)
                    event.codes.back() += " PON";                    //_power_on
                else
                {
                    if (var &  1)    event.codes.back() += " R|PD";    //_ext_reset
                    if (var &  2)    event.codes.back() += " WS";    //_wdt_sh4_start
                    if (var &  4)    event.codes.back() += " WW";    //_wdt_sh4_work
                    if (var &  8)    event.codes.back() += " WE";    //_wdt_h8
                    if (var & 16)    event.codes.back() += " SR";    //_sh4_request
                }
                break;
            case 0011:
                // ñîñòîÿíèå àïïàðàòíîé ÷àñòè - ëþáîå èçìåíåíèå ñ÷èòàåì çà ñîáûòèå
                //SET_BIT( var, 29);    // óñòàíîâèòü ÌÑ â 1
                //SET_BIT( var, 30);
                event.i003 = GET_MS( var);
                if (event.i003 == 3 && (m_vHardwareData.empty() || m_vHardwareData.back() != var))
                {
                    if (!m_vHardwareData.empty())    {
                        event.codes.push_back( "!_HARDWARE_!");
                        event.modes.push_back( "");
                        event.actives.push_back( true);
                    }
                    m_vHardwareData.push_back( var);
                    event.denial = TEST_BIT( var, 11-1) == 0 ? 0 : m_dOnValue;
                }
                break;
            case 0037:
            {
                int    Code = (var >> 20) & 0x7F;
                int    Ind = GetIndByCode(Code);
                if (Ind >= 0)
                {
                    _String    str;
                    struct EventName eventName = EventNames[Ind];
                    event.codes.push_back(eventName.name);
                    event.modes.push_back(eventName.mode);
                    event.actives.push_back(TEST_BIT(var, 29-1) == 0);
                    str = event.actives.back() ? eventName.active : eventName.not_active;
                    if (!str.isEmpty())
                        event.codes.back() += ("_" + str);
                    if (strcmp(eventName.name, "PWR") == 0)
                        bBreak = true;                   // ðàçðûâàòü òðåê ïî ïèòàíèþ
                }
                else
                {
                    // íåèçâåñòíîå ñîáûòèå - çàïèñàòü åãî êîä
                    char    buff[16];
                    sprintf(buff, "event #%d", Code);
                    event.codes.push_back(buff);
                    event.modes.push_back("");
                    event.actives.push_back(TEST_BIT(var, 29-1) == 0);
                    m_vInvalidEvent.push_back(Code);
                }
                break;
            }
            case 0076:
                if(!strcmp(unit, "TTA12h"))
                {
                    if (GET_MS(var) != 3 && GET_SDI(var) == 1)
                        bBadHgps = true;
                    else if (GET_SDI(var) == 1)
                    {
                        event.Hgps = h.Get(var);
                        event.i076 = GET_MS(var);
                    }
                } else if(!strcmp(unit, "TTA12"))
                {
                    if (GET_MS(var) != 3)
                        bBadHgps = true;
                    else
                    {
                        event.Hgps = h.Get(var);
                        event.i076 = GET_MS(var);
                    }
                }
                break;
            case 0101:
                event.i101 = GET_MS(var);
                event.hdop = hvdop.Get(var);
                break;
            case 0102:
                event.i102 = GET_MS(var);
                event.vdop = hvdop.Get(var);
                break;
            case 0103:
                event.i103 = GET_MS(var);
                event.course = NormalizeBrg(ang.Get(var));
                break;
            case 0110:
                if (GET_MS(var) != 3)
                    bBadCoor = true;
                else
                    gp.lat = lat.Get(var) * GEO_1_DEG;
                break;
            case 0111:
                if (GET_MS(var) != 3)
                    bBadCoor = true;
                else
                    gp.lon = lon.Get(var) * GEO_1_DEG;
                break;
           case 0112:
                if(!strcmp(unit, "TTA12h"))

Объясните, пожалуйста, чайнику как скрывающимся кодом пользоваться ( [expand], который)?

[expand=TTTTT]
int k = 0;
char* h = "Hello, world!";

Написал руками! Тест....
Нифига у меня не получилось! :(
Litkevich Yuriy
обнови кэшь браузера, рядом с кнопкой code есть кнопка "Ex" тэгом пользуешь как и [code]тра-ля-ля[/code]
[expand]тра-ля-ля[/expand]
AD
да я уже раз 5 обновил кэш. Нифига не помогает! :(

В смысле кнопка не действует!

test
#include <iostream>
using namespace std;

int main()
{
int k = 0;
cout << k << endl;
return 0;
}

Ручками со 2 попытки удалось!
Багира
AD, у тебя какой браузер?
В Файрфоксе, Опере, ИЕ - работает кнопка!
AD
Цитата(Багира @ 31.7.2008, 17:50) *
AD, у тебя какой браузер?
В Файрфоксе, Опере, ИЕ - работает кнопка!

Firefox. Но не работает эта кнопка :(
int k = 0;
Багира
Дальше: проверила Apple-Safari, SeaMonkey, Netscape Navigator, Maxthon и Avant - работает ВЕЗДЕ. :)

Цитата(AD @ 31.7.2008, 17:52) *
Firefox. Но не работает эта кнопка :(
А я говорю - работает. :)
Ctrl+F5 - тебе поможет. ;)
AD
Цитата(Багира @ 31.7.2008, 17:57) *
Дальше: проверила Apple-Safari, SeaMonkey, Netscape Navigator, Maxthon и Avant - работает ВЕЗДЕ. :)

Цитата(AD @ 31.7.2008, 17:52) *
Firefox. Но не работает эта кнопка :(
А я говорю - работает. :)
Ctrl+F5 - тебе поможет. ;)

Вот так она у меня выглядит. Объясните, пожалуйста, последовательность действий, чтобы не писать ручками, нажать на эту кнопку.

Нажмите для просмотра прикрепленного файла
Litkevich Yuriy
Раскрывающийся текст
Mozilla/5.0 (Windows; U; Windows NT 5.0; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 настройки от yandex1.1.


и правда не работает, сходу :(
Багира
Правильно она у тебя выглядит. :)
Жмешь кнопку, между тегами вписываешь текст. Либо - выделяешь нужный текст и жмешь кнопку. Работает точно так же, как и остальные кнопки тегов. :)

Раскрывающийся текст
[/expand][expand]
Цитата(Litkevich Yuriy @ 31.7.2008, 18:02) *
и правда не работает, сходу :(
Не поняла. У тебя тоже работать перестала???
Litkevich Yuriy
в посте получается так:
Цитата
[expand=Раскрывающийся текст]Mozilla/5.0 (Windows; U; Windows NT 5.0; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 настройки от yandex1.1. [/expand]

и правда не работает, сходу :(


в опере работает, а в лисе нет
Багира
В каком посте? Ну, почему у меня-то все работает?!

Цитата(Litkevich Yuriy @ 31.7.2008, 18:05) *
в опере работает, а в лисе нет
Я в Лисе сижу. Все сообщения мои - из ФФ писаны. Пользуюсь кнопкой. РАБОТАЕТ. :)
Litkevich Yuriy
нажал Ctrl+R, в предыдущих постах появилось то что и должно было, ща еще раз попробую:
Тест № 3
Mozilla/5.0 (Windows; U; Windows NT 5.0; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 настройки от yandex1.1.


да после однократного Ctrl+R все заработало.
AD
Раскрывающийся текст
int k = 9000


Надо было про ctrl+R сразу сказать! ЗАработало;)


В итоге плюсик пойдет не Багире
8P
void*
ну-ка еще я попробую :)
Раскрывающийся текст
тест


все пучком :)
Багира
Цитата(AD @ 31.7.2008, 18:14) *
Надо было про ctrl+R сразу сказать! ЗАработало;)
Какая, на фиг, разница Ctrl+R или Ctrl+F5, если не секрет? Что одно, что другое - "обновить страницу". Только +F5 - без кэша, а +R - с оным. :)
ViGOur
Добавил тэг noindex для всех ссылок, теперь поисковики их будут обходить стороной <noindex>ссылка</noindex>.

Вот такая ненавязчивая борьба со спамерами... :)

p.s. это временно позднее сделаю грамотный редирект, который нельзя подделать....
Litkevich Yuriy
а когда этим пользоватся надо?
ViGOur
Это само автоматом проставляется, пишу, чтобы все знали. :)

Посмотри на HTML код данной ссылки: Типа ссылка
Litkevich Yuriy
а у меня не так получилось: тык :(

т.е. прям в посте (по ссылке) видны эти тэги
ViGOur
Мда, глюк какой-то, тогда откатываю обратно, буду Багиру просить, чтобы она сделал по нормальному, с редиректом...
AD
Цитата(ViGOur @ 5.2.2009, 12:04) *
Мда, глюк какой-то, тогда откатываю обратно, буду Багиру просить, чтобы она сделал по нормальному, с редиректом...

Багира - женщина! ;) Сделала! :p
Litkevich Yuriy
AD, вот ты привязался, это просто опечатка. :)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.