Reflex — File Browser

Reflexv0.1 / Reflexv0.1 / Reflex / system / scripts / sidebar.mrc

sidebar.mrc — 16.25 KB — Download this file

on *:start: { sidebar_cache }

alias sidebar_init {
  var %c = $cid , %w = $active
  if ($data(side_pos) == top) || ($data(side_pos) == bottom) { window -ipoB +dx @hide_sidebar 0 0 $window(-3).w $data(side_width) }
  else { window -ipoB +dx @hide_sidebar 0 0 $data(side_width) $window(-3).h }
  ktools DockWindow $window(@hide_sidebar).hwnd > $data(side_pos) 2
  sidebar_draw
  scon %c 
  window -ax $iif(%w == Status Window,"status window",%w)
  sz WatchWindow @hide_sidebar
}
alias sidebar_move {
  if ($istok(top bottom left right,$1,32)) && ($data(side_pos) != $1) { 
    data side_pos $1
    if ($1 == top) || ($1 == bottom) { window -ipoB +dx @hide_sidebar 0 0 $window(-3).w $data(side_width) }
    else { window -ipoB +dx @hide_sidebar 0 0 $data(side_width) $window(-3).h }
    ktools MoveDockWindow $window(@hide_sidebar).hwnd > $1 2
  }
}
alias sidebar_width {
  data side_width $1
  if ($data(side_pos) == top) || ($data(side_pos) == bottom) { window -ipoB +dx @hide_sidebar 0 0 $window(-3).w $data(side_width) }
  else { window -ipoB +dx @hide_sidebar 0 0 $data(side_width) $window(-3).h }
  ktools MoveDockWindow $window(@hide_sidebar).hwnd > $data(side_pos) 2
}
alias sidebar_draw {
  var %w = $iif($1,$1,@hide_sidebar) , %i = 1 , %h = 3
  if ($window(%w)) {
    if ($data(side_pos) == top) || ($data(side_pos) == bottom) {
      drawrect -frn %w $col(background) 1 0 0 $window(%w).w $data(side_width)
      while (%i <= $sidebar_item(0)) {
        if ($sidebar_item(%i).sep) { 
          drawline -nr %w $col(shadow) 1 %h 3 %h $calc($data(side_width) - 3)
          drawline -nr %w $col(highlight) 1 $calc(%h + 1) 3 $calc(%h + 1) $calc($data(side_width) - 3)
          inc %h 5
        }
        else {
          if ($temp(side_hover) == %i) && ($data(side_style) == 2) { drawrect -fnr %w $col(hover) 1 %h 2 $iif($data(side_width) > 40,40,22) $calc($data(side_width) - 4) }
          elseif ($temp(side_hover) == %i) && ($data(side_style) == 1) {
            drawline -nr %w $col(highlight) 1 $calc(%h + $iif($data(side_width) > 40,40,22)) 2 %h 2 %h $calc($data(side_width) - 2) 
            drawline -nr %w $col(shadow) 1 $calc(%h + $iif($data(side_width) > 40,40,22)) 2 $calc(%h + $iif($data(side_width) > 40,40,22)) $calc($data(side_width) - 2) %h $calc($data(side_width) - 2)
          }
          if ($data(side_style) == 2) {
            drawline -nr %w $col(highlight) 1 $calc(%h + $iif($data(side_width) > 40,40,22)) 2 %h 2 %h $calc($data(side_width) - 2) 
            drawline -nr %w $col(shadow) 1 $calc(%h + $iif($data(side_width) > 40,40,22)) 2 $calc(%h + $iif($data(side_width) > 40,40,22)) $calc($data(side_width) - 2) %h $calc($data(side_width) - 2) 
          }
          var %icon = $sidebar_item(%i).icon
          if (%icon isnum) { drawpic -sconr %w $calc(%h + $iif($data(side_width) > 40,6,3)) $calc(($data(side_width) / 2) - $iif($data(side_width) > 40,16,8)) $iif($data(side_width) > 40,32 32,16 16) %icon $icons }          
          else { drawpic -scnr %w $calc(%h + $iif($data(side_width) > 40,6,3)) $calc(($data(side_width) / 2) - $iif($data(side_width) > 40,16,8)) $iif($data(side_width) > 40,32 32,16 16) %icon }
          if ($sidebar_item(%i).popup) { 
            drawtext -onr %w $col(text) webdings 12 $calc((%h + $iif($data(side_width) > 40,36,20)) - ($height(5,webdings,12) / 2)) $calc($data(side_width) - 14) 5
          }
          inc %h $iif($data(side_width) > 40,44,26)
        }
        inc %i
      }
    }
    else {
      drawrect -frn %w $col(background) 1 0 0 $data(side_width) $window(%w).h
      while (%i <= $sidebar_item(0)) {
        if ($sidebar_item(%i).sep) { 
          drawline -nr %w $col(shadow) 1 3 %h $calc($data(side_width) - 3) %h
          drawline -nr %w $col(highlight) 1 3 $calc(%h + 1) $calc($data(side_width) - 3) $calc(%h + 1)
          inc %h 5
        }
        else {
          if ($temp(side_hover) == %i) && ($data(side_style) == 2) { drawrect -fnr %w $col(hover) 1 2 %h $calc($data(side_width) - 4) $iif($data(side_width) > 40,40,22) }
          elseif ($temp(side_hover) == %i) && ($data(side_style) == 1) {
            drawline -nr %w $col(highlight) 1 2 $calc(%h + $iif($data(side_width) > 40,40,22)) 2 %h $calc($data(side_width) - 2) %h 
            drawline -nr %w $col(shadow) 1 2 $calc(%h + $iif($data(side_width) > 40,40,22)) $calc($data(side_width) - 2) $calc(%h + $iif($data(side_width) > 40,40,22)) $calc($data(side_width) - 2) %h 
          }
          if ($data(side_style) == 2) {
            drawline -nr %w $col(highlight) 1 2 $calc(%h + $iif($data(side_width) > 40,40,22)) 2 %h $calc($data(side_width) - 2) %h 
            drawline -nr %w $col(shadow) 1 2 $calc(%h + $iif($data(side_width) > 40,40,22)) $calc($data(side_width) - 2) $calc(%h + $iif($data(side_width) > 40,40,22)) $calc($data(side_width) - 2) %h 
          }
          var %icon = $sidebar_item(%i).icon
          if (%icon isnum) { drawpic -sconr %w $calc(($data(side_width) / 2) - $iif($data(side_width) > 40,16,8)) $calc(%h + 2) $iif($data(side_width) > 40,32 32,16 16) %icon $icons }
          else { drawpic -scnr %w $calc(($data(side_width) / 2) - $iif($data(side_width) > 40,16,8)) $calc(%h + 2) $iif($data(side_width) > 40,32 32,16 16) %icon }
          if ($sidebar_item(%i).popup) { 
            drawtext -onr %w $col(text) webdings 12 $calc($data(side_width) - 14) $calc((%h + $iif($data(side_width) > 40,36,20)) - ($height(5,webdings,12) / 2)) 5
          }
          inc %h $iif($data(side_width) > 40,44,26)
        }
        inc %i
      }
    }
    drawline %w
  }
}

