summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Bustle/UI/DetailsView.hs38
-rw-r--r--data/bustle.ui76
2 files changed, 100 insertions, 14 deletions
diff --git a/Bustle/UI/DetailsView.hs b/Bustle/UI/DetailsView.hs
index c9a27ab..e60d311 100644
--- a/Bustle/UI/DetailsView.hs
+++ b/Bustle/UI/DetailsView.hs
@@ -36,6 +36,9 @@ import Bustle.VariantFormatter
data DetailsView =
DetailsView { detailsGrid :: Grid
, detailsType :: Stack
+ , detailsSender :: Label
+ , detailsDestinationCaption :: Label
+ , detailsDestination :: Label
, detailsPath :: Label
, detailsMember :: Label
, detailsBodyView :: TextView
@@ -43,14 +46,15 @@ data DetailsView =
detailsViewNew :: Builder
-> IO DetailsView
-detailsViewNew builder = do
- grid <- builderGetObject builder castToGrid "detailsGrid"
- type_ <- builderGetObject builder castToStack "detailsType"
- pathLabel <- builderGetObject builder castToLabel "detailsPath"
- memberLabel <- builderGetObject builder castToLabel "detailsMember"
- view <- builderGetObject builder castToTextView "detailsArguments"
-
- return $ DetailsView grid type_ pathLabel memberLabel view
+detailsViewNew builder = DetailsView
+ <$> builderGetObject builder castToGrid "detailsGrid"
+ <*> builderGetObject builder castToStack "detailsType"
+ <*> builderGetObject builder castToLabel "detailsSender"
+ <*> builderGetObject builder castToLabel "detailsDestinationCaption"
+ <*> builderGetObject builder castToLabel "detailsDestination"
+ <*> builderGetObject builder castToLabel "detailsPath"
+ <*> builderGetObject builder castToLabel "detailsMember"
+ <*> builderGetObject builder castToTextView "detailsArguments"
pickType :: Detailed Message -> String
pickType (Detailed _ m _ _) = case m of
@@ -75,6 +79,11 @@ getMember (Detailed _ m _ _) = case m of
where
callMember = fmap (member . deEvent) $ inReplyTo m
+getDestination :: Detailed Message -> Maybe TaggedBusName
+getDestination (Detailed _ m _ _) = case m of
+ Signal { signalDestination = d } -> d
+ _ -> Just (destination m)
+
formatMessage :: Detailed Message -> String
formatMessage (Detailed _ _ _ rm) =
formatArgs $ D.receivedMessageBody rm
@@ -91,6 +100,19 @@ detailsViewUpdate d m = do
buf <- textViewGetBuffer $ detailsBodyView d
let member_ = getMember m
stackSetVisibleChildName (detailsType d) (pickType m)
+
+ -- TODO: these would be a lot more useful if we could resolve unique names
+ -- to/from well-known names and show both
+ labelSetText (detailsSender d) (unBusName . sender . deEvent $ m)
+ case getDestination m of
+ Just n -> do
+ labelSetText (detailsDestination d) (unBusName n)
+ widgetShow (detailsDestination d)
+ widgetShow (detailsDestinationCaption d)
+ Nothing -> do
+ widgetHide (detailsDestination d)
+ widgetHide (detailsDestinationCaption d)
+
labelSetText (detailsPath d) (maybe unknown (D.formatObjectPath . path) member_)
labelSetMarkup (detailsMember d) (maybe unknown getMemberMarkup member_)
textBufferSetText buf $ formatMessage m
diff --git a/data/bustle.ui b/data/bustle.ui
index 40fac97..7a6a617 100644
--- a/data/bustle.ui
+++ b/data/bustle.ui
@@ -484,7 +484,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">1</property>
+ <property name="top_attach">3</property>
</packing>
</child>
<child>
@@ -500,7 +500,7 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">1</property>
+ <property name="top_attach">3</property>
</packing>
</child>
<child>
@@ -516,7 +516,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">2</property>
+ <property name="top_attach">4</property>
</packing>
</child>
<child>
@@ -532,7 +532,7 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">2</property>
+ <property name="top_attach">4</property>
</packing>
</child>
<child>
@@ -549,7 +549,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">3</property>
+ <property name="top_attach">5</property>
</packing>
</child>
<child>
@@ -570,7 +570,7 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">3</property>
+ <property name="top_attach">5</property>
</packing>
</child>
<child>
@@ -647,6 +647,70 @@
<property name="top_attach">0</property>
</packing>
</child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">False</property>
+ <property name="label" translatable="yes">Sender</property>
+ <property name="xalign">1</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="detailsDestinationCaption">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">False</property>
+ <property name="label" translatable="yes">Destination</property>
+ <property name="xalign">1</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="detailsSender">
+ <property name="name">detailsPath</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label">org.example.Thingy</property>
+ <property name="selectable">True</property>
+ <property name="ellipsize">start</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="detailsDestination">
+ <property name="name">detailsPath</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label">com.example.Placeholder</property>
+ <property name="selectable">True</property>
+ <property name="ellipsize">start</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="resize">False</property>