Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Обратная связь _ Обновления в форуме

Автор: Inilika 10.12.2007, 12:03

По клику на имени пользователя профиль больше не открывается, зато это имя вставляется в форму быстрого ответа. В профиль можно перейти, кликнув на аватар или открыв "опции профиля".

Добавлено быстрое цитирование выделенного текста. Кнопка "++Цитата" цитирует выделенный текст в форму быстрого ответа.


Пока все.


PS: Если нужно добавить каких-то функций, пишите сюда, сделаем. :rolleyes:

Автор: Сафи 9.1.2008, 20:26

Добавлена отправка сообщений нажатием ctrl+enter.

Автор: ubuntu 10.1.2008, 18:05

Спасибо, более привычно стало пользоваться форумом. :)

Автор: archimed7592 10.1.2008, 18:43

Не могу зайти в настройки своего профиля - открывает главную страницу(не форума), причём, без какого-либо оформления(как если css убрать).

Автор: Сафи 10.1.2008, 19:21

archimed7592, сайт переносится на другой сервер - воможны глюки некоторое время.

Автор: archimed7592 13.1.2008, 21:41

RSS?

Автор: archimed7592 13.1.2008, 21:47

Ещё codebox - было бы прекрасно, если бы он не был таким большим, когда в нём мало текста:

CODE
123

Автор: archimed7592 13.1.2008, 21:48

Склейка сообщений тож не помешает :).

Автор: Сафи 13.1.2008, 22:58

Цитата(archimed7592 @ 13.1.2008, 21:41) *
RSS?
Будет в ближайшее время.
Цитата(archimed7592 @ 13.1.2008, 21:47) *
Ещё codebox - было бы прекрасно, если бы он не был таким большим, когда в нём мало текста:
Спасибо, исправлю.
Цитата(archimed7592 @ 13.1.2008, 21:48) *
Склейка сообщений тож не помешает :)
Факт. Очень даже не помешает. Сделаю, как-нибудь.

Автор: archimed7592 13.1.2008, 23:08

Быстрая цитата не проверяет кого цитируют:

Цитата(archimed7592 @ 13.1.2008, 21:48) *
Факт. Очень даже не помешает. Сделаю, как-нибудь.

Автор: Сафи 14.1.2008, 0:03

Цитата(archimed7592 @ 13.1.2008, 21:47) *
Ещё codebox - было бы прекрасно, если бы он не был таким большим, когда в нём мало текста:
К сожалению, невнимательно прочла в первый раз :rolleyes: - для небольших кодов лучше использовать не codebox, а просто code:
это код
;)

Цитата(archimed7592 @ 13.1.2008, 23:08) *
Быстрая цитата не проверяет кого цитируют:
Я в курсе. Просто немножко не до нее сейчас... :rolleyes:

Автор: archimed7592 14.1.2008, 13:36

Цитата(Багира @ 14.1.2008, 0:03) *
rolleyes.gif

Чтобы цитировало смайлики правильно(быстрая цитата) нужно выдавать в alt не имя файла, а мнемонику, которая обозначает смайл т.е. вместо
<img src="style_emoticons/default/rolleyes.gif" style="vertical-align: middle;" emoid=":rolleyes:" alt="rolleyes.gif" border="0">

Нужно
<img src="style_emoticons/default/rolleyes.gif" style="vertical-align: middle;" emoid=":rolleyes:" alt=":rolleyes:" border="0">


Кстати, где кнопочка предпросмотра? :)

И ещё, неплохо было бы, если был бы какой-нибудь тэг, работающий внутри code, чтобы можно было выделять нужный кусочек(к примеру, желтым фоном, как это на др. форумах).

И, наконец, в "расширенной форме" не работает ctrl+enter.

Автор: archimed7592 14.1.2008, 13:46

По поводу тэга code - народ путается: http://www.forum.crossplatform.ru/index.php?showtopic=289
По хорошему должно быть автоопределение(в зависимости от размера кода), какой тэг нужно использовать - code или codebox.

Автор: Admin 14.1.2008, 14:00

Цитата(archimed7592 @ 14.1.2008, 13:46) *
По поводу тэга code - народ путается: http://www.forum.crossplatform.ru/index.php?showtopic=289
Уууупс, а я уже поправил тот топик. :)
Насчет автоопределения ты прав, нужно ввести в зависимости от обьема данных в теге коде подставлять code или codebox...

