Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » JPEGView

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

Krot66



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
#NoEnv  
SetWorkingDir %A_ScriptDir%
#SingleInstance, force
Menu Tray, Icon, shell32.dll, 42
SetKeyDelay 50, 50
SetBatchLines, -1
CoordMode ToolTip
CoordMode Mouse
 
/*
В основном решает вопросы нормального, не утомляющего глаза отображения названий, улучшенной навигации и слайдшоу, расширенного использования мыши и поиска информации о файле.
 
В полноэкранном режиме скрипт выводит в нижней части экрана тонкое, настраиваемое и не скрывающее изображение окно с именем файла, тремя текстовыми кнопками и текущим временем (включается и выключается по Ctrl+Space или правым кликом внизу экрана). Нажатие средней кнопкой мыши внизу экрана делает панель двухстрочной, что может быть полезно при длинных названиях.
 
Здесь:
Exif - окно вывода метаданных файла. Поддерживается открытие данных геолокации в Google Maps, Google Earth и SAS.Planet. Необходимо скачать Windows-версию ExifTool  на http://www.sno.phy.queensu.ca/~phil/exiftool/ , распаковать в папку программы и переименовать файл в exiftool.exe. ExifTool не понимает юникодные символы в имени файла!
Google - поиск в Google по имени файла без расширения.
TinEye - поиск похожих изображений с TinEye (загружает сайт и выводит вверху экрана подсказу с предложением нажать кнопку выбора файла - после нажатия скрипт вставляет путь к файлу и отправляет запрос).
Нажатие на часы отправляет имя файла в Google Translate.
Нажатие на имя файла скрывает или показывает дополнительные кнопки, освобождая место для длинных имен файлов. Если этого мало, щелчком средней кнопки мыши внизу экрана можно сделать панель двустрочной.
 
В полноэкранном режиме можно перематывать кадры с помощью кнопок мыши при нахождении курсора у левого или правого края экрана. (Возможна перемотка при удержании кнопок, скрость определяется параметром MinimalDisplayTime в JPEGView.ini). Cтроку "MouseDblClk  IDM_EXIT" в KeyMap.ini лучше закоментировать или удалить, чтобы случайно не закрывалось окно программы.
 
Щелчок средней кнопки мыши у левого края экрана в полноэкранном режиме запускает слайдшоу в прямом направлении, у правого - в обратном, при этом колесиком  у края регулируется его скорость (текущая задержка отображается тултипом). Еще один щелчок средней кнопкой у края, выход из полноэкранного режима или Escape останавливают слайдшоу.
 
По Ctrl+O, Alt+Up или Alt+Down выводит увеличенное окно эксплорера c подсветкой текущего файла. Возможно быстрое и удобное перемещение по папкам с Alt+Up,Left,Right и Backspace. Средняя кнопка мыши в этом окне дает подъем на один уровень вверх.
 
Правый клик у верхнего края экрана включает и выключает отображение имени файла вверху окна, средний - работает как Ctrl+O
*/
 
;------ Настройки --------
panel:=1 ; 1 - включение нижней панели в полноэкранном режиме по умолчанию
double:=0 ; 1 - двустрочная панель по умолчанию
b_color:="292929" ; цвет панели
f_size:=13 ; размер шрифта панели
t_color:="53A600" ; цвет шрифта
marg:=2 ; поля текста
button_width:=120 ; ширина текстовых кнопок
delay:=3 ; стартовая задержка при слайдшоу, с
exif_tags:="File Name,Directory,File Size,File Modification Date/Time,File Creation Date/Time,File Permissions,File Type,|,Image Size,Megapixels,Encoding Process,Color Space,Bits Per Sample,Color Components,Camera Model Name,Orientation,ISO,Exposure Time,X Resolution,Y Resolution,Software,Location,Creator Work URL,Image Description,Warning" ; тэги EXIF, отображаемые при кратком варианте просмотра, через запятую (скопировать нужные из полного; порядок учитывается,"|" - пустая строка)
googleearth:="" ; путь к Google Earth для открытия данных GPS
sasplanet:="" ; то же для SAS.Planet
 
