Skip to content

Commit

Permalink
CWM: Added DateField and TimeField widgets
Browse files Browse the repository at this point in the history
  • Loading branch information
teclator committed Jan 17, 2019
1 parent 8503626 commit 6310829
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 0 deletions.
69 changes: 69 additions & 0 deletions library/cwm/examples/date_time.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Simple example to demonstrate object API for CWM

require_relative "example_helper"

require "cwm"
require "cwm/popup"

Yast.import "CWM"

class Name < CWM::InputField
def initialize
textdomain "example"
end

def label
_("Name")
end
end

class EventDate < CWM::DateField
def initialize
textdomain "example"
end

def init
self.value = Time.now.strftime("%Y-%m-%d")
end

def label
_("Event date")
end
end

class EventTime < CWM::TimeField
def initialize
textdomain "example"
end

def init
self.value = Time.now.strftime("%H:%M:%S")
end

def label
_("Event time")
end
end

class Event < ::CWM::Popup
def initialize
textdomain "example"
end

def contents
VBox(
Name.new,
HBox(
EventDate.new,
HSpacing(1),
EventTime.new
)
)
end

def title
_("Event Example")
end
end

Event.new.run
18 changes: 18 additions & 0 deletions library/cwm/src/lib/cwm/common_widgets.rb
Original file line number Diff line number Diff line change
Expand Up @@ -366,4 +366,22 @@ class RichText < AbstractWidget

include ValueBasedWidget
end

# Time field widget
# The {#label} method is mandatory.
class TimeField < AbstractWidget
self.widget_type = :time_field

include ValueBasedWidget
abstract_method :label
end

# Date field widget
# The {#label} method is mandatory.
class DateField < AbstractWidget
self.widget_type = :date_field

include ValueBasedWidget
abstract_method :label
end
end
4 changes: 4 additions & 0 deletions library/cwm/src/modules/CWM.rb
Original file line number Diff line number Diff line change
Expand Up @@ -616,6 +616,10 @@ def prepareWidget(widget_descr)
Ops.set(w, "widget", MultiLineEdit(id_term, opt_term, label))
elsif widget == :richtext
Ops.set(w, "widget", RichText(id_term, opt_term, ""))
elsif widget == :date_field
Ops.set(w, "widget", DateField(id_term, opt_term, label))
elsif widget == :time_field
Ops.set(w, "widget", TimeField(id_term, opt_term, label))
end
end
Ops.set(w, "custom_widget", nil) # not needed any more
Expand Down

0 comments on commit 6310829

Please sign in to comment.