Автор: Сафи 14.1.2008, 18:59

Цитата(archimed7592 @ 14.1.2008, 13:36) *
Чтобы цитировало смайлики правильно(быстрая цитата) нужно выдавать в alt не имя файла, а мнемонику, которая обозначает смайл
Ну, вот, опять же такая мелочь, которую не замечаешь... :rolleyes: Вчера только заметила, но конкретно сейчас не возьмусь - времени нет. :( А, в принципе, исправлю, конечно.
Цитата(archimed7592 @ 14.1.2008, 13:36) *
Кстати, где кнопочка предпросмотра?
А где кнопочка предпросмотра потерялась?
Надо, наверное, переделать "быстрый ответ" на расширенную форму.
Цитата(archimed7592 @ 14.1.2008, 13:36) *
И ещё, неплохо было бы, если был бы какой-нибудь тэг, работающий внутри code, чтобы можно было выделять нужный кусочек(к примеру, желтым фоном, как это на др. форумах).
Думаю над этим. Надо просто сделать дополнительные тэги для кодов, с подсветкой.
Цитата(archimed7592 @ 14.1.2008, 13:36) *
И, наконец, в "расширенной форме" не работает ctrl+enter.
Спасибо, исправлю.
Цитата(archimed7592 @ 14.1.2008, 13:46) *
По хорошему должно быть автоопределение(в зависимости от размера кода), какой тэг нужно использовать - code или codebox.
Хм. Мысль интересная. :) Я лично никогда не пользовалась кодбоксом - только кодом, поэтому и не в курсе проблемы.

Автор: archimed7592 17.1.2008, 17:08

Складывается ощущение, что неправильно настроен(или отключен) кэш-контроль. Просьба включить/подкрутить, а то, тырнет хилой - напрягает.
(речь про картинки/css/js)

Автор: archimed7592 17.1.2008, 17:12

Кстати, пока редактировал(быстрое редактирование) - наткнулся на такую багу: ctrl-enter думает, что я хочу отправить очередной ответ из формы ответа, а должен думать, что я хочу "применить" отредактированный пост :).

Автор: Сафи 17.1.2008, 21:19

Цитата(archimed7592 @ 17.1.2008, 17:08) *
Складывается ощущение, что неправильно настроен(или отключен) кэш-контроль. Просьба включить/подкрутить, а то, тырнет хилой - напрягает.
(речь про картинки/css/js)
ОК. Пасиб. :)
Цитата(archimed7592 @ 17.1.2008, 17:12) *
Кстати, пока редактировал(быстрое редактирование) - наткнулся на такую багу: ctrl-enter думает, что я хочу отправить очередной ответ из формы ответа, а должен думать, что я хочу "применить" отредактированный пост
Угу, есть такое. Я пока не смотрела, что там, но про это помню. :)
Только со всеми изменениями сейчас придется подождать. Надо обновиться...

Автор: Litkevich Yuriy 18.1.2008, 9:33

Цитата(Багира @ 14.1.2008, 21:59) *
Хм. Мысль интересная. Я лично никогда не пользовалась кодбоксом - только кодом, поэтому и не в курсе проблемы.

а в менюхе редактора только CODEBOX, можно ли его поменять на более удобный CODE?

Автор: Сафи 18.1.2008, 20:09

Litkevich Yuriy, в верхней панели редактора, в линии графических кнопок, последняя - тег code.

Автор: archimed7592 13.4.2008, 0:29

Уведомления перекашивает:

CODE

