OSDN Git Service

Correct errors relating to LaTeX images & editing.
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / gui / BrowserWindow.java
index 35a3201..d9b6d76 100644 (file)
@@ -244,8 +244,10 @@ public class BrowserWindow extends QWidget {
        boolean insertHyperlink = true;\r
        boolean insideTable = false;\r
        boolean insideEncryption = false;\r
-       public Signal1<Long> blockApplication;\r
+       public Signal1<BrowserWindow> blockApplication;\r
        public Signal0 unblockApplication;\r
+       public boolean awaitingHttpResponse;\r
+       public long     unblockTime;\r
        String latexGuid;  // This is set if we are editing an existing LaTeX formula.  Useful to track guid.\r
 \r
        \r
@@ -601,7 +603,7 @@ public class BrowserWindow extends QWidget {
                tagEdit.setPalette(pal);\r
                notebookBox.setPalette(pal);\r
                \r
-               blockApplication = new Signal1<Long>();\r
+               blockApplication = new Signal1<BrowserWindow>();\r
                unblockApplication = new Signal0();\r
                \r
                logger.log(logger.HIGH, "Browser setup complete");\r
@@ -661,7 +663,7 @@ public class BrowserWindow extends QWidget {
                alteredTime.setEnabled(!v);\r
                subjectTime.setEnabled(!v);\r
                getBrowser().setEnabled(true);\r
-               getBrowser().setEnabled(!v);\r
+//             getBrowser().setEnabled(!v);\r
        }\r
        \r
        // expose this class to Javascript on the web page\r
@@ -865,7 +867,7 @@ public class BrowserWindow extends QWidget {
        @SuppressWarnings("unused")\r
        private void linkClicked(QUrl url) {\r
                logger.log(logger.EXTREME, "URL Clicked: " +url.toString());\r
-               if (url.toString().startsWith("latex://")) {\r
+               if (url.toString().startsWith("latex:")) {\r
                        int position = url.toString().lastIndexOf(".");\r
                        String guid = url.toString().substring(0,position);\r
                        position = guid.lastIndexOf("/");\r
@@ -1430,33 +1432,49 @@ public class BrowserWindow extends QWidget {
                        }\r
                        text = dialog.getFormula().trim();\r
                }\r
-               blockApplication.emit(new Long(5000));\r
+               blockApplication.emit(this);\r
                logger.log(logger.EXTREME, "Inserting LaTeX formula:" +text);\r
                latexGuid = guid;\r
                text = StringUtils.replace(text, "'", "\\'");\r
                String url = "http://latex.codecogs.com/gif.latex?" +text;\r
+               logger.log(logger.EXTREME, "Sending request to codecogs --> " + url);\r
                QNetworkAccessManager manager = new QNetworkAccessManager(this);\r
                manager.finished.connect(this, "insertLatexImageReady(QNetworkReply)");\r
+               unblockTime = new GregorianCalendar().getTimeInMillis()+5000;\r
+               awaitingHttpResponse = true;\r
                manager.get(new QNetworkRequest(new QUrl(url)));\r
        }\r
        \r
        public void insertLatexImageReady(QNetworkReply reply) {\r
+               logger.log(logger.EXTREME, "Response received from CodeCogs");\r
                if (reply.error() != NetworkError.NoError) \r
                        return;\r
+\r
+               unblockTime = -1;\r
+               if (!awaitingHttpResponse)\r
+                       return;\r
                \r
+               awaitingHttpResponse = false;\r
+               QUrl replyUrl = reply.url();            \r
                QByteArray image = reply.readAll();\r
-\r
+               reply.close();\r
+               logger.log(logger.EXTREME, "New image size: " +image.size());\r
 \r
                Resource newRes = null;\r
                QFile tfile;\r
                String path;\r
                if (latexGuid == null) {\r
+                       logger.log(logger.EXTREME, "Creating temporary gif");                   \r
                        path = Global.getFileManager().getResDirPath("latex-temp.gif");\r
                        tfile = new QFile(path);\r
                        tfile.open(new QIODevice.OpenMode(QIODevice.OpenModeFlag.WriteOnly));\r
+                       logger.log(logger.EXTREME, "File Open: " +tfile.errorString());\r
                        tfile.write(image);\r
+                       logger.log(logger.EXTREME, "Bytes writtes: "+tfile.size());\r
                        tfile.close();\r
+                       logger.log(logger.EXTREME, "Creating resource");\r
                        newRes = createResource(path,0,"image/gif", false);\r
+                       logger.log(logger.EXTREME, "Renaming temporary file to " +newRes.getGuid()+".gif");\r
                        path = Global.getFileManager().getResDirPath(newRes.getGuid()+".gif");\r
                        tfile.rename(path);\r
                } else {\r
@@ -1466,13 +1484,13 @@ public class BrowserWindow extends QWidget {
                        tfile.open(new QIODevice.OpenMode(QIODevice.OpenModeFlag.WriteOnly));\r
                        tfile.write(image);\r
                        tfile.close();\r
+                       newRes.getData().setBody(image.toByteArray());\r
+                       conn.getNoteTable().noteResourceTable.updateNoteResource(newRes, true);\r
                }\r
 \r
-\r
-               newRes.getAttributes().setSourceURL(reply.url().toString());\r
-//             newRes.getData().setBody(image.toByteArray());\r
-//             conn.getNoteTable().noteResourceTable.updateNoteResource(newRes, true);\r
-               conn.getNoteTable().noteResourceTable.updateNoteSourceUrl(newRes.getGuid(), reply.url().toString(), true);\r
+               logger.log(logger.EXTREME, "Setting source: " +replyUrl.toString());\r
+               newRes.getAttributes().setSourceURL(replyUrl.toString());\r
+               conn.getNoteTable().noteResourceTable.updateNoteSourceUrl(newRes.getGuid(), replyUrl.toString(), true);\r
                \r
                for(int i=0; i<currentNote.getResourcesSize(); i++) {\r
                        if (currentNote.getResources().get(i).getGuid().equals(newRes.getGuid())) {\r
@@ -1487,10 +1505,11 @@ public class BrowserWindow extends QWidget {
                // just write out the file (which is aleady done) and reload.\r
                if (latexGuid == null) {\r
                        StringBuffer buffer = new StringBuffer(100);\r
-                       String formula = reply.url().toString().toLowerCase().replace("http://latex.codecogs.com/gif.latex?", "");\r
-                       buffer.append("<a href=\"latex://"+path.replace("\\", "/")+"\" title=\""+formula+"\"><img src=\"");\r
+                       String formula = replyUrl.toString().toLowerCase().replace("http://latex.codecogs.com/gif.latex?", "");\r
+                       buffer.append("<a href=\"latex://"+path.replace("\\", "/")+"\" title=\""+formula+"\""\r
+                                       +"><img src=\"");\r
                        buffer.append(path.replace("\\", "/"));\r
-                       buffer.append("\" en-tag=en-media type=\"image/gif\""\r
+                       buffer.append("\" en-tag=\"en-latex\" type=\"image/gif\""\r
                                +" hash=\""+Global.byteArrayToHexString(newRes.getData().getBodyHash()) +"\""\r
                                +" guid=\"" +newRes.getGuid() +"\""\r
                                + " /></a>");\r
@@ -1500,13 +1519,18 @@ public class BrowserWindow extends QWidget {
                        browser.page().mainFrame().evaluateJavaScript(\r
                                        script_start + buffer + script_end);\r
                }\r
+\r
+               logger.log(logger.EXTREME, "New HTML set\n" +browser.page().currentFrame().toHtml());\r
                QWebSettings.setMaximumPagesInCache(0);\r
                QWebSettings.setObjectCacheCapacities(0, 0, 0);\r
-               browser.setHtml(browser.page().mainFrame().toHtml());\r
+               \r
+               browser.page().mainFrame().setHtml(browser.page().mainFrame().toHtml());\r
                browser.reload();\r
                contentChanged();\r
-               resourceSignal.contentChanged.emit(path);\r
+//             resourceSignal.contentChanged.emit(path);\r
+               unblockTime = -1;\r
        unblockApplication.emit();\r
+\r
                return;\r
                \r
        }\r
@@ -2226,14 +2250,17 @@ public class BrowserWindow extends QWidget {
                if (!urlTest.equals(""))\r
                        url = urlTest;\r
                url = url.replace("/", File.separator);\r
+               logger.log(logger.EXTREME, "Reading from file to create resource");\r
        resourceFile = new QFile(url); \r
        resourceFile.open(new QIODevice.OpenMode(QIODevice.OpenModeFlag.ReadOnly));\r
+//     logger.log(logger.EXTREME, "Error opening file "+url.toString()  +": "+resourceFile.errorString());\r
        byte[] fileData = resourceFile.readAll().toByteArray();\r
        resourceFile.close();\r
        if (fileData.length == 0)\r
                return null;\r
        MessageDigest md;\r
        try {\r
+               logger.log(logger.EXTREME, "Generating MD5");\r
                md = MessageDigest.getInstance("MD5");\r
                md.update(fileData);\r
                byte[] hash = md.digest();\r
@@ -2291,6 +2318,7 @@ public class BrowserWindow extends QWidget {
                r.setAttributes(a);\r
                \r
                conn.getNoteTable().noteResourceTable.saveNoteResource(r, true);\r
+               logger.log(logger.EXTREME, "Resource created");\r
                return r;\r
        } catch (NoSuchAlgorithmException e1) {\r
                e1.printStackTrace();\r