Ярлыки

четверг, 30 декабря 2010 г.

GTK в Eclipse.

1.Устанавливаем Eclipse с http://eclipse.org/.
2.В запущенном Eclipse
- выбираем help/install new software../
- выбираем work with: update site
- в появившемся списке ищем programming languages/eclipse c/c++
3.В запущенном eclipse
- создаем проект с++
- в окне настройки конфигураций нажимаем advanced settings
- в появившемся окне настроек
пишем
во вкладке c/c++ build/settings/compiler/miscellaneous
all options: -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/webkit-1.0/webkit -O0 -g3 -Wall -c -fmessage-length=0 `pkg-config --cflags gtk+-2.0 webkit-1.0`
во вкладке c/c++ build/settings/linker/miscellaneous
linker flags: `pkg-config --libs gtk+-2.0 webkit-1.0 --libs`
во вкладке: c/c++ general/paths and symbols/includes нажимаем add..
и указываем пути:
/usr/include/gtk-2.0
/usr/lib/gtk-2.0/include
/usr/include/webkit-1.0/webkit
если вы забыли ввести какие-то параметры то в это меню можно попасть нажав правую кнопку мыши на проекте и выбрав properties.
4. пишем тестовое приложение и нажимаем run

источник1
источник2
источник3
источник4

GTK и WebKit.

пример использования webKit из GTK
C++:
#include
#include

int main(int argc, char *argv[]) {
GtkWidget *window;
GtkWidget *swindow;
static WebKitWebView *browser;

gtk_init(&argc, &argv);

if (!g_thread_supported())
g_thread_init(NULL);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
swindow = gtk_scrolled_window_new(NULL, NULL);
browser = WEBKIT_WEB_VIEW(webkit_web_view_new());

gtk_container_add(GTK_CONTAINER(swindow), GTK_WIDGET(browser));
gtk_container_add(GTK_CONTAINER(window), swindow);

webkit_web_view_load_uri(WEBKIT_WEB_VIEW(browser), "http://google.com");

gtk_window_set_default_size(GTK_WINDOW(window), 800,600);
gtk_widget_show_all(window);

gtk_main();

return 0;
}
Makefile:
cat Makefile
all:
gcc -Wall -g -c main.c `pkg-config gtk+-2.0 webkit-1.0 --cflags`
gcc -Wall main.o `pkg-config gtk+-2.0 webkit-1.0 --libs`
обсуждение тут

Использование WebKit в Eclipse Helios.

В faq написанно что нужно установить свойство org.eclipse.swt.browser.UseWebKitGTK в true но не написанно где. В этом блоге сказанно что строку -Dorg.eclipse.swt.browser.UseWebKitGTK=true нужно вставить в файл /etc/eclipse.ini. НО у меня ничего не получилось. Browser.getBrowserType() возвращает mozilla.

понедельник, 27 декабря 2010 г.

Передача данных в html-файл.

Передачу данных в html-файл можно произвести через URL-адрес. После адреса ставиться знак вопроса и после него параметр, который Вы хотите передать. Если этих параметров несколько, то между ними ставиться амперсанд (&).

Пример 1:

"youfile.html?parametr"

Пример 2:

"youfile.html?parametr1&parametr2&parametr3"

Также данные можно передавать при помощи форм. Для этого надо воспользоваться методом GET.

Вот как буде выглядеть URL-адрес в строке броузера:

Пример:

"youfile.html?name1=value1&name2=value2&name3=value3"


Получение переданных данных:

Получение переданных данных выполняется при помощи JavaScript.

Сначало мы присваиваем переменной все то, что находится после знака вопроса:

var p_url=location.search.substring(1);

Если Вы передавали один параметр, то переменную p_url можно обрабатывать.

Если параметров было много, то их надо разделить:

var parametr=p_url.split("&");

У нас получился массив parametr, который содержит полученные данные.

Если Вы пересылали данные при помощи форм, то надо избавиться от знака равенства и присвоить каждой переменной свое значение:

var values= new Array();
for(i in parametr) {
var j=parametr[i].split("=");
values[j[0]]=unescape(j[1]);
}

Пример:

Если строка была:

"youfile.html?name=Serg&city=Рязань&age=21"

то получим массив:

values[name]="Serg";
values[city]="Рязань";
values[age]="21";

или можно так:

values[0]="Serg";
values[1]="Рязань";
values[2]="21";

Источник.

Переадресация в Web.

Источник.

Запуск Flash в Qt.

//создаем браузер
view = new QWebView(this);
//задаем его размеры
view->setGeometry(10,10,100,100);
//устанавливаем аттрибуты для JavaScript
view->page()->settings()->setAttribute(QWebSettings::JavascriptEnabled,true);
//устанавливаем аттрибуты для Plugin ов в том числе и Flash
view->page()->settings()->setAttribute(QWebSettings::PluginsEnabled,true);
//задаем адрес страницы
QUrl url("http://www.yandex.ru/");
//загружаем страницу
view->load(url);
//отображаем
view->show();

обсуждение тут

link

пятница, 24 декабря 2010 г.

jQuery и совсем не обычные select'ы в IE

Решил наваять маленькую заметочку — вдруг кому поможет Улыбается.

Итак, у меня в проекте стояла задача запрограммировать умные, специфические вложенные селекты, с неограниченной вложенностью. Суть задачи в том, чтобы при выборе первого селекта проверялось наличие дочерних элементов дерева Nested Sets и если они есть, то выезжает следующий селект, получает данные с сервера и добавляет новые option.

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

Прикиньте, вместо того, чтобы были надписи в селектах внутри был просто белый фон! Т.е. список есть, он раскрывается, но ты не видишь, что выбираешь. В ход пошел Firebag, но все было тщетно - логика работала как часы. Все было просто прелестно во всех браузерах кроме моего любимого IE. Несколько раз за эти 2 недели возвращался до этого вопроса и никак не мог понять, почему фон шрифта в селекте стал белым и не меняется (это я раньше так думал)?

Но сегодня на меня нашло прозрение: решил просто скинуть в обычный alert html() селекта. Посмотрел в лисе — все отлично и соответствует нормам. Посмотрел в IE, а там нету самих названий элементов — он их не добавляет. Пришлось лезть в код, вот:

  1. data = $.parseJSON(data);
  2. for (key in data) $(target).append(new Option(data[key],key));

Так я создавал новые элементы селекта. Как выявилось Эксплуататор неверно воспринимает мои указания кодом. Пришлось немного потанцевать с бубном и решение нашлось:

  1. data = $.parseJSON(data);
  2. for (key in data) $(target).append("+data[key]+"' value='"+key+"'>"+data[key]+""); // fixed IE bug

Работает во всех браузерах. Думаю, кому-то помог Улыбается


Источник.

Аналог foreach в javascript

В PHP конструкция foreach - это очень удобный инструмент для обхода элементов массива.
В бою на самом деле используеться этот оператор следующим образом:

1foreach ($some_array as $key=>$val) {
2 echo $key,' = ',$val,'';
3}

Опять таки по велению случая, мне было необходимо использовать ее аналог в JavaScript. Соответствующий вариант использования аналогичной конструкции в JavaScript`е представлен ниже:

1for (var key in some_array) {
2 var val = some_array [key];
3 alert (key+' = '+val);
4Источник

четверг, 2 декабря 2010 г.

Автотонкости

1. При разъезде в узком месте лучше стоять дав возможность встречному объехать. Тогда при дтп виноват будет он.

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

3.Зимой лучше не ставить автомобиль на ручной тормоз т.к. он может примерзнуть.