Delivered-To: archimed7592@nospam.com
Received: by 10.66.252.11 with SMTP id z11cs343685ugh;
Sat, 12 Apr 2008 08:49:05 -0700 (PDT)
Received: by 10.78.166.1 with SMTP id o1mr3342668hue.74.1208015343843;
Sat, 12 Apr 2008 08:49:03 -0700 (PDT)
X-Forwarded-To: archimed7592@nospam.com
X-Forwarded-For: archimed7592.forums@nospam.com archimed7592@nospam.com
Delivered-To: archimed7592.forums@nospam.com
Received: by 10.78.171.19 with SMTP id t19cs81751hue;
Sat, 12 Apr 2008 08:49:03 -0700 (PDT)
Received: by 10.86.89.1 with SMTP id m1mr8521757fgb.66.1208015342694;
Sat, 12 Apr 2008 08:49:02 -0700 (PDT)
Return-Path: <admin@nospam.ru>
Received: from e-post08.km.ru (e-post08.km.ru [217.197.114.148])
by mx.google.com with ESMTP id l19si3638011fgb.0.2008.04.12.08.49.02;
Sat, 12 Apr 2008 08:49:02 -0700 (PDT)
Received-SPF: neutral (google.com: 217.197.114.148 is neither permitted nor denied by best guess record for domain of admin@nospam.ru) client-ip=217.197.114.148;
Authentication-Results: mx.google.com; spf=neutral (google.com: 217.197.114.148 is neither permitted nor denied by best guess record for domain of admin@nospam.ru) smtp.mail=admin@nospam.ru
Received: from mail.crossplatform.ru (<unknown> [217.174.98.11])
by e-post08.km.ru with SMTP
id 079CFC502356281677606; Sat, 12 Apr 2008 19:49:04 +0400
MIME-Version: 1.0
Date: Sat, 12 Apr 2008 19:48:20 +0400
From: "Форумы на CrossPlatform.RU" <admin@nospam.ru>
To: archimed7592.forums@nospam.com
Subject: =?windows-1251?Q?=D3=E2=E5=E4=EE=EC=EB=E5=ED=E8=E5=20=EE=20н=EE=E2=EEй=20=F2=E5=EC=E5=20=E2=20ф=E
Eруме=20(=20Ф=EEрумы=20=ED=E0=20CrossPlatform.RU=20)?=
Return-Path: admin@nospam.ru
X-Priority: 3
X-Mailer: IPB PHP Mailer
X-Unique-ID: bbf1b859_9de01c75_b6dc19af_13fcd
Content-type: text/plain; charset="windows-1251"
Message-Id: <4800D9F0.002F84.02816@nospam.km.ru>

archimed7592,

Litkevich Yuriy открыл новую тему с заголовком «задачка № 7» в форуме «Техника программирования».

...

Выглядит так:
http://ipicture.ru/Gallery/Viewfull/1330006.html

Автор: archimed7592 13.4.2008, 0:31

P.S.
1. Напоминаю про склейку сообщений.
2. Прибейте что ль эту тему с багами к потолку.

Автор: Сафи 18.4.2008, 10:52

12345

вышел зайчик погулять

оки, склейка постов работает. :)

Автор: Litkevich Yuriy 18.4.2008, 11:01

привет, я уже заметил.
Давно не появлялась.

Автор: Сафи 18.4.2008, 11:08

Привет. Запарка у мну. Ща долги раздам и снова сгину. ;)

Автор: Сафи 18.4.2008, 21:41

Вернула обращение по имени и быструю цитату.

Автор: Litkevich Yuriy 18.4.2008, 21:52

чет типа не работает, ни то ни другое, в профиль пользователя уже не перекидывает

Автор: Сафи 19.4.2008, 16:27

Цитата(' date='18.4.2008, 22:52) *
чет типа не работает, ни то ни другое, в профиль пользователя уже не перекидывает
Litkevich Yuriy, у тебя случаем, не ИЕ6? Я только в нем проблему вижу... В остальных браузерах все пашет. :rolleyes:

Litkevich Yuriy, обрефрешься на всякий. Да кэш снули. ;)

Автор: Litkevich Yuriy 19.4.2008, 16:52

у меня опера 9.27, если я ничего не путаю, то работало вроде так, до обновлений:
1) выделяю текст в чьем либо посте->нажимаю кнопку "++ЦИТАТА" -> появляется окно быстрого редактирования.

2) если курсор в окне быстрого редактирования, то нажимаю имя автора поста, слева, его имя вставляется туда где курсор, и помечается как жирный текст и запитая.
сейчас это не работает.
---
пойду пробывать почистить кэш

Автор: Сафи 19.4.2008, 17:24

Litkevich Yuriy, вот это сообщение я сейчас пишу с Оперы 9.27 - как видишь, я обратилась к тебе по имени. ;)
А сейчас я тебя процитирую:

Цитата(' date='19.4.2008, 17:52) *
у меня опера 9.27,

