Forum Wiki Galerie Kontakt Wie man Fragen richtig stellt. Tutorial Forum
Zurück   GIMP-Forum 3.0 > Arbeiten mit Gimp > GIMP-Ressourcen > Skripte

Hinweise
Alt 01.09.2016, 15:24   #1
PeterPKHG
Erfahrener Benutzer
 
Registriert seit: 20.07.2016
Beiträge: 352
Standard mini Template fuer PyGtk Plugins

Wenn man selbst Basteln will ist ein minimales Beispiel sehr handlich,
hab ich mal zusammengestellt

Überall, wo im Code hier unten CHANGEME steht sollte man dies durch etwas Eigenes ersetzen!
Aufpassen mit fuerCHANGEME das ist die Koppelung zwischen der Registierung und was dann ausgefuehrt werden soll.

Viel Spass beim Probieren .

Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#PeterPKHG
#Ueberall CHANGEME ersetzen durch einen eigenen Namen und/oder auch was davor oder dahinter steht
#dies erscheint im Gimpfenster als CHANGEME .. siehe die install procedure !!! passend machen

#imports --------------

import gimpplugin

from gimpenums import *

import gtk
import gimpui

import os
import sys

from gimpfu import *
from math import pi

#------------ nicht alle imports nötig!
#### try it!
"""
def response(dialog, response):
    if response == gtk.RESPONSE_YES:
        debug('yes, yes!') #in place of print ==> msys konsole!
    elif response == gtk.RESPONSE_NO:
        debug( 'oh no!')
    else:
        debug( 'I am deeply confused')
    dialog.destroy()

def yes_or_no(msg, title, responseCallback, parent=None):
    dialog = gtk.MessageDialog(
        parent         = parent,
        flags          = gtk.DIALOG_DESTROY_WITH_PARENT,
        type           = gtk.MESSAGE_INFO,
        buttons        = gtk.BUTTONS_YES_NO,
        message_format = msg)
    dialog.set_title(title)
    dialog.connect('response', responseCallback)
    dialog.show()
"""
   

####### nützliche Hilfe
def debug(val):
    gimp.message(str(val))

def debugErr(e):
    exc_type, exc_obj, exc_tb = sys.exc_info()
    fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
    debug(fname+'\n'+str(exc_tb.tb_lineno)+'\n'+str(e))


class gCHANGEME(object):

    def __init__(self, runmode, img):
        #Hier kann man Variablen self.xxx = "xxx" oder ... deklarieren
        if runmode == RUN_INTERACTIVE:
            self.showDialog()
        elif runmode == RUN_WITH_LAST_VALS:
            self.showDialog()
        elif runmode == RUN_NONINTERACTIVE:
            return
    
    #Um etwas getan zu kriegen braucht man sogenannte "callback"'s
    def callback(self, widget, data=None):
        debug( "Hello again - %s was pressed" % data)
        result = False
        """
        #von meinem Glaskugel Plugin
        
        if data == "Glaskugel":
            tmplist = gimp.image_list()
            if tmplist:
                image = tmplist[-1]
                glaskugelstart(image, None, self.x_upper_left_corner, self.y_upper_left_corner, self.kugel_size, self.flatten_picture)
            else:
                gimp.message("Kein Bild geladen")
            return 1  #beeindigd het maken ...
        """
    
    def showDialog(self):
        self.dialog = gimpui.Dialog("Guide lab", "rotdlg")
        """
        #dies is ein anderes Beispiel mit Yes No buttons
        self.dialog = gtk.Dialog("My dialog",
                   None,
                   gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                   (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
                    gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)
            )
        """
        self.dialog.set_position(gtk.WIN_POS_CENTER)  #WIN_POS_CENTER ???!!! ..POS_MOUSE
        self.dialog.set_keep_above(True) #PKHG>OK so was es sagt (bleibend oberstes Fenster)
        
        cancel_button = self.dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
        cancel_button.connect("clicked", self.sendreturn0)
        
        self.dialog.run()
    
    def expose(self, widget, anders):
        #debug( 'von  dialog expose-event')
        return
    
    def sendreturn0(self, widget):
        return 0 

class pluginCHANGEME(gimpplugin.plugin):
    def start(self):
        gimp.main(self.init, self.quit, self.query, self._run)
    def init(self):
        pass
    def quit(self):
        pass
    def query(self):
        cright = "copyright notitie"
        date = "1 September 2016 "
        plug_descr = ("na ja, kann als start-template benutzt werden für PyGtk ...")
        name = "Dein Name?!"
        plug_params = [(PDB_INT32, "run_mode", "Run mode"), (PDB_IMAGE, "image", "Input image"),]
        gimp.install_procedure("fuerCHANGEME", plug_descr, plug_descr, name, cright, date, "<Image>/CHANGEME/changeme_TOO ...", "RGB*, GRAY*", PLUGIN, plug_params,[]) 

    def fuerCHANGEME(self, runmode, img):
        gCHANGEME(runmode, img)

if __name__ == '__main__':
    pluginCHANGEME().start()
So sollte es aussehen (in etwa)
Klicke auf die Grafik für eine größere Ansicht

Name:	changemegeht.jpg
Hits:	41
Größe:	60,1 KB
ID:	5678

Geändert von PeterPKHG (03.09.2016 um 15:50 Uhr)
PeterPKHG ist offline   Mit Zitat antworten
 

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[GIMP Registry] - CD/DVD Disc Jewel Case Cover Label Template - US Letter Size - Fron Wilber GIMP 0 16.12.2012 07:58
[GIMP Registry] - CD/DVD Disc Label Template - US Complete Wilber GIMP 0 16.12.2012 07:21
[GIMP Registry] - Ebook Plugins Wilber GIMP 0 01.07.2011 21:20
[GIMP Registry] - Gimp Plugins installers for Win32 Wilber GIMP 0 21.06.2010 13:20


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:52 Uhr.


Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.