alias sidebar_cache {
  if ($hget(sidebarData)) hfree sidebarData
  hmake sidebarData 10
  var %i = 1, %t, %x
  .fopen sidebarData $sidebarData
  while (!$feof) {
    %t = $fread(sidebarData)
    tokenize 124 %t
    if (i isin $1) {
      hadd sidebarData $+(%i,.p) 1
      hadd sidebarData $+(%i,.v1) $2
      hadd sidebarData $+(%i,.c) $3
      hadd sidebarData $+(%i,.v2) $4
      hadd sidebarData $+(%i,.1.icon) $5
      hadd sidebarData $+(%i,.1.text) $6
      hadd sidebarData $+(%i,.1.command) $iif(c isin $1,$7)
      hadd sidebarData $+(%i,.1.popup) $iif(r isin $1,$iif(c isin $1,$8,$7))
      hadd sidebarData $+(%i,.0.icon) $9
      hadd sidebarData $+(%i,.0.text) $10
      hadd sidebarData $+(%i,.0.command) $iif(c isin $1,$11)
      hadd sidebarData $+(%i,.0.popup) $iif(r isin $1,$iif(c isin $1,$12,$11))
    }
    else {
      hadd sidebarData $+(%i,.icon) $2
      hadd sidebarData $+(%i,.text) $3
      hadd sidebarData $+(%i,.command) $iif(c isin $1,$4)
      hadd sidebarData $+(%i,.popup) $iif(r isin $1,$iif(c isin $1,$5,$4))
      hadd sidebarData $+(%i,.sep) $iif(%t == -,1)
    }
    inc %i
  }
  .fclose sidebarData
  hadd sidebarData lines $calc(%i - 1)
}