Автор: Litkevich Yuriy 19.4.2008, 17:24

Багира,

Цитата(' date='19.4.2008, 20:27) *
Litkevich Yuriy, обрефрешься на всякий. Да кэш снули.

так, после удаления куков заработало, просто чистка кэша не помогла.

Автор: Сафи 19.4.2008, 17:26

О! Вижу ошибку в цитате - автора не показывает.

Litkevich Yuriy, вот и славно

Автор: Litkevich Yuriy 19.4.2008, 17:28

---
к стати в цитате, твоего имени почемуто нет :(
а раньше вроде в сталялось
P.S.
по щелчку на имени пользователя оно вставляется

а вот быстрое редактирование досих пор глючит :(

Автор: Сафи 19.4.2008, 17:35

Litkevich Yuriy, с редактированием непонятное что-то.

С быстрой цитатой счас разберусь.

Мы тут с Админом решаемся на последнюю меру - переустановить форум, поскольку в момент обнолвнеия был какой-то сбой, мы на него грешим с этим глюком... В общем, мы тут втыкаем, ага... ;)

Автор: Сафи 20.4.2008, 17:48

Быструю правку починила.

Автор: Litkevich Yuriy 20.4.2008, 17:52

щас по тестю :)

Test Passed!
клёво, спасибо

Автор: Сафи 20.4.2008, 19:10

Проверка кода с подсветкой:

class MyThread : public QThread
{
public:
     void run();
};

void MyThread::run()
{
     QTcpSocket socket;
     // connect QTcpSocket's signals somewhere meaningful
     ...
     socket.connectToHost(hostName, portNumber);
     exec();
}

Работает. :)

Автор: Сафи 20.4.2008, 21:15

Стал быть, так. Подсветка кода работает. Работает следующим образом - [ code] - не подсвечивается.
[ code=язык] - подсвечивается по правилам этого языка. Прога распознает следующие языки:
* Python
* Ruby
* Perl
* PHP
* XML
* HTML
* CSS
* Django
* Javascript
* VBScript
* Delphi
* Java
* C++
* RenderMan (RSL и RIB)
* SQL
* SmallTalk
* Axapta
* 1С
* Ini
* Diff
* DOS .bat
* Bash

Если обнаружите неправильную подсветку в каком-то языке, стучите сюда - исправлю. :rolleyes:

Автор: Litkevich Yuriy 20.4.2008, 21:27

#!/usr/bin/env ruby

# Чтобы наверняка работала поддержка кирилицы
$KCODE = "utf-8"

# необходимо подключить библиотеку socket, чтобы работать с TCP
require 'socket'

# Тело программы
TCPServer.open('localhost', 3000){ |server|

# Печатаем собщение в консоль сервера
puts "[LOG]: Сервер запущен\r\n"  

# Как только вызов server.accept возвращает значение,
#  то это означает, что к серверу подсоединился клиент
# В переменную session записывается указатель на соединение.
    if (session = server.accept)
        # Печатаем сообщение в консоль клиента
        session.print "[RU]:Добро пожаловать на сервер\r\n"
        session.print "[RU]:Вы можите набирать команды: ls <dir> | cd <dir> | shutdown\r\n"
        # Печатаем собщение в консоль сервера
        puts "[LOG]: Подключение к серверу\r\n"  

        #  Выход из цыкла возможен только по командам: srvclose и shutdown
        #  с последующим закрытием сесии (сокета)
        loop{

            #  Следующий код является замещением:
            #          str = srv.gets.chomp.split(' ')
            #          cmd = str[0]
            #          arg = str[1]
            cmd, arg = *session.gets.chomp.split

            puts "[LOG]: Введена команда: #{ cmd } #{ arg }\r\n"

            #  оператор case, как в С switch
            case cmd
                when "ls"
                    begin
                        session.print Dir[ arg || "*" ].map{ |str| str + "\r\n" }
                    rescue
                        session.print "[RU]:Нет такого файла или каталога - #{ arg.inspect }\r\n"
                        puts "[ERROR]:Нет такого файла или каталога - #{ cmd } #{ arg }\r\n"
                    end
                when "cd"
                    begin
                        Dir.chdir( arg )
                        session.print "OK!\r\n"
                    rescue
                        session.print "[RU]:Нет такого файла или каталога - #{ arg.inspect }\r\n"
                        puts "[ERROR]:Нет такого файла или каталога - #{ cmd } #{ arg }\r\n"
                    end
                when "shutdown"
                    session.close
                    break
                else
                    session.print "[ERROR]:Неверная команда!\r\n"
            end
        }
    end
}