goto start
;------ Горячие клавиши --------
#If WinActive("ahk_id " id)
^Space::panel:=!panel ; Ctrl+Space - включение/выключение нижней панели
+Space::double:=!double, upd:=1 ; Shift+Space - включение/выключение двустрочности
^vkE2::goto FileName ; Ctrl+| - скрытие/включение кнопок панели  
!Up::goto ^vk4F ; Alt+Up - открытие увеличенной панели проводника
!Down::goto ^vk4F ; Alt+Down - то же
^vk45::goto Exif ; Ctrl+E - окно Exif
^vk46::goto Search ; Ctrl+F - поиск по имени файла в Google
^vk54::goto TinEye ; Ctrl+T - поиск похожих изображений в TinEye
^vk47::goto Translate ; Ctrl+G - перевод названия с Google Translate
NumpadIns::Send {F11} ; Серый Ins - полноэкранный/оконный режим
#If WinActive("ahk_id " id) && !IsBorder(1,1,1,1)
MButton:: ; Средняя кнопка мыши - полноэкранный/оконный режим
MouseGetPos, , , mt
If (mt=id)
    Send {F11}
return
#IfWinActive
 
start:
n:=0, slideshow:=0, show_full:=0
SetFormat float, 2.1
SysGet, M, Monitor
Loop
{
    If !id0:=WinExist("ahk_exe JPEGView.exe")
    {
        n:=0
        Gui Destroy
        WinShow, ahk_class Shell_TrayWnd
        continue
    }
    n+=1  
    If (n=1)
        id:=id0        
    If IsFullScreen("ahk_id " id) && panel
    {        
        If !WinExist("bottom_window") || upd
        {
            panel_width:=MRight
            If !show_full
                panel_width-=button_width*4+marg*8        
            str:=double+1, upd:=""
            Gui Destroy
            Gui font, Arial bold s%f_size% c%t_color%
            Gui Margin, % marg*8, % marg                        
            Gui -Caption +ToolWindow -DPIScale +AlwaysOnTop +LastFound
            Gui Color, % b_color
            Gui, Add, Text, R%str% w%panel_width% gFileName
            Gui, Add, Text, x+0 w%button_width% R%str% Center gExif, Exif
            Gui, Add, Text, x+0 wp R%str% Center gSearch, Google
            Gui, Add, Text, x+0 wp R%str% Center gTinEye, TinEye
            Gui, Add, Text, x+0 wp R%str% Center gTranslate
            Gui Show, % "x" 0 "y" MBottom-50 "NA", bottom_window
        }                
        else
        {    
            WinGetPos, , , , hwin, bottom_window
            WinMove bottom_window , , , MBottom-hwin
            WinMove % "ahk_id " id, , , , , MBottom-hwin
            WinHide, ahk_class Shell_TrayWnd
            WinGetTitle t,% "ahk_id " id            
            RegExMatch(t,"i).+(\.[a-z]{2,4}|/\d+])",t_curr)
            ControlGetText t_old, Static1, bottom_window
            If (t_curr!=t_old)
            {
                ControlSetText Static1, % t_curr, bottom_window
                t_old:=t_curr
            }
            FormatTime time, ,HH:mm
            ControlSetText Static5, % time, bottom_window
        }            
    }
    else If !(WinExist("ahk_class #32768") || WinActive("ahk_id " id2) || WinActive("ahk_exe Autohotkey.exe"))
    {
        If slideshow
        {
            slideshow:=0
            ToolTip Slideshow off
            SetTimer, RemoveToolTip, 1000
        }            
        Gui Destroy
        WinShow, ahk_class Shell_TrayWnd
        If IsFullScreen("ahk_id " id)
            WinMove % "ahk_id " id, , , , , MBottom
    }
    If slideshow
    {
        Sleep delay*1000
        Send {%key%}
    }
    else
        Sleep 10
}
 
