diff options
-rw-r--r-- | Bustle/UI/DetailsView.hs | 38 | ||||
-rw-r--r-- | data/bustle.ui | 76 |
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> |