прикольно, но в первый момент подсветки нету, гдето через секунду-другую появляется.

вот цвет у Ruby - многие редакторы строковые литералы красным подсвечивают, а здесь серым

Автор: Сафи 20.4.2008, 21:28

Litkevich Yuriy,

Цитата(' date='20.4.2008, 22:25) *
прикольно, но в первый момент подсветки нету, гдето через секунду-другую появляется.
Это потому что скрипт тяжелый. Его б, по-хорошему, надо ограничить до основных языков, которые у нас тут будут использоваться, но в этом и основная загвоздка - какие будут использоваться, а какие - нет. Ограничим - будет работать шустрее. ;)

Автор: Litkevich Yuriy 20.4.2008, 21:40

а его, скрипт, на суб модули разбить нельзя?
Ну типа написано на одной странице в тэгах code=язык1 code=язык2 и чтоб для этой страницык пользователю загружалось два скрипта небольших, один для "язык1", а другой для "язык2".
Или как там оно работает, может файл стилей (CSS) динамически формировался.

Не представляю толком как работают форумы, только примитивные сайты понимаю.

Автор: Сафи 20.4.2008, 22:43

Проще ограничить до 'n' языков. Да и не нужны они все-то. ;)

Автор: ViGOur 21.4.2008, 10:29

ИМХО можно ограничится такими языками:

Цитата
* Python
* Perl
* PHP
* XML
* HTML
* CSS
* Javascript
* VBScript
* Delphi
* Java
* C++
* SQL
* Bash
Возможно можно еще меньше сделать список...

Автор: Litkevich Yuriy 21.4.2008, 10:38

ну из используемых
основной: C++
для скриптов оболочки: BAT, Shell
для баз данных:SQL
для, уже обсуждаемых регулярных выражений: Perl, Python
т.к. переводами занимаемся: XML, HTML (и возможно CSS)

Автор: ViGOur 21.4.2008, 10:48

Значит получается такой список:

Цитата
* Python
* Perl
* PHP
* XML
* HTML
* CSS
* Java
* C++
* SQL
* Bash
Оставил PHP и Java так как они вроде тоже по нашей тематике. :)

Автор: Сафи 21.4.2008, 11:24

Ну, вы тут договорИтесь окончательно, а потом мне свистните. ;)

Litkevich Yuriy, загляни в список смайликов. ;)
Теперь, наверное, надо добавить выбор кликабельных...

Автор: Litkevich Yuriy 21.4.2008, 11:36

а я уже http://www.forum.crossplatform.ru/index.php?showtopic=539&view=findpost&p=3483, только они там почемуто повторяются по многу раз

Автор: Сафи 21.4.2008, 11:55

Litkevich Yuriy, пасиб, не заметила - это глюк. Ща исправлю.

Автор: Сафи 21.4.2008, 14:05

Исправила. Будет время, еще добавлю смайлов. Будет та же ошибка - стучите.

Автор: Litkevich Yuriy 21.4.2008, 14:29

угарные смайлы: :help: :lazy: 80 8P

Автор: Сафи 3.5.2008, 21:17

Обновились до 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 15.5.2008, 14:49

насчет подсветки, 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>

Автор: Сафи 28.5.2008, 13:20

Litkevich Yuriy, видимо, в css-ке я что-то упустила. Проверю, спасибо.

Автор: Сафи 26.7.2008, 19:43

Ну, что ж, товарищи дорогие. :) Таки, да, у нас теперь работают "репутации" и "благодарности". С чем нас и поздравляю. ;)

Автор: Litkevich Yuriy 26.7.2008, 19:45

Спасибо!

Автор: Red Devil 26.7.2008, 20:06

Наверное ограничение стоит сделать - чтобы юзер не мог несколько раз поднять/уменьшить репу для одного и того же другого пользователя. Обычно делают 3 дня или неделю.

Автор: Сафи 26.7.2008, 20:09

