एकता संकेतक कैसे बनाएं?


25

मुझे एकता संकेतकों में दिलचस्पी है और आश्चर्य है कि अगर उन्हें प्रोग्राम करने के तरीके पर कोई ट्यूटोरियल है। मैं मौजूदा लोगों के स्रोतों को अंतिम उपाय के रूप में उपयोग कर सकता हूं, लेकिन मैं अधिक अनुकूल दृष्टिकोण पसंद करूंगा क्योंकि मेरे प्रोग्रामिंग कौशल काफी सीमित हैं।



की जाँच करें इस रूप में अच्छी तरह जवाब। यह बताता है कि सिस्टम इंडिकेटर कैसे बनाया जाए , जिसमें ऐप इंडिकेटर की तुलना में अधिक संभावनाएं हों। मैंने थोड़ा प्रयोग किया और ध्वनि और ब्लूटूथ संकेतक की तरह एकता के डिफ़ॉल्ट सिस्टम संकेतक को भी देखा; और अपने स्वयं के उदाहरण के साथ आया, ScreenToolsIndicator , जो बटन और एक स्लाइडर का भी उपयोग करता है । मैंने C को चुना क्योंकि sneetsher के उदाहरण C में थे, लेकिन GLib के साथ-साथ (glibmm) के लिए C ++ आवरण भी है।
ओकेरेज़

जवाबों:


21

उदाहरण और एपीआई डॉक्स के साथ संकेतक संकेतक यहां उपलब्ध हैं:

एप्लिकेशन संकेतक पर अभी तक वहाँ ट्यूटोरियल नहीं हैं, लेकिन ऐप डेवलपर साइट के ट्यूटोरियल अनुभाग पर अधिक सामग्री के लिए बने रहें:


2
टक्कर। ये सभी लिंक पुराने हैं और 'पृष्ठ नहीं मिले' संदेशों को जन्म देते हैं। क्या मुझे कोई नया संसाधन मिल सकता है? आधिकारिक डेवलपरIs there any tutorial for programming Unity indicators? .ubuntu.com/apps/qml/cookbook/… शीर्षक के साथ इस प्रश्न के लिए साइट लिंक ।
डैनियल डब्ल्यू।

हर जगह टूटे हुए लिंक, देखें ApplicationIndicators wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators , libappindicator-docपैकेज में HTML के रूप में इसका एपीआई संदर्भ ।
user.dz

1
लापता दस्तावेज पर एक बग दर्ज किया गया है: बग्सलाउन्चपड.नेट
जोर्ज कास्त्रो '

4

यहाँ C. में एक ऐप इंडिकेटर उदाहरण दिया गया है। यह उबंटू विकी में उपलब्ध कराए गए उदाहरण का "इंडिकेटर ओनली" संस्करण (कोई विंडो नहीं) है :

#include <libappindicator/app-indicator.h>

static void activate_action (GtkAction *action);

static GtkActionEntry entries[] = {
    {"New",  "document-new",     "_New",  "<control>N",
        "Create a new file",    G_CALLBACK(activate_action)},
    {"Open", "document-open",    "_Open", "<control>O",
        "Open a file",          G_CALLBACK(activate_action)},
    {"Save", "document-save",    "_Save", "<control>S",
        "Save file",            G_CALLBACK(activate_action)},
    {"Quit", "application-exit", "_Quit", "<control>Q",
        "Exit the application", G_CALLBACK(gtk_main_quit)},
};
static guint n_entries = G_N_ELEMENTS(entries);

static const gchar *ui_info =
"<ui>"
"  <popup name='IndicatorPopup'>"
"    <menuitem action='New' />"
"    <menuitem action='Open' />"
"    <menuitem action='Save' />"
"    <menuitem action='Quit' />"
"  </popup>"
"</ui>";

static void activate_action(GtkAction *action)
{
    const gchar *name = gtk_action_get_name (action);
    GtkWidget *dialog;

    dialog = gtk_message_dialog_new(NULL,
                                    GTK_DIALOG_DESTROY_WITH_PARENT,
                                    GTK_MESSAGE_INFO,
                                    GTK_BUTTONS_CLOSE,
                                    "You activated action: \"%s\"",
                                    name);

    g_signal_connect(dialog, "response", 
                     G_CALLBACK(gtk_widget_destroy), NULL);

    gtk_widget_show(dialog);
}

int main(int argc, char **argv)
{
    GtkWidget*      indicator_menu;
    GtkActionGroup* action_group;
    GtkUIManager*   uim;
    AppIndicator* indicator;
    GError* error = NULL;

    gtk_init(&argc, &argv);

    /* Menus */
    action_group = gtk_action_group_new("AppActions");
    gtk_action_group_add_actions(action_group, entries, n_entries,
                                 NULL);

    uim = gtk_ui_manager_new();
    gtk_ui_manager_insert_action_group(uim, action_group, 0);

    if (!gtk_ui_manager_add_ui_from_string(uim, ui_info, -1, &error)) {
        g_message("Failed to build menus: %s\n", error->message);
        g_error_free(error);
        error = NULL;
    }

    /* Indicator */
    indicator = app_indicator_new("example-simple-client",
                                  "go-jump",
                                  APP_INDICATOR_CATEGORY_APPLICATION_STATUS);

    indicator_menu = gtk_ui_manager_get_widget(uim, "/ui/IndicatorPopup");

    app_indicator_set_status(indicator, APP_INDICATOR_STATUS_ACTIVE);
    app_indicator_set_attention_icon(indicator, "indicator-messages-new");

    app_indicator_set_menu(indicator, GTK_MENU(indicator_menu));

    gtk_main();

    return 0;
}

लिंक पैदावार 404
अंगूठी

@ ringø सेर्ज के उत्तर का संपादन, काम की कड़ी को जोड़ा। प्रभावी रूप से, यह जोर्ज के उत्तर के समान लिंक है।
सर्गी कोलोडियाज़नी

1

मैंने अजगर में स्टॉप वॉच ऐप इंडिकेटर बनाने के लिए यहां एक छोटा ट्यूटोरियल किया: http://www.steshadoku.com/blog/2017/elapses-creating-a-unity-stopwatch-indicator-w-python/

import gobject
import gtk
import appindicator
import os, sys
import time
from datetime import timedelta

if __name__ == "__main__":

    saveseconds = 0 #global variable to save how many seconds the clock has run
    dir_path = os.path.dirname(os.path.realpath(__file__))
    source_id = ""

    def on_timer(args=None):
      savetime = int(time.time() - timestart) + saveseconds
      ind.set_label(str(timedelta(seconds=savetime)))
      return True

    def finish(args=None):
        sys.exit()
        return True

    def stoptime(args=None):
        #print(source_id)
        global saveseconds
        saveseconds += int(time.time() - timestart)
        gtk.timeout_remove(source_id)
        return True

    def starttime(args=None):
        global timestart
        timestart = time.time()
        global source_id
        source_id = gtk.timeout_add(1000, on_timer)
            #sets timer to run every 1s
        return True

    def cleartime(args=None):
        global saveseconds
        saveseconds = 0
        ind.set_label(str(timedelta(seconds=0)))
        gtk.timeout_remove(source_id)
        return True

    #format below is category name, icon
    ind = appindicator.Indicator ("simple-clock-client", "hourglass", appindicator.CATEGORY_APPLICATION_STATUS, dir_path)
    ind.set_status (appindicator.STATUS_ACTIVE)
    ind.set_label("Elapses"); #name of program and initial display

    ##Setup Menu Items
    menu = gtk.Menu()

    stop = gtk.MenuItem("Stop")
    stop.connect("activate", stoptime)
    stop.show()
    menu.append(stop)

    start = gtk.MenuItem("Start")
    start.connect("activate", starttime)
    start.show()
    menu.append(start)

    clear = gtk.MenuItem("Clear")
    clear.connect("activate", cleartime)
    clear.show()
    menu.append(clear)

    exit = gtk.MenuItem("Exit")
    exit.connect("activate", finish)
    exit.show()
    menu.append(exit)

    ind.set_menu(menu) #set the menu with added items
    gtk.main()

1
मैंने वास्तविक कोड नहीं देखा, लेकिन एक बात के लिए: आपके पास इंडेंटेशन त्रुटियाँ हैं। यहाँ और लिंक्ड ट्यूटोरियल में।
जैकब व्लिजम

नहीं, वहाँ इंडेंटेशन का एक स्थान है। । । सिर्फ एक है, जो यह बिल्कुल दर्दनाक कोड को पढ़ने के लिए बनाता है और पायथन के PEP8 मानक के अनुरूप नहीं है
सर्गी Kolodyazhnyy
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.