#If IsFullScreen("ahk_id " id) && IsBorder(0,0,1)
RButton::Send ^{F2}
MButton::goto ^vk4F
 
#If WinActive("ahk_id " id2)
MButton::Bs
 
#If IsFullScreen("ahk_id " id) && IsBorder(0,0,0,1)
RButton::panel:=!panel
MButton::double:=!double, upd:=1
 
#If IsFullScreen("ahk_id " id) && IsBorder(1,1)
LButton::
While GetKeyState("LButton","P")
{
    Send {PGDN}        
    If (A_Index=1)
        Sleep 250
    Sleep 10
    
}
return
RButton::
While GetKeyState("RButton","P")
{
    Send {PGUP}    
    If (A_Index=1)
        Sleep 250
    Sleep 10
    
}
return
MButton::
Thread Priority, 1
slideshow:=!slideshow
If slideshow
{
    key:="PGDN", direct:=">>>"
    If IsBorder(,1)
        key:="PGUP", direct:="<<<"
    ttip:="Slideshow`n" direct "`nDelay " delay " c"
}
else
    ttip:="Slideshow off"
ToolTip % ttip
SetTimer, RemoveToolTip, 1000
return
#If IsFullScreen("ahk_id " id) && IsBorder(1,1) && slideshow
WheelUp::
delay+=0.5
ToolTip % "Delay `n" delay " c"
SetTimer, RemoveToolTip, 1000    
return
WheelDown::
If (delay>=1)
    delay-=0.5
ToolTip % "Delay `n" delay " c"
SetTimer, RemoveToolTip, 1000    
return
 
RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip
return
 
#If WinActive("ahk_id " id) && slideshow
Escape::slideshow:=0
 
#If WinActive("ahk_id " id)
^vk4F::
Send ^{vk4F}
WinWaitNotActive % "ahk_id " id, , 3
Sleep 100
WinGet id2, ID, A
WinMove A , , MRight//20, MBottom//20, MRight*0.9, MBottom*0.9
ControlGetText tt, Edit1, % "ahk_id " id2
ControlFocus SysListView321, % "ahk_id " id2
Send ^+{2}
SendInput % tt
return
#IfWinActive
 
FileName:
Gui Destroy
show_full:=!show_full, upd:=1
return
 
Translate:
translate:="www.translate.google.com/#auto|ru|%s"
StringReplace url, translate, `%s, % RegExReplace(t_curr,"\..+?$")
Run % url
return
 
Search:
search:="https://www.google.ru/search?client=opera&q=%s&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest&gws_rd=ssl"
StringReplace url, search, `%s, % RegExReplace(t_curr,"\..+?$")
Run % url
return
 
TinEye:
clip:=ClipboardAll
Clipboard:=""
WinActivate ahk_exe JPEGView.exe
Send ^{vk43}
ClipWait 3
If Errorlevel
    return
Sleep 200
WinMinimize ahk_exe JPEGView.exe
Run https://www.tineye.com/
WinWaitNotActive % "ahk_id " id, 3
Sleep 1000
ToolTip Нажмите кнопку выбора файла, MRight//2-50, 0
WinWaitActive ahk_class #32770, , 20
ToolTip
If Errorlevel
    return    
ControlSetText Edit1, % Clipboard
ControlSend Edit1, {Enter}
Clipboard:=clip
return
 
Exif:
clip:=ClipboardAll
Clipboard:=""
WinActivate ahk_exe JPEGView.exe
WinGet jpegview_path, ProcessPath, ahk_exe JPEGView.exe
SplitPath jpegview_path, , jpegview_dir
exif:=jpegview_dir "\exiftool.exe"
Send ^{vk43}
ClipWait 3
If Errorlevel
    return