Red Devil, покуда стоит 1 день. Если прям приспичит - увеличу. ;)

Автор: void* 26.7.2008, 20:11

RedВ Devil, не согласен. Не раз уже у меня например были на других форумах ситуации, когда хотелось за несколько разных полезных советов поставить за каждый спасибо(или плюс) участнику, но из-за этих тупых ограничений не получалось

Автор: AD 26.7.2008, 20:13

Цитата(Red Devil @ 26.7.2008, 21:06) *
Наверное ограничение стоит сделать - чтобы юзер не мог несколько раз поднять/уменьшить репу для одного и того же другого пользователя. Обычно делают 3 дня или неделю.

Red Devil, тоже не согласен. Я случайно тебе увеличил дважды за один пост! Считай, что это за разные посты! ;)

Автор: Litkevich Yuriy 26.7.2008, 20:22

ну если и вводить, то ограничения на кокретный пост, тык один раз и все, потом только в других постах и без ограничения по времени

Автор: void* 26.7.2008, 20:48

LitkevichВ Yuriy, а вот с этим абсолютно согласен :)

Автор: Litkevich Yuriy 26.7.2008, 20:50

Цитата(void* @ 27.7.2008, 0:48) *
LitkevichВ Yuriy,

а что эт ты меня так пишешь?
обижусь, отмодерю :)

Автор: void* 26.7.2008, 21:50

это у меня Опера так коряво работает с некоторыми буквами, а писать самому впадлу :)

Автор: Сафи 26.7.2008, 22:07

Цитата(Litkevich Yuriy @ 26.7.2008, 21:22) *
ну если и вводить, то ограничения на кокретный пост, тык один раз и все, потом только в других постах и без ограничения по времени
Это ограничение установлено. Сразу.

Автор: Сафи 27.7.2008, 15:53

Желательно прочесть всем. ;)

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

Там же можно отменить оповещение об изменениях в "репутации".

Автор: Сафи 30.7.2008, 18:39

Ошибку цитирования ников на кирилице в "Опере-9.5" - исправила. :) Проверяйте.
У кого не сработает сразу - чистите кэш браузера. ;)

Автор: Litkevich Yuriy 30.7.2008, 18:43

Багира, работает в 9.50b

Автор: void* 30.7.2008, 20:24

Багира, в 9.51 тоже все отлично

Автор: Сафи 30.7.2008, 20:58

