REF move all widget building to common
This commit is contained in:
parent
b5f3272c30
commit
0c655fadb9
|
@ -3,6 +3,7 @@ local M = {}
|
|||
local Util = require 'Util'
|
||||
local Arc = require 'Arc'
|
||||
local Text = require 'Text'
|
||||
local CompoundBar = require 'CompoundBar'
|
||||
local CriticalText = require 'CriticalText'
|
||||
local TextColumn = require 'TextColumn'
|
||||
local Line = require 'Line'
|
||||
|
@ -56,19 +57,13 @@ end
|
|||
M.normal_font_spec = M.make_font_spec(FONT, NORMAL_FONT_SIZE, false)
|
||||
M.label_font_spec = M.make_font_spec(FONT, PLOT_LABEL_FONT_SIZE, false)
|
||||
|
||||
M.left_text_style = _G_Widget_.text_style(
|
||||
M.normal_font_spec,
|
||||
_G_Patterns_.INACTIVE_TEXT_FG,
|
||||
'left',
|
||||
'center'
|
||||
)
|
||||
local _text_row_style = function(x_align, color)
|
||||
return _G_Widget_.text_style(M.normal_font_spec, color, x_align, 'center')
|
||||
end
|
||||
|
||||
M.right_text_style = _G_Widget_.text_style(
|
||||
M.normal_font_spec,
|
||||
_G_Patterns_.PRIMARY_FG,
|
||||
'right',
|
||||
'center'
|
||||
)
|
||||
M.left_text_style = _text_row_style('left', _G_Patterns_.INACTIVE_TEXT_FG)
|
||||
|
||||
M.right_text_style = _text_row_style('right', _G_Patterns_.PRIMARY_FG)
|
||||
|
||||
local _bare_text = function(pt, text, style)
|
||||
return _G_Widget_.plainText(pt, text, style)
|
||||
|
@ -236,6 +231,19 @@ M.annotated_scale_plot_set = function(asp, cr, value)
|
|||
ScalePlot.update(asp.plot, cr, value)
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- arc (TODO this is just a dummy now to make everything organized
|
||||
|
||||
-- TODO perhaps implement this is a special case of compound dial where
|
||||
-- I have multiple layers on top of each other
|
||||
|
||||
M.arc = function(x, y, r, thickness, pattern)
|
||||
return _G_Widget_.Arc(
|
||||
_G_Widget_.make_semicircle(x, y, r, 90, 360),
|
||||
_G_Widget_.arc_style(thickness, pattern)
|
||||
)
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- ring
|
||||
|
||||
|
@ -282,15 +290,19 @@ end
|
|||
--------------------------------------------------------------------------------
|
||||
-- dial
|
||||
|
||||
local threshold_indicator = function(threshold)
|
||||
return _G_Widget_.threshold_style(
|
||||
_G_Patterns_.INDICATOR_FG_PRIMARY,
|
||||
_G_Patterns_.INDICATOR_FG_CRITICAL,
|
||||
threshold
|
||||
)
|
||||
end
|
||||
|
||||
M.dial = function(x, y, radius, thickness, threshold)
|
||||
return _G_Widget_.Dial(
|
||||
_G_Widget_.make_semicircle(x, y, radius, DIAL_THETA0, DIAL_THETA1),
|
||||
_G_Widget_.arc_style(thickness, _G_Patterns_.INDICATOR_BG),
|
||||
_G_Widget_.threshold_style(
|
||||
_G_Patterns_.INDICATOR_FG_PRIMARY,
|
||||
_G_Patterns_.INDICATOR_FG_CRITICAL,
|
||||
threshold
|
||||
)
|
||||
threshold_indicator(threshold)
|
||||
)
|
||||
end
|
||||
|
||||
|
@ -302,16 +314,53 @@ M.compound_dial = function(x, y, outer_radius, inner_radius, thickness,
|
|||
return _G_Widget_.CompoundDial(
|
||||
_G_Widget_.make_semicircle(x, y, outer_radius, DIAL_THETA0, DIAL_THETA1),
|
||||
_G_Widget_.arc_style(thickness, _G_Patterns_.INDICATOR_BG),
|
||||
_G_Widget_.threshold_style(
|
||||
_G_Patterns_.INDICATOR_FG_PRIMARY,
|
||||
_G_Patterns_.INDICATOR_FG_CRITICAL,
|
||||
threshold
|
||||
),
|
||||
threshold_indicator(threshold),
|
||||
inner_radius,
|
||||
num_dials
|
||||
)
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- annotated compound bar
|
||||
|
||||
M.compound_bar = function(x, y, w, pad, labels, spacing, thickness, threshold)
|
||||
return {
|
||||
labels = _G_Widget_.TextColumn(
|
||||
_G_Widget_.make_point(x, y),
|
||||
labels,
|
||||
M.left_text_style,
|
||||
nil,
|
||||
spacing
|
||||
),
|
||||
bars = _G_Widget_.CompoundBar(
|
||||
_G_Widget_.make_point(x + pad, y),
|
||||
w - pad,
|
||||
_G_Widget_.line_style(
|
||||
thickness,
|
||||
_G_Patterns_.INDICATOR_BG,
|
||||
CAIRO_LINE_JOIN_MITER
|
||||
),
|
||||
threshold_indicator(threshold),
|
||||
spacing,
|
||||
#labels,
|
||||
false
|
||||
)
|
||||
}
|
||||
end
|
||||
|
||||
M.compound_bar_draw_static = function(cb, cr)
|
||||
TextColumn.draw(cb.labels, cr)
|
||||
CompoundBar.draw_static(cb.bars, cr)
|
||||
end
|
||||
|
||||
M.compound_bar_draw_dynamic = function(cb, cr)
|
||||
CompoundBar.draw_dynamic(cb.bars, cr)
|
||||
end
|
||||
|
||||
M.compound_bar_set = function(cb, i, value)
|
||||
CompoundBar.set(cb.bars, i, value)
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- separator (eg a horizontal line)
|
||||
|
||||
|
@ -330,7 +379,6 @@ end
|
|||
--------------------------------------------------------------------------------
|
||||
-- text row (label with a value, aligned as far apart as possible)
|
||||
|
||||
|
||||
M.initTextRow = function(x, y, w, label)
|
||||
return {
|
||||
label = _left_text(_G_Widget_.make_point(x, y), label),
|
||||
|
@ -381,10 +429,23 @@ M.text_row_crit_set = function(row, cr, value)
|
|||
CriticalText.set(row.value, cr, value)
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- text column
|
||||
|
||||
M.text_column = function(x, y, spacing, labels, x_align, color)
|
||||
return _G_Widget_.TextColumn(
|
||||
_G_Widget_.make_point(x, y),
|
||||
labels,
|
||||
_text_row_style(x_align, color),
|
||||
nil,
|
||||
spacing
|
||||
)
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- multiple text row separated by spacing
|
||||
|
||||
M.initTextRows = function(x, y, w, spacing, labels)
|
||||
M.initTextRows_color = function(x, y, w, spacing, labels, color, format)
|
||||
return {
|
||||
labels = _G_Widget_.TextColumn(
|
||||
_G_Widget_.make_point(x, y),
|
||||
|
@ -396,13 +457,25 @@ M.initTextRows = function(x, y, w, spacing, labels)
|
|||
values = _G_Widget_.initTextColumnN(
|
||||
_G_Widget_.make_point(x + w, y),
|
||||
#labels,
|
||||
M.right_text_style,
|
||||
nil,
|
||||
_text_row_style('right', color),
|
||||
format,
|
||||
spacing
|
||||
)
|
||||
}
|
||||
end
|
||||
|
||||
M.initTextRows = function(x, y, w, spacing, labels)
|
||||
return M.initTextRows_color(
|
||||
x,
|
||||
y,
|
||||
w,
|
||||
spacing,
|
||||
labels,
|
||||
_G_Patterns_.PRIMARY_FG,
|
||||
nil
|
||||
)
|
||||
end
|
||||
|
||||
M.text_rows_draw_static = function(rows, cr)
|
||||
TextColumn.draw(rows.labels, cr)
|
||||
end
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
local M = {}
|
||||
|
||||
local Patterns = require 'Patterns'
|
||||
local Line = require 'Line'
|
||||
local TextColumn = require 'TextColumn'
|
||||
local CompoundBar = require 'CompoundBar'
|
||||
local Util = require 'Util'
|
||||
local Common = require 'Common'
|
||||
|
||||
|
@ -45,41 +42,15 @@ local separator = Common.initSeparator(
|
|||
|
||||
local _BAR_Y_ = _SEP_Y_ + _SEPARATOR_SPACING_
|
||||
|
||||
local bars = _G_Widget_.CompoundBar(
|
||||
_G_Widget_.make_point(
|
||||
_G_INIT_DATA_.RIGHT_X + _BAR_PAD_,
|
||||
_BAR_Y_
|
||||
),
|
||||
_G_INIT_DATA_.SECTION_WIDTH - _BAR_PAD_,
|
||||
_G_Widget_.line_style(
|
||||
12,
|
||||
Patterns.INDICATOR_BG,
|
||||
CAIRO_LINE_JOIN_MITER
|
||||
),
|
||||
_G_Widget_.threshold_style(
|
||||
Patterns.INDICATOR_FG_PRIMARY,
|
||||
Patterns.INDICATOR_FG_CRITICAL,
|
||||
0.8
|
||||
),
|
||||
_SPACING_,
|
||||
FS_NUM,
|
||||
false
|
||||
)
|
||||
|
||||
local labels = _G_Widget_.TextColumn(
|
||||
_G_Widget_.make_point(
|
||||
_G_INIT_DATA_.RIGHT_X,
|
||||
_BAR_Y_
|
||||
),
|
||||
local fs = Common.compound_bar(
|
||||
_G_INIT_DATA_.RIGHT_X,
|
||||
_BAR_Y_,
|
||||
_G_INIT_DATA_.SECTION_WIDTH,
|
||||
_BAR_PAD_,
|
||||
{'root', 'boot', 'home', 'data', 'dcache', 'tmpfs'},
|
||||
_G_Widget_.text_style(
|
||||
Common.normal_font_spec,
|
||||
_G_Patterns_.INACTIVE_TEXT_FG,
|
||||
'left',
|
||||
'center'
|
||||
),
|
||||
nil,
|
||||
_SPACING_
|
||||
_SPACING_,
|
||||
12,
|
||||
0.8
|
||||
)
|
||||
|
||||
_SPACING_ = nil
|
||||
|
@ -87,7 +58,6 @@ _BAR_PAD_ = nil
|
|||
_FS_PATHS_ = nil
|
||||
_SEPARATOR_SPACING_ = nil
|
||||
_BAR_Y_ = nil
|
||||
_SEPARATOR_SPACING_ = nil
|
||||
_SEP_Y_ = nil
|
||||
|
||||
local update = function(cr)
|
||||
|
@ -96,26 +66,21 @@ local update = function(cr)
|
|||
|
||||
for i = 1, FS_NUM do
|
||||
local percent = Util.conky_numeric(conky_used_perc[i])
|
||||
CompoundBar.set(bars, i, percent * 0.01)
|
||||
Common.compound_bar_set(fs, i, percent * 0.01)
|
||||
end
|
||||
end
|
||||
|
||||
M.draw_static = function(cr)
|
||||
Common.drawHeader(cr, header)
|
||||
|
||||
Common.text_row_draw_static(smart, cr)
|
||||
Line.draw(separator, cr)
|
||||
|
||||
TextColumn.draw(labels, cr)
|
||||
CompoundBar.draw_static(bars, cr)
|
||||
Common.compound_bar_draw_static(fs, cr)
|
||||
end
|
||||
|
||||
M.draw_dynamic = function(cr, trigger)
|
||||
if trigger == 0 then update(cr) end
|
||||
|
||||
Common.text_row_draw_dynamic(smart, cr)
|
||||
|
||||
CompoundBar.draw_dynamic(bars, cr)
|
||||
Common.compound_bar_draw_dynamic(fs, cr)
|
||||
end
|
||||
|
||||
return M
|
||||
|
|
|
@ -2,7 +2,6 @@ local M = {}
|
|||
|
||||
local Arc = require 'Arc'
|
||||
local Dial = require 'Dial'
|
||||
local TextColumn = require 'TextColumn'
|
||||
local LabelPlot = require 'LabelPlot'
|
||||
local Table = require 'Table'
|
||||
local Util = require 'Util'
|
||||
|
@ -55,12 +54,12 @@ local DIAL_X = _G_INIT_DATA_.RIGHT_X + DIAL_RADIUS + _DIAL_THICKNESS_ / 2
|
|||
local DIAL_Y = header.bottom_y + DIAL_RADIUS + _DIAL_THICKNESS_ / 2
|
||||
|
||||
local dial = Common.dial(DIAL_X, DIAL_Y, DIAL_RADIUS, _DIAL_THICKNESS_, 0.8)
|
||||
local cache_arc = _G_Widget_.Arc(
|
||||
_G_Widget_.make_semicircle(DIAL_X, DIAL_Y, DIAL_RADIUS, 90, 360),
|
||||
_G_Widget_.arc_style(
|
||||
_DIAL_THICKNESS_,
|
||||
_G_Patterns_.INDICATOR_FG_SECONDARY
|
||||
)
|
||||
local cache_arc = Common.arc(
|
||||
DIAL_X,
|
||||
DIAL_Y,
|
||||
DIAL_RADIUS,
|
||||
_DIAL_THICKNESS_,
|
||||
_G_Patterns_.INDICATOR_FG_SECONDARY
|
||||
)
|
||||
|
||||
local text_ring = Common.initTextRing(
|
||||
|
@ -85,38 +84,15 @@ local swap = Common.initTextRowCrit(
|
|||
80
|
||||
)
|
||||
|
||||
local cache = {
|
||||
labels = _G_Widget_.TextColumn(
|
||||
_G_Widget_.make_point(
|
||||
_TEXT_LEFT_X_,
|
||||
_LINE_1_Y_ + _TEXT_SPACING_
|
||||
),
|
||||
{'Page Cache', 'Buffers', 'Kernel Slab'},
|
||||
_G_Widget_.text_style(
|
||||
Common.normal_font_spec,
|
||||
_G_Patterns_.INACTIVE_TEXT_FG,
|
||||
'left',
|
||||
'center'
|
||||
),
|
||||
nil,
|
||||
_TEXT_SPACING_
|
||||
),
|
||||
percents = _G_Widget_.initTextColumnN(
|
||||
_G_Widget_.make_point(
|
||||
_RIGHT_X_,
|
||||
_LINE_1_Y_ + _TEXT_SPACING_
|
||||
),
|
||||
3,
|
||||
_G_Widget_.text_style(
|
||||
Common.normal_font_spec,
|
||||
_G_Patterns_.SECONDARY_FG,
|
||||
'right',
|
||||
'center'
|
||||
),
|
||||
'%s%%',
|
||||
_TEXT_SPACING_
|
||||
),
|
||||
}
|
||||
local cache = Common.initTextRows_color(
|
||||
_TEXT_LEFT_X_,
|
||||
_LINE_1_Y_ + _TEXT_SPACING_,
|
||||
_G_INIT_DATA_.SECTION_WIDTH - _TEXT_LEFT_X_OFFSET_ - DIAL_RADIUS * 2,
|
||||
_TEXT_SPACING_,
|
||||
{'Page Cache', 'Buffers', 'Kernel Slab'},
|
||||
_G_Patterns_.SECONDARY_FG,
|
||||
'%s%%'
|
||||
)
|
||||
|
||||
local _PLOT_Y_ = _PLOT_SECTION_BREAK_ + header.bottom_y + DIAL_RADIUS * 2
|
||||
|
||||
|
@ -158,15 +134,13 @@ local update = function(cr)
|
|||
(swap_total_kb - swap_free_kb)
|
||||
/ swap_total_kb * 100))
|
||||
|
||||
local _percents = cache.percents
|
||||
|
||||
TextColumn.set(_percents, cr, 1, Util.precision_round_to_string(
|
||||
Common.text_rows_set(cache, cr, 1, Util.precision_round_to_string(
|
||||
cached_kb / MEM_TOTAL_KB * 100))
|
||||
|
||||
TextColumn.set(_percents, cr, 2, Util.precision_round_to_string(
|
||||
Common.text_rows_set(cache, cr, 2, Util.precision_round_to_string(
|
||||
buffers_kb / MEM_TOTAL_KB * 100))
|
||||
|
||||
TextColumn.set(_percents, cr, 3, Util.precision_round_to_string(
|
||||
Common.text_rows_set(cache, cr, 3, Util.precision_round_to_string(
|
||||
slab_reclaimable_kb / MEM_TOTAL_KB * 100))
|
||||
|
||||
LabelPlot.update(plot, used_percent)
|
||||
|
@ -203,7 +177,7 @@ M.draw_static = function(cr)
|
|||
Dial.draw_static(dial, cr)
|
||||
|
||||
Common.text_row_crit_draw_static(swap, cr)
|
||||
TextColumn.draw(cache.labels, cr)
|
||||
Common.text_rows_draw_static(cache, cr)
|
||||
LabelPlot.draw_static(plot, cr)
|
||||
|
||||
Table.draw_static(tbl, cr)
|
||||
|
@ -217,7 +191,7 @@ M.draw_dynamic = function(cr)
|
|||
Common.text_ring_draw_dynamic(text_ring, cr)
|
||||
|
||||
Common.text_row_crit_draw_dynamic(swap, cr)
|
||||
TextColumn.draw(cache.percents, cr)
|
||||
Common.text_rows_draw_dynamic(cache, cr)
|
||||
|
||||
LabelPlot.draw_dynamic(plot, cr)
|
||||
|
||||
|
|
Loading…
Reference in New Issue