alias sidebar_item {
  if ($1 == 0) { return $hget(sidebarData,lines) }
  else {
    var %s = . , %v1 , %c , %v2
    if ($hget(sidebarData,$+($1,.p))) { 
      %v1 = $evalnext($hget(sidebarData,$+($1,.v1)))
      %c = $hget(sidebarData,$+($1,.c))
      %v2 = $evalnext($hget(sidebarData,$+($1,.v2)))
      if (%v1 %c %v2) { %s = .1. }
      else { %s = .0. }
      if ($2 == 1) { %s = .1. }
      elseif ($2 == 2) { %s = .0. } 
    } 
    return $hget(sidebarData,$+($1,%s,$prop))
  }
}

alias sidebar_getItem {
  var %h = 3 , %i = 1
  while (%i <= $sidebar_item(0)) {
    if ($sidebar_item(%i).sep) { inc %h 3 }
    if (%h > $1) { return } 
    if (!$sidebar_item(%i).sep) { inc %h $iif($data(side_width) > 40,42,24) }
    if (%h > $1) { return %i } 
    inc %i | inc %h 2
  }
}

menu @hide_sidebar {
  sclick: {
    if ($istok(top bottom,$data(side_pos),32)) && ($sidebar_getItem($mouse.x)) { $evalnext($sidebar_item($v1).command) } 
    elseif ($istok(left right,$data(side_pos),32)) && ($sidebar_getItem($mouse.y)) { $evalnext($sidebar_item($v1).command) } 
  }
  rclick: { 
    if ($istok(top bottom,$data(side_pos),32)) && ($sidebar_getItem($mouse.x)) { $evalnext($sidebar_item($v1).popup) }
    elseif ($istok(left right,$data(side_pos),32)) && ($sidebar_getItem($mouse.y)) { $evalnext($sidebar_item($v1).popup) }
    else {
      popup_create sidebar_popup
      popup_setstyle sidebar_popup colors $rgb(text) $rgb(shadow) $rgb(text) $rgb(shadow) $rgb(face) $rgb(face) $col(hover) 15394529 $rgb(frame) $rgb(face) $rgb(shadow)
      popup_add sidebar_popup Configure.. $cr sidebar_configure
      popup sidebar_popup
    }
  }
}

alias server_popup {
  popup_create server_popup
  popup_setstyle server_popup colors $rgb(text) $rgb(shadow) $rgb(text) $rgb(shadow) $rgb(face) $rgb(face) $col(hover) 15394529 $rgb(frame) $rgb(face) $rgb(shadow)
  popup_add server_popup  $+ $iif($status == connected,Disconnect,Connect) $cr $iif($status == connected,disconnect,server)
  popup_add server_popup -
  popup_add server_popup New server window $cr server -n
  popup_create server_popup_recent
  popup_setstyle server_popup_recent colors $rgb(text) $rgb(shadow) $rgb(text) $rgb(shadow) $rgb(face) $rgb(face) $col(hover) 15394529 $rgb(frame) $rgb(face) $rgb(shadow)
  var %i = 1
  while (%i <= $numtok($data(recent_servers),44)) {
    popup_add server_popup_recent %i $+ : $gettok($data(recent_servers),%i,44) $cr server $gettok($data(recent_servers),%i,44)
    inc %i
  }
  if (%i > 1) { popup_add -s server_popup Recent Servers $cr server_popup_recent }
  else { popup_add server_popup Recent Servers }
  popup server_popup
}