SplitPath Clipboard, f_name, f_dir
FileDelete exif_out.*
exif_cmd="%exif%" -g -c `%.6f degrees "%Clipboard%" > "exif_out.txt"
RunWait %comspec% /c "%exif_cmd%", , Min  
exif_full:="", exif_short:="", gps:=""
FileRead exif_full, exif_out.txt
exif_full:=RegExReplace(exif_full,":\s*\R",": ---\r\n")
exif_full:=RegExReplace(exif_full,"m)^---","`r`n          ---")
RegExMatch(exif_full,"m)GPS Latitude\s*:\s*\K[\d.]+",gps_lat)
RegExMatch(exif_full,"m)GPS Longitude\s*:\s*\K[\d.]+",gps_lon)
Loop Parse, exif_tags, CSV
{
    field:=A_LoopField
    If (field="|")
        exif_short.="`r`n", break
    Loop Parse, exif_full, `r`n
    {
        If (RegExReplace(A_LoopField,"\s*:.+$")=field)
            exif_short.=A_LoopField "`r`n", break
    }
}            
Gui 2:Destroy
Gui 2:+ToolWindow -DPIScale +AlwaysOnTop
Gui 2:Margin, 4, 4
Gui 2:Color, 292929
Gui 2:Font, s13 bold c%t_color%, Arial
GUi 2:Add, Text, y+4 w498 h36 Center gShort, Short
Gui 2:Add, Text, x+0 yp hp Center, |
Gui 2:Add, Text, x+0 yp w498 hp Center gFull, Full
gui 2:Font, s14 bold, Courier New
Gui 2:Add, Edit, % "xs w1000 h" MBottom-200 " ReadOnly"
If gps_lat && gps_lon
{
    width:=1000
    If googleearth && sasplanet
        width:=333
    If (googleearth && !sasplanet) || (!googleearth && sasplanet)
        width:=500    
    Gui 2:Font, s13 bold, Arial    
    Gui 2:Add, Text, x0 w%width% h36 Center gGMaps, Google Maps
    If googleearth
        Gui 2:Add, Text, x+0 wp hp Center ggoogleearth, Google Earth
    If sasplanet
        Gui 2:Add, Text, x+0 wp hp Center gsasplanet, SAS.Planet
}
Gui 2:Show, Center, Exif
ControlSetText Edit1,% exif_short, Exif
FileDelete exif_out.*
Clipboard:=clip
return
 
2GuiEscape:
WinClose Exif
FileDelete exif_out.*
return
 
Short:
ControlSetText Edit1,% exif_short, Exif
return
 
Full:
ControlSetText Edit1,% exif_full, Exif
return
 
GMaps:
Sleep 200
WinClose Exif
Run % "https://www.google.com/maps/place/" gps_lat "," gps_lon
return
 
googleearth:
Sleep 200
WinClose Exif
FileAppend % "<?xml version=""1.0"" encoding=""UTF-8""?>`r`n<kml xmlns=""http://www.opengis.net/kml/2.2""> <Placemark>`r`n<name>" f_name "</name>`r`n<description>Folder: " f_dir "</description>`r`n<Point>`r`n<coordinates>" gps_lon "," gps_lat "</coordinates>`r`n</Point>`r`n</Placemark> </kml>", exif_out.kml, UTF-8
Run "%googleearth%" "%A_ScriptDir%\exif_out.kml"
return
 
sasplanet:
Sleep 200
WinClose Exif
Run "%sasplanet%" --zoom=15 --move=(%gps_lon%`,%gps_lat%)
return
 
IsBorder(left:="",right="",top="",bottom:="",m=20)
{
    SysGet, M, Monitor
    CoordMode Mouse
    MouseGetPos mx, my
    return If ((left && mx<m) || (right && mx>MRight-m) || (top && my<m) || (bottom && my>MBottom-m))    
}
 
IsFullScreen(title)
{
    WinGet st, Style, % title
    return If (!(st & 0x00010000) && !(st & 0x80000000) && (st & 0x10000000) && WinActive(title))  
}
 
 

Всего записей: 1202 | Зарегистр. 10-12-2007 | Отправлено: 13:45 15-06-2015 | Исправлено: Krot66, 10:45 03-07-2015
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » JPEGView


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru