]> OzVa Git service - gn-editor/commitdiff
Added about dialog
authorNil Gradisnik <nil@layer.com>
Sun, 3 Dec 2017 01:17:02 +0000 (17:17 -0800)
committerNil Gradisnik <nil@layer.com>
Sun, 3 Dec 2017 01:17:02 +0000 (17:17 -0800)
Cargo.toml
README.md
src/gtk-ui.glade
src/main.rs

index a726562bca2ce0ea3306cc1abd31e93072035538..3d99d4e7c74c6aee71b4408b0cf2a504fc8972cd 100644 (file)
@@ -2,6 +2,10 @@
 name = "markdown-rs"
 version = "0.1.0"
 authors = ["Nil Gradisnik <nil@layer.com>"]
+description = "Fast, simple, distraction free Markdown editor."
+repository = "@nilgradisnik/markdown-rs"
+readme = "README.md"
+license = "MIT"
 
 [dependencies]
 gio = "0.3"
index 8b085e02e2c8c34a85dd2fca076bbba25516ea58..ffd5650fc0ebb734788980db2067f394a0134216 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
 # Markdown Rust
-A distraction free Markdown editor.
+Fast, simple, distraction free Markdown editor.
 
 ## Motivation
 There seem to be no simple, fast Markdown editors on Linux. Most of them are built with some version of Chrome and Javascript.
index 48a004edfd8c68bf68b0ad2071aac9ac59831a53..a5d0585f987b317aacdbb8f9283e0939b5a4d1f0 100644 (file)
@@ -33,6 +33,48 @@ Author: Nil Gradisnik
   <!-- interface-name markdown-rs -->
   <!-- interface-description Simple Markdown editor -->
   <!-- interface-authors Nil Gradisnik -->
+  <object class="GtkAboutDialog" id="about_dialog">
+    <property name="can_focus">False</property>
+    <property name="type_hint">dialog</property>
+    <property name="program_name">Markdown Rust</property>
+    <property name="version">0.1.0</property>
+    <property name="comments" translatable="yes">Fast, simple, distraction free Markdown editor.</property>
+    <property name="website">https://github.com/nilgradisnik/markdown-rs</property>
+    <property name="website_label" translatable="yes">markdown-rs</property>
+    <property name="authors">Nil Gradisnik &lt;nil.gradisnik@gmail.com&gt;</property>
+    <property name="logo_icon_name">text-x-generic</property>
+    <property name="license_type">mit-x11</property>
+    <child internal-child="vbox">
+      <object class="GtkBox">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+      </object>
+    </child>
+    <child>
+      <placeholder/>
+    </child>
+  </object>
   <object class="GtkApplicationWindow" id="window">
     <property name="can_focus">False</property>
     <property name="title" translatable="yes">Markdown Rust</property>
@@ -93,6 +135,30 @@ Author: Nil Gradisnik
                 <property name="homogeneous">True</property>
               </packing>
             </child>
+            <child>
+              <object class="GtkSeparatorToolItem" id="spacer">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="visible_vertical">False</property>
+                <property name="draw">False</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="homogeneous">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkToolButton" id="about_button">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="use_underline">True</property>
+                <property name="stock_id">gtk-about</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="homogeneous">False</property>
+              </packing>
+            </child>
           </object>
           <packing>
             <property name="expand">False</property>
index e397327c1e139890208773226e42b7f6f3504251..1ff84fa4967237456bc3104aff8c817dc0a312a2 100644 (file)
@@ -18,6 +18,11 @@ use gtk::Builder;
 
 use markdown::{string_to_html, buffer_to_html};
 
+const NAME: &str = env!("CARGO_PKG_NAME");
+const VERSION: &str = env!("CARGO_PKG_VERSION");
+const AUTHORS: &str = env!("CARGO_PKG_AUTHORS");
+const DESCRIPTION: &str = env!("CARGO_PKG_DESCRIPTION");
+
 // http://gtk-rs.org/tuto/closures
 macro_rules! clone {
     (@param _) => ( _ );
@@ -44,12 +49,19 @@ fn build_ui(application: &gtk::Application) {
     let window: gtk::ApplicationWindow = builder.get_object("window").expect("Couldn't get window");
     window.set_application(application);
 
-    let open_button: gtk::ToolButton = builder.get_object("open_button").expect("Couldn't get builder");
-    let render_button: gtk::ToolButton = builder.get_object("render_button").expect("Couldn't get builder");
-    let live_button: gtk::ToggleToolButton = builder.get_object("live_button").expect("Couldn't get builder");
+    let open_button: gtk::ToolButton = builder.get_object("open_button").unwrap();
+    let render_button: gtk::ToolButton = builder.get_object("render_button").unwrap();
+    let live_button: gtk::ToggleToolButton = builder.get_object("live_button").unwrap();
+    let about_button: gtk::ToolButton = builder.get_object("about_button").unwrap();
+
+    let text_view: sourceview::View = builder.get_object("text_view").unwrap();
+    let markdown_view: gtk::TextView = builder.get_object("markdown_view").unwrap();
 
-    let text_view: sourceview::View = builder.get_object("text_view").expect("Couldn't get text_view");
-    let markdown_view: gtk::TextView = builder.get_object("markdown_view").expect("Couldn't get text_view");
+    let about_dialog: gtk::AboutDialog = builder.get_object("about_dialog").unwrap();
+    about_dialog.set_program_name(NAME);
+    about_dialog.set_version(VERSION);
+    about_dialog.set_authors(&[AUTHORS]);
+    about_dialog.set_comments(DESCRIPTION);
 
     open_button.connect_clicked(clone!(window, text_view, markdown_view => move |_| {
         let file_chooser = gtk::FileChooserDialog::new(Some("Open File"), Some(&window), gtk::FileChooserAction::Open);
@@ -85,6 +97,15 @@ fn build_ui(application: &gtk::Application) {
         markdown_view.get_buffer().unwrap().set_text(&buffer_to_html(buffer));
     }));
 
+    about_button.connect_clicked(clone!(about_dialog => move |_| {
+        about_dialog.show();
+    }));
+
+    about_dialog.connect_delete_event(clone!(about_dialog => move |_, _| {
+        about_dialog.hide();
+        Inhibit(true)
+    }));
+
     window.connect_delete_event(clone!(window => move |_, _| {
         window.destroy();
         Inhibit(false)