Изменила цитирование смайлов. Теперь они будут цитироваться кодом, а не именем картинки. :)
Одно НО: это работает только в новых сообщениях!!! В тех, что были написаны до фикса - работать НЕ будет. :( Если только кто-нить из нас не возьмется их все отредактировать... а это, сами понимаете, анриал.

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

На сегодняшний день с цитированием только одна известная проблема - оно не работает в браузере Apple-Safari. Но с ним как себя вести - я пока не в курсе дела. :(

Автор: Сафи 31.7.2008, 15:50

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

В ближайшее время постараюсь сделать подобную штуку для "Кода с подсветкой". :)

Автор: Litkevich Yuriy 31.7.2008, 15:54

ща заценим:
---
кнопка не нажимается, т.е. ничего не происходит, опять кэш чистить?

Автор: Сафи 31.7.2008, 15:55

Litkevich Yuriy, угу

Автор: Litkevich Yuriy 31.7.2008, 15:56

Ага, после прочистки Кэша:

Раскрывающийся текст

/*!
* \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));
}



надо что-то делать со смйлами :( они там появились, в коде

Автор: Сафи 31.7.2008, 16:03

Litkevich Yuriy, что должно было быть вместо этих смайлов?

Автор: Litkevich Yuriy 31.7.2008, 16:11

QMessageBox::ok);

QMessageBox::Ok);

Автор: Сафи 31.7.2008, 16:11

Все, нашла. Изменила вызов этому смайлу. :)

Автор: Litkevich Yuriy 31.7.2008, 16:12

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

Автор: Сафи 31.7.2008, 16:12

Litkevich Yuriy, все намного проще - меняю вызов смайла, и все дела. :)

Автор: AD 31.7.2008, 16:37

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 31.7.2008, 16:39

обнови кэшь браузера, рядом с кнопкой code есть кнопка "Ex" тэгом пользуешь как и [code]тра-ля-ля[/code]
[expand]тра-ля-ля[/expand]

Автор: AD 31.7.2008, 16:41

да я уже раз 5 обновил кэш. Нифига не помогает! :(

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

test
#include <iostream>
using namespace std;

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

Ручками со 2 попытки удалось!

Автор: Сафи 31.7.2008, 16:50

AD, у тебя какой браузер?
В Файрфоксе, Опере, ИЕ - работает кнопка!

Автор: AD 31.7.2008, 16:52

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

Firefox. Но не работает эта кнопка :(
int k = 0;

Автор: Сафи 31.7.2008, 16:57

Дальше: проверила Apple-Safari, SeaMonkey, Netscape Navigator, Maxthon и Avant - работает ВЕЗДЕ. :)

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

Автор: AD 31.7.2008, 17:01

Цитата(Багира @ 31.7.2008, 17:57) *
Дальше: проверила Apple-Safari, SeaMonkey, Netscape Navigator, Maxthon и Avant - работает ВЕЗДЕ. :)

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

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

[attachment=155:button_ex.JPG]

Автор: Litkevich Yuriy 31.7.2008, 17:02

Раскрывающийся текст
Mozilla/5.0 (Windows; U; Windows NT 5.0; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 настройки от yandex1.1.


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

Автор: Сафи 31.7.2008, 17:04

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

Раскрывающийся текст
[/expand][expand]
Цитата(Litkevich Yuriy @ 31.7.2008, 18:02) *
и правда не работает, сходу :(
Не поняла. У тебя тоже работать перестала???

Автор: Litkevich Yuriy 31.7.2008, 17:05

в посте получается так:

Цитата
[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]

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


в опере работает, а в лисе нет

Автор: Сафи 31.7.2008, 17:07

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

Цитата(Litkevich Yuriy @ 31.7.2008, 18:05) *
в опере работает, а в лисе нет
Я в Лисе сижу. Все сообщения мои - из ФФ писаны. Пользуюсь кнопкой. РАБОТАЕТ. :)

Автор: Litkevich Yuriy 31.7.2008, 17:09

нажал 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 31.7.2008, 17:14

Раскрывающийся текст
int k = 9000


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


В итоге плюсик пойдет не Багире
8P

Автор: void* 31.7.2008, 17:29

ну-ка еще я попробую :)

Раскрывающийся текст
тест


все пучком :)

Автор: Сафи 31.7.2008, 17:45

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

Автор: ViGOur 5.2.2009, 9:44

Добавил тэг noindex для всех ссылок, теперь поисковики их будут обходить стороной <noindex>ссылка</noindex>.

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

p.s. это временно позднее сделаю грамотный редирект, который нельзя подделать....

Автор: Litkevich Yuriy 5.2.2009, 11:13

а когда этим пользоватся надо?

Автор: ViGOur 5.2.2009, 11:27

Это само автоматом проставляется, пишу, чтобы все знали. :)

Посмотри на HTML код данной ссылки: http://crossplatform.ru

Автор: Litkevich Yuriy 5.2.2009, 11:33

а у меня не так получилось: http://www.forum.crossplatform.ru/index.php?showtopic=2089 :(

т.е. прям в посте (по ссылке) видны эти тэги

Автор: ViGOur 5.2.2009, 12:04

Мда, глюк какой-то, тогда откатываю обратно, буду Багиру просить, чтобы она сделал по нормальному, с редиректом...

Автор: AD 5.2.2009, 12:07

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

Багира - женщина! ;) Сделала! :p

Автор: Litkevich Yuriy 5.2.2009, 12:14

AD, вот ты привязался, это просто опечатка. :)

Автор: Сафи 19.2.2009, 18:08

Цитата(ViGOur @ 5.2.2009, 12:04) *
буду Багиру просить, чтобы она сделал по нормальному, с редиректом...
Просить, конечно, можно. Ток бесполезно, когда доступ к файлам не даешь. :g_flag:

Автор: BorisXL 25.1.2010, 0:32

Можно было бы добавить раздел "Отдых и путешествия"

Можно было бы добавить раздел "Отдых и путешествия"

Автор: ViGOur 25.1.2010, 1:13

Не понял, а это зачем!? :)
У нас есть форум Треп, где можно и об этом потрепаться. ;)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)