Initial commit

Esse commit está contido em:
Nathan Sobo
2012-08-10 13:32:19 -06:00
commit c2c8724ad0
2797 arquivos alterados com 172530 adições e 123004 exclusões
-8
Ver Arquivo
@@ -1,8 +0,0 @@
requireExtension 'autocomplete'
requireExtension 'strip-trailing-whitespace'
requireExtension 'fuzzy-finder'
requireExtension 'tree-view'
requireExtension 'command-panel'
requireExtension 'keybindings-view'
requireExtension 'snippets'
requireExtension 'status-bar'
-34
Ver Arquivo
@@ -1,34 +0,0 @@
snippet de "Describe block"
describe "${1:description}", ->
${2:body}
endsnippet
snippet i "It block"
it "$1", ->
$2
endsnippet
snippet be "Before each"
beforeEach ->
$1
endsnippet
snippet ex "Expectation"
expect($1).to$2
endsnippet
snippet log "Console log"
console.log $1
endsnippet
snippet ra "Range array"
[[$1, $2], [$3, $4]]
endsnippet
snippet pt "Point array"
[$1, $2]
endsnippet
snippet spy "Jasmine spy"
jasmine.createSpy("${1:description}")$2
endsnippet
+1 -21
Ver Arquivo
@@ -1,22 +1,2 @@
# Xcode
build/*
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
*.xcworkspace
!default.xcworkspace
xcuserdata
profile
*.moved-aside
.DS_Store
tags
atom-build
pkg
# Eclipse
.project
.svn
-9
Ver Arquivo
@@ -1,9 +0,0 @@
pairs:
ns: Nathan Sobo; nathan
cj: Corey Johnson; cj
dg: David Graham; dgraham
ks: Kevin Sawicki; kevin
email:
domain: github.com
#global: true
+26
Ver Arquivo
@@ -0,0 +1,26 @@
# This file is an addendum to the Chromium AUTHORS file.
# Names should be added to this file like so:
# Name or Organization <email address>
Marshall Greenblatt <magreenblatt@gmail.com>
Jamie Kirkpatrick <jkp@spotify.com>
Johan Lindström <johanl@spotify.com>
Igor Pavlov <igor.arabesc.pavlov@gmail.com>
Yanko Yankov <yyankov@gmail.com>
Emerick Rogul <emerick@gmail.com>
Valve Corporation <mac@valvesoftware.com>
Anthony Taranto <anthony.taranto@gmail.com>
Joe Andrieu <joe@joeandrieu.com>
Keith Poole <platima@gmail.com>
Aviv Rind <avivrind@gmail.com>
Michael Kaminski <mikeyk730@gmail.com>
ADInstruments Ltd. <dev.team@adinstruments.com>
Gus Verdun <gusverdun@gmail.com>
Joinerysoft Ltd. <cpinfold@joinerysoft.com>
Johan Björk <phb@spotify.com>
Dmitry Azaraev <dmitry.azaraev@gmail.com>
David Xue <ddxue27@gmail.com>
Russell (Rusty) Richards <fe3o4y@gmail.com>
Brian Power <powerbf.it@gmail.com>
Corey Lucier <clucier@adobe.com>
Mihai Tica <mitica@adobe.com>
-2
Ver Arquivo
@@ -1,2 +0,0 @@
/atom
*.o
-93
Ver Arquivo
@@ -1,93 +0,0 @@
INSTALLDIR=/usr/share/atom
CXXFLAGS := -Werror \
-pthread \
-fno-exceptions \
-fno-strict-aliasing \
-Wall \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
-fvisibility=hidden \
-pipe \
-fPIC \
-pthread \
-D_REENTRANT \
-I/usr/include/gtk-2.0 \
-I/usr/lib/gtk-2.0/include \
-I/usr/include/atk-1.0 \
-I/usr/include/cairo \
-I/usr/include/pango-1.0 \
-I/usr/include/gio-unix-2.0/ \
-I/usr/include/glib-2.0 \
-I/usr/include/openssl \
-I/usr/lib/glib-2.0/include \
-I../cef \
-O2 \
-fno-ident \
-fdata-sections \
-ffunction-sections \
-fno-rtti \
-fno-threadsafe-statics \
-fvisibility-inlines-hidden \
-Wsign-compare
LDFLAGS := -pthread \
-Wl,-z,noexecstack \
-fPIC \
-Llib \
-Wl,-O1 \
-Wl,--as-needed \
-Wl,--gc-sections \
-Wl,-rpath=$(INSTALLDIR)
LIBS := -lX11 \
-lgtk-x11-2.0 \
-lgdk-x11-2.0 \
-latk-1.0 \
-lgio-2.0 \
-lpangoft2-1.0 \
-lgdk_pixbuf-2.0 \
-lm \
-lpangocairo-1.0 \
-lcairo \
-lpango-1.0 \
-lgobject-2.0 \
-lgmodule-2.0 \
-lgthread-2.0 \
-lrt \
-lglib-2.0 \
-lssl \
-lcrypto \
-lcef \
-lcef_dll_wrapper \
-lonig
SOURCES=atom.cpp native_handler.cpp client_handler.cpp onig_regexp_extension.cpp io_utils.cpp
OBJECTS=$(SOURCES:.cpp=.o)
all:
g++ $(CXXFLAGS) -c $(SOURCES)
g++ -o atom $(OBJECTS) $(LDFLAGS) $(LIBS)
clean:
rm -rf atom *.o
install:
mkdir -p $(INSTALLDIR)
cp atom $(INSTALLDIR)
cp chrome.pak $(INSTALLDIR)
cp -R locales $(INSTALLDIR)
cp atom.png $(INSTALLDIR)
cp lib/libcef.so $(INSTALLDIR)
cp lib/libcef_dll_wrapper.a $(INSTALLDIR)
cp -R ../src $(INSTALLDIR)
cp -R ../static $(INSTALLDIR)
cp -R ../vendor $(INSTALLDIR)
cp -R ../bundles $(INSTALLDIR)
cp -R ../themes $(INSTALLDIR)
cp ../index.html $(INSTALLDIR)
coffee -c -o $(INSTALLDIR)/src/stdlib ../src/stdlib/require.coffee
ln -sf $(INSTALLDIR)/atom /usr/local/bin/atom
spec-install: install
cp -R ../spec $(INSTALLDIR)
-160
Ver Arquivo
@@ -1,160 +0,0 @@
// Copyright (c) 2011 The Chromium Embedded Framework Authors. All rights
// reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file.
#include <gtk/gtk.h>
#include <unistd.h>
#include <string>
#include "atom.h"
#include "include/cef_app.h"
#include "include/cef_browser.h"
#include "include/cef_frame.h"
#include "include/cef_runnable.h"
#include "client_handler.h"
#include "onig_regexp_extension.h"
#include "io_utils.h"
char* szWorkingDir; // The current working directory
const char* szPath; // The folder the application is in
const char* szPathToOpen; // The file to open
CefRefPtr<ClientHandler> g_handler;
void AppGetSettings(CefSettings& settings, CefRefPtr<CefApp>& app) {
CefString(&settings.cache_path) = "";
CefString(&settings.user_agent) = "";
CefString(&settings.product_version) = "";
CefString(&settings.locale) = "";
CefString(&settings.log_file) = "";
CefString(&settings.javascript_flags) = "";
settings.log_severity = LOGSEVERITY_ERROR;
settings.local_storage_quota = 0;
settings.session_storage_quota = 0;
}
void destroy(void) {
CefQuitMessageLoop();
}
void TerminationSignalHandler(int signatl) {
destroy();
}
// WebViewDelegate::TakeFocus in the test webview delegate.
static gboolean HandleFocus(GtkWidget* widget, GdkEventFocus* focus) {
if (g_handler.get() && g_handler->GetBrowserHwnd()) {
// Give focus to the browser window.
g_handler->GetBrowser()->SetFocus(true);
}
return TRUE;
}
int main(int argc, char *argv[]) {
szWorkingDir = get_current_dir_name();
if (szWorkingDir == NULL)
return -1;
std::string appDir = io_util_app_directory();
if (appDir.empty())
return -1;
szPath = appDir.c_str();
std::string pathToOpen;
if (argc >= 2) {
if (argv[1][0] != '/') {
pathToOpen.append(szWorkingDir);
pathToOpen.append("/");
pathToOpen.append(argv[1]);
} else
pathToOpen.append(argv[1]);
} else
pathToOpen.append(szWorkingDir);
szPathToOpen = pathToOpen.c_str();
GtkWidget* window;
gtk_init(&argc, &argv);
CefSettings settings;
CefRefPtr<CefApp> app;
AppGetSettings(settings, app);
CefInitialize(settings, app);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "atom");
gtk_window_set_default_size(GTK_WINDOW(window), 800, 600);
gtk_window_maximize(GTK_WINDOW(window));
g_signal_connect(window, "focus", G_CALLBACK(&HandleFocus), NULL);
GtkWidget* vbox = gtk_vbox_new(FALSE, 0);
g_signal_connect(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_widget_destroyed), &window);
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(destroy), NULL);
// Create the handler.
g_handler = new ClientHandler();
g_handler->SetMainHwnd(vbox);
g_handler->SetWindow(window);
new OnigRegexpExtension();
// Create the browser view.
CefWindowInfo window_info;
CefBrowserSettings browserSettings;
window_info.SetAsChild(vbox);
std::string path = io_utils_real_app_path("/index.html");
if (path.empty())
return -1;
std::string resolved("file://");
resolved.append(path);
CefBrowser::CreateBrowserSync(window_info,
static_cast<CefRefPtr<CefClient> >(g_handler), resolved, browserSettings);
gtk_container_add(GTK_CONTAINER(window), vbox);
gtk_widget_show_all(GTK_WIDGET(window));
GdkPixbuf *pixbuf;
GError *error = NULL;
std::string iconPath;
iconPath.append(szPath);
iconPath.append("/atom.png");
pixbuf = gdk_pixbuf_new_from_file(iconPath.c_str(), &error);
if (pixbuf)
gtk_window_set_icon(GTK_WINDOW(window), pixbuf);
// Install an signal handler so we clean up after ourselves.
signal(SIGINT, TerminationSignalHandler);
signal(SIGTERM, TerminationSignalHandler);
CefRunMessageLoop();
CefShutdown();
return 0;
}
// Global functions
std::string AppGetWorkingDirectory() {
return szWorkingDir;
}
std::string AppPath() {
return szPath;
}
std::string PathToOpen() {
return szPathToOpen;
}
-30
Ver Arquivo
@@ -1,30 +0,0 @@
#ifndef ATOM_H_
#define ATOM_H_
#pragma once
#include <string>
#include "include/cef_base.h"
class CefApp;
class CefBrowser;
class CefCommandLine;
// Returns the main browser window instance.
CefRefPtr<CefBrowser> AppGetBrowser();
// Returns the main application window handle.
CefWindowHandle AppGetMainHwnd();
// Returns the application working directory.
std::string AppGetWorkingDirectory();
// Returns the application's path.
std::string AppPath();
// Returns the initial path to open.
std::string PathToOpen();
// Returns the application settings
void AppGetSettings(CefSettings& settings, CefRefPtr<CefApp>& app);
#endif
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 25 KiB

Arquivo binário não exibido.
-263
Ver Arquivo
@@ -1,263 +0,0 @@
// Copyright (c) 2011 The Chromium Embedded Framework Authors. All rights
// reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file.
#include "client_handler.h"
#include <stdio.h>
#include <iostream>
#include <sstream>
#include <string>
#include "include/cef_browser.h"
#include "include/cef_frame.h"
#include "atom.h"
#include "native_handler.h"
#include "atom.h"
#include <stdlib.h>
#include <gtk/gtk.h>
ClientHandler::ClientHandler() :
m_MainHwnd(NULL), m_BrowserHwnd(NULL) {
m_nativeHandler = new NativeHandler();
}
ClientHandler::~ClientHandler() {
}
void ClientHandler::OnAfterCreated(CefRefPtr<CefBrowser> browser) {
REQUIRE_UI_THREAD();
AutoLock lock_scope(this);
if (!m_Browser.get()) {
// We need to keep the main child window, but not popup windows
m_Browser = browser;
m_BrowserHwnd = browser->GetWindowHandle();
}
}
bool ClientHandler::DoClose(CefRefPtr<CefBrowser> browser) {
REQUIRE_UI_THREAD();
if (m_BrowserHwnd == browser->GetWindowHandle()) {
// Since the main window contains the browser window, we need to close
// the parent window instead of the browser window.
CloseMainWindow();
// Return true here so that we can skip closing the browser window
// in this pass. (It will be destroyed due to the call to close
// the parent above.)
return true;
}
// A popup browser window is not contained in another window, so we can let
// these windows close by themselves.
return false;
}
void ClientHandler::OnBeforeClose(CefRefPtr<CefBrowser> browser) {
REQUIRE_UI_THREAD();
if (m_BrowserHwnd == browser->GetWindowHandle()) {
// Free the browser pointer so that the browser can be destroyed
m_Browser = NULL;
}
}
void ClientHandler::OnLoadStart(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame) {
REQUIRE_UI_THREAD();
if (m_BrowserHwnd == browser->GetWindowHandle() && frame->IsMain()) {
CefRefPtr<CefV8Context> context = frame->GetV8Context();
CefRefPtr<CefV8Value> global = context->GetGlobal();
context->Enter();
CefRefPtr<CefV8Value> windowNumber = CefV8Value::CreateInt(0);
global->SetValue("$windowNumber", windowNumber, V8_PROPERTY_ATTRIBUTE_NONE);
std::string path;
if (m_nativeHandler && !m_nativeHandler->path.empty())
path = m_nativeHandler->path;
else
path.append(PathToOpen());
CefRefPtr<CefV8Value> pathToOpen = CefV8Value::CreateString(path);
global->SetValue("$pathToOpen", pathToOpen, V8_PROPERTY_ATTRIBUTE_NONE);
m_nativeHandler->window = window;
m_nativeHandler->path = path;
CefRefPtr<CefV8Value> atom = CefV8Value::CreateObject(NULL, NULL);
global->SetValue("atom", atom, V8_PROPERTY_ATTRIBUTE_NONE);
CefRefPtr<CefV8Value> loadPath = CefV8Value::CreateString(AppPath());
atom->SetValue("loadPath", loadPath, V8_PROPERTY_ATTRIBUTE_NONE);
CefRefPtr<CefV8Value> bootstrapScript = CefV8Value::CreateString(
"single-window-bootstrap");
global->SetValue("$bootstrapScript", bootstrapScript,
V8_PROPERTY_ATTRIBUTE_NONE);
context->Exit();
}
}
void ClientHandler::OnLoadEnd(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, int httpStatusCode) {
REQUIRE_UI_THREAD();
}
bool ClientHandler::OnLoadError(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, ErrorCode errorCode, const CefString& failedUrl,
CefString& errorText) {
REQUIRE_UI_THREAD();
if (errorCode == ERR_CACHE_MISS) {
// Usually caused by navigating to a page with POST data via back or
// forward buttons.
errorText = "<html><head><title>Expired Form Data</title></head>"
"<body><h1>Expired Form Data</h1>"
"<h2>Your form request has expired. "
"Click reload to re-submit the form data.</h2></body>"
"</html>";
} else {
// All other messages.
std::stringstream ss;
ss << "<html><head><title>Load Failed</title></head>"
"<body><h1>Load Failed</h1>"
"<h2>Load of URL " << std::string(failedUrl)
<< " failed with error code " << static_cast<int>(errorCode)
<< ".</h2></body>"
"</html>";
errorText = ss.str();
}
return false;
}
void ClientHandler::OnNavStateChange(CefRefPtr<CefBrowser> browser,
bool canGoBack, bool canGoForward) {
//Intentionally left blank
}
bool ClientHandler::OnConsoleMessage(CefRefPtr<CefBrowser> browser,
const CefString& message, const CefString& source, int line) {
REQUIRE_UI_THREAD();
std::cout << std::string(message) << std::endl;
return false;
}
void ClientHandler::OnFocusedNodeChanged(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefDOMNode> node) {
REQUIRE_UI_THREAD();
}
bool ClientHandler::OnKeyEvent(CefRefPtr<CefBrowser> browser, KeyEventType type,
int code, int modifiers, bool isSystemKey, bool isAfterJavaScript) {
REQUIRE_UI_THREAD();
return false;
}
bool ClientHandler::GetPrintHeaderFooter(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, const CefPrintInfo& printInfo,
const CefString& url, const CefString& title, int currentPage, int maxPages,
CefString& topLeft, CefString& topCenter, CefString& topRight,
CefString& bottomLeft, CefString& bottomCenter, CefString& bottomRight) {
REQUIRE_UI_THREAD();
// Place the page title at top left
topLeft = title;
// Place the page URL at top right
topRight = url;
// Place "Page X of Y" at bottom center
std::stringstream strstream;
strstream << "Page " << currentPage << " of " << maxPages;
bottomCenter = strstream.str();
return false;
}
void ClientHandler::OnContextCreated(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefV8Context> context) {
REQUIRE_UI_THREAD();
}
bool ClientHandler::OnDragStart(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefDragData> dragData, DragOperationsMask mask) {
REQUIRE_UI_THREAD();
return false;
}
bool ClientHandler::OnDragEnter(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefDragData> dragData, DragOperationsMask mask) {
REQUIRE_UI_THREAD();
return false;
}
void ClientHandler::SetWindow(GtkWidget* widget) {
window = widget;
}
void ClientHandler::SetMainHwnd(CefWindowHandle hwnd) {
AutoLock lock_scope(this);
m_MainHwnd = hwnd;
}
// ClientHandler::ClientLifeSpanHandler implementation
bool ClientHandler::OnBeforePopup(CefRefPtr<CefBrowser> parentBrowser,
const CefPopupFeatures& popupFeatures, CefWindowInfo& windowInfo,
const CefString& url, CefRefPtr<CefClient>& client,
CefBrowserSettings& settings) {
REQUIRE_UI_THREAD();
return false;
}
void ClientHandler::OnAddressChange(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, const CefString& url) {
//Intentionally left blank
}
void ClientHandler::OnTitleChange(CefRefPtr<CefBrowser> browser,
const CefString& title) {
REQUIRE_UI_THREAD();
std::string titleStr(title);
size_t inHomeDir;
std::string home = getenv("HOME");
inHomeDir = titleStr.find(home);
if (inHomeDir == 0) {
titleStr = titleStr.substr(home.length());
titleStr.insert(0, "~");
}
size_t lastSlash;
lastSlash = titleStr.rfind("/");
std::string formatted;
if (lastSlash != std::string::npos && lastSlash + 1 < titleStr.length()) {
formatted.append(titleStr, lastSlash + 1, titleStr.length() - lastSlash);
formatted.append(" (");
formatted.append(titleStr, 0, lastSlash);
formatted.append(")");
} else
formatted.append(titleStr);
formatted.append(" - atom");
GtkWidget* window = gtk_widget_get_ancestor(
GTK_WIDGET(browser->GetWindowHandle()), GTK_TYPE_WINDOW);
gtk_window_set_title(GTK_WINDOW(window), formatted.c_str());
}
void ClientHandler::SendNotification(NotificationType type) {
// TODO(port): Implement this method.
}
void ClientHandler::CloseMainWindow() {
// TODO(port): Close main window.
}
-155
Ver Arquivo
@@ -1,155 +0,0 @@
#ifndef CLIENT_HANDLER_H_
#define CLIENT_HANDLER_H_
#pragma once
#include <map>
#include <string>
#include "include/cef_client.h"
#include "util.h"
#include "native_handler.h"
// ClientHandler implementation.
class ClientHandler: public CefClient,
public CefLifeSpanHandler,
public CefLoadHandler,
public CefDisplayHandler,
public CefFocusHandler,
public CefKeyboardHandler,
public CefPrintHandler,
public CefV8ContextHandler,
public CefDragHandler {
public:
ClientHandler();
virtual ~ClientHandler();
// CefClient methods
virtual CefRefPtr<CefLifeSpanHandler> GetLifeSpanHandler() OVERRIDE {
return this;
}
virtual CefRefPtr<CefLoadHandler> GetLoadHandler() OVERRIDE {
return this;
}
virtual CefRefPtr<CefDisplayHandler> GetDisplayHandler() OVERRIDE {
return this;
}
virtual CefRefPtr<CefFocusHandler> GetFocusHandler() OVERRIDE {
return this;
}
virtual CefRefPtr<CefKeyboardHandler> GetKeyboardHandler() OVERRIDE {
return this;
}
virtual CefRefPtr<CefPrintHandler> GetPrintHandler() OVERRIDE {
return this;
}
virtual CefRefPtr<CefV8ContextHandler> GetV8ContextHandler() OVERRIDE {
return this;
}
virtual CefRefPtr<CefDragHandler> GetDragHandler() OVERRIDE {
return this;
}
// CefLifeSpanHandler methods
virtual bool OnBeforePopup(CefRefPtr<CefBrowser> parentBrowser,
const CefPopupFeatures& popupFeatures, CefWindowInfo& windowInfo,
const CefString& url, CefRefPtr<CefClient>& client,
CefBrowserSettings& settings) OVERRIDE;
virtual void OnAfterCreated(CefRefPtr<CefBrowser> browser) OVERRIDE;
virtual bool DoClose(CefRefPtr<CefBrowser> browser) OVERRIDE;
virtual void OnBeforeClose(CefRefPtr<CefBrowser> browser) OVERRIDE;
// CefLoadHandler methods
virtual void OnLoadStart(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame) OVERRIDE;
virtual void OnLoadEnd(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, int httpStatusCode) OVERRIDE;
virtual bool OnLoadError(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, ErrorCode errorCode,
const CefString& failedUrl, CefString& errorText) OVERRIDE;
// CefDisplayHandler methods
virtual void OnNavStateChange(CefRefPtr<CefBrowser> browser, bool canGoBack,
bool canGoForward) OVERRIDE;
virtual void OnAddressChange(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, const CefString& url) OVERRIDE;
virtual void OnTitleChange(CefRefPtr<CefBrowser> browser,
const CefString& title) OVERRIDE;
virtual bool OnConsoleMessage(CefRefPtr<CefBrowser> browser,
const CefString& message, const CefString& source, int line) OVERRIDE;
// CefFocusHandler methods.
virtual void OnFocusedNodeChanged(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefDOMNode> node) OVERRIDE;
// CefKeyboardHandler methods.
virtual bool OnKeyEvent(CefRefPtr<CefBrowser> browser, KeyEventType type,
int code, int modifiers, bool isSystemKey, bool isAfterJavaScript)
OVERRIDE;
// CefPrintHandler methods.
virtual bool GetPrintHeaderFooter(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, const CefPrintInfo& printInfo,
const CefString& url, const CefString& title, int currentPage,
int maxPages, CefString& topLeft, CefString& topCenter,
CefString& topRight, CefString& bottomLeft, CefString& bottomCenter,
CefString& bottomRight) OVERRIDE;
// CefV8ContextHandler methods
virtual void OnContextCreated(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefV8Context> context) OVERRIDE;
// CefDragHandler methods.
virtual bool OnDragStart(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefDragData> dragData, DragOperationsMask mask) OVERRIDE;
virtual bool OnDragEnter(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefDragData> dragData, DragOperationsMask mask) OVERRIDE;
void SetWindow(GtkWidget* window);
void SetMainHwnd(CefWindowHandle hwnd);
CefWindowHandle GetMainHwnd() {
return m_MainHwnd;
}
void SetEditHwnd(CefWindowHandle hwnd);
CefRefPtr<CefBrowser> GetBrowser() {
return m_Browser;
}
CefWindowHandle GetBrowserHwnd() {
return m_BrowserHwnd;
}
enum NotificationType {
NOTIFY_CONSOLE_MESSAGE
};
void SendNotification(NotificationType type);
void CloseMainWindow();
protected:
GtkWidget* window;
CefRefPtr<NativeHandler> m_nativeHandler;
// The child browser window
CefRefPtr<CefBrowser> m_Browser;
// The main frame window handle
CefWindowHandle m_MainHwnd;
// The child browser window handle
CefWindowHandle m_BrowserHwnd;
// The edit window handle
CefWindowHandle m_EditHwnd;
// Support for logging.
std::string m_LogFile;
// Include the default reference counting implementation.
IMPLEMENT_REFCOUNTING(ClientHandler)
;
// Include the default locking implementation.
IMPLEMENT_LOCKING(ClientHandler)
;
};
#endif
-49
Ver Arquivo
@@ -1,49 +0,0 @@
#include "io_utils.h"
#include "atom.h"
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#define BUFFER_SIZE 8192
using namespace std;
int io_utils_read(string path, string* output) {
int fd = open(path.c_str(), O_RDONLY);
if (fd <= 0)
return 0;
char buffer[BUFFER_SIZE];
unsigned int bytesRead = 0;
unsigned int totalRead = 0;
while ((bytesRead = read(fd, buffer, BUFFER_SIZE)) > 0) {
output->append(buffer, 0, bytesRead);
totalRead += bytesRead;
}
close(fd);
return totalRead;
}
string io_utils_real_app_path(string relativePath) {
string path = AppPath() + relativePath;
char* realPath = realpath(path.c_str(), NULL);
if (realPath != NULL) {
string realAppPath(realPath);
free(realPath);
return realAppPath;
} else
return "";
}
string io_util_app_directory() {
char path[BUFFER_SIZE];
if (readlink("/proc/self/exe", path, BUFFER_SIZE) < 2)
return "";
string appPath(path);
unsigned int lastSlash = appPath.rfind("/");
if (lastSlash != string::npos)
return appPath.substr(0, lastSlash);
else
return appPath;
}
-22
Ver Arquivo
@@ -1,22 +0,0 @@
#ifndef IO_UTILS_H_
#define IO_UTILS_H_
#pragma once
#include <string>
/**
* Read file at path and append to output string
*/
int io_utils_read(std::string path, std::string* output);
/**
* Get realpath for given path that is relative to the app path
*/
std::string io_utils_real_app_path(std::string relativePath);
/**
* Get path to directory where atom app resides
*/
std::string io_util_app_directory();
#endif
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
-527
Ver Arquivo
@@ -1,527 +0,0 @@
#include "native_handler.h"
#include "include/cef_base.h"
#include "include/cef_runnable.h"
#include "client_handler.h"
#include "io_utils.h"
#include <iostream>
#include <fstream>
#include <sstream>
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <vector>
#include <gtk/gtk.h>
#include <sys/inotify.h>
#include <pthread.h>
#include <openssl/evp.h>
#define BUFFER_SIZE 8192
using namespace std;
void *NotifyWatchersCallback(void* pointer) {
NativeHandler* handler = (NativeHandler*) pointer;
handler->NotifyWatchers();
return NULL;
}
void ExecuteWatchCallback(NotifyContext notifyContext) {
map<string, CallbackContext> callbacks =
notifyContext.callbacks[notifyContext.descriptor];
map<string, CallbackContext>::iterator callback;
for (callback = callbacks.begin(); callback != callbacks.end(); callback++) {
CallbackContext callbackContext = callback->second;
CefRefPtr<CefV8Context> context = callbackContext.context;
CefRefPtr<CefV8Value> function = callbackContext.function;
context->Enter();
CefV8ValueList args;
CefRefPtr<CefV8Value> retval;
CefRefPtr<CefV8Exception> e;
args.push_back(callbackContext.eventTypes);
function->ExecuteFunction(function, args, retval, e, true);
context->Exit();
}
}
NativeHandler::NativeHandler() :
CefV8Handler() {
string nativePath = io_utils_real_app_path("/src/stdlib/native-handler.js");
if (!nativePath.empty()) {
string extensionCode;
if (io_utils_read(nativePath, &extensionCode) > 0)
CefRegisterExtension("v8/native-handler", extensionCode, this);
}
notifyFd = inotify_init();
if (notifyFd != -1)
g_thread_create_full(NotifyWatchersCallback, this, 0, true, false,
G_THREAD_PRIORITY_NORMAL, NULL);
}
void NativeHandler::NotifyWatchers() {
char buffer[BUFFER_SIZE];
ssize_t bufferRead;
size_t eventSize;
ssize_t bufferIndex;
struct inotify_event *event;
bufferRead = read(notifyFd, buffer, BUFFER_SIZE);
while (bufferRead > 0) {
bufferIndex = 0;
while (bufferIndex < bufferRead) {
event = (struct inotify_event *) &buffer[bufferIndex];
eventSize = offsetof (struct inotify_event, name) + event->len;
NotifyContext context;
context.descriptor = event->wd;
context.callbacks = pathCallbacks;
CefPostTask(TID_UI,
NewCefRunnableFunction(&ExecuteWatchCallback, context));
bufferIndex += eventSize;
}
bufferRead = read(notifyFd, buffer, BUFFER_SIZE);
}
}
void NativeHandler::Exists(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception) {
string path = arguments[0]->GetStringValue().ToString();
struct stat statInfo;
int result = stat(path.c_str(), &statInfo);
retval = CefV8Value::CreateBool(result == 0);
}
void NativeHandler::Read(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception) {
string path = arguments[0]->GetStringValue().ToString();
string value;
io_utils_read(path, &value);
retval = CefV8Value::CreateString(value);
}
void NativeHandler::Absolute(const CefString& name,
CefRefPtr<CefV8Value> object, const CefV8ValueList& arguments,
CefRefPtr<CefV8Value>& retval, CefString& exception) {
string path = arguments[0]->GetStringValue().ToString();
string relativePath;
if (path[0] != '~')
relativePath.append(path);
else {
relativePath.append(getenv("HOME"));
relativePath.append(path, 1, path.length() - 1);
}
vector < string > segments;
char allSegments[relativePath.length() + 1];
strcpy(allSegments, relativePath.c_str());
const char* segment;
for (segment = strtok(allSegments, "/"); segment;
segment = strtok(NULL, "/")) {
if (strcmp(segment, ".") == 0)
continue;
if (strcmp(segment, "..") == 0) {
if (segments.empty()) {
retval = CefV8Value::CreateString("/");
return;
}
segments.pop_back();
} else
segments.push_back(segment);
}
string absolutePath;
unsigned int i;
for (i = 0; i < segments.size(); i++) {
absolutePath.append("/");
absolutePath.append(segments.at(i));
}
retval = CefV8Value::CreateString(absolutePath);
}
void ListDirectory(string path, vector<string>* paths, bool recursive) {
dirent **children;
int childrenCount = scandir(path.c_str(), &children, 0, alphasort);
struct stat statInfo;
int result;
for (int i = 0; i < childrenCount; i++) {
if (strcmp(children[i]->d_name, ".") == 0
|| strcmp(children[i]->d_name, "..") == 0) {
free(children[i]);
continue;
}
string entryPath(path + "/" + children[i]->d_name);
paths->push_back(entryPath);
if (recursive) {
result = stat(entryPath.c_str(), &statInfo);
if (result == 0 && S_ISDIR(statInfo.st_mode))
ListDirectory(entryPath, paths, recursive);
}
free(children[i]);
}
free(children);
}
void DeleteContents(string path) {
dirent **children;
const char* dirPath = path.c_str();
int childrenCount = scandir(dirPath, &children, 0, alphasort);
struct stat statInfo;
for (int i = 0; i < childrenCount; i++) {
if (strcmp(children[i]->d_name, ".") == 0
|| strcmp(children[i]->d_name, "..") == 0) {
free(children[i]);
continue;
}
string entryPath(path + "/" + children[i]->d_name);
if (stat(entryPath.c_str(), &statInfo) != 0) {
free(children[i]);
continue;
}
if (S_ISDIR(statInfo.st_mode))
DeleteContents(entryPath);
else if (S_ISREG(statInfo.st_mode))
remove(entryPath.c_str());
}
free(children);
rmdir(dirPath);
}
void NativeHandler::List(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception) {
string path = arguments[0]->GetStringValue().ToString();
bool recursive = arguments[1]->GetBoolValue();
vector < string > *paths = new vector<string>;
ListDirectory(path, paths, recursive);
retval = CefV8Value::CreateArray();
for (uint i = 0; i < paths->size(); i++)
retval->SetValue(i, CefV8Value::CreateString(paths->at(i)));
free (paths);
}
void NativeHandler::IsFile(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception) {
string path = arguments[0]->GetStringValue().ToString();
struct stat statInfo;
int result = stat(path.c_str(), &statInfo);
retval = CefV8Value::CreateBool(result == 0 && S_ISREG(statInfo.st_mode));
}
void NativeHandler::IsDirectory(const CefString& name,
CefRefPtr<CefV8Value> object, const CefV8ValueList& arguments,
CefRefPtr<CefV8Value>& retval, CefString& exception) {
string path = arguments[0]->GetStringValue().ToString();
struct stat statInfo;
int result = stat(path.c_str(), &statInfo);
retval = CefV8Value::CreateBool(result == 0 && S_ISDIR(statInfo.st_mode));
}
void NativeHandler::OpenDialog(const CefString& name,
CefRefPtr<CefV8Value> object, const CefV8ValueList& arguments,
CefRefPtr<CefV8Value>& retval, CefString& exception) {
GtkWidget *dialog;
dialog = gtk_file_chooser_dialog_new("Open File", GTK_WINDOW(window),
GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL);
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
char *filename;
filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
retval = CefV8Value::CreateString(filename);
g_free(filename);
} else
retval = CefV8Value::CreateNull();
gtk_widget_destroy(dialog);
}
void NativeHandler::Open(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception) {
path = arguments[0]->GetStringValue().ToString();
CefV8Context::GetCurrentContext()->GetBrowser()->Reload();
}
void NativeHandler::Write(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception) {
string path = arguments[0]->GetStringValue().ToString();
string content = arguments[1]->GetStringValue().ToString();
ofstream file;
file.open(path.c_str());
file << content;
file.close();
}
void NativeHandler::WriteToPasteboard(const CefString& name,
CefRefPtr<CefV8Value> object, const CefV8ValueList& arguments,
CefRefPtr<CefV8Value>& retval, CefString& exception) {
string content = arguments[0]->GetStringValue().ToString();
GtkClipboard* clipboard = gtk_clipboard_get_for_display(
gdk_display_get_default(), GDK_NONE);
gtk_clipboard_set_text(clipboard, content.c_str(), content.length());
gtk_clipboard_store(clipboard);
}
void NativeHandler::ReadFromPasteboard(const CefString& name,
CefRefPtr<CefV8Value> object, const CefV8ValueList& arguments,
CefRefPtr<CefV8Value>& retval, CefString& exception) {
GtkClipboard* clipboard = gtk_clipboard_get_for_display(
gdk_display_get_default(), GDK_NONE);
char* content = gtk_clipboard_wait_for_text(clipboard);
retval = CefV8Value::CreateString(content);
}
void NativeHandler::AsyncList(const CefString& name,
CefRefPtr<CefV8Value> object, const CefV8ValueList& arguments,
CefRefPtr<CefV8Value>& retval, CefString& exception) {
string path = arguments[0]->GetStringValue().ToString();
bool recursive = arguments[1]->GetBoolValue();
vector < string > *paths = new vector<string>;
ListDirectory(path, paths, recursive);
CefRefPtr<CefV8Value> callbackPaths = CefV8Value::CreateArray();
for (uint i = 0; i < paths->size(); i++)
callbackPaths->SetValue(i, CefV8Value::CreateString(paths->at(i)));
CefV8ValueList args;
args.push_back(callbackPaths);
CefRefPtr<CefV8Exception> e;
arguments[2]->ExecuteFunction(arguments[2], args, retval, e, true);
if (e)
exception = e->GetMessage();
free (paths);
}
void NativeHandler::MakeDirectory(const CefString& name,
CefRefPtr<CefV8Value> object, const CefV8ValueList& arguments,
CefRefPtr<CefV8Value>& retval, CefString& exception) {
string content = arguments[0]->GetStringValue().ToString();
mkdir(content.c_str(), S_IRWXU);
}
void NativeHandler::Move(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception) {
string from = arguments[0]->GetStringValue().ToString();
string to = arguments[1]->GetStringValue().ToString();
rename(from.c_str(), to.c_str());
}
void NativeHandler::Remove(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception) {
string pathArgument = arguments[0]->GetStringValue().ToString();
const char* path = pathArgument.c_str();
struct stat statInfo;
if (stat(path, &statInfo) != 0)
return;
if (S_ISREG(statInfo.st_mode))
remove(path);
else if (S_ISDIR(statInfo.st_mode))
DeleteContents(pathArgument);
}
void NativeHandler::Alert(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception) {
CefRefPtr<CefV8Value> buttonNamesAndCallbacks;
if (arguments.size() < 3)
buttonNamesAndCallbacks = CefV8Value::CreateArray();
else
buttonNamesAndCallbacks = arguments[2];
GtkWidget *dialog;
dialog = gtk_dialog_new_with_buttons("atom", GTK_WINDOW(window),
GTK_DIALOG_DESTROY_WITH_PARENT, NULL);
for (int i = 0; i < buttonNamesAndCallbacks->GetArrayLength(); i++) {
string title =
buttonNamesAndCallbacks->GetValue(i)->GetValue(0)->GetStringValue().ToString();
gtk_dialog_add_button(GTK_DIALOG(dialog), title.c_str(), i);
}
gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
string dialogMessage(arguments[0]->GetStringValue().ToString());
dialogMessage.append("\n\n");
dialogMessage.append(arguments[1]->GetStringValue().ToString());
GtkWidget *label;
label = gtk_label_new(dialogMessage.c_str());
GtkWidget *contentArea;
contentArea = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
gtk_container_add(GTK_CONTAINER(contentArea), label);
gtk_widget_show_all(dialog);
int result = gtk_dialog_run(GTK_DIALOG(dialog));
if (result >= 0) {
CefRefPtr<CefV8Value> callback =
buttonNamesAndCallbacks->GetValue(result)->GetValue(1);
CefV8ValueList args;
CefRefPtr<CefV8Exception> e;
callback->ExecuteFunction(callback, args, retval, e, true);
if (e)
exception = e->GetMessage();
}
gtk_widget_destroy(dialog);
}
void NativeHandler::WatchPath(const CefString& name,
CefRefPtr<CefV8Value> object, const CefV8ValueList& arguments,
CefRefPtr<CefV8Value>& retval, CefString& exception) {
string path = arguments[0]->GetStringValue().ToString();
int descriptor = inotify_add_watch(notifyFd, path.c_str(),
IN_ALL_EVENTS & ~(IN_CLOSE | IN_OPEN | IN_ACCESS));
if (descriptor == -1)
return;
CallbackContext callbackContext;
callbackContext.context = CefV8Context::GetCurrentContext();
callbackContext.function = arguments[1];
CefRefPtr<CefV8Value> eventTypes = CefV8Value::CreateObject(NULL, NULL);
eventTypes->SetValue("modified", CefV8Value::CreateBool(true),
V8_PROPERTY_ATTRIBUTE_NONE);
callbackContext.eventTypes = eventTypes;
stringstream idStream;
idStream << "counter";
idStream << idCounter;
string id = idStream.str();
idCounter++;
pathDescriptors[path] = descriptor;
pathCallbacks[descriptor][id] = callbackContext;
retval = CefV8Value::CreateString(id);
}
void NativeHandler::UnwatchPath(const CefString& name,
CefRefPtr<CefV8Value> object, const CefV8ValueList& arguments,
CefRefPtr<CefV8Value>& retval, CefString& exception) {
string path = arguments[0]->GetStringValue().ToString();
int descriptor = pathDescriptors[path];
if (descriptor == -1)
return;
map<string, CallbackContext> callbacks = pathCallbacks[descriptor];
string id = arguments[1]->GetStringValue().ToString();
callbacks.erase(id);
if (callbacks.empty())
inotify_rm_watch(notifyFd, descriptor);
}
void NativeHandler::Digest(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception) {
string path = arguments[0]->GetStringValue().ToString();
int fd = open(path.c_str(), O_RDONLY);
if (fd < 0)
return;
const EVP_MD *md;
OpenSSL_add_all_digests();
md = EVP_get_digestbyname("md5");
if (!md)
return;
EVP_MD_CTX context;
EVP_MD_CTX_init(&context);
EVP_DigestInit_ex(&context, md, NULL);
char buffer[BUFFER_SIZE];
int r;
while ((r = read(fd, buffer, sizeof buffer)) > 0)
EVP_DigestUpdate(&context, buffer, r);
close(fd);
unsigned char value[EVP_MAX_MD_SIZE];
unsigned int length;
EVP_DigestFinal_ex(&context, value, &length);
EVP_MD_CTX_cleanup(&context);
stringstream md5;
char hex[3];
for (uint i = 0; i < length; i++) {
sprintf(hex, "%02x", value[i]);
md5 << hex;
}
retval = CefV8Value::CreateString(md5.str());
}
void NativeHandler::LastModified(const CefString& name,
CefRefPtr<CefV8Value> object, const CefV8ValueList& arguments,
CefRefPtr<CefV8Value>& retval, CefString& exception) {
string path = arguments[0]->GetStringValue().ToString();
struct stat statInfo;
if (stat(path.c_str(), &statInfo) == 0) {
CefTime time(statInfo.st_mtime);
retval = CefV8Value::CreateDate(time);
}
}
bool NativeHandler::Execute(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception) {
if (name == "exists")
Exists(name, object, arguments, retval, exception);
else if (name == "read")
Read(name, object, arguments, retval, exception);
else if (name == "absolute")
Absolute(name, object, arguments, retval, exception);
else if (name == "list")
List(name, object, arguments, retval, exception);
else if (name == "isFile")
IsFile(name, object, arguments, retval, exception);
else if (name == "isDirectory")
IsDirectory(name, object, arguments, retval, exception);
else if (name == "showDevTools")
CefV8Context::GetCurrentContext()->GetBrowser()->ShowDevTools();
else if (name == "openDialog")
OpenDialog(name, object, arguments, retval, exception);
else if (name == "open")
Open(name, object, arguments, retval, exception);
else if (name == "write")
Write(name, object, arguments, retval, exception);
else if (name == "writeToPasteboard")
WriteToPasteboard(name, object, arguments, retval, exception);
else if (name == "readFromPasteboard")
ReadFromPasteboard(name, object, arguments, retval, exception);
else if (name == "asyncList")
AsyncList(name, object, arguments, retval, exception);
else if (name == "makeDirectory")
MakeDirectory(name, object, arguments, retval, exception);
else if (name == "move")
Move(name, object, arguments, retval, exception);
else if (name == "remove")
Remove(name, object, arguments, retval, exception);
else if (name == "alert")
Alert(name, object, arguments, retval, exception);
else if (name == "watchPath")
WatchPath(name, object, arguments, retval, exception);
else if (name == "unwatchPath")
UnwatchPath(name, object, arguments, retval, exception);
else if (name == "md5ForPath")
Digest(name, object, arguments, retval, exception);
else if (name == "getPlatform")
retval = CefV8Value::CreateString("linux");
else if (name == "lastModified")
LastModified(name, object, arguments, retval, exception);
else
cout << "Unhandled -> " + name.ToString() << " : "
<< arguments[0]->GetStringValue().ToString() << endl;
return true;
}
-128
Ver Arquivo
@@ -1,128 +0,0 @@
#ifndef NATIVE_HANDLER_H_
#define NATIVE_HANDLER_H_
#include "include/cef_base.h"
#include "include/cef_v8.h"
#include <string>
#include <map>
struct CallbackContext {
CefRefPtr<CefV8Context> context;
CefRefPtr<CefV8Value> function;
CefRefPtr<CefV8Value> eventTypes;
};
struct NotifyContext {
int descriptor;
std::map<int, std::map<std::string, CallbackContext> > callbacks;
};
class NativeHandler: public CefV8Handler {
public:
NativeHandler();
GtkWidget* window;
std::string path;
virtual bool Execute(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void NotifyWatchers();
IMPLEMENT_REFCOUNTING(NativeHandler)
;
private:
int notifyFd;
unsigned long int idCounter;
std::map<int, std::map<std::string, CallbackContext> > pathCallbacks;
std::map<std::string, int> pathDescriptors;
void Exists(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void Read(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void Absolute(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void List(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void AsyncList(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void IsFile(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void IsDirectory(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void OpenDialog(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void Open(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void Write(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void WriteToPasteboard(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void ReadFromPasteboard(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void MakeDirectory(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void Move(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void Remove(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void Alert(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void WatchPath(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void UnwatchPath(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void Digest(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
void LastModified(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
};
#endif
-185
Ver Arquivo
@@ -1,185 +0,0 @@
#include "onig_regexp_extension.h"
#include "include/cef_base.h"
#include "include/cef_runnable.h"
#include <oniguruma.h>
#include <iostream>
#include <stdlib.h>
#include "io_utils.h"
using namespace std;
class OnigRegexpUserData: public CefBase {
public:
OnigRegexpUserData(CefRefPtr<CefV8Value> source) {
OnigErrorInfo error;
string input = source->GetStringValue().ToString();
int length = input.length();
UChar* pattern = (UChar*) input.c_str();
int code = onig_new(&regex, pattern, pattern + length,
ONIG_OPTION_SINGLELINE, ONIG_ENCODING_UTF8, ONIG_SYNTAX_DEFAULT,
&error);
if (code != ONIG_NORMAL) {
char errorText[ONIG_MAX_ERROR_MESSAGE_LEN];
onig_error_code_to_str((OnigUChar*) errorText, code, &error);
cout << errorText << " for pattern: " << input << endl;
}
}
~OnigRegexpUserData() {
onig_free(regex);
}
OnigRegion* SearchRegion(string input, int index) {
if (!regex)
return NULL;
OnigRegion* region = onig_region_new();
UChar* search = (UChar*) input.c_str();
unsigned char* start = search + index;
unsigned char* end = search + input.length();
int code = onig_search(regex, search, end, start, end, region,
ONIG_OPTION_NONE);
if (code >= 0)
return region;
else {
onig_region_free(region, 1);
return NULL;
}
}
CefRefPtr<CefV8Value> Search(CefRefPtr<CefV8Value> argument,
CefRefPtr<CefV8Value> index) {
string input = argument->GetStringValue().ToString();
OnigRegion* region = SearchRegion(input, index->GetIntValue());
if (!region)
return CefV8Value::CreateNull();
CefRefPtr<CefV8Value> indices;
CefRefPtr<CefV8Value> resultArray = CefV8Value::CreateArray();
CefRefPtr<CefV8Value> indicesArray = CefV8Value::CreateArray();
for (int i = 0; i < region->num_regs; i++) {
int begin = region->beg[i];
int end = region->end[i];
resultArray->SetValue(i,
CefV8Value::CreateString(input.substr(begin, end - begin)));
indicesArray->SetValue(i, CefV8Value::CreateInt(begin));
}
resultArray->SetValue("index", CefV8Value::CreateInt(region->beg[0]),
V8_PROPERTY_ATTRIBUTE_NONE);
resultArray->SetValue("indices", indicesArray, V8_PROPERTY_ATTRIBUTE_NONE);
onig_region_free(region, 1);
return resultArray;
}
CefRefPtr<CefV8Value> Test(CefRefPtr<CefV8Value> argument,
CefRefPtr<CefV8Value> index) {
OnigRegion* region = SearchRegion(argument->GetStringValue().ToString(),
index->GetIntValue());
CefRefPtr<CefV8Value> text = CefV8Value::CreateBool(region != NULL);
if (region)
onig_region_free(region, 1);
return text;
}
CefRefPtr<CefV8Value> GetCaptureIndices(CefRefPtr<CefV8Value> argument,
CefRefPtr<CefV8Value> index) {
OnigRegion* region = SearchRegion(argument->GetStringValue().ToString(),
index->GetIntValue());
CefRefPtr<CefV8Value> indices;
if (region) {
indices = BuildCaptureIndices(region);
onig_region_free(region, 1);
} else
indices = CefV8Value::CreateNull();
return indices;
}
CefRefPtr<CefV8Value> BuildCaptureIndices(OnigRegion *region) {
CefRefPtr<CefV8Value> array = CefV8Value::CreateArray();
int i = 0;
for (int index = 0; index < region->num_regs; index++) {
int begin = region->beg[index];
int end = region->end[index];
if (end - begin <= 0)
continue;
array->SetValue(i++, CefV8Value::CreateInt(index));
array->SetValue(i++, CefV8Value::CreateInt(begin));
array->SetValue(i++, CefV8Value::CreateInt(end));
}
return array;
}
CefRefPtr<CefV8Value> CaptureCount() {
if (regex)
return CefV8Value::CreateInt(onig_number_of_captures(regex));
else
return CefV8Value::CreateInt(0);
}
regex_t* regex;
IMPLEMENT_REFCOUNTING(OnigRegexpUserData)
;
}
;
OnigRegexpExtension::OnigRegexpExtension() :
CefV8Handler() {
string realFilePath = io_utils_real_app_path(
"/src/stdlib/onig-reg-exp-extension.js");
if (!realFilePath.empty()) {
string extensionCode;
if (io_utils_read(realFilePath, &extensionCode) > 0)
CefRegisterExtension("v8/oniguruma", extensionCode, this);
}
}
bool OnigRegexpExtension::Execute(const CefString& name,
CefRefPtr<CefV8Value> object, const CefV8ValueList& arguments,
CefRefPtr<CefV8Value>& retval, CefString& exception) {
if (name == "getCaptureIndices") {
CefRefPtr<CefV8Value> string = arguments[0];
CefRefPtr<CefV8Value> index =
arguments.size() > 1 ? arguments[1] : CefV8Value::CreateInt(0);
OnigRegexpUserData *userData =
(OnigRegexpUserData *) object->GetUserData().get();
retval = userData->GetCaptureIndices(string, index);
return true;
}
if (name == "search") {
CefRefPtr<CefV8Value> string = arguments[0];
CefRefPtr<CefV8Value> index =
arguments.size() > 1 ? arguments[1] : CefV8Value::CreateInt(0);
OnigRegexpUserData *userData =
(OnigRegexpUserData *) object->GetUserData().get();
retval = userData->Search(string, index);
return true;
}
if (name == "test") {
CefRefPtr<CefV8Value> string = arguments[0];
CefRefPtr<CefV8Value> index =
arguments.size() > 1 ? arguments[1] : CefV8Value::CreateInt(0);
OnigRegexpUserData *userData =
(OnigRegexpUserData *) object->GetUserData().get();
retval = userData->Test(string, index);
return true;
}
if (name == "buildOnigRegExp") {
CefRefPtr<CefBase> userData = new OnigRegexpUserData(arguments[0]);
retval = CefV8Value::CreateObject(userData, NULL);
return true;
}
if (name == "getCaptureCount") {
OnigRegexpUserData *userData =
(OnigRegexpUserData *) object->GetUserData().get();
retval = userData->CaptureCount();
return true;
}
return false;
}
-21
Ver Arquivo
@@ -1,21 +0,0 @@
#ifndef ONIG_REGEXP_EXTENSION_H_
#define ONIG_REGEXP_EXTENSION_H_
#include "include/cef_base.h"
#include "include/cef_v8.h"
class OnigRegexpExtension: public CefV8Handler {
public:
OnigRegexpExtension();
virtual bool Execute(const CefString& name, CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments, CefRefPtr<CefV8Value>& retval,
CefString& exception);
IMPLEMENT_REFCOUNTING(OnigRegexpExtension)
;
};
#endif
-22
Ver Arquivo
@@ -1,22 +0,0 @@
// Copyright (c) 2011 The Chromium Embedded Framework Authors. All rights
// reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file.
#ifndef UTIL_H_
#define UTIL_H_
#pragma once
#include "include/cef_task.h"
#include <assert.h> // NOLINT(build/include_order)
#ifndef NDEBUG
#define ASSERT(condition) if (!(condition)) { assert(false); }
#else
#define ASSERT(condition) ((void)0)
#endif
#define REQUIRE_UI_THREAD() ASSERT(CefCurrentlyOn(TID_UI));
#define REQUIRE_IO_THREAD() ASSERT(CefCurrentlyOn(TID_IO));
#define REQUIRE_FILE_THREAD() ASSERT(CefCurrentlyOn(TID_FILE));
#endif
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
@@ -1,92 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0430"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0487C91114FED5360045E5E3"
BuildableName = "Atom.app"
BlueprintName = "Atom"
ReferencedContainer = "container:Atom.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0487C91114FED5360045E5E3"
BuildableName = "Atom.app"
BlueprintName = "Atom"
ReferencedContainer = "container:Atom.xcodeproj">
</BuildableReference>
</MacroExpansion>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0487C91114FED5360045E5E3"
BuildableName = "Atom.app"
BlueprintName = "Atom"
ReferencedContainer = "container:Atom.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
<CommandLineArgument
argument = "--test"
isEnabled = "YES">
</CommandLineArgument>
</CommandLineArguments>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0487C91114FED5360045E5E3"
BuildableName = "Atom.app"
BlueprintName = "Atom"
ReferencedContainer = "container:Atom.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -1,86 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0430"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0487C91114FED5360045E5E3"
BuildableName = "Atom.app"
BlueprintName = "Atom"
ReferencedContainer = "container:Atom.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0487C91114FED5360045E5E3"
BuildableName = "Atom.app"
BlueprintName = "Atom"
ReferencedContainer = "container:Atom.xcodeproj">
</BuildableReference>
</MacroExpansion>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0487C91114FED5360045E5E3"
BuildableName = "Atom.app"
BlueprintName = "Atom"
ReferencedContainer = "container:Atom.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0487C91114FED5360045E5E3"
BuildableName = "Atom.app"
BlueprintName = "Atom"
ReferencedContainer = "container:Atom.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -1,86 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0430"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0487C91114FED5360045E5E3"
BuildableName = "Atom.app"
BlueprintName = "Atom"
ReferencedContainer = "container:Atom.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0487C91114FED5360045E5E3"
BuildableName = "Atom.app"
BlueprintName = "Atom"
ReferencedContainer = "container:Atom.xcodeproj">
</BuildableReference>
</MacroExpansion>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0487C91114FED5360045E5E3"
BuildableName = "Atom.app"
BlueprintName = "Atom"
ReferencedContainer = "container:Atom.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0487C91114FED5360045E5E3"
BuildableName = "Atom.app"
BlueprintName = "Atom"
ReferencedContainer = "container:Atom.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
-285
Ver Arquivo
@@ -1,285 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1070</int>
<string key="IBDocument.SystemVersion">11E53</string>
<string key="IBDocument.InterfaceBuilderVersion">2182</string>
<string key="IBDocument.AppKitVersion">1138.47</string>
<string key="IBDocument.HIToolboxVersion">569.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">2182</string>
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>NSCustomView</string>
<string>NSWindowTemplate</string>
<string>NSView</string>
<string>NSCustomObject</string>
<string>NSSplitView</string>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
<integer value="1" key="NS.object.0"/>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSCustomObject" id="1001">
<string key="NSClassName">AtomController</string>
</object>
<object class="NSCustomObject" id="1003">
<string key="NSClassName">FirstResponder</string>
</object>
<object class="NSCustomObject" id="1004">
<string key="NSClassName">NSApplication</string>
</object>
<object class="NSWindowTemplate" id="1005">
<int key="NSWindowStyleMask">15</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{1706, 426}, {699, 805}}</string>
<int key="NSWTFlags">540017664</int>
<string key="NSWindowTitle"/>
<string key="NSWindowClass">NSWindow</string>
<nil key="NSViewClass"/>
<nil key="NSUserInterfaceItemIdentifier"/>
<object class="NSView" key="NSWindowView" id="1006">
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSSplitView" id="362253038">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSCustomView" id="131290216">
<reference key="NSNextResponder" ref="362253038"/>
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{699, 805}</string>
<reference key="NSSuperview" ref="362253038"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:11</string>
<string key="NSClassName">NSView</string>
</object>
</object>
<string key="NSFrameSize">{699, 805}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="131290216"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<int key="NSDividerStyle">2</int>
</object>
</object>
<string key="NSFrameSize">{699, 805}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="362253038"/>
</object>
<string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<bool key="NSWindowIsRestorable">NO</bool>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">window</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="1005"/>
</object>
<int key="connectionID">3</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">webView</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="131290216"/>
</object>
<int key="connectionID">9</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">splitView</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="362253038"/>
</object>
<int key="connectionID">10</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<object class="NSArray" key="object" id="1002">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="1001"/>
<reference key="parent" ref="1002"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="1003"/>
<reference key="parent" ref="1002"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="1004"/>
<reference key="parent" ref="1002"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="1005"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="1006"/>
</object>
<reference key="parent" ref="1002"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2</int>
<reference key="object" ref="1006"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="362253038"/>
</object>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">5</int>
<reference key="object" ref="362253038"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="131290216"/>
</object>
<reference key="parent" ref="1006"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">6</int>
<reference key="object" ref="131290216"/>
<reference key="parent" ref="362253038"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.IBPluginDependency</string>
<string>-2.IBPluginDependency</string>
<string>-3.IBPluginDependency</string>
<string>1.IBNSWindowAutoPositionCentersHorizontal</string>
<string>1.IBNSWindowAutoPositionCentersVertical</string>
<string>1.IBPluginDependency</string>
<string>1.IBWindowTemplateEditedContentRect</string>
<string>1.NSWindowTemplate.visibleAtLaunch</string>
<string>2.IBPluginDependency</string>
<string>5.IBPluginDependency</string>
<string>6.IBPluginDependency</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO"/>
<boolean value="NO"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{357, 418}, {480, 270}}</string>
<boolean value="NO"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="1002"/>
<reference key="dict.values" ref="1002"/>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="1002"/>
<reference key="dict.values" ref="1002"/>
</object>
<nil key="sourceID"/>
<int key="maxID">10</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">AtomController</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>devToolsView</string>
<string>splitView</string>
<string>webView</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>NSView</string>
<string>NSSplitView</string>
<string>NSView</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>devToolsView</string>
<string>splitView</string>
<string>webView</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">devToolsView</string>
<string key="candidateClassName">NSView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">splitView</string>
<string key="candidateClassName">NSSplitView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">webView</string>
<string key="candidateClassName">NSView</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/AtomController.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
<integer value="3000" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
</data>
</archive>
-42
Ver Arquivo
@@ -1,42 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>Atom</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleGetInfoString</key>
<string></string>
<key>CFBundleIconFile</key>
<string>atom.icns</string>
<key>CFBundleIdentifier</key>
<string>com.github.atom-osx</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.0.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>0.0.1</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.developer-tools</string>
<key>NSHumanReadableCopyright</key>
<string>GitHub Inc.</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>Atom</string>
<key>SUFeedURL</key>
<string>https://speakeasy.githubapp.com/apps/com.github.atom-osx/appcast.xml</string>
<key>SUPublicDSAKeyFile</key>
<string>dsa_pub.pem</string>
</dict>
</plist>
-297
Ver Arquivo
@@ -1,297 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
<string key="IBDocument.SystemVersion">11C74</string>
<string key="IBDocument.InterfaceBuilderVersion">1938</string>
<string key="IBDocument.AppKitVersion">1138.23</string>
<string key="IBDocument.HIToolboxVersion">567.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">1938</string>
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>NSUserDefaultsController</string>
<string>NSMenu</string>
<string>NSMenuItem</string>
<string>NSCustomObject</string>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
<integer value="1" key="NS.object.0"/>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSCustomObject" id="1021">
<string key="NSClassName">ClientApplication</string>
</object>
<object class="NSCustomObject" id="1014">
<string key="NSClassName">FirstResponder</string>
</object>
<object class="NSCustomObject" id="1050">
<string key="NSClassName">Atom</string>
</object>
<object class="NSMenu" id="649796088">
<string key="NSTitle">AMainMenu</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="694149608">
<reference key="NSMenu" ref="649796088"/>
<string key="NSTitle">Atom</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<object class="NSCustomResource" key="NSOnImage" id="293900348">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuCheckmark</string>
</object>
<object class="NSCustomResource" key="NSMixedImage" id="169361956">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuMixedState</string>
</object>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="110575045">
<string key="NSTitle">Atom</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="238522557">
<reference key="NSMenu" ref="110575045"/>
<string key="NSTitle">Run Specs</string>
<string key="NSKeyEquiv">s</string>
<int key="NSKeyEquivModMask">1835008</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="293900348"/>
<reference key="NSMixedImage" ref="169361956"/>
</object>
<object class="NSMenuItem" id="426052086">
<reference key="NSMenu" ref="110575045"/>
<string key="NSTitle">Run Benchmarks</string>
<string key="NSKeyEquiv">b</string>
<int key="NSKeyEquivModMask">1835008</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="293900348"/>
<reference key="NSMixedImage" ref="169361956"/>
</object>
<object class="NSMenuItem" id="305640227">
<reference key="NSMenu" ref="110575045"/>
<string key="NSTitle">Quit</string>
<string key="NSKeyEquiv">q</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="293900348"/>
<reference key="NSMixedImage" ref="169361956"/>
</object>
</object>
<string key="NSName">_NSAppleMenu</string>
</object>
</object>
</object>
<string key="NSName">_NSMainMenu</string>
</object>
<object class="NSUserDefaultsController" id="143541711">
<bool key="NSSharedInstance">YES</bool>
</object>
<object class="NSCustomObject" id="211903739">
<string key="NSClassName">SUUpdater</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="1050"/>
<reference key="destination" ref="1021"/>
</object>
<int key="connectionID">440</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">stop:</string>
<reference key="source" ref="1050"/>
<reference key="destination" ref="305640227"/>
</object>
<int key="connectionID">447</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">runSpecs:</string>
<reference key="source" ref="1050"/>
<reference key="destination" ref="238522557"/>
</object>
<int key="connectionID">449</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">runBenchmarks:</string>
<reference key="source" ref="1050"/>
<reference key="destination" ref="426052086"/>
</object>
<int key="connectionID">452</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<object class="NSArray" key="object" id="755588897">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<reference key="children" ref="1048"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="1021"/>
<reference key="parent" ref="755588897"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="1014"/>
<reference key="parent" ref="755588897"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="1050"/>
<reference key="parent" ref="755588897"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">29</int>
<reference key="object" ref="649796088"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="694149608"/>
</object>
<reference key="parent" ref="755588897"/>
<string key="objectName">MainMenu</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">56</int>
<reference key="object" ref="694149608"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="110575045"/>
</object>
<reference key="parent" ref="649796088"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">57</int>
<reference key="object" ref="110575045"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="238522557"/>
<reference ref="305640227"/>
<reference ref="426052086"/>
</object>
<reference key="parent" ref="694149608"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">58</int>
<reference key="object" ref="238522557"/>
<reference key="parent" ref="110575045"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">389</int>
<reference key="object" ref="143541711"/>
<reference key="parent" ref="755588897"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">441</int>
<reference key="object" ref="305640227"/>
<reference key="parent" ref="110575045"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">450</int>
<reference key="object" ref="426052086"/>
<reference key="parent" ref="110575045"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">453</int>
<reference key="object" ref="211903739"/>
<reference key="parent" ref="755588897"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.IBPluginDependency</string>
<string>-2.IBPluginDependency</string>
<string>-3.IBPluginDependency</string>
<string>29.IBPluginDependency</string>
<string>389.IBPluginDependency</string>
<string>441.IBPluginDependency</string>
<string>450.IBPluginDependency</string>
<string>453.IBPluginDependency</string>
<string>56.IBPluginDependency</string>
<string>57.IBPluginDependency</string>
<string>58.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="755588897"/>
<reference key="dict.values" ref="755588897"/>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="755588897"/>
<reference key="dict.values" ref="755588897"/>
</object>
<nil key="sourceID"/>
<int key="maxID">453</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
<integer value="1050" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
<integer value="3000" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>NSMenuCheckmark</string>
<string>NSMenuMixedState</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{9, 8}</string>
<string>{7, 2}</string>
</object>
</object>
</data>
</archive>
-1
Ver Arquivo
@@ -1 +0,0 @@
LOAD_RESOURCES_FROM_DIR=$PROJECT_DIR
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 752 B

Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 183 B

Arquivo binário não exibido.
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 523 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 1.6 KiB

Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 2.2 KiB

Arquivo binário não exibido.
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 5.8 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 2.3 KiB

Arquivo binário não exibido.
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 6.0 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 123 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 126 B

Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 239 B

Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 1.6 KiB

Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 341 B

Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 411 B

Arquivo binário não exibido.
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 3.3 KiB

Arquivo binário não exibido.
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 175 B

Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 1.4 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 90 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 209 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 212 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 125 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 144 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 174 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 193 B

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 1.3 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 7.0 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 175 B

Arquivo binário não exibido.
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 1.7 KiB

Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais