diff --git a/.DS_Store b/.DS_Store index d53457b8..7ea7f9d9 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/Applications.txt b/Applications.txt index 7b432a31..d2adbcb2 100644 --- a/Applications.txt +++ b/Applications.txt @@ -366,7 +366,7 @@ name="lib/palette.lua", url="IgorTimofeev/OpenComputers/master/lib/palette.lua", type="Library", - version=1.09, + version=1.10, }, { name="lib/doubleBuffering.lua", @@ -517,7 +517,7 @@ icon="IgorTimofeev/OpenComputers/master/Applications/MineCodeIDE/Icon.pic", createShortcut="dock", forceDownload=true, - version=1.54, + version=1.55, resources={ { name="Localization/Russian.lang", diff --git a/Applications/.DS_Store b/Applications/.DS_Store index e9961ece..538c77cb 100644 Binary files a/Applications/.DS_Store and b/Applications/.DS_Store differ diff --git a/Applications/MineCodeIDE/Localization/English.lang b/Applications/MineCodeIDE/Localization/English.lang index 55b59e39..601229bd 100755 --- a/Applications/MineCodeIDE/Localization/English.lang +++ b/Applications/MineCodeIDE/Localization/English.lang @@ -1,4 +1,5 @@ { + selectAndPasteColor = "Select and paste color", enableAutoBrackets = "Enable autobrackets", disableAutoBrackets = "Disable autobrackets", url = "http://example.com/something.lua", diff --git a/Applications/MineCodeIDE/Localization/Russian.lang b/Applications/MineCodeIDE/Localization/Russian.lang index b27c99a4..aa39033f 100755 --- a/Applications/MineCodeIDE/Localization/Russian.lang +++ b/Applications/MineCodeIDE/Localization/Russian.lang @@ -1,4 +1,5 @@ { + selectAndPasteColor = "Выбрать и вставить цвет", enableAutoBrackets = "Включить авто-скобки", disableAutoBrackets = "Отключить авто-скобки", url = "http://example.com/something.lua", diff --git a/Applications/MineCodeIDE/MineCodeIDE.lua b/Applications/MineCodeIDE/MineCodeIDE.lua index 1ed5724e..f06ebd56 100755 --- a/Applications/MineCodeIDE/MineCodeIDE.lua +++ b/Applications/MineCodeIDE/MineCodeIDE.lua @@ -755,9 +755,20 @@ local function paste(pasteLines) end end +local function selectAndPasteColor() + local startColor = 0xFF0000 + if mainWindow.codeView.selections[1] and mainWindow.codeView.selections[1].from.line == mainWindow.codeView.selections[1].to.line then + startColor = tonumber(unicode.sub(mainWindow.codeView.lines[mainWindow.codeView.selections[1].from.line], mainWindow.codeView.selections[1].from.symbol, mainWindow.codeView.selections[1].to.symbol)) or startColor + end + + local selectedColor = require("palette").show("auto", "auto", startColor) + if selectedColor then + paste({string.format("0x%06X", selectedColor)}) + end +end + local function pasteRegularChar(unicodeByte, char) if not keyboard.isControl(unicodeByte) then - deleteSelectedData() paste({char}) end end @@ -1046,6 +1057,42 @@ local function createWindow() mainWindow.codeView.scrollBars.horizontal.onTouch = function() mainWindow.codeView.fromSymbol = mainWindow.codeView.scrollBars.horizontal.value end + + local editOrRightClickMenu = GUI.contextMenu(1, 1) + editOrRightClickMenu:addItem(localization.cut, not mainWindow.codeView.selections[1], "^X").onTouch = function() + cut() + end + editOrRightClickMenu:addItem(localization.copy, not mainWindow.codeView.selections[1], "^C").onTouch = function() + copy() + end + editOrRightClickMenu:addItem(localization.paste, not clipboard, "^V").onTouch = function() + paste(clipboard) + end + editOrRightClickMenu:addSeparator() + editOrRightClickMenu:addItem(localization.comment, false, "^/").onTouch = function() + toggleComment() + end + editOrRightClickMenu:addItem(localization.indent, false, "Tab").onTouch = function() + indentOrUnindent(true) + end + editOrRightClickMenu:addItem(localization.unindent, false, "⇧Tab").onTouch = function() + indentOrUnindent(false) + end + editOrRightClickMenu:addSeparator() + editOrRightClickMenu:addItem(localization.deleteLine, false, "^Del").onTouch = function() + deleteLine(cursor.position.line) + end + editOrRightClickMenu:addItem(localization.selectAndPasteColor, false, "^⇧C").onTouch = function() + selectAndPasteColor() + end + editOrRightClickMenu:addSeparator() + editOrRightClickMenu:addItem(localization.selectWord).onTouch = function() + selectWord() + end + editOrRightClickMenu:addItem(localization.selectAll, false, "^A").onTouch = function() + selectAll() + end + mainWindow.topMenu = mainWindow:addMenu(1, 1, 1, colors.topMenu.backgroundColor, colors.topMenu.textColor, colors.topMenu.backgroundPressedColor, colors.topMenu.textPressedColor) local item1 = mainWindow.topMenu:addItem("MineCode", 0x0) @@ -1088,37 +1135,8 @@ local function createWindow() local item3 = mainWindow.topMenu:addItem(localization.edit) item3.onTouch = function() - local menu = GUI.contextMenu(item3.x, item3.y + 1) - menu:addItem(localization.cut, not mainWindow.codeView.selections[1], "^X").onTouch = function() - cut() - end - menu:addItem(localization.copy, not mainWindow.codeView.selections[1], "^C").onTouch = function() - copy() - end - menu:addItem(localization.paste, not clipboard, "^V").onTouch = function() - paste(clipboard) - end - menu:addSeparator() - menu:addItem(localization.comment, false, "^/").onTouch = function() - toggleComment() - end - menu:addItem(localization.indent, false, "Tab").onTouch = function() - indentOrUnindent(true) - end - menu:addItem(localization.unindent, false, "⇧Tab").onTouch = function() - indentOrUnindent(false) - end - menu:addItem(localization.deleteLine, false, "^Del").onTouch = function() - deleteLine(cursor.position.line) - end - menu:addSeparator() - menu:addItem(localization.selectWord).onTouch = function() - selectWord() - end - menu:addItem(localization.selectAll, false, "^A").onTouch = function() - selectAll() - end - menu:show() + editOrRightClickMenu.x, editOrRightClickMenu.y = item3.x, item3.y + 1 + editOrRightClickMenu:show() end local item4 = mainWindow.topMenu:addItem(localization.view) @@ -1306,24 +1324,8 @@ local function createWindow() cursor.blinkState = true if eventData[5] == 1 then - local menu = GUI.contextMenu(eventData[3], eventData[4]) - menu:addItem(localization.cut, not mainWindow.codeView.selections[1], "^X").onTouch = function() - cut() - end - menu:addItem(localization.copy, not mainWindow.codeView.selections[1], "^C").onTouch = function() - copy() - end - menu:addItem(localization.paste, not clipboard, "^V").onTouch = function() - paste(clipboard) - end - menu:addSeparator() - menu:addItem(localization.selectWord).onTouch = function() - selectWord() - end - menu:addItem(localization.selectAll, false, "^A").onTouch = function() - selectAll() - end - menu:show() + editOrRightClickMenu.x, editOrRightClickMenu.y = eventData[3], eventData[4] + editOrRightClickMenu:show() else setCursorPositionAndClearSelection(convertScreenCoordinatesToCursorPosition(eventData[3], eventData[4])) @@ -1365,7 +1367,12 @@ local function createWindow() selectAll() -- C elseif eventData[4] == 46 then - copy() + -- Shift + if keyboard.isKeyDown(42) then + selectAndPasteColor() + else + copy() + end -- V elseif eventData[4] == 47 then paste(clipboard) diff --git a/lib/palette.lua b/lib/palette.lua index 80d8ce17..d4d5bdda 100755 --- a/lib/palette.lua +++ b/lib/palette.lua @@ -273,7 +273,7 @@ function palette.show(x, y, startColor) createCrestsCoordinates() refreshRainbows() - window.drawShadow = true + window.drawShadow = false drawAll() window.drawShadow = false