es posible hacer un navegador web con solo conocer el lenguaje C

Iniciado por linux1, 3 Julio 2010, 21:27 PM

0 Miembros y 1 Visitante están viendo este tema.

linux1

Cita de: ctlon en  4 Julio 2010, 22:35 PM
si, pero es nativo o usa el internet explorer?
la misma duda amigo og ?¿

gracias x las respuestas.



Zazú


Og.

No, no usa IE como base.
A por cierto, los ejemplos no vienen con las librerias, mas bien bienen con el IDE oficial.
|-

Littlehorse

Yo no estaría tan seguro, mucho menos un 99%, probablemente use ActiveX. Me gustaría ver el código. Alguien puede colgar el ejemplo? no tengo Qt instalado en este ordenador.

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Og.

Cita de: Littlehorse en  5 Julio 2010, 07:07 AM
Yo no estaría tan seguro, mucho menos un 99%, probablemente use ActiveX. Me gustaría ver el código. Alguien puede colgar el ejemplo? no tengo Qt instalado en este ordenador.

Saludos

main.cpp
Código (cpp) [Seleccionar]
#include <QtGui>
#include "mainwindow.h"

int main(int argc, char * argv[])
{
   QApplication app(argc, argv);
   MainWindow browser;
   browser.show();
   return app.exec();
}


mainwindow.h
Código (cpp) [Seleccionar]
#include <QtGui>

class QWebView;
QT_BEGIN_NAMESPACE
class QLineEdit;
QT_END_NAMESPACE

//! [1]
class MainWindow : public QMainWindow
{
   Q_OBJECT

public:
   MainWindow();

protected slots:

   void adjustLocation();
   void changeLocation();
   void adjustTitle();
   void setProgress(int p);
   void finishLoading(bool);

   void highlightAllLinks();
   void rotateImages(bool invert);
   void removeGifImages();
   void removeInlineFrames();
   void removeObjectElements();
   void removeEmbeddedElements();

private:
   QString jQuery;
   QWebView *view;
   QLineEdit *locationEdit;
   QAction *rotateAction;
   int progress;
//! [1]
};


mainwindow.cpp
Código (cpp) [Seleccionar]
#include <QtGui>
#include <QtWebKit>
#include "mainwindow.h"

//! [1]

MainWindow::MainWindow()
{
   progress = 0;

   QFile file;
   file.setFileName(":/jquery.min.js");
   file.open(QIODevice::ReadOnly);
   jQuery = file.readAll();
   file.close();
//! [1]

   QNetworkProxyFactory::setUseSystemConfiguration(true);

//! [2]
   view = new QWebView(this);
   view->load(QUrl("http://www.google.com/ncr"));
   connect(view, SIGNAL(loadFinished(bool)), SLOT(adjustLocation()));
   connect(view, SIGNAL(titleChanged(QString)), SLOT(adjustTitle()));
   connect(view, SIGNAL(loadProgress(int)), SLOT(setProgress(int)));
   connect(view, SIGNAL(loadFinished(bool)), SLOT(finishLoading(bool)));

   locationEdit = new QLineEdit(this);
   locationEdit->setSizePolicy(QSizePolicy::Expanding, locationEdit->sizePolicy().verticalPolicy());
   connect(locationEdit, SIGNAL(returnPressed()), SLOT(changeLocation()));

   QToolBar *toolBar = addToolBar(tr("Navigation"));
   toolBar->addAction(view->pageAction(QWebPage::Back));
   toolBar->addAction(view->pageAction(QWebPage::Forward));
   toolBar->addAction(view->pageAction(QWebPage::Reload));
   toolBar->addAction(view->pageAction(QWebPage::Stop));
   toolBar->addWidget(locationEdit);
//! [2]

//! [3]
   QMenu *effectMenu = menuBar()->addMenu(tr("&Effect"));
   effectMenu->addAction("Highlight all links", this, SLOT(highlightAllLinks()));

   rotateAction = new QAction(this);
   rotateAction->setIcon(style()->standardIcon(QStyle::SP_FileDialogDetailedView));
   rotateAction->setCheckable(true);
   rotateAction->setText(tr("Turn images upside down"));
   connect(rotateAction, SIGNAL(toggled(bool)), this, SLOT(rotateImages(bool)));
   effectMenu->addAction(rotateAction);

   QMenu *toolsMenu = menuBar()->addMenu(tr("&Tools"));
   toolsMenu->addAction(tr("Remove GIF images"), this, SLOT(removeGifImages()));
   toolsMenu->addAction(tr("Remove all inline frames"), this, SLOT(removeInlineFrames()));
   toolsMenu->addAction(tr("Remove all object elements"), this, SLOT(removeObjectElements()));
   toolsMenu->addAction(tr("Remove all embedded elements"), this, SLOT(removeEmbeddedElements()));

   setCentralWidget(view);
   setUnifiedTitleAndToolBarOnMac(true);
}
//! [3]

