some tweaking of gen4 ui, still thinking on a minimal module strategy to use...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2014-07-21 02:30:24 +04:00
parent 3f264e6491
commit b53429319f
4 changed files with 185 additions and 55 deletions

8
ui (gen4)/css/layout.css Normal file → Executable file
View File

@ -177,8 +177,8 @@ button:hover {
/********************************************************** Viewer ***/
.viewer {
position: relative;
width: 100%;
height: 100%;
width: 100vw;
height: 100vh;
overflow: hidden;
/*border: solid blue 1px;*/
@ -756,14 +756,14 @@ button:hover {
box-sizing: border-box;
border-radius: 50%;
background: blue;
left: -25;
left: -25px;
}
.marks-visible.single-image-mode.viewer .mark:after {
display: none;
}
.mark.bookmark:after {
background: yellow;
left: -15;
left: -15px;
}
/****************************************************** Image info ***/
.inline-image-info {

View File

@ -277,8 +277,8 @@ button:hover {
/********************************************************** Viewer ***/
.viewer {
position: relative;
width: 100%;
height: 100%;
width: 100vw;
height: 100vh;
overflow: hidden;
/*border: solid blue 1px;*/
@ -716,7 +716,7 @@ button:hover {
background: blue;
left: -25;
left: -25px;
}
.marks-visible.single-image-mode.viewer .mark:after {
display: none;
@ -724,7 +724,7 @@ button:hover {
.mark.bookmark:after {
background: yellow;
left: -15;
left: -15px;
}

View File

@ -6,51 +6,132 @@
<link rel="stylesheet" href="css/editor.css">
<script src="ext-lib/jquery.js"></script>
<script src="ext-lib/jquery-ui.js"></script>
<script src="lib/jli.js"></script>
<script src="lib/keyboard.js"></script>
<script src="actions.js"></script>
<!--script src="interaction.js"></script-->
<script src="data.js"></script>
<script src="viewer.js"></script>
<script src="ribbons.js"></script>
<script src="images.js"></script>
<script src="image.js"></script>
<script src="loader.js"></script>
<script>
var gui = require('nw.gui')
window.toggleFullscreenMode = createCSSClassToggler(
document.body,
'.full-screen-mode',
function(action){
gui.Window.get().toggleFullscreen()
})
window.closeWindow = function(){
gui.Window.get().close()
}
window.showDevTools = function(){
gui.Window.get().showDevTools()
}
window.reload = function(){
gui.Window.get().reload()
}
window.setWindowTitle = function(text){
var title = text +' - '+ CONFIG.app_name
gui.Window.get().title = title
$('.title-bar .title').text(title)
}
var GLOBAL_KEYBOARD = {
'Global bindings': {
doc: 'NOTE: binding priority is the same as the order of sections '+
'on this page.',
pattern: '*',
F4: {
alt: doc('Close viewer',
function(){
closeWindow()
return false
}),
},
F5: doc('Full reload viewer',
function(){
/*
killAllWorkers()
.done(function(){
reload()
})
*/
reload()
return false
}),
F12: doc('Show devTools',
function(){
showDevTools()
return false
}),
// NOTE: these are for systems where F** keys are not available
// or do other stuff...
R: {
/*
'ctrl+alt': doc('Reload viewer',
function(){
reloadViewer()
return false
}),
*/
'ctrl+shift': 'F5',
},
P: {
'ctrl+shift': 'F12',
},
// NOTE: this is handled by the wrapper at this point, so we do
// not have to do anything here...
F11: doc('Toggle full screen view', function(){
toggleFullscreenMode()
return false
}),
F: {
ctrl: 'F11',
},
},
}
$(function(){
$(document)
.keydown(makeKeyboardHandler(
GLOBAL_KEYBOARD,
function(k){
window.DEBUG && console.log(k)
}))
})
</script>
</head>
<body>
<!-- This is the basic viewer structure...
<!-- for viewer structure doc see: ribbons.js... -->
Unpopulated
NOTE: there can be only .ribbon-set element.
<div class="viewer">
<div class="ribbon-set"></div>
</div>
Populated
<div class="viewer">
<div class="ribbon-set">
<div class="ribbon">
<div class="image"></div>
<div class="image"></div>
...
</div>
<div class="ribbon">
<div class="image"></div>
<div class="current image"></div>
<div class="image"></div>
<div class="mark selected"></div>
<div class="image"></div>
...
</div>
...
</div>
</div>
-->
<div class="viewer">
<div class="viewer dark">
<div class="ribbon-set"></div>
<!-- XXX should these be here??? -->
<!-- XXX should these be here???
<div class="overlay-block">
<div class="background"></div>
<div class="content"></div>
</div>
-->
</div>

View File

@ -8,9 +8,60 @@
//var DEBUG = DEBUG != null ? DEBUG : true
/*********************************************************************/
//
// This xpects the folowing HTML structure...
//
// Unpopulated:
// NOTE: there can be only .ribbon-set element.
//
// <div class="viewer">
// <div class="ribbon-set"></div>
// </div>
//
//
// Populated:
//
// <div class="viewer">
// <div class="ribbon-set">
// <div class="ribbon">
// <div class="image"></div>
// <div class="image"></div>
// ...
// </div>
// <div class="ribbon">
// <div class="image"></div>
// <div class="current image"></div>
// <div class="image"></div>
// <div class="mark selected"></div>
// <div class="image"></div>
// ...
// </div>
// ...
// </div>
// </div>
//
//
/*********************************************************************/
var RibbonsClassPrototype = {
// NOTE: these will return unattached objects...
createViewer: function(){
return $('<div>')
.addClass('viewer')
.append($('<div>')
.addClass('ribbon-set'))
},
createRibbon: function(gid){
return $('<div>')
.addClass('ribbon')
.setAttribute('gid', JSON.stringify(gid))
},
createImage: function(gid){
return $('<div>')
.addClass('image')
.setAttribute('gid', JSON.stringify(gid))
},
}
@ -20,6 +71,11 @@ var RibbonsPrototype = {
//
// .viewer (jQuery object)
//
// Constructors...
createViewer: RibbonsClassPrototype.createViewer,
createRibbon: RibbonsClassPrototype.createRibbon,
createImage: RibbonsClassPrototype.createImage,
// NOTE: these accept gids or jQuery objects...
getRibbon: function(target){
@ -41,18 +97,6 @@ var RibbonsPrototype = {
return $(target).filter('.image')
},
// NOTE: these will return unattached objects...
createRibbon: function(gid){
return $('<div>')
.addClass('ribbon')
.setAttribute('gid', JSON.stringify(gid))
},
createImage: function(gid){
return $('<div>')
.addClass('image')
.setAttribute('gid', JSON.stringify(gid))
},
// NOTE: to remove a ribbon or an image just use .getRibbon(..).remove()
// and .getImage(...).remove() respectivly.
@ -83,8 +127,12 @@ var RibbonsPrototype = {
position = position < 0 ? 0 : position
// place the ribbon...
if(ribbons.length <= position){
if(ribbons.length == 0){
this.viewer.find('ribbon-set').append(ribbon)
} else if(ribbons.length <= position){
ribbons.last().after(ribbon)
} else {
ribbons.eq(position).before(ribbon)
}
@ -134,8 +182,9 @@ var RibbonsPrototype = {
position = position < 0 ? 0 : position
// place the image...
if(images.length <= position){
if(images.length == 0 || images.length <= position){
ribbon.append(image)
} else {
images.eq(position).before(image)
}