alias sidebar_configure {
  if (!$dialog(sidebar)) { dialog -mv sidebar sidebar }
  else { dialog -v sidebar sidebar }
}
dialog sidebar {
  title "Configure Toolbar..."
  size -1 -1 200 123
  option dbu
  list 1, 2 3 195 104, extsel size
  box "", 2, 2 122 195 67
  button "Delete", 5, 160 109 37 12, disable
  text "Icon", 6, 7 130 45 8
  edit "", 7, 54 129 118 10, autohs
  button "...", 8, 173 129 19 10
  button "Advanced...", 9, 112 174 42 12
  button "Edit...", 3, 120 109 37 12, disable
  button "New...", 4, 80 109 37 12
  box "Advanced Options", 10, 2 190 195 67
  text "False Tooltip Text", 11, 7 221 45 9
  edit "", 12, 54 140 118 10, autohs
  text "Left Click Alias", 13, 7 152 45 8
  edit "", 14, 54 151 118 10, autohs
  button "Add", 15, 157 174 37 12
  text "If Statement", 16, 7 199 32 9
  edit "", 17, 54 197 40 11, autohs
  edit "", 18, 132 197 40 11, autohs
  combo 19, 96 197 34 51, size drop
  text "False Icon", 20, 7 210 32 9
  edit "", 21, 54 208 118 11, autohs
  text "Tooltip Text", 22, 7 141 45 8
  edit "", 23, 54 162 118 10, autohs
  text "Right Click Alias", 24, 7 163 45 8
  edit "", 25, 54 220 118 10, autohs
  text "False sclick alias", 26, 7 232 45 9
  text "False rclick alias", 27, 7 243 45 9
  edit "", 28, 54 231 118 10, autohs
  edit "", 29, 54 242 118 10, autohs
  button "-", 30, 2 109 12 12
  button "Button", 31, 36 53 37 12, hide default ok
  button "5", 32, 16 109 12 12, disable
  button "6", 33, 30 109 12 12, disable
}
on *:dialog:sidebar:init:0: {
  mdx SetMircVersion $version
  mdx MarkDialog $dname
  mdx SetDialog $dname Icon
  mdx SetFont $dname 32,33 18 400 Webdings
  mdx SetControlMDX 1 listview report single nosortheader rowselect showsel > $mdx_views
  did -i sidebar 1 1 headerdims 40:1 auto:2 auto:3
  did -i sidebar 1 1 headertext + 0 Icon $+ $chr(9) $+ + 0 Alias $+ $chr(9) $+ + 0 Tooltip
  sidebar_list
  var %i = 1, %s = ==,!=,>,>=,<,<=,//,\\,&,isin,isincs,iswm,!isin,!iswm
  while (%i <= $numtok(%s,44)) { did -a sidebar 19 $gettok(%s,%i,44) | inc %i }
}
alias sidebar_list {
  did -r sidebar 1
  did -i sidebar 1 1 clearicons list
  var %i = 1 , %x = 0 , %l
  while (%i <= $sidebar_item(0)) {
    if ($sidebar_item(%i).sep) {
      did -a sidebar 1 + 0 0 0 $+ $chr(9) $+ -
    }
    else {
      %l = $sidebar_item(%i,1).icon
      if (%l isnum) {
        if (%l != $null) {
          did -i sidebar 1 1 seticon list 0 %l $+ , $+ $icons
          inc %x
        }
      }
      elseif {%l != $null) {
        did -i sidebar 1 1 seticon list 0 %l
        inc %x
      }
      did -a sidebar 1 + %x 0 0 $+ $chr(9) $+ / $+ $sidebar_item(%i,1).command $+ $chr(9) $+ $sidebar_item(%i,1).text
    }
    inc %i
  }
  did -i sidebar 1 1 headerdims 40:1 auto:2 auto:3
  did -b sidebar 32,33,5,3
}
on *:dialog:sidebar:sclick:8: {
  did -o sidebar 7 1 $$sfile($icodir)
}
on *:dialog:sidebar:sclick:4: {
  if ($dialog(sidebar).ch == $calc(191 * $dbuh)) || ($dialog(sidebar).ch == $calc(258 * $dbuh)) && ($did($dname,15) != Apply) {
    dialog -s sidebar -1 -1 $calc(200 * $dbuw) $calc(123 * $dbuh)
  }
  else { dialog -s sidebar -1 -1 $calc(200 * $dbuw) $calc(191 * $dbuh) | did -o sidebar 15 1 Add }
}
on *:dialog:sidebar:sclick:3: {
  if ($dialog(sidebar).ch == $calc(191 * $dbuh)) || ($dialog(sidebar).ch == $calc(258 * $dbuh)) && ($did($dname,15) != Add) {
    dialog -s sidebar -1 -1 $calc(200 * $dbuw) $calc(123 * $dbuh)
  }
  else { 
    var %n = $calc($did($dname,1,1).sel - 1) , %t = $sidebar_item(%n)
    did -r sidebar 7,12,14,23,18,17,21,25,28,29
    did -c sidebar 19 0
    if ($sidebar_item(%n,1).icon != $null) { did -a sidebar 7 $v1 }
    if ($sidebar_item(%n,1).text) { did -a sidebar 12 $v1 }
    if ($sidebar_item(%n,1).command) { did -a sidebar 14 $v1 }
    if ($sidebar_item(%n,1).popup) { did -a sidebar 23 $v1 }
    if ($hget(sidebarData,$+(%n,.p))) {
      did -a sidebar 17 $hget(sidebarData,$+(%n,.v1))
      did -a sidebar 18 $hget(sidebarData,$+(%n,.v2))
      did -c sidebar 19 $findtok(== != > >= < <= // \\ & isin isincs iswm !isin !iswm,$hget(sidebarData,$+(%n,.c)),32)
      if ($sidebar_item(%n,2).icon != $null) { did -a sidebar 21 $v1 }
      if ($sidebar_item(%n,2).text) { did -a sidebar 25 $v1 }
      if ($sidebar_item(%n,2).command) { did -a sidebar 28 $v1 }
      if ($sidebar_item(%n,2).popup) { did -a sidebar 29 $v1 }
    }
    did -o sidebar 15 1 Apply
    dialog -s sidebar -1 -1 $calc(200 * $dbuw) $calc(191 * $dbuh) 
  }
}
on *:dialog:sidebar:sclick:9: {
  if ($dialog(sidebar).ch == $calc(258 * $dbuh)) {
    dialog -s sidebar -1 -1 $calc(200 * $dbuw) $calc(191 * $dbuh)
  }
  else { dialog -s sidebar -1 -1 $calc(200 * $dbuw) $calc(258 * $dbuh) } 
}
on *:dialog:sidebar:sclick:15: {
  var %f 
  if (($did($dname,17))&&($did($dname,18))&&($did($dname,19).sel)) { %f = i }
  if ($did($dname,14)) { %f = %f $+ c }
  if ($did($dname,23)) { %f = %f $+ r }
  var %s = %f
  if (i isin %f) { %s = $+(%s,|,$did($dname,17),|,$did($dname,19).seltext,|,$did($dname,18)) }
  if ($did($dname,7) != $null) { 
    if ($isfile($did($dname,7))) { %s = $+(%s,|,$shortfn($did($dname,7))) }
    else { %s = $+(%s,|,$did($dname,7)) }
  }
  else { %s = $+(%s,|,$icodir $+ blank.ico) }
  if ($did($dname,12)) { %s = $+(%s,|,$v1) }
  else { %s = $+(%s,|, ) }
  if (c isin %f) { %s = $+(%s,|,$did($dname,14)) }
  if (r isin %f) { %s = $+(%s,|,$did($dname,23)) }
  if (i isin %f) {
    if ($did($dname,21) != $null) { 
      if ($isfile($did($dname,21))) { %s = $+(%s,|,$shortfn($did($dname,21))) }
      else { %s = $+(%s,|,$did($dname,21)) }
    }
    else { %s = $+(%s,|,$icodir $+ blank.ico) }
    if ($did($dname,25)) { %s = $+(%s,|,$v1) }
    else { %s = $+(%s,|,No Tooltip) }
    if ($did($dname,28)) { %s = $+(%s,|,$v1) }
    if ($did($dname,29)) { %s = $+(%s,|,$v1) }
  }
  if ($did($dname,15) == Add) {
    write $sidebarData %s
    sidebar_list | sidebar_draw
  }
  elseif ($did($dname,15) == Apply) {
    write -l $+ $calc($did($dname,1,1).sel - 1) $sidebarData %s
    sidebar_list | sidebar_draw
  }
  sidebar_cache
}
on *:dialog:sidebar:sclick:30: {
  write $sidebarData -
  sidebar_list
}
on *:dialog:sidebar:sclick:1,5,32,33: {
  var %n = $calc($did($dname,1,1).sel - 1)
  if (%n > 0) {
    if ($did == 1) { 
      dialog -s sidebar -1 -1 $calc(200 * $dbuw) $calc(123 * $dbuh)
      var %e = 32,33
      did -b sidebar %e
      if (%n == $lines($sidebardata)) { %e = 32,5,3 }
      if (%n == 1) { %e = $remtok(%e,32,1,44) }
      did -e sidebar 5,3, $+ %e
    }
    if ($did == 5) { write -dl $+ %n $sidebarData | sidebar_list | sidebar_draw }
    if ($did == 32) { 
      write -il $+ $calc(%n - 1) $sidebardata $read($sidebardata,n,%n)
      write -dl $+ $calc(%n + 1) $sidebarData
      sidebar_list | sidebar_draw
    }
    if ($did == 33) { 
      write -il $+ $calc(%n + 2) $sidebardata $read($sidebardata,n,%n)
      write -dl $+ %n $sidebarData
      sidebar_list | sidebar_draw
    }
  }
}