//! [4]
void MainWindow::adjustLocation()
{
   locationEdit->setText(view->url().toString());
}

void MainWindow::changeLocation()
{
   QUrl url = QUrl(locationEdit->text());
   view->load(url);
   view->setFocus();
}
//! [4]

//! [5]
void MainWindow::adjustTitle()
{
   if (progress <= 0 || progress >= 100)
       setWindowTitle(view->title());
   else
       setWindowTitle(QString("%1 (%2%)").arg(view->title()).arg(progress));
}

void MainWindow::setProgress(int p)
{
   progress = p;
   adjustTitle();
}
//! [5]

//! [6]
void MainWindow::finishLoading(bool)
{
   progress = 100;
   adjustTitle();
   view->page()->mainFrame()->evaluateJavaScript(jQuery);

   rotateImages(rotateAction->isChecked());
}
//! [6]

//! [7]
void MainWindow::highlightAllLinks()
{
   QString code = "$('a').each( function () { $(this).css('background-color', 'yellow') } )";
   view->page()->mainFrame()->evaluateJavaScript(code);
}
//! [7]

//! [8]
void MainWindow::rotateImages(bool invert)
{
   QString code;
   if (invert)
       code = "$('img').each( function () { $(this).css('-webkit-transition', '-webkit-transform 2s'); $(this).css('-webkit-transform', 'rotate(180deg)') } )";
   else
       code = "$('img').each( function () { $(this).css('-webkit-transition', '-webkit-transform 2s'); $(this).css('-webkit-transform', 'rotate(0deg)') } )";
   view->page()->mainFrame()->evaluateJavaScript(code);
}
//! [8]

//! [9]
void MainWindow::removeGifImages()
{
   QString code = "$('[src*=gif]').remove()";
   view->page()->mainFrame()->evaluateJavaScript(code);
}

void MainWindow::removeInlineFrames()
{
   QString code = "$('iframe').remove()";
   view->page()->mainFrame()->evaluateJavaScript(code);
}

void MainWindow::removeObjectElements()
{
   QString code = "$('object').remove()";
   view->page()->mainFrame()->evaluateJavaScript(code);
}

void MainWindow::removeEmbeddedElements()
{
   QString code = "$('embed').remove()";
   view->page()->mainFrame()->evaluateJavaScript(code);
}
//! [9]


symbianpkgrules.pri
!symbian: error(Only include this file for Symbian platforms)

RSS_RULES ="group_name=\"QtExamples\";"

vendorinfo = \
   "; Localised Vendor name" \
   "%{\"Nokia, Qt\"}" \
   " " \
   "; Unique Vendor name" \
   ":\"Nokia, Qt\"" \
   " "

default_deployment.pkg_prerules += vendorinfo

isEmpty(ICON):ICON = $$QT_SOURCE_TREE/src/s60installs/qt.svg


y como resource incluyes jquery.min.js

Aparte corre bajo *nix :P

Saludos!
|-

Littlehorse

Bien, no usa ActiveX. No obstante, lo relevante radica en el port de WebKit, y precisamente lo que se encuentra allí abstraído es lo que Linux1 quiere saber como hacer.

Igualmente el dato le servirá ya que dicho port es open source, así que en todo caso podrá ponerse a leer el código a ver que encuentra, pero realmente no creo que sea una tarea sencilla para quien esta comenzando con el lenguaje.

Saludos!
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

linux1

Cita de: Littlehorse en  5 Julio 2010, 07:48 AM
Bien, no usa ActiveX. No obstante, lo relevante radica en el port de WebKit, y precisamente lo que se encuentra allí abstraído es lo que Linux1 quiere saber como hacer.

Igualmente el dato le servirá ya que dicho port es open source, así que en todo caso podrá ponerse a leer el código a ver que encuentra, pero realmente no creo que sea una tarea sencilla para quien esta comenzando con el lenguaje.

Saludos!
gracias a todos ya me di cuenta que es algo complejo para alquien que comienza yo solo queria una guia o introduccion y ya